mirror of
https://github.com/riscv-software-src/opensbi.git
synced 2025-08-25 07:41:42 +01:00
include: Extend struct sbi_trap_info for mtval2 and mtinst
We have two new trap CSRs namely mtval2 and mtinst when RISC-V hypervisor extension is available hence we extend struct sbi_trap_info accordingly. Signed-off-by: Anup Patel <anup.patel@wdc.com> Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
This commit is contained in:
@@ -178,6 +178,10 @@ struct sbi_trap_info {
|
|||||||
unsigned long cause;
|
unsigned long cause;
|
||||||
/** tval Trap value */
|
/** tval Trap value */
|
||||||
unsigned long tval;
|
unsigned long tval;
|
||||||
|
/** tval2 Trap value 2 */
|
||||||
|
unsigned long tval2;
|
||||||
|
/** tinst Trap instruction */
|
||||||
|
unsigned long tinst;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct sbi_scratch;
|
struct sbi_scratch;
|
||||||
|
@@ -24,6 +24,8 @@
|
|||||||
trap->epc = 0; \
|
trap->epc = 0; \
|
||||||
trap->cause = 0; \
|
trap->cause = 0; \
|
||||||
trap->tval = 0; \
|
trap->tval = 0; \
|
||||||
|
trap->tval2 = 0; \
|
||||||
|
trap->tinst = 0; \
|
||||||
sbi_hart_set_trap_info(scratch, trap); \
|
sbi_hart_set_trap_info(scratch, trap); \
|
||||||
asm volatile( \
|
asm volatile( \
|
||||||
"csrrs %0, " STR(CSR_MSTATUS) ", %3\n" \
|
"csrrs %0, " STR(CSR_MSTATUS) ", %3\n" \
|
||||||
@@ -47,6 +49,8 @@
|
|||||||
trap->epc = 0; \
|
trap->epc = 0; \
|
||||||
trap->cause = 0; \
|
trap->cause = 0; \
|
||||||
trap->tval = 0; \
|
trap->tval = 0; \
|
||||||
|
trap->tval2 = 0; \
|
||||||
|
trap->tinst = 0; \
|
||||||
sbi_hart_set_trap_info(scratch, trap); \
|
sbi_hart_set_trap_info(scratch, trap); \
|
||||||
asm volatile( \
|
asm volatile( \
|
||||||
"csrrs %0, " STR(CSR_MSTATUS) ", %3\n" \
|
"csrrs %0, " STR(CSR_MSTATUS) ", %3\n" \
|
||||||
@@ -117,6 +121,8 @@ ulong sbi_get_insn(ulong mepc, struct sbi_scratch *scratch,
|
|||||||
trap->epc = 0;
|
trap->epc = 0;
|
||||||
trap->cause = 0;
|
trap->cause = 0;
|
||||||
trap->tval = 0;
|
trap->tval = 0;
|
||||||
|
trap->tval2 = 0;
|
||||||
|
trap->tinst = 0;
|
||||||
sbi_hart_set_trap_info(scratch, trap);
|
sbi_hart_set_trap_info(scratch, trap);
|
||||||
|
|
||||||
#ifndef __riscv_compressed
|
#ifndef __riscv_compressed
|
||||||
|
Reference in New Issue
Block a user