diff --git a/kernel/src/arch/riscv/irq.rs b/kernel/src/arch/riscv/irq.rs index a0b8d8ca7..20611d955 100644 --- a/kernel/src/arch/riscv/irq.rs +++ b/kernel/src/arch/riscv/irq.rs @@ -132,7 +132,10 @@ pub extern "C" fn trap_handler( && sstatus::read().spp() == sstatus::SPP::Supervisor && sc.bits() == 0xf { - panic!("Ran out of kernel stack"); + let pid = current_pid(); + let ex = RiscvException::from_regs(sc.bits(), sepc::read(), stval::read()); + print!("KERNEL({}): RISC-V fault: {} - ", pid, ex); + panic!("Maybe ran out of kernel stack?"); } let pid = current_pid(); diff --git a/kernel/src/arch/riscv/process.rs b/kernel/src/arch/riscv/process.rs index fe65bec87..24ec64966 100644 --- a/kernel/src/arch/riscv/process.rs +++ b/kernel/src/arch/riscv/process.rs @@ -435,7 +435,7 @@ impl Process { pub fn print_all_threads(&self) { let process = unsafe { &mut *PROCESS }; for (tid_idx, &thread) in process.threads.iter().enumerate() { - let tid = tid_idx + 1; + let tid = tid_idx; if thread.registers[1] != 0 { Self::print_thread(tid, &thread); }