diff options
author | Andrew Waterman <andrew@sifive.com> | 2024-05-20 18:38:12 -0700 |
---|---|---|
committer | Andrew Waterman <andrew@sifive.com> | 2024-05-20 18:38:12 -0700 |
commit | 54e2005dc8658bf7bbec52ac54fe4712f7b4362a (patch) | |
tree | 94d5acaf1b339f46e93386a40424307034450edf /pk/handlers.c | |
parent | da80ada596eae650761bf9da9a0283b8b8058584 (diff) | |
parent | 5ae7523adc17d6014d6bd7db02ee26607c00470d (diff) | |
download | pk-54e2005dc8658bf7bbec52ac54fe4712f7b4362a.zip pk-54e2005dc8658bf7bbec52ac54fe4712f7b4362a.tar.gz pk-54e2005dc8658bf7bbec52ac54fe4712f7b4362a.tar.bz2 |
Merge branch 'mylai-mtk-zicfilp-upstream'
Diffstat (limited to 'pk/handlers.c')
-rw-r--r-- | pk/handlers.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/pk/handlers.c b/pk/handlers.c index 4b4abaf..2932d94 100644 --- a/pk/handlers.c +++ b/pk/handlers.c @@ -90,6 +90,21 @@ static void handle_interrupt(trapframe_t* tf) clear_csr(sip, SIP_SSIP); } +static void handle_software_check_fault(trapframe_t* tf) +{ + dump_tf(tf); + + const uint64_t stval = read_csr(stval); + switch (stval) { + case LANDING_PAD_FAULT: + panic("Invalid landing pad!"); + break; + default: + panic("Software check fault: unhandled stval: %d", stval); + break; + } +} + void handle_trap(trapframe_t* tf) { if ((intptr_t)tf->cause < 0) @@ -110,6 +125,7 @@ void handle_trap(trapframe_t* tf) [CAUSE_MISALIGNED_STORE] = handle_misaligned_store, [CAUSE_LOAD_PAGE_FAULT] = handle_fault_load, [CAUSE_STORE_PAGE_FAULT] = handle_fault_store, + [CAUSE_SOFTWARE_CHECK_FAULT] = handle_software_check_fault, }; kassert(tf->cause < ARRAY_SIZE(trap_handlers) && trap_handlers[tf->cause]); |