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