diff options
author | Vivian Wang <dramforever@live.com> | 2022-08-04 17:32:28 +0300 |
---|---|---|
committer | Anup Patel <anup@brainfault.org> | 2022-08-22 06:19:39 +0300 |
commit | 1fbe7778c9843930ce3dadb35804d56e1f782479 (patch) | |
tree | 2d33940f766a9d0da22b67d0b90a28a5424733b0 /include/sbi | |
parent | 9529e360dfca40feeb2471bdde990207d44d68e1 (diff) | |
download | opensbi-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.h | 6 |
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, |