mirror of https://github.com/xemu-project/xemu.git
target/riscv: additional code information for sw check
sw check exception support was recently added. This patch further augments sw check exception by providing support for additional code which is provided in *tval. Adds `sw_check_code` field in cpuarchstate. Whenever sw check exception is raised *tval gets the value deposited in `sw_check_code`. Signed-off-by: Deepak Gupta <debug@rivosinc.com> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Reviewed-by: Alistair Francis <alistair.francis@wdc.com> Message-ID: <20241008225010.1861630-6-debug@rivosinc.com> Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
This commit is contained in:
parent
53309be156
commit
6031102401
|
@ -232,6 +232,8 @@ struct CPUArchState {
|
|||
|
||||
/* elp state for zicfilp extension */
|
||||
bool elp;
|
||||
/* sw check code for sw check exception */
|
||||
target_ulong sw_check_code;
|
||||
#ifdef CONFIG_USER_ONLY
|
||||
uint32_t elf_flags;
|
||||
#endif
|
||||
|
|
|
@ -1775,6 +1775,9 @@ void riscv_cpu_do_interrupt(CPUState *cs)
|
|||
cs->watchpoint_hit = NULL;
|
||||
}
|
||||
break;
|
||||
case RISCV_EXCP_SW_CHECK:
|
||||
tval = env->sw_check_code;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -1377,6 +1377,7 @@ static const uint64_t all_ints = M_MODE_INTERRUPTS | S_MODE_INTERRUPTS |
|
|||
(1ULL << (RISCV_EXCP_INST_PAGE_FAULT)) | \
|
||||
(1ULL << (RISCV_EXCP_LOAD_PAGE_FAULT)) | \
|
||||
(1ULL << (RISCV_EXCP_STORE_PAGE_FAULT)) | \
|
||||
(1ULL << (RISCV_EXCP_SW_CHECK)) | \
|
||||
(1ULL << (RISCV_EXCP_INST_GUEST_PAGE_FAULT)) | \
|
||||
(1ULL << (RISCV_EXCP_LOAD_GUEST_ACCESS_FAULT)) | \
|
||||
(1ULL << (RISCV_EXCP_VIRT_INSTRUCTION_FAULT)) | \
|
||||
|
|
Loading…
Reference in New Issue