diff options
Diffstat (limited to 'arch/ppc/kernel/traps.c')
-rw-r--r-- | arch/ppc/kernel/traps.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/arch/ppc/kernel/traps.c b/arch/ppc/kernel/traps.c index 26606aa33de6..3145e9773db9 100644 --- a/arch/ppc/kernel/traps.c +++ b/arch/ppc/kernel/traps.c | |||
@@ -44,6 +44,11 @@ | |||
44 | #include <asm/perfmon.h> | 44 | #include <asm/perfmon.h> |
45 | 45 | ||
46 | #ifdef CONFIG_XMON | 46 | #ifdef CONFIG_XMON |
47 | extern int xmon_bpt(struct pt_regs *regs); | ||
48 | extern int xmon_sstep(struct pt_regs *regs); | ||
49 | extern int xmon_iabr_match(struct pt_regs *regs); | ||
50 | extern int xmon_dabr_match(struct pt_regs *regs); | ||
51 | |||
47 | void (*debugger)(struct pt_regs *regs) = xmon; | 52 | void (*debugger)(struct pt_regs *regs) = xmon; |
48 | int (*debugger_bpt)(struct pt_regs *regs) = xmon_bpt; | 53 | int (*debugger_bpt)(struct pt_regs *regs) = xmon_bpt; |
49 | int (*debugger_sstep)(struct pt_regs *regs) = xmon_sstep; | 54 | int (*debugger_sstep)(struct pt_regs *regs) = xmon_sstep; |
@@ -814,6 +819,17 @@ void TAUException(struct pt_regs *regs) | |||
814 | } | 819 | } |
815 | #endif /* CONFIG_INT_TAU */ | 820 | #endif /* CONFIG_INT_TAU */ |
816 | 821 | ||
822 | /* | ||
823 | * FP unavailable trap from kernel - print a message, but let | ||
824 | * the task use FP in the kernel until it returns to user mode. | ||
825 | */ | ||
826 | void kernel_fp_unavailable_exception(struct pt_regs *regs) | ||
827 | { | ||
828 | regs->msr |= MSR_FP; | ||
829 | printk(KERN_ERR "floating point used in kernel (task=%p, pc=%lx)\n", | ||
830 | current, regs->nip); | ||
831 | } | ||
832 | |||
817 | void altivec_unavailable_exception(struct pt_regs *regs) | 833 | void altivec_unavailable_exception(struct pt_regs *regs) |
818 | { | 834 | { |
819 | static int kernel_altivec_count; | 835 | static int kernel_altivec_count; |