145051539SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */
217f57211SCatalin Marinas /*
317f57211SCatalin Marinas  * arch/arm/include/asm/pgtable-2level-types.h
417f57211SCatalin Marinas  *
517f57211SCatalin Marinas  * Copyright (C) 1995-2003 Russell King
617f57211SCatalin Marinas  */
717f57211SCatalin Marinas #ifndef _ASM_PGTABLE_2LEVEL_TYPES_H
817f57211SCatalin Marinas #define _ASM_PGTABLE_2LEVEL_TYPES_H
917f57211SCatalin Marinas 
10442e70c0SCatalin Marinas #include <asm/types.h>
11442e70c0SCatalin Marinas 
12442e70c0SCatalin Marinas typedef u32 pteval_t;
13442e70c0SCatalin Marinas typedef u32 pmdval_t;
1417f57211SCatalin Marinas 
1517f57211SCatalin Marinas #undef STRICT_MM_TYPECHECKS
1617f57211SCatalin Marinas 
1717f57211SCatalin Marinas #ifdef STRICT_MM_TYPECHECKS
1817f57211SCatalin Marinas /*
1917f57211SCatalin Marinas  * These are used to make use of C type-checking..
2017f57211SCatalin Marinas  */
2117f57211SCatalin Marinas typedef struct { pteval_t pte; } pte_t;
22442e70c0SCatalin Marinas typedef struct { pmdval_t pmd; } pmd_t;
23442e70c0SCatalin Marinas typedef struct { pmdval_t pgd[2]; } pgd_t;
24442e70c0SCatalin Marinas typedef struct { pteval_t pgprot; } pgprot_t;
2517f57211SCatalin Marinas 
2617f57211SCatalin Marinas #define pte_val(x)      ((x).pte)
2717f57211SCatalin Marinas #define pmd_val(x)      ((x).pmd)
2817f57211SCatalin Marinas #define pgd_val(x)	((x).pgd[0])
2917f57211SCatalin Marinas #define pgprot_val(x)   ((x).pgprot)
3017f57211SCatalin Marinas 
3117f57211SCatalin Marinas #define __pte(x)        ((pte_t) { (x) } )
3217f57211SCatalin Marinas #define __pmd(x)        ((pmd_t) { (x) } )
3317f57211SCatalin Marinas #define __pgprot(x)     ((pgprot_t) { (x) } )
3417f57211SCatalin Marinas 
3517f57211SCatalin Marinas #else
3617f57211SCatalin Marinas /*
3717f57211SCatalin Marinas  * .. while these make it easier on the compiler
3817f57211SCatalin Marinas  */
3917f57211SCatalin Marinas typedef pteval_t pte_t;
40442e70c0SCatalin Marinas typedef pmdval_t pmd_t;
41442e70c0SCatalin Marinas typedef pmdval_t pgd_t[2];
42442e70c0SCatalin Marinas typedef pteval_t pgprot_t;
4317f57211SCatalin Marinas 
4417f57211SCatalin Marinas #define pte_val(x)      (x)
4517f57211SCatalin Marinas #define pmd_val(x)      (x)
4617f57211SCatalin Marinas #define pgd_val(x)	((x)[0])
4717f57211SCatalin Marinas #define pgprot_val(x)   (x)
4817f57211SCatalin Marinas 
4917f57211SCatalin Marinas #define __pte(x)        (x)
5017f57211SCatalin Marinas #define __pmd(x)        (x)
5117f57211SCatalin Marinas #define __pgprot(x)     (x)
5217f57211SCatalin Marinas 
5317f57211SCatalin Marinas #endif /* STRICT_MM_TYPECHECKS */
5417f57211SCatalin Marinas 
5517f57211SCatalin Marinas #endif	/* _ASM_PGTABLE_2LEVEL_TYPES_H */
56