From a69eb6cc65a16f26455bfb5b7cab768ac891bc1d Mon Sep 17 00:00:00 2001 From: Vivian Wang Date: Thu, 4 Aug 2022 22:32:31 +0800 Subject: [PATCH] lib: sbi_trap: Set hstatus.GVA when going to HS-mode The privileged spec specifies that on a trap to HS-mode, hstatus.GVA should be set to 1 if stval is written with a guest virtual address, and to 0 otherwise. Implement this by setting hstatus.GVA to trap->gva when redirecting traps to HS-mode. Signed-off-by: Vivian Wang Reviewed-by: Andrew Jones Reviewed-by: Anup Patel --- lib/sbi/sbi_trap.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/sbi/sbi_trap.c b/lib/sbi/sbi_trap.c index 1cf2e6f..925840f 100644 --- a/lib/sbi/sbi_trap.c +++ b/lib/sbi/sbi_trap.c @@ -128,6 +128,8 @@ int sbi_trap_redirect(struct sbi_trap_regs *regs, } hstatus &= ~HSTATUS_SPV; hstatus |= (prev_virt) ? HSTATUS_SPV : 0; + hstatus &= ~HSTATUS_GVA; + hstatus |= (trap->gva) ? HSTATUS_GVA : 0; csr_write(CSR_HSTATUS, hstatus); csr_write(CSR_HTVAL, trap->tval2); csr_write(CSR_HTINST, trap->tinst); -- 2.7.4