aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>2016-02-29 23:15:11 -0500
committerMichael Ellerman <mpe@ellerman.id.au>2016-03-03 00:47:01 -0500
commit2bf59916ef033edb9f8e968ee27e486ccb8ba1ce (patch)
treef048d512e21783f4b9366d5142f888d0539b8e79
parentbf6a4d5b75d1ea87897fe68d0e45d35a2996c678 (diff)
powerpc/mm: Split pgtable types to separate header
We move the page table accessors into a separate header. We will later add a big endian variant of the table which is needed for radix. No functionality change only code movement. Reviewed-by: Paul Mackerras <paulus@samba.org> Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
-rw-r--r--arch/powerpc/include/asm/page.h104
-rw-r--r--arch/powerpc/include/asm/pgtable-types.h108
2 files changed, 109 insertions, 103 deletions
diff --git a/arch/powerpc/include/asm/page.h b/arch/powerpc/include/asm/page.h
index af7a3422a3ef..ab3d8977bacd 100644
--- a/arch/powerpc/include/asm/page.h
+++ b/arch/powerpc/include/asm/page.h
@@ -288,109 +288,7 @@ extern long long virt_phys_offset;
288 288
289#ifndef __ASSEMBLY__ 289#ifndef __ASSEMBLY__
290 290
291#ifdef CONFIG_STRICT_MM_TYPECHECKS 291#include <asm/pgtable-types.h>
292/* These are used to make use of C type-checking. */
293
294/* PTE level */
295typedef struct { pte_basic_t pte; } pte_t;
296#define __pte(x) ((pte_t) { (x) })
297static inline pte_basic_t pte_val(pte_t x)
298{
299 return x.pte;
300}
301
302/* 64k pages additionally define a bigger "real PTE" type that gathers
303 * the "second half" part of the PTE for pseudo 64k pages
304 */
305#if defined(CONFIG_PPC_64K_PAGES) && defined(CONFIG_PPC_STD_MMU_64)
306typedef struct { pte_t pte; unsigned long hidx; } real_pte_t;
307#else
308typedef struct { pte_t pte; } real_pte_t;
309#endif
310
311/* PMD level */
312#ifdef CONFIG_PPC64
313typedef struct { unsigned long pmd; } pmd_t;
314#define __pmd(x) ((pmd_t) { (x) })
315static inline unsigned long pmd_val(pmd_t x)
316{
317 return x.pmd;
318}
319
320/* PUD level exusts only on 4k pages */
321#ifndef CONFIG_PPC_64K_PAGES
322typedef struct { unsigned long pud; } pud_t;
323#define __pud(x) ((pud_t) { (x) })
324static inline unsigned long pud_val(pud_t x)
325{
326 return x.pud;
327}
328#endif /* !CONFIG_PPC_64K_PAGES */
329#endif /* CONFIG_PPC64 */
330
331/* PGD level */
332typedef struct { unsigned long pgd; } pgd_t;
333#define __pgd(x) ((pgd_t) { (x) })
334static inline unsigned long pgd_val(pgd_t x)
335{
336 return x.pgd;
337}
338
339/* Page protection bits */
340typedef struct { unsigned long pgprot; } pgprot_t;
341#define pgprot_val(x) ((x).pgprot)
342#define __pgprot(x) ((pgprot_t) { (x) })
343
344#else
345
346/*
347 * .. while these make it easier on the compiler
348 */
349
350typedef pte_basic_t pte_t;
351#define __pte(x) (x)
352static inline pte_basic_t pte_val(pte_t pte)
353{
354 return pte;
355}
356
357#if defined(CONFIG_PPC_64K_PAGES) && defined(CONFIG_PPC_STD_MMU_64)
358typedef struct { pte_t pte; unsigned long hidx; } real_pte_t;
359#else
360typedef pte_t real_pte_t;
361#endif
362
363
364#ifdef CONFIG_PPC64
365typedef unsigned long pmd_t;
366#define __pmd(x) (x)
367static inline unsigned long pmd_val(pmd_t pmd)
368{
369 return pmd;
370}
371
372#ifndef CONFIG_PPC_64K_PAGES
373typedef unsigned long pud_t;
374#define __pud(x) (x)
375static inline unsigned long pud_val(pud_t pud)
376{
377 return pud;
378}
379#endif /* !CONFIG_PPC_64K_PAGES */
380#endif /* CONFIG_PPC64 */
381
382typedef unsigned long pgd_t;
383#define __pgd(x) (x)
384static inline unsigned long pgd_val(pgd_t pgd)
385{
386 return pgd;
387}
388
389typedef unsigned long pgprot_t;
390#define pgprot_val(x) (x)
391#define __pgprot(x) (x)
392
393#endif
394 292
395typedef struct { signed long pd; } hugepd_t; 293typedef struct { signed long pd; } hugepd_t;
396 294
diff --git a/arch/powerpc/include/asm/pgtable-types.h b/arch/powerpc/include/asm/pgtable-types.h
new file mode 100644
index 000000000000..2fac0c4acfa4
--- /dev/null
+++ b/arch/powerpc/include/asm/pgtable-types.h
@@ -0,0 +1,108 @@
1#ifndef _ASM_POWERPC_PGTABLE_TYPES_H
2#define _ASM_POWERPC_PGTABLE_TYPES_H
3
4#ifdef CONFIG_STRICT_MM_TYPECHECKS
5/* These are used to make use of C type-checking. */
6
7/* PTE level */
8typedef struct { pte_basic_t pte; } pte_t;
9#define __pte(x) ((pte_t) { (x) })
10static inline pte_basic_t pte_val(pte_t x)
11{
12 return x.pte;
13}
14
15/* 64k pages additionally define a bigger "real PTE" type that gathers
16 * the "second half" part of the PTE for pseudo 64k pages
17 */
18#if defined(CONFIG_PPC_64K_PAGES) && defined(CONFIG_PPC_STD_MMU_64)
19typedef struct { pte_t pte; unsigned long hidx; } real_pte_t;
20#else
21typedef struct { pte_t pte; } real_pte_t;
22#endif
23
24/* PMD level */
25#ifdef CONFIG_PPC64
26typedef struct { unsigned long pmd; } pmd_t;
27#define __pmd(x) ((pmd_t) { (x) })
28static inline unsigned long pmd_val(pmd_t x)
29{
30 return x.pmd;
31}
32
33/* PUD level exusts only on 4k pages */
34#ifndef CONFIG_PPC_64K_PAGES
35typedef struct { unsigned long pud; } pud_t;
36#define __pud(x) ((pud_t) { (x) })
37static inline unsigned long pud_val(pud_t x)
38{
39 return x.pud;
40}
41#endif /* !CONFIG_PPC_64K_PAGES */
42#endif /* CONFIG_PPC64 */
43
44/* PGD level */
45typedef struct { unsigned long pgd; } pgd_t;
46#define __pgd(x) ((pgd_t) { (x) })
47static inline unsigned long pgd_val(pgd_t x)
48{
49 return x.pgd;
50}
51
52/* Page protection bits */
53typedef struct { unsigned long pgprot; } pgprot_t;
54#define pgprot_val(x) ((x).pgprot)
55#define __pgprot(x) ((pgprot_t) { (x) })
56
57#else
58
59/*
60 * .. while these make it easier on the compiler
61 */
62
63typedef pte_basic_t pte_t;
64#define __pte(x) (x)
65static inline pte_basic_t pte_val(pte_t pte)
66{
67 return pte;
68}
69
70#if defined(CONFIG_PPC_64K_PAGES) && defined(CONFIG_PPC_STD_MMU_64)
71typedef struct { pte_t pte; unsigned long hidx; } real_pte_t;
72#else
73typedef pte_t real_pte_t;
74#endif
75
76
77#ifdef CONFIG_PPC64
78typedef unsigned long pmd_t;
79#define __pmd(x) (x)
80static inline unsigned long pmd_val(pmd_t pmd)
81{
82 return pmd;
83}
84
85#ifndef CONFIG_PPC_64K_PAGES
86typedef unsigned long pud_t;
87#define __pud(x) (x)
88static inline unsigned long pud_val(pud_t pud)
89{
90 return pud;
91}
92#endif /* !CONFIG_PPC_64K_PAGES */
93#endif /* CONFIG_PPC64 */
94
95typedef unsigned long pgd_t;
96#define __pgd(x) (x)
97static inline unsigned long pgd_val(pgd_t pgd)
98{
99 return pgd;
100}
101
102typedef unsigned long pgprot_t;
103#define pgprot_val(x) (x)
104#define __pgprot(x) (x)
105
106#endif
107
108#endif /* _ASM_POWERPC_PGTABLE_TYPES_H */