//See LICENSE for license details. #include #include #include #include "riscv_encoding.h" #include "n200_func.h" __attribute__((weak)) uintptr_t handle_nmi() { write(1, "nmi\n", 5); _exit(1); return 0; } __attribute__((weak)) uintptr_t handle_trap(uintptr_t mcause, uintptr_t sp) { if((mcause & 0xFFF) == 0xFFF) { handle_nmi(); } write(1, "trap\n", 5); //printf("In trap handler, the mcause is %d\n", mcause); //printf("In trap handler, the mepc is 0x%x\n", read_csr(mepc)); //printf("In trap handler, the mtval is 0x%x\n", read_csr(mbadaddr)); _exit(mcause); return 0; }