home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6 / include / asm-m68k / virtconvert.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  1.7 KB  |  76 lines

  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/compiler.h>
  11. #include <asm/setup.h>
  12. #include <asm/page.h>
  13.  
  14. #ifdef CONFIG_AMIGA
  15. #include <asm/amigahw.h>
  16. #endif
  17.  
  18. /*
  19.  * Change virtual addresses to physical addresses and vv.
  20.  */
  21. #ifndef CONFIG_SUN3
  22. extern unsigned long mm_vtop(unsigned long addr) __attribute_const__;
  23. extern unsigned long mm_ptov(unsigned long addr) __attribute_const__;
  24. #else
  25. static inline unsigned long mm_vtop(unsigned long vaddr)
  26. {
  27.     return __pa(vaddr);
  28. }
  29.  
  30. static inline unsigned long mm_ptov(unsigned long paddr)
  31. {
  32.     return (unsigned long)__va(paddr);
  33. }
  34. #endif
  35.  
  36. #ifdef CONFIG_SINGLE_MEMORY_CHUNK
  37. static inline unsigned long virt_to_phys(void *vaddr)
  38. {
  39.     return (unsigned long)vaddr - PAGE_OFFSET + m68k_memory[0].addr;
  40. }
  41.  
  42. static inline void * phys_to_virt(unsigned long paddr)
  43. {
  44.     return (void *)(paddr - m68k_memory[0].addr + PAGE_OFFSET);
  45. }
  46. #else
  47. static inline unsigned long virt_to_phys(void *address)
  48. {
  49.     return mm_vtop((unsigned long)address);
  50. }
  51.  
  52. static inline void *phys_to_virt(unsigned long address)
  53. {
  54.     return (void *) mm_ptov(address);
  55. }
  56. #endif
  57.  
  58. /* Permanent address of a page. */
  59. #define __page_address(page)    (PAGE_OFFSET + (((page) - mem_map) << PAGE_SHIFT))
  60. #define page_to_phys(page)    virt_to_phys((void *)__page_address(page))
  61.  
  62. /*
  63.  * IO bus memory addresses are 1:1 with the physical address,
  64.  * except on the PCI bus of the Hades.
  65.  */
  66. #ifdef CONFIG_HADES
  67. #define virt_to_bus(a) (virt_to_phys(a) + (MACH_IS_HADES ? 0x80000000 : 0))
  68. #define bus_to_virt(a) (phys_to_virt((a) - (MACH_IS_HADES ? 0x80000000 : 0)))
  69. #else
  70. #define virt_to_bus virt_to_phys
  71. #define bus_to_virt phys_to_virt
  72. #endif
  73.  
  74. #endif
  75. #endif
  76.