diff options
Diffstat (limited to 'arch/powerpc/kernel/ptrace.c')
| -rw-r--r-- | arch/powerpc/kernel/ptrace.c | 17 | 
1 files changed, 9 insertions, 8 deletions
| diff --git a/arch/powerpc/kernel/ptrace.c b/arch/powerpc/kernel/ptrace.c index 9fa2c7dcd05a..ef149880c145 100644 --- a/arch/powerpc/kernel/ptrace.c +++ b/arch/powerpc/kernel/ptrace.c | |||
| @@ -736,15 +736,16 @@ void user_disable_single_step(struct task_struct *task) | |||
| 736 | { | 736 | { | 
| 737 | struct pt_regs *regs = task->thread.regs; | 737 | struct pt_regs *regs = task->thread.regs; | 
| 738 | 738 | ||
| 739 | |||
| 740 | #if defined(CONFIG_BOOKE) | ||
| 741 | /* If DAC then do not single step, skip */ | ||
| 742 | if (task->thread.dabr) | ||
| 743 | return; | ||
| 744 | #endif | ||
| 745 | |||
| 746 | if (regs != NULL) { | 739 | if (regs != NULL) { | 
| 747 | #if defined(CONFIG_40x) || defined(CONFIG_BOOKE) | 740 | #if defined(CONFIG_BOOKE) | 
| 741 | /* If DAC don't clear DBCRO_IDM or MSR_DE */ | ||
| 742 | if (task->thread.dabr) | ||
| 743 | task->thread.dbcr0 &= ~(DBCR0_IC | DBCR0_BT); | ||
| 744 | else { | ||
| 745 | task->thread.dbcr0 &= ~(DBCR0_IC | DBCR0_BT | DBCR0_IDM); | ||
| 746 | regs->msr &= ~MSR_DE; | ||
| 747 | } | ||
| 748 | #elif defined(CONFIG_40x) | ||
| 748 | task->thread.dbcr0 &= ~(DBCR0_IC | DBCR0_BT | DBCR0_IDM); | 749 | task->thread.dbcr0 &= ~(DBCR0_IC | DBCR0_BT | DBCR0_IDM); | 
| 749 | regs->msr &= ~MSR_DE; | 750 | regs->msr &= ~MSR_DE; | 
| 750 | #else | 751 | #else | 
