1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 #ifndef _ASMRISCV_PGTABLE_H_ 3 #define _ASMRISCV_PGTABLE_H_ 4 #include <linux/const.h> 5 6 #if __riscv_xlen == 32 7 #define SATP_PPN _AC(0x003FFFFF, UL) 8 #define SATP_MODE_32 _AC(0x80000000, UL) 9 #define SATP_MODE_SHIFT 31 10 #define NR_LEVELS 2 11 #define PGDIR_BITS 10 12 #define PGDIR_MASK _AC(0x3FF, UL) 13 #define PTE_PPN _AC(0xFFFFFC00, UL) 14 15 #define SATP_MODE_DEFAULT SATP_MODE_32 16 17 #else 18 #define SATP_PPN _AC(0x00000FFFFFFFFFFF, UL) 19 #define SATP_MODE_39 _AC(0x8000000000000000, UL) 20 #define SATP_MODE_SHIFT 60 21 #define NR_LEVELS 3 22 #define PGDIR_BITS 9 23 #define PGDIR_MASK _AC(0x1FF, UL) 24 #define PTE_PPN _AC(0x3FFFFFFFFFFC00, UL) 25 26 #define SATP_MODE_DEFAULT SATP_MODE_39 27 28 #endif 29 30 #define PPN_SHIFT 10 31 32 #define _PAGE_PRESENT (1 << 0) 33 #define _PAGE_READ (1 << 1) 34 #define _PAGE_WRITE (1 << 2) 35 #define _PAGE_EXEC (1 << 3) 36 #define _PAGE_USER (1 << 4) 37 #define _PAGE_GLOBAL (1 << 5) 38 #define _PAGE_ACCESSED (1 << 6) 39 #define _PAGE_DIRTY (1 << 7) 40 #define _PAGE_SOFT (3 << 8) 41 42 #endif /* _ASMRISCV_PGTABLE_H_ */ 43