|
@@ -104,13 +104,13 @@ void __kprobes arch_remove_kprobe(struct kprobe *p)
|
|
|
|
|
|
static void __kprobes prepare_singlestep(struct kprobe *p, struct pt_regs *regs)
|
|
|
{
|
|
|
- /* We turn off async exceptions to ensure that the single step will
|
|
|
- * be for the instruction we have the kprobe on, if we dont its
|
|
|
- * possible we'd get the single step reported for an exception handler
|
|
|
- * like Decrementer or External Interrupt */
|
|
|
- regs->msr &= ~MSR_EE;
|
|
|
regs->msr |= MSR_SINGLESTEP;
|
|
|
#ifdef CONFIG_PPC_ADV_DEBUG_REGS
|
|
|
+ /*
|
|
|
+ * We turn off Critical Input Exception(CE) to ensure that the single
|
|
|
+ * step will be for the instruction we have the probe on; if we don't,
|
|
|
+ * it is possible we'd get the single step reported for CE.
|
|
|
+ */
|
|
|
regs->msr &= ~MSR_CE;
|
|
|
mtspr(SPRN_DBCR0, mfspr(SPRN_DBCR0) | DBCR0_IC | DBCR0_IDM);
|
|
|
#ifdef CONFIG_PPC_47x
|