1 #include <linux/config.h>
3 #include <asm/system.h> /* for xmon definition */
4 #endif /* ndef __ASSEMBLY__ */
9 /* PAGE_SHIFT determines the page size */
11 #define PAGE_SIZE (1UL << PAGE_SHIFT)
12 #define PAGE_MASK (~(PAGE_SIZE-1))
14 #define PAGE_OFFSET 0xc0000000
15 #define KERNELBASE PAGE_OFFSET
22 printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); \
27 printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); \
28 __asm__ __volatile__(".long 0x0"); \
31 #define PAGE_BUG(page) do { BUG(); } while (0)
33 #define STRICT_MM_TYPECHECKS
35 #ifdef STRICT_MM_TYPECHECKS
37 * These are used to make use of C type-checking..
39 typedef struct { unsigned long pte
; } pte_t
;
40 typedef struct { unsigned long pmd
; } pmd_t
;
41 typedef struct { unsigned long pgd
; } pgd_t
;
42 typedef struct { unsigned long pgprot
; } pgprot_t
;
44 #define pte_val(x) ((x).pte)
45 #define pmd_val(x) ((x).pmd)
46 #define pgd_val(x) ((x).pgd)
47 #define pgprot_val(x) ((x).pgprot)
49 #define __pte(x) ((pte_t) { (x) } )
50 #define __pmd(x) ((pmd_t) { (x) } )
51 #define __pgd(x) ((pgd_t) { (x) } )
52 #define __pgprot(x) ((pgprot_t) { (x) } )
56 * .. while these make it easier on the compiler
58 typedef unsigned long pte_t
;
59 typedef unsigned long pmd_t
;
60 typedef unsigned long pgd_t
;
61 typedef unsigned long pgprot_t
;
63 #define pte_val(x) (x)
64 #define pmd_val(x) (x)
65 #define pgd_val(x) (x)
66 #define pgprot_val(x) (x)
71 #define __pgprot(x) (x)
76 /* align addr on a size boundry - adjust address up if needed -- Cort */
77 #define _ALIGN(addr,size) (((addr)+size-1)&(~(size-1)))
79 /* to align the pointer to the (next) page boundary */
80 #define PAGE_ALIGN(addr) (((addr)+PAGE_SIZE-1)&PAGE_MASK)
82 extern void clear_page(void *page
);
83 extern void copy_page(void *to
, void *from
);
84 #define clear_user_page(page, vaddr) clear_page(page)
85 #define copy_user_page(to, from, vaddr) copy_page(to, from)
87 /* map phys->virtual and virtual->phys for RAM pages */
88 static inline unsigned long ___pa(unsigned long v
)
91 asm volatile ("1: addis %0, %1, %2;"
92 ".section \".vtop_fixup\",\"aw\";"
97 : "b" (v
), "K" (((-PAGE_OFFSET
) >> 16) & 0xffff));
101 static inline void* ___va(unsigned long p
)
104 asm volatile ("1: addis %0, %1, %2;"
105 ".section \".ptov_fixup\",\"aw\";"
110 : "b" (p
), "K" (((PAGE_OFFSET
) >> 16) & 0xffff));
114 #define __pa(x) ___pa ((unsigned long)(x))
115 #define __va(x) ___va ((unsigned long)(x))
117 #define MAP_NR(addr) (((unsigned long)addr-PAGE_OFFSET) >> PAGE_SHIFT)
118 #define MAP_PAGE_RESERVED (1<<15)
120 extern unsigned long get_zero_page_fast(void);
122 /* Pure 2^n version of get_order */
123 extern __inline__
int get_order(unsigned long size
)
127 size
= (size
-1) >> (PAGE_SHIFT
-1);
136 #endif /* __KERNEL__ */
137 #endif /* __ASSEMBLY__ */
138 #endif /* _PPC_PAGE_H */