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-v850 / page.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  3.4 KB  |  133 lines

  1. /*
  2.  * include/asm-v850/page.h -- VM ops
  3.  *
  4.  *  Copyright (C) 2001,02,03,05  NEC Electronics Corporation
  5.  *  Copyright (C) 2001,02,03,05  Miles Bader <miles@gnu.org>
  6.  *
  7.  * This file is subject to the terms and conditions of the GNU General
  8.  * Public License.  See the file COPYING in the main directory of this
  9.  * archive for more details.
  10.  *
  11.  * Written by Miles Bader <miles@gnu.org>
  12.  */
  13.  
  14. #ifndef __V850_PAGE_H__
  15. #define __V850_PAGE_H__
  16.  
  17. #include <asm/machdep.h>
  18.  
  19.  
  20. #define PAGE_SHIFT    12
  21. #define PAGE_SIZE       (1UL << PAGE_SHIFT)
  22. #define PAGE_MASK       (~(PAGE_SIZE-1))
  23.  
  24.  
  25. /*
  26.  * PAGE_OFFSET -- the first address of the first page of memory. For archs with
  27.  * no MMU this corresponds to the first free page in physical memory (aligned
  28.  * on a page boundary).
  29.  */
  30. #ifndef PAGE_OFFSET
  31. #define PAGE_OFFSET  0x0000000
  32. #endif
  33.  
  34.  
  35. #ifdef __KERNEL__
  36. #ifndef __ASSEMBLY__
  37.  
  38. #define STRICT_MM_TYPECHECKS
  39.  
  40. #define clear_page(page)    memset ((void *)(page), 0, PAGE_SIZE)
  41. #define copy_page(to, from)    memcpy ((void *)(to), (void *)from, PAGE_SIZE)
  42.  
  43. #define clear_user_page(addr, vaddr, page)    \
  44.     do {     clear_page(addr);        \
  45.         flush_dcache_page(page);    \
  46.     } while (0)
  47. #define copy_user_page(to, from, vaddr, page)    \
  48.     do {    copy_page(to, from);        \
  49.         flush_dcache_page(page);    \
  50.     } while (0)
  51.  
  52. #ifdef STRICT_MM_TYPECHECKS
  53. /*
  54.  * These are used to make use of C type-checking..
  55.  */
  56.  
  57. typedef struct { unsigned long pte; } pte_t;
  58. typedef struct { unsigned long pmd; } pmd_t;
  59. typedef struct { unsigned long pgd; } pgd_t;
  60. typedef struct { unsigned long pgprot; } pgprot_t;
  61.  
  62. #define pte_val(x)      ((x).pte)
  63. #define pmd_val(x)      ((x).pmd)
  64. #define pgd_val(x)      ((x).pgd)
  65. #define pgprot_val(x)   ((x).pgprot)
  66.  
  67. #define __pte(x)        ((pte_t) { (x) } )
  68. #define __pmd(x)        ((pmd_t) { (x) } )
  69. #define __pgd(x)        ((pgd_t) { (x) } )
  70. #define __pgprot(x)     ((pgprot_t) { (x) } )
  71.  
  72. #else /* !STRICT_MM_TYPECHECKS */
  73. /*
  74.  * .. while these make it easier on the compiler
  75.  */
  76.  
  77. typedef unsigned long pte_t;
  78. typedef unsigned long pmd_t;
  79. typedef unsigned long pgd_t;
  80. typedef unsigned long pgprot_t;
  81.  
  82. #define pte_val(x)      (x)
  83. #define pmd_val(x)      (x)
  84. #define pgd_val(x)      (x)
  85. #define pgprot_val(x)   (x)
  86.  
  87. #define __pte(x)        (x)
  88. #define __pmd(x)        (x)
  89. #define __pgd(x)        (x)
  90. #define __pgprot(x)     (x)
  91.  
  92. #endif /* STRICT_MM_TYPECHECKS */
  93.  
  94. #endif /* !__ASSEMBLY__ */
  95.  
  96.  
  97. /* to align the pointer to the (next) page boundary */
  98. #define PAGE_ALIGN(addr)    (((addr) + PAGE_SIZE - 1) & PAGE_MASK)
  99.  
  100.  
  101. /* No current v850 processor has virtual memory.  */
  102. #define __virt_to_phys(addr)    (addr)
  103. #define __phys_to_virt(addr)    (addr)
  104.  
  105. #define virt_to_pfn(kaddr)    (__virt_to_phys (kaddr) >> PAGE_SHIFT)
  106. #define pfn_to_virt(pfn)    __phys_to_virt ((pfn) << PAGE_SHIFT)
  107.  
  108. #define MAP_NR(kaddr) \
  109.   (((unsigned long)(kaddr) - PAGE_OFFSET) >> PAGE_SHIFT)
  110. #define virt_to_page(kaddr)    (mem_map + MAP_NR (kaddr))
  111. #define page_to_virt(page) \
  112.   ((((page) - mem_map) << PAGE_SHIFT) + PAGE_OFFSET)
  113.  
  114. #define ARCH_PFN_OFFSET        (PAGE_OFFSET >> PAGE_SHIFT)
  115. #define pfn_valid(pfn)            ((pfn) < max_mapnr)
  116.  
  117. #define    virt_addr_valid(kaddr)                        \
  118.   (((void *)(kaddr) >= (void *)PAGE_OFFSET) && MAP_NR (kaddr) < max_mapnr)
  119.  
  120.  
  121. #define __pa(x)             __virt_to_phys ((unsigned long)(x))
  122. #define __va(x)             ((void *)__phys_to_virt ((unsigned long)(x)))
  123.  
  124.  
  125. #define devmem_is_allowed(x) 1
  126.  
  127. #endif /* KERNEL */
  128.  
  129. #include <asm-generic/memory_model.h>
  130. #include <asm-generic/page.h>
  131.  
  132. #endif /* __V850_PAGE_H__ */
  133.