summaryrefslogtreecommitdiff
path: root/include/sbi
diff options
context:
space:
mode:
authorVivian Wang <dramforever@live.com>2022-08-04 17:32:28 +0300
committerAnup Patel <anup@brainfault.org>2022-08-22 06:19:39 +0300
commit1fbe7778c9843930ce3dadb35804d56e1f782479 (patch)
tree2d33940f766a9d0da22b67d0b90a28a5424733b0 /include/sbi
parent9529e360dfca40feeb2471bdde990207d44d68e1 (diff)
downloadopensbi-1fbe7778c9843930ce3dadb35804d56e1f782479.tar.xz
lib: sbi_trap: Save mstatus[h].GVA in trap->gva
The machine mode GVA field is available if the hypervisor extension is implemented, and indicates if mtval is a guest virtual address. Add a gva field to sbi_trap_info for this, and in __sbi_expected_trap_hext, save mstatus[h].GVA to it, so that gva indicates if tval is a guest virtual address. If the hypervisor extension is not implemented, always set gva to 0. Signed-off-by: Vivian Wang <dramforever@live.com> Reviewed-by: Andrew Jones <ajones@ventanamicro.com> Reviewed-by: Anup Patel <anup@brainfault.org>
Diffstat (limited to 'include/sbi')
-rw-r--r--include/sbi/sbi_trap.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/include/sbi/sbi_trap.h b/include/sbi/sbi_trap.h
index d205056..fe3640a 100644
--- a/include/sbi/sbi_trap.h
+++ b/include/sbi/sbi_trap.h
@@ -95,8 +95,10 @@
#define SBI_TRAP_INFO_tval2 3
/** Index of tinst member in sbi_trap_info */
#define SBI_TRAP_INFO_tinst 4
+/** Index of gva member in sbi_trap_info */
+#define SBI_TRAP_INFO_gva 5
/** Last member index in sbi_trap_info */
-#define SBI_TRAP_INFO_last 5
+#define SBI_TRAP_INFO_last 6
/* clang-format on */
@@ -200,6 +202,8 @@ struct sbi_trap_info {
unsigned long tval2;
/** tinst Trap instruction */
unsigned long tinst;
+ /** gva Guest virtual address in tval flag */
+ unsigned long gva;
};
int sbi_trap_redirect(struct sbi_trap_regs *regs,