|
@@ -688,7 +688,7 @@ void RunModeException(struct pt_regs *regs)
|
|
|
|
|
|
void __kprobes single_step_exception(struct pt_regs *regs)
|
|
|
{
|
|
|
- regs->msr &= ~(MSR_SE | MSR_BE); /* Turn off 'trace' bits */
|
|
|
+ clear_single_step(regs);
|
|
|
|
|
|
if (notify_die(DIE_SSTEP, "single_step", regs, 5,
|
|
|
5, SIGTRAP) == NOTIFY_STOP)
|
|
@@ -707,10 +707,8 @@ void __kprobes single_step_exception(struct pt_regs *regs)
|
|
|
*/
|
|
|
static void emulate_single_step(struct pt_regs *regs)
|
|
|
{
|
|
|
- if (single_stepping(regs)) {
|
|
|
- clear_single_step(regs);
|
|
|
- _exception(SIGTRAP, regs, TRAP_TRACE, 0);
|
|
|
- }
|
|
|
+ if (single_stepping(regs))
|
|
|
+ single_step_exception(regs);
|
|
|
}
|
|
|
|
|
|
static inline int __parse_fpscr(unsigned long fpscr)
|