[PATCH] fix PPC floating point debug
Stefani Seibold
stefani at seibold.net
Fri Nov 27 19:59:00 EST 2009
The PPC architecture is unable to debug applications using hardware
floating point, because it would not save the floating point registers.
After returning from the debugger, the contents of register was
modified. This patch fix this bug.
Signed-off-by: Stefani Seibold <stefani at seibold.net>
---
traps.c | 6 ++++++
1 file changed, 6 insertions(+)
--- linux-2.6.32-rc5/arch/powerpc/kernel/traps.c.orig 2009-11-27 09:47:37.989943124 +0100
+++ linux-2.6.32-rc5/arch/powerpc/kernel/traps.c 2009-11-27 09:47:41.088330825 +0100
@@ -559,6 +559,8 @@ void instruction_breakpoint_exception(st
return;
if (debugger_iabr_match(regs))
return;
+ if (regs->msr & MSR_FP)
+ giveup_fpu(current);
_exception(SIGTRAP, regs, TRAP_BRKPT, regs->nip);
}
@@ -577,6 +579,8 @@ void __kprobes single_step_exception(str
if (debugger_sstep(regs))
return;
+ if (regs->msr & MSR_FP)
+ giveup_fpu(current);
_exception(SIGTRAP, regs, TRAP_TRACE, regs->nip);
}
@@ -834,6 +838,8 @@ void __kprobes program_check_exception(s
regs->nip += 4;
return;
}
+ if (regs->msr & MSR_FP)
+ giveup_fpu(current);
_exception(SIGTRAP, regs, TRAP_BRKPT, regs->nip);
return;
}
More information about the Linuxppc-dev
mailing list