Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
at v2.6.16-rc2 76 lines 1.8 kB view raw
1#ifndef __VIRT_CONVERT__ 2#define __VIRT_CONVERT__ 3 4/* 5 * Macros used for converting between virtual and physical mappings. 6 */ 7 8#ifdef __KERNEL__ 9 10#include <linux/config.h> 11#include <linux/compiler.h> 12#include <asm/setup.h> 13#include <asm/page.h> 14 15#ifdef CONFIG_AMIGA 16#include <asm/amigahw.h> 17#endif 18 19/* 20 * Change virtual addresses to physical addresses and vv. 21 */ 22#ifndef CONFIG_SUN3 23extern unsigned long mm_vtop(unsigned long addr) __attribute_const__; 24extern unsigned long mm_ptov(unsigned long addr) __attribute_const__; 25#else 26static inline unsigned long mm_vtop(unsigned long vaddr) 27{ 28 return __pa(vaddr); 29} 30 31static inline unsigned long mm_ptov(unsigned long paddr) 32{ 33 return (unsigned long)__va(paddr); 34} 35#endif 36 37#ifdef CONFIG_SINGLE_MEMORY_CHUNK 38static inline unsigned long virt_to_phys(void *vaddr) 39{ 40 return (unsigned long)vaddr - PAGE_OFFSET + m68k_memory[0].addr; 41} 42 43static inline void * phys_to_virt(unsigned long paddr) 44{ 45 return (void *)(paddr - m68k_memory[0].addr + PAGE_OFFSET); 46} 47#else 48static inline unsigned long virt_to_phys(void *address) 49{ 50 return mm_vtop((unsigned long)address); 51} 52 53static inline void *phys_to_virt(unsigned long address) 54{ 55 return (void *) mm_ptov(address); 56} 57#endif 58 59/* Permanent address of a page. */ 60#define __page_address(page) (PAGE_OFFSET + (((page) - mem_map) << PAGE_SHIFT)) 61#define page_to_phys(page) virt_to_phys((void *)__page_address(page)) 62 63/* 64 * IO bus memory addresses are 1:1 with the physical address, 65 * except on the PCI bus of the Hades. 66 */ 67#ifdef CONFIG_HADES 68#define virt_to_bus(a) (virt_to_phys(a) + (MACH_IS_HADES ? 0x80000000 : 0)) 69#define bus_to_virt(a) (phys_to_virt((a) - (MACH_IS_HADES ? 0x80000000 : 0))) 70#else 71#define virt_to_bus virt_to_phys 72#define bus_to_virt phys_to_virt 73#endif 74 75#endif 76#endif