This patch extends asm/csr.h by adding RISC-V hypervisor extension
related defines.

Signed-off-by: Anup Patel <anup.pa...@wdc.com>
---
 arch/riscv/include/asm/csr.h | 58 ++++++++++++++++++++++++++++++++++++
 1 file changed, 58 insertions(+)

diff --git a/arch/riscv/include/asm/csr.h b/arch/riscv/include/asm/csr.h
index a18923fa23c8..059c5cb22aaf 100644
--- a/arch/riscv/include/asm/csr.h
+++ b/arch/riscv/include/asm/csr.h
@@ -27,6 +27,8 @@
 #define SR_XS_CLEAN    _AC(0x00010000, UL)
 #define SR_XS_DIRTY    _AC(0x00018000, UL)
 
+#define SR_MXR         _AC(0x00080000, UL)
+
 #ifndef CONFIG_64BIT
 #define SR_SD          _AC(0x80000000, UL) /* FS/XS dirty */
 #else
@@ -59,10 +61,13 @@
 
 #define EXC_INST_MISALIGNED    0
 #define EXC_INST_ACCESS                1
+#define EXC_INST_ILLEGAL       2
 #define EXC_BREAKPOINT         3
 #define EXC_LOAD_ACCESS                5
 #define EXC_STORE_ACCESS       7
 #define EXC_SYSCALL            8
+#define EXC_HYPERVISOR_SYSCALL 9
+#define EXC_SUPERVISOR_SYSCALL 10
 #define EXC_INST_PAGE_FAULT    12
 #define EXC_LOAD_PAGE_FAULT    13
 #define EXC_STORE_PAGE_FAULT   15
@@ -72,6 +77,43 @@
 #define SIE_STIE               (_AC(0x1, UL) << IRQ_S_TIMER)
 #define SIE_SEIE               (_AC(0x1, UL) << IRQ_S_EXT)
 
+/* HSTATUS flags */
+#define HSTATUS_VTSR           _AC(0x00400000, UL)
+#define HSTATUS_VTVM           _AC(0x00100000, UL)
+#define HSTATUS_SP2V           _AC(0x00000200, UL)
+#define HSTATUS_SP2P           _AC(0x00000100, UL)
+#define HSTATUS_SPV            _AC(0x00000080, UL)
+#define HSTATUS_STL            _AC(0x00000040, UL)
+#define HSTATUS_SPRV           _AC(0x00000001, UL)
+
+/* HGATP flags */
+#define HGATP_MODE_OFF         _AC(0, UL)
+#define HGATP_MODE_SV32X4      _AC(1, UL)
+#define HGATP_MODE_SV39X4      _AC(8, UL)
+#define HGATP_MODE_SV48X4      _AC(9, UL)
+
+#define HGATP32_MODE_SHIFT     31
+#define HGATP32_VMID_SHIFT     22
+#define HGATP32_VMID_MASK      _AC(0x1FC00000, UL)
+#define HGATP32_PPN            _AC(0x003FFFFF, UL)
+
+#define HGATP64_MODE_SHIFT     60
+#define HGATP64_VMID_SHIFT     44
+#define HGATP64_VMID_MASK      _AC(0x03FFF00000000000, UL)
+#define HGATP64_PPN            _AC(0x00000FFFFFFFFFFF, UL)
+
+#ifdef CONFIG_64BIT
+#define HGATP_PPN              HGATP64_PPN
+#define HGATP_VMID_SHIFT       HGATP64_VMID_SHIFT
+#define HGATP_VMID_MASK                HGATP64_VMID_MASK
+#define HGATP_MODE             (HGATP_MODE_SV39X4 << HGATP64_MODE_SHIFT)
+#else
+#define HGATP_PPN              HGATP32_PPN
+#define HGATP_VMID_SHIFT       HGATP32_VMID_SHIFT
+#define HGATP_VMID_MASK                HGATP32_VMID_MASK
+#define HGATP_MODE             (HGATP_MODE_SV32X4 << HGATP32_MODE_SHIFT)
+#endif
+
 #define CSR_CYCLE              0xc00
 #define CSR_TIME               0xc01
 #define CSR_INSTRET            0xc02
@@ -85,6 +127,22 @@
 #define CSR_STVAL              0x143
 #define CSR_SIP                        0x144
 #define CSR_SATP               0x180
+
+#define CSR_VSSTATUS           0x200
+#define CSR_VSIE               0x204
+#define CSR_VSTVEC             0x205
+#define CSR_VSSCRATCH          0x240
+#define CSR_VSEPC              0x241
+#define CSR_VSCAUSE            0x242
+#define CSR_VSTVAL             0x243
+#define CSR_VSIP               0x244
+#define CSR_VSATP              0x280
+
+#define CSR_HSTATUS            0x600
+#define CSR_HEDELEG            0x602
+#define CSR_HIDELEG            0x603
+#define CSR_HGATP              0x680
+
 #define CSR_CYCLEH             0xc80
 #define CSR_TIMEH              0xc81
 #define CSR_INSTRETH           0xc82
-- 
2.17.1

Reply via email to