blob: 2677bad70f401c92236170f1fe27a1c3f4ceee51 [file] [log] [blame]
Michael Ellerman5cd16ee2005-11-11 14:25:24 +11001#ifndef _ASM_POWERPC_PAGE_32_H
2#define _ASM_POWERPC_PAGE_32_H
Arnd Bergmann88ced032005-12-16 22:43:46 +01003#ifdef __KERNEL__
Michael Ellerman5cd16ee2005-11-11 14:25:24 +11004
5#define VM_DATA_DEFAULT_FLAGS VM_DATA_DEFAULT_FLAGS32
6
Paul Mackerras493f25e2005-11-14 17:32:50 +11007#define PPC_MEMSTART 0
8
Michael Ellerman5cd16ee2005-11-11 14:25:24 +11009#ifndef __ASSEMBLY__
10/*
11 * The basic type of a PTE - 64 bits for those CPUs with > 32 bit
12 * physical addressing. For now this just the IBM PPC440.
13 */
14#ifdef CONFIG_PTE_64BIT
15typedef unsigned long long pte_basic_t;
16#define PTE_SHIFT (PAGE_SHIFT - 3) /* 512 ptes per page */
17#define PTE_FMT "%16Lx"
18#else
19typedef unsigned long pte_basic_t;
20#define PTE_SHIFT (PAGE_SHIFT - 2) /* 1024 ptes per page */
21#define PTE_FMT "%.8lx"
22#endif
23
24struct page;
25extern void clear_pages(void *page, int order);
26static inline void clear_page(void *page) { clear_pages(page, 0); }
27extern void copy_page(void *to, void *from);
28
29/* Pure 2^n version of get_order */
30extern __inline__ int get_order(unsigned long size)
31{
32 int lz;
33
34 size = (size-1) >> PAGE_SHIFT;
35 asm ("cntlzw %0,%1" : "=r" (lz) : "r" (size));
36 return 32 - lz;
37}
38
39#endif /* __ASSEMBLY__ */
40
Arnd Bergmann88ced032005-12-16 22:43:46 +010041#endif /* __KERNEL__ */
Michael Ellerman5cd16ee2005-11-11 14:25:24 +110042#endif /* _ASM_POWERPC_PAGE_32_H */