~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Linux Cross Reference
Linux/include/asm-ppc/page.h

Version: ~ [ 2.4.0 ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 #ifndef _PPC_PAGE_H
  2 #define _PPC_PAGE_H
  3 
  4 /* PAGE_SHIFT determines the page size */
  5 #define PAGE_SHIFT      12
  6 #define PAGE_SIZE       (1UL << PAGE_SHIFT)
  7 #define PAGE_MASK       (~(PAGE_SIZE-1))
  8 
  9 #ifdef __KERNEL__
 10 #include <linux/config.h>
 11 
 12 #define PAGE_OFFSET     0xc0000000
 13 #define KERNELBASE      PAGE_OFFSET
 14 
 15 #ifndef __ASSEMBLY__
 16 #include <asm/system.h> /* for xmon definition */
 17 
 18 #ifdef CONFIG_XMON
 19 #define BUG() do { \
 20         printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); \
 21         xmon(0); \
 22 } while (0)
 23 #else
 24 #define BUG() do { \
 25         printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); \
 26         __asm__ __volatile__(".long 0x0"); \
 27 } while (0)
 28 #endif
 29 #define PAGE_BUG(page) do { BUG(); } while (0)
 30 
 31 #define STRICT_MM_TYPECHECKS
 32 
 33 #ifdef STRICT_MM_TYPECHECKS
 34 /*
 35  * These are used to make use of C type-checking..
 36  */
 37 typedef struct { unsigned long pte; } pte_t;
 38 typedef struct { unsigned long pmd; } pmd_t;
 39 typedef struct { unsigned long pgd; } pgd_t;
 40 typedef struct { unsigned long pgprot; } pgprot_t;
 41 
 42 #define pte_val(x)      ((x).pte)
 43 #define pmd_val(x)      ((x).pmd)
 44 #define pgd_val(x)      ((x).pgd)
 45 #define pgprot_val(x)   ((x).pgprot)
 46 
 47 #define __pte(x)        ((pte_t) { (x) } )
 48 #define __pmd(x)        ((pmd_t) { (x) } )
 49 #define __pgd(x)        ((pgd_t) { (x) } )
 50 #define __pgprot(x)     ((pgprot_t) { (x) } )
 51 
 52 #else
 53 /*
 54  * .. while these make it easier on the compiler
 55  */
 56 typedef unsigned long pte_t;
 57 typedef unsigned long pmd_t;
 58 typedef unsigned long pgd_t;
 59 typedef unsigned long pgprot_t;
 60 
 61 #define pte_val(x)      (x)
 62 #define pmd_val(x)      (x)
 63 #define pgd_val(x)      (x)
 64 #define pgprot_val(x)   (x)
 65 
 66 #define __pte(x)        (x)
 67 #define __pmd(x)        (x)
 68 #define __pgd(x)        (x)
 69 #define __pgprot(x)     (x)
 70 
 71 #endif
 72 
 73 
 74 /* align addr on a size boundry - adjust address up if needed -- Cort */
 75 #define _ALIGN(addr,size)       (((addr)+size-1)&(~(size-1)))
 76 
 77 /* to align the pointer to the (next) page boundary */
 78 #define PAGE_ALIGN(addr)        (((addr)+PAGE_SIZE-1)&PAGE_MASK)
 79 
 80 extern void clear_page(void *page);
 81 extern void copy_page(void *to, void *from);
 82 #define clear_user_page(page, vaddr)    clear_page(page)
 83 #define copy_user_page(to, from, vaddr) copy_page(to, from)
 84 
 85 /* map phys->virtual and virtual->phys for RAM pages */
 86 static inline unsigned long ___pa(unsigned long v)
 87 { 
 88         unsigned long p;
 89         asm volatile ("1: addis %0, %1, %2;" 
 90                       ".section \".vtop_fixup\",\"aw\";"
 91                       ".align  1;"
 92                       ".long   1b;"
 93                       ".previous;"
 94                       : "=r" (p) 
 95                       : "b" (v), "K" (((-PAGE_OFFSET) >> 16) & 0xffff));
 96 
 97         return p;
 98 }
 99 static inline void* ___va(unsigned long p)
100 { 
101         unsigned long v;
102         asm volatile ("1: addis %0, %1, %2;" 
103                       ".section \".ptov_fixup\",\"aw\";"
104                       ".align  1;"
105                       ".long   1b;"
106                       ".previous;"
107                       : "=r" (v) 
108                       : "b" (p), "K" (((PAGE_OFFSET) >> 16) & 0xffff));
109 
110         return (void*) v;
111 }
112 #define __pa(x) ___pa ((unsigned long)(x))
113 #define __va(x) ___va ((unsigned long)(x))
114 
115 #define MAP_PAGE_RESERVED       (1<<15)
116 #define virt_to_page(kaddr)     (mem_map + (((unsigned long)kaddr-PAGE_OFFSET) >> PAGE_SHIFT))
117 #define VALID_PAGE(page)        ((page - mem_map) < max_mapnr)
118 
119 extern unsigned long get_zero_page_fast(void);
120 
121 /* Pure 2^n version of get_order */
122 extern __inline__ int get_order(unsigned long size)
123 {
124         int order;
125 
126         size = (size-1) >> (PAGE_SHIFT-1);
127         order = -1;
128         do {
129                 size >>= 1;
130                 order++;
131         } while (size);
132         return order;
133 }
134 
135 #endif /* __ASSEMBLY__ */
136 #endif /* __KERNEL__ */
137 #endif /* _PPC_PAGE_H */
138 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.