From 14162f8803e3e826f41dc29462382866f4df1f10 Mon Sep 17 00:00:00 2001 From: Jan Stoess Date: Thu, 16 Jul 2009 14:20:40 +0200 Subject: [PATCH] Correct stack frame dumping for intercepted kernel code --- kernel/src/arch/x86/trapgate.h | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/kernel/src/arch/x86/trapgate.h b/kernel/src/arch/x86/trapgate.h index aae05919..4b1de927 100644 --- a/kernel/src/arch/x86/trapgate.h +++ b/kernel/src/arch/x86/trapgate.h @@ -1,6 +1,6 @@ /********************************************************************* * - * Copyright (C) 2007, Karlsruhe University + * Copyright (C) 2007, 2009, Karlsruhe University * * File path: arch/x86/trapgate.h * Description: @@ -46,8 +46,17 @@ public: void dump () { - printf("fault addr: %8x\tstack: %8x\terror code: %x frame: %p\n", - regs[ipreg], regs[spreg], error, this); + if (regs[csreg] == X86_KCS) + { + printf("fault addr: %8x\tstack: %8x\terror code: %x frame: %p\n", + regs[ipreg], (word_t) this + sizeof(*this) - 2 * sizeof(word_t), + error, this); + } + else + { + printf("fault addr: %8x\tstack: %8x\terror code: %x frame: %p\n", + regs[ipreg], regs[spreg], error, this); + } for (word_t r=0; r < num_dbgregs; r++) {