Changeset View
Changeset View
Standalone View
Standalone View
head/sys/riscv/riscv/trap.c
Show First 20 Lines • Show All 300 Lines • ▼ Show 20 Lines | |||||
#endif | #endif | ||||
break; | break; | ||||
case EXCP_ILLEGAL_INSTRUCTION: | case EXCP_ILLEGAL_INSTRUCTION: | ||||
dump_regs(frame); | dump_regs(frame); | ||||
panic("Illegal instruction at 0x%016lx\n", frame->tf_sepc); | panic("Illegal instruction at 0x%016lx\n", frame->tf_sepc); | ||||
break; | break; | ||||
default: | default: | ||||
dump_regs(frame); | dump_regs(frame); | ||||
panic("Unknown kernel exception %x trap value %lx\n", | panic("Unknown kernel exception %lx trap value %lx\n", | ||||
exception, frame->tf_stval); | exception, frame->tf_stval); | ||||
} | } | ||||
} | } | ||||
void | void | ||||
do_trap_user(struct trapframe *frame) | do_trap_user(struct trapframe *frame) | ||||
{ | { | ||||
uint64_t exception; | uint64_t exception; | ||||
▲ Show 20 Lines • Show All 52 Lines • ▼ Show 20 Lines | #endif | ||||
break; | break; | ||||
case EXCP_BREAKPOINT: | case EXCP_BREAKPOINT: | ||||
call_trapsignal(td, SIGTRAP, TRAP_BRKPT, (void *)frame->tf_sepc, | call_trapsignal(td, SIGTRAP, TRAP_BRKPT, (void *)frame->tf_sepc, | ||||
exception); | exception); | ||||
userret(td, frame); | userret(td, frame); | ||||
break; | break; | ||||
default: | default: | ||||
dump_regs(frame); | dump_regs(frame); | ||||
panic("Unknown userland exception %x, trap value %lx\n", | panic("Unknown userland exception %lx, trap value %lx\n", | ||||
exception, frame->tf_stval); | exception, frame->tf_stval); | ||||
} | } | ||||
} | } |