linux/arch/arm64/include/asm/pgtable-types.h
<<
>>
Prefs
   1/*
   2 * Page table types definitions.
   3 *
   4 * Copyright (C) 2014 ARM Ltd.
   5 * Author: Catalin Marinas <catalin.marinas@arm.com>
   6 *
   7 * This program is free software: you can redistribute it and/or modify
   8 * it under the terms of the GNU General Public License version 2 as
   9 * published by the Free Software Foundation.
  10 *
  11 * This program is distributed in the hope that it will be useful,
  12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14 * GNU General Public License for more details.
  15 *
  16 * You should have received a copy of the GNU General Public License
  17 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  18 */
  19
  20#ifndef __ASM_PGTABLE_TYPES_H
  21#define __ASM_PGTABLE_TYPES_H
  22
  23#include <asm/types.h>
  24
  25typedef u64 pteval_t;
  26typedef u64 pmdval_t;
  27typedef u64 pudval_t;
  28typedef u64 pgdval_t;
  29
  30/*
  31 * These are used to make use of C type-checking..
  32 */
  33typedef struct { pteval_t pte; } pte_t;
  34#define pte_val(x)      ((x).pte)
  35#define __pte(x)        ((pte_t) { (x) } )
  36
  37#if CONFIG_PGTABLE_LEVELS > 2
  38typedef struct { pmdval_t pmd; } pmd_t;
  39#define pmd_val(x)      ((x).pmd)
  40#define __pmd(x)        ((pmd_t) { (x) } )
  41#endif
  42
  43#if CONFIG_PGTABLE_LEVELS > 3
  44typedef struct { pudval_t pud; } pud_t;
  45#define pud_val(x)      ((x).pud)
  46#define __pud(x)        ((pud_t) { (x) } )
  47#endif
  48
  49typedef struct { pgdval_t pgd; } pgd_t;
  50#define pgd_val(x)      ((x).pgd)
  51#define __pgd(x)        ((pgd_t) { (x) } )
  52
  53typedef struct { pteval_t pgprot; } pgprot_t;
  54#define pgprot_val(x)   ((x).pgprot)
  55#define __pgprot(x)     ((pgprot_t) { (x) } )
  56
  57#if CONFIG_PGTABLE_LEVELS == 2
  58#define __ARCH_USE_5LEVEL_HACK
  59#include <asm-generic/pgtable-nopmd.h>
  60#elif CONFIG_PGTABLE_LEVELS == 3
  61#define __ARCH_USE_5LEVEL_HACK
  62#include <asm-generic/pgtable-nopud.h>
  63#elif CONFIG_PGTABLE_LEVELS == 4
  64#include <asm-generic/5level-fixup.h>
  65#endif
  66
  67#endif  /* __ASM_PGTABLE_TYPES_H */
  68