diff options
Diffstat (limited to 'arch/powerpc/kernel/traps.c')
-rw-r--r-- | arch/powerpc/kernel/traps.c | 29 |
1 files changed, 3 insertions, 26 deletions
diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c index 25fc33984c2b..a45a63c3a0c7 100644 --- a/arch/powerpc/kernel/traps.c +++ b/arch/powerpc/kernel/traps.c | |||
@@ -55,9 +55,6 @@ | |||
55 | #endif | 55 | #endif |
56 | #include <asm/kexec.h> | 56 | #include <asm/kexec.h> |
57 | #include <asm/ppc-opcode.h> | 57 | #include <asm/ppc-opcode.h> |
58 | #ifdef CONFIG_FSL_BOOKE | ||
59 | #include <asm/dbell.h> | ||
60 | #endif | ||
61 | 58 | ||
62 | #if defined(CONFIG_DEBUGGER) || defined(CONFIG_KEXEC) | 59 | #if defined(CONFIG_DEBUGGER) || defined(CONFIG_KEXEC) |
63 | int (*__debugger)(struct pt_regs *regs) __read_mostly; | 60 | int (*__debugger)(struct pt_regs *regs) __read_mostly; |
@@ -688,7 +685,7 @@ void RunModeException(struct pt_regs *regs) | |||
688 | 685 | ||
689 | void __kprobes single_step_exception(struct pt_regs *regs) | 686 | void __kprobes single_step_exception(struct pt_regs *regs) |
690 | { | 687 | { |
691 | regs->msr &= ~(MSR_SE | MSR_BE); /* Turn off 'trace' bits */ | 688 | clear_single_step(regs); |
692 | 689 | ||
693 | if (notify_die(DIE_SSTEP, "single_step", regs, 5, | 690 | if (notify_die(DIE_SSTEP, "single_step", regs, 5, |
694 | 5, SIGTRAP) == NOTIFY_STOP) | 691 | 5, SIGTRAP) == NOTIFY_STOP) |
@@ -707,10 +704,8 @@ void __kprobes single_step_exception(struct pt_regs *regs) | |||
707 | */ | 704 | */ |
708 | static void emulate_single_step(struct pt_regs *regs) | 705 | static void emulate_single_step(struct pt_regs *regs) |
709 | { | 706 | { |
710 | if (single_stepping(regs)) { | 707 | if (single_stepping(regs)) |
711 | clear_single_step(regs); | 708 | single_step_exception(regs); |
712 | _exception(SIGTRAP, regs, TRAP_TRACE, 0); | ||
713 | } | ||
714 | } | 709 | } |
715 | 710 | ||
716 | static inline int __parse_fpscr(unsigned long fpscr) | 711 | static inline int __parse_fpscr(unsigned long fpscr) |
@@ -1344,24 +1339,6 @@ void vsx_assist_exception(struct pt_regs *regs) | |||
1344 | #endif /* CONFIG_VSX */ | 1339 | #endif /* CONFIG_VSX */ |
1345 | 1340 | ||
1346 | #ifdef CONFIG_FSL_BOOKE | 1341 | #ifdef CONFIG_FSL_BOOKE |
1347 | |||
1348 | void doorbell_exception(struct pt_regs *regs) | ||
1349 | { | ||
1350 | #ifdef CONFIG_SMP | ||
1351 | int cpu = smp_processor_id(); | ||
1352 | int msg; | ||
1353 | |||
1354 | if (num_online_cpus() < 2) | ||
1355 | return; | ||
1356 | |||
1357 | for (msg = 0; msg < 4; msg++) | ||
1358 | if (test_and_clear_bit(msg, &dbell_smp_message[cpu])) | ||
1359 | smp_message_recv(msg); | ||
1360 | #else | ||
1361 | printk(KERN_WARNING "Received doorbell on non-smp system\n"); | ||
1362 | #endif | ||
1363 | } | ||
1364 | |||
1365 | void CacheLockingException(struct pt_regs *regs, unsigned long address, | 1342 | void CacheLockingException(struct pt_regs *regs, unsigned long address, |
1366 | unsigned long error_code) | 1343 | unsigned long error_code) |
1367 | { | 1344 | { |