.. | .. |
---|
3 | 3 | #define _ASM_POWERPC_PGTABLE_TYPES_H |
---|
4 | 4 | |
---|
5 | 5 | /* PTE level */ |
---|
| 6 | +#if defined(CONFIG_PPC_8xx) && defined(CONFIG_PPC_16K_PAGES) |
---|
| 7 | +typedef struct { pte_basic_t pte, pte1, pte2, pte3; } pte_t; |
---|
| 8 | +#else |
---|
6 | 9 | typedef struct { pte_basic_t pte; } pte_t; |
---|
| 10 | +#endif |
---|
7 | 11 | #define __pte(x) ((pte_t) { (x) }) |
---|
8 | 12 | static inline pte_basic_t pte_val(pte_t x) |
---|
9 | 13 | { |
---|
.. | .. |
---|
19 | 23 | return x.pmd; |
---|
20 | 24 | } |
---|
21 | 25 | |
---|
22 | | -/* |
---|
23 | | - * 64 bit hash always use 4 level table. Everybody else use 4 level |
---|
24 | | - * only for 4K page size. |
---|
25 | | - */ |
---|
26 | | -#if defined(CONFIG_PPC_BOOK3S_64) || !defined(CONFIG_PPC_64K_PAGES) |
---|
| 26 | +/* 64 bit always use 4 level table. */ |
---|
27 | 27 | typedef struct { unsigned long pud; } pud_t; |
---|
28 | 28 | #define __pud(x) ((pud_t) { (x) }) |
---|
29 | 29 | static inline unsigned long pud_val(pud_t x) |
---|
30 | 30 | { |
---|
31 | 31 | return x.pud; |
---|
32 | 32 | } |
---|
33 | | -#endif /* CONFIG_PPC_BOOK3S_64 || !CONFIG_PPC_64K_PAGES */ |
---|
34 | 33 | #endif /* CONFIG_PPC64 */ |
---|
35 | 34 | |
---|
36 | 35 | /* PGD level */ |
---|
.. | .. |
---|
50 | 49 | * With hash config 64k pages additionally define a bigger "real PTE" type that |
---|
51 | 50 | * gathers the "second half" part of the PTE for pseudo 64k pages |
---|
52 | 51 | */ |
---|
53 | | -#if defined(CONFIG_PPC_64K_PAGES) && defined(CONFIG_PPC_BOOK3S_64) |
---|
| 52 | +#ifdef CONFIG_PPC_64K_PAGES |
---|
54 | 53 | typedef struct { pte_t pte; unsigned long hidx; } real_pte_t; |
---|
55 | 54 | #else |
---|
56 | 55 | typedef struct { pte_t pte; } real_pte_t; |
---|