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