Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-only */
0002 /*
0003  * arch/arm/include/asm/pgtable-2level-types.h
0004  *
0005  * Copyright (C) 1995-2003 Russell King
0006  */
0007 #ifndef _ASM_PGTABLE_2LEVEL_TYPES_H
0008 #define _ASM_PGTABLE_2LEVEL_TYPES_H
0009 
0010 #include <asm/types.h>
0011 
0012 typedef u32 pteval_t;
0013 typedef u32 pmdval_t;
0014 
0015 #undef STRICT_MM_TYPECHECKS
0016 
0017 #ifdef STRICT_MM_TYPECHECKS
0018 /*
0019  * These are used to make use of C type-checking..
0020  */
0021 typedef struct { pteval_t pte; } pte_t;
0022 typedef struct { pmdval_t pmd; } pmd_t;
0023 typedef struct { pmdval_t pgd[2]; } pgd_t;
0024 typedef struct { pteval_t pgprot; } pgprot_t;
0025 
0026 #define pte_val(x)      ((x).pte)
0027 #define pmd_val(x)      ((x).pmd)
0028 #define pgd_val(x)  ((x).pgd[0])
0029 #define pgprot_val(x)   ((x).pgprot)
0030 
0031 #define __pte(x)        ((pte_t) { (x) } )
0032 #define __pmd(x)        ((pmd_t) { (x) } )
0033 #define __pgprot(x)     ((pgprot_t) { (x) } )
0034 
0035 #else
0036 /*
0037  * .. while these make it easier on the compiler
0038  */
0039 typedef pteval_t pte_t;
0040 typedef pmdval_t pmd_t;
0041 typedef pmdval_t pgd_t[2];
0042 typedef pteval_t pgprot_t;
0043 
0044 #define pte_val(x)      (x)
0045 #define pmd_val(x)      (x)
0046 #define pgd_val(x)  ((x)[0])
0047 #define pgprot_val(x)   (x)
0048 
0049 #define __pte(x)        (x)
0050 #define __pmd(x)        (x)
0051 #define __pgprot(x)     (x)
0052 
0053 #endif /* STRICT_MM_TYPECHECKS */
0054 
0055 #endif  /* _ASM_PGTABLE_2LEVEL_TYPES_H */