Revert last change. Bug noticed by Linus.
[linux-2.6/linux-mips.git] / include / asm-m68k / virtconvert.h
blob4841264ab2257e2e5203e02da6d355e734cd5b79
1 #ifndef __VIRT_CONVERT__
2 #define __VIRT_CONVERT__
4 /*
5 * Macros used for converting between virtual and physical mappings.
6 */
8 #ifdef __KERNEL__
10 #include <linux/config.h>
11 #include <asm/setup.h>
12 #include <asm/page.h>
14 #ifdef CONFIG_AMIGA
15 #include <asm/amigahw.h>
16 #endif
19 * Change virtual addresses to physical addresses and vv.
21 #ifndef CONFIG_SUN3
22 extern unsigned long mm_vtop(unsigned long addr) __attribute__ ((const));
23 extern unsigned long mm_vtop_fallback (unsigned long) __attribute__ ((const));
24 extern unsigned long mm_ptov(unsigned long addr) __attribute__ ((const));
25 #else
26 extern inline unsigned long mm_vtop(unsigned long vaddr)
28 return __pa(vaddr);
31 extern inline unsigned long mm_ptov(unsigned long paddr)
33 return (unsigned long)__va(paddr);
35 #endif
37 #ifdef CONFIG_SINGLE_MEMORY_CHUNK
38 extern inline unsigned long virt_to_phys(volatile void *vaddr)
40 unsigned long voff = (unsigned long)vaddr - PAGE_OFFSET;
42 if (voff < m68k_memory[0].size)
43 return voff + m68k_memory[0].addr;
44 return mm_vtop_fallback((unsigned long)vaddr);
47 extern inline void * phys_to_virt(unsigned long paddr)
49 unsigned long poff = paddr - m68k_memory[0].addr;
51 if (poff < m68k_memory[0].size)
52 return (void *)(poff + PAGE_OFFSET);
54 #ifdef CONFIG_AMIGA
56 * if on an amiga and address is in first 16M, move it
57 * to the ZTWO_VADDR range
59 if (MACH_IS_AMIGA && paddr < 16*1024*1024)
60 return (void *)ZTWO_VADDR(paddr);
61 #endif
62 return (void *)paddr;
64 #else
65 extern inline unsigned long virt_to_phys(volatile void * address)
67 return mm_vtop((unsigned long)address);
70 extern inline void * phys_to_virt(unsigned long address)
72 return (void *) mm_ptov(address);
74 #endif
77 * IO bus memory addresses are 1:1 with the physical address,
78 * except on the PCI bus of the Hades.
80 #ifdef CONFIG_HADES
81 #define virt_to_bus(a) (virt_to_phys(a) + (MACH_IS_HADES ? 0x80000000 : 0))
82 #define bus_to_virt(a) (phys_to_virt((a) - (MACH_IS_HADES ? 0x80000000 : 0)))
83 #else
84 #define virt_to_bus virt_to_phys
85 #define bus_to_virt phys_to_virt
86 #endif
88 #endif
89 #endif