diff --git a/include/sbi/sbi_ecall_interface.h b/include/sbi/sbi_ecall_interface.h index 321039f8..3aa57466 100644 --- a/include/sbi/sbi_ecall_interface.h +++ b/include/sbi/sbi_ecall_interface.h @@ -382,6 +382,7 @@ enum sbi_sse_state { /* SBI SSE Event IDs. */ #define SBI_SSE_EVENT_LOCAL_RAS 0x00000000 +#define SBI_SSE_EVENT_LOCAL_DOUBLE_TRAP 0x00000001 #define SBI_SSE_EVENT_LOCAL_PLAT_0_START 0x00004000 #define SBI_SSE_EVENT_LOCAL_PLAT_0_END 0x00007fff #define SBI_SSE_EVENT_GLOBAL_RAS 0x00008000 diff --git a/lib/sbi/sbi_double_trap.c b/lib/sbi/sbi_double_trap.c index 96f2fa55..bab96fb7 100644 --- a/lib/sbi/sbi_double_trap.c +++ b/lib/sbi/sbi_double_trap.c @@ -26,5 +26,5 @@ int sbi_double_trap_handler(struct sbi_trap_context *tcntx) if (prev_virt) return sbi_trap_redirect(regs, trap); - return SBI_ENOTSUPP; + return sbi_sse_inject_event(SBI_SSE_EVENT_LOCAL_DOUBLE_TRAP); } diff --git a/lib/sbi/sbi_sse.c b/lib/sbi/sbi_sse.c index 94071f99..bf5620e8 100644 --- a/lib/sbi/sbi_sse.c +++ b/lib/sbi/sbi_sse.c @@ -41,6 +41,7 @@ static const uint32_t supported_events[] = { SBI_SSE_EVENT_LOCAL_RAS, + SBI_SSE_EVENT_LOCAL_DOUBLE_TRAP, SBI_SSE_EVENT_GLOBAL_RAS, SBI_SSE_EVENT_LOCAL_PMU, SBI_SSE_EVENT_LOCAL_SOFTWARE,