From 0300ac3c5d6976538b99049052cbc356e1afdc3a Mon Sep 17 00:00:00 2001 From: Paul Pan Date: Mon, 17 Jun 2024 00:47:40 +0800 Subject: [PATCH] chore: kernel: trap: print trace when page fault happens --- .vscode/settings.json | 4 ++++ kernel/src/arch/riscv/trap.rs | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/.vscode/settings.json b/.vscode/settings.json index f866177..a210e2c 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -16,5 +16,9 @@ "**/.rustup/**": true, "**/.cargo/registry/**": true, "**/.cargo/git/**": true, + }, + "[riscv]": { + "editor.indentSize": "tabSize", + "editor.tabSize": 8 } } \ No newline at end of file diff --git a/kernel/src/arch/riscv/trap.rs b/kernel/src/arch/riscv/trap.rs index ce6a08a..7f69ee1 100644 --- a/kernel/src/arch/riscv/trap.rs +++ b/kernel/src/arch/riscv/trap.rs @@ -93,6 +93,10 @@ impl TrapContextOps for TrapContext { if from_kernel { panic_fatal!("Page Fault in Kernel"); } + + let stval = riscv::register::stval::read(); + trace!("Page Fault: sepc: {:#x}, stval: {:#x}", self.sepc, stval); + // TODO: handle page fault }, _ => panic_fatal!("Unhandled Trap"),