0001
0002
0003
0004
0005
0006
0007
0008 #ifndef _ASM_PGTABLE_3LEVEL_TYPES_H
0009 #define _ASM_PGTABLE_3LEVEL_TYPES_H
0010
0011 #include <asm/types.h>
0012
0013 typedef u64 pteval_t;
0014 typedef u64 pmdval_t;
0015 typedef u64 pgdval_t;
0016
0017 #undef STRICT_MM_TYPECHECKS
0018
0019 #ifdef STRICT_MM_TYPECHECKS
0020
0021
0022
0023
0024 typedef struct { pteval_t pte; } pte_t;
0025 typedef struct { pmdval_t pmd; } pmd_t;
0026 typedef struct { pgdval_t pgd; } pgd_t;
0027 typedef struct { pteval_t pgprot; } pgprot_t;
0028
0029 #define pte_val(x) ((x).pte)
0030 #define pmd_val(x) ((x).pmd)
0031 #define pgd_val(x) ((x).pgd)
0032 #define pgprot_val(x) ((x).pgprot)
0033
0034 #define __pte(x) ((pte_t) { (x) } )
0035 #define __pmd(x) ((pmd_t) { (x) } )
0036 #define __pgd(x) ((pgd_t) { (x) } )
0037 #define __pgprot(x) ((pgprot_t) { (x) } )
0038
0039 #else
0040
0041 typedef pteval_t pte_t;
0042 typedef pmdval_t pmd_t;
0043 typedef pgdval_t pgd_t;
0044 typedef pteval_t pgprot_t;
0045
0046 #define pte_val(x) (x)
0047 #define pmd_val(x) (x)
0048 #define pgd_val(x) (x)
0049 #define pgprot_val(x) (x)
0050
0051 #define __pte(x) (x)
0052 #define __pmd(x) (x)
0053 #define __pgd(x) (x)
0054 #define __pgprot(x) (x)
0055
0056 #endif
0057
0058 #endif