1caab277bSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */ 20f174025SCatalin Marinas /* 30f174025SCatalin Marinas * Page table types definitions. 40f174025SCatalin Marinas * 50f174025SCatalin Marinas * Copyright (C) 2014 ARM Ltd. 60f174025SCatalin Marinas * Author: Catalin Marinas <catalin.marinas@arm.com> 70f174025SCatalin Marinas */ 80f174025SCatalin Marinas 90f174025SCatalin Marinas #ifndef __ASM_PGTABLE_TYPES_H 100f174025SCatalin Marinas #define __ASM_PGTABLE_TYPES_H 110f174025SCatalin Marinas 120f174025SCatalin Marinas #include <asm/types.h> 130f174025SCatalin Marinas 140f174025SCatalin Marinas typedef u64 pteval_t; 150f174025SCatalin Marinas typedef u64 pmdval_t; 160f174025SCatalin Marinas typedef u64 pudval_t; 17e9f63768SMike Rapoport typedef u64 p4dval_t; 180f174025SCatalin Marinas typedef u64 pgdval_t; 190f174025SCatalin Marinas 200f174025SCatalin Marinas /* 210f174025SCatalin Marinas * These are used to make use of C type-checking.. 220f174025SCatalin Marinas */ 230f174025SCatalin Marinas typedef struct { pteval_t pte; } pte_t; 240f174025SCatalin Marinas #define pte_val(x) ((x).pte) 250f174025SCatalin Marinas #define __pte(x) ((pte_t) { (x) } ) 260f174025SCatalin Marinas 279f25e6adSKirill A. Shutemov #if CONFIG_PGTABLE_LEVELS > 2 280f174025SCatalin Marinas typedef struct { pmdval_t pmd; } pmd_t; 290f174025SCatalin Marinas #define pmd_val(x) ((x).pmd) 300f174025SCatalin Marinas #define __pmd(x) ((pmd_t) { (x) } ) 310f174025SCatalin Marinas #endif 320f174025SCatalin Marinas 339f25e6adSKirill A. Shutemov #if CONFIG_PGTABLE_LEVELS > 3 340f174025SCatalin Marinas typedef struct { pudval_t pud; } pud_t; 350f174025SCatalin Marinas #define pud_val(x) ((x).pud) 360f174025SCatalin Marinas #define __pud(x) ((pud_t) { (x) } ) 370f174025SCatalin Marinas #endif 380f174025SCatalin Marinas 390f174025SCatalin Marinas typedef struct { pgdval_t pgd; } pgd_t; 400f174025SCatalin Marinas #define pgd_val(x) ((x).pgd) 410f174025SCatalin Marinas #define __pgd(x) ((pgd_t) { (x) } ) 420f174025SCatalin Marinas 430f174025SCatalin Marinas typedef struct { pteval_t pgprot; } pgprot_t; 440f174025SCatalin Marinas #define pgprot_val(x) ((x).pgprot) 450f174025SCatalin Marinas #define __pgprot(x) ((pgprot_t) { (x) } ) 460f174025SCatalin Marinas 479f25e6adSKirill A. Shutemov #if CONFIG_PGTABLE_LEVELS == 2 480f174025SCatalin Marinas #include <asm-generic/pgtable-nopmd.h> 499f25e6adSKirill A. Shutemov #elif CONFIG_PGTABLE_LEVELS == 3 500f174025SCatalin Marinas #include <asm-generic/pgtable-nopud.h> 519849a569SKirill A. Shutemov #elif CONFIG_PGTABLE_LEVELS == 4 52e9f63768SMike Rapoport #include <asm-generic/pgtable-nop4d.h> 530f174025SCatalin Marinas #endif 540f174025SCatalin Marinas 550f174025SCatalin Marinas #endif /* __ASM_PGTABLE_TYPES_H */ 56