diff --git a/kernel/src/arch/riscv/trap.rs b/kernel/src/arch/riscv/trap.rs index d9bfe84..385dd2e 100644 --- a/kernel/src/arch/riscv/trap.rs +++ b/kernel/src/arch/riscv/trap.rs @@ -18,8 +18,7 @@ extern "C" { #[no_mangle] extern "C" fn kernel_trap_handler(tf: &mut TrapContext) { - // No trap in kernel, except from IDLE thread - // TODO: Replace CONSOLE Mutex to ReentrantLock + // No trap in kernel unsafe { CONSOLE.force_unlock() } tf.handle_trap(true); } @@ -76,6 +75,10 @@ impl TrapContextOps for TrapContext { }; } + if from_kernel { + panic_fatal!("Buggy kernel: trap in kernel mode"); + } + let tcb = self.as_object_mut(); match scause.cause() {