12 #include "sw/device/lib/runtime/irq.h"
13 #include "sw/device/silicon_creator/lib/dbg_print.h"
14 #include "sw/device/silicon_creator/lib/manifest_def.h"
17 #include "uart_regs.h"
21 void fault_test_main(
void) {
22 #if defined(LOAD_ACCESS_FAULT)
28 volatile uint32_t *p = (
volatile uint32_t *)0x4FFF0000;
30 dbg_printf(
"Got value: %x\r\n", value);
31 dbg_printf(
"LOAD_ACCESS_FAULT: FAIL!\r\n");
32 #elif defined(STORE_ACCESS_FAULT)
38 volatile uint32_t *p = (
volatile uint32_t *)0x4FFF0000;
40 dbg_printf(
"STORE_ACCESS_FAULT: FAIL!\r\n");
41 #elif defined(ILLEGAL_INSTRUCTION_FAULT)
47 dbg_printf(
"ILLEGAL_INSTRUCTION_FAULT: FAIL!\r\n");
48 #elif defined(HARDWARE_INTERRUPT)
56 dbg_printf(
"plic_init = 0x%x\r\n", result);
60 dbg_printf(
"plic_set_priority = 0x%x\r\n", result);
64 dbg_printf(
"plic_target_set_threshold = 0x%x\r\n", result);
69 dbg_printf(
"plic_set_enabled = 0x%x\r\n", result);
70 irq_global_ctrl(
true);
71 irq_external_ctrl(
true);
78 dbg_printf(
"HARDWARE_INTERRUPT: FAIL!\r\n");
79 #elif defined(NO_FAULT)
80 dbg_printf(
"NO_FAULT: PASS!\r\n");
82 dbg_printf(
"Fault not defined. FAIL!\r\n");