summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Mundt <lethal@linux-sh.org>2007-08-01 09:55:07 +0200
committerPaul Mundt <lethal@linux-sh.org>2007-08-01 09:55:07 +0200
commite0a3647fd7729bee1ed9667ce5d8eb88f0604138 (patch)
treef83dcc17c4825f0b0fdbd1d0db5df83c5ec84364
parentsh: Fix pgd mismatch from cached TTB in unhandled fault. (diff)
downloadlinux-e0a3647fd7729bee1ed9667ce5d8eb88f0604138.tar.xz
linux-e0a3647fd7729bee1ed9667ce5d8eb88f0604138.zip
sh: Fix SH-X3 FPU exception handling.
SH-X3 has the FPU exceptions on different vectors completely, patch in do_fpu_state_restore() to the proper vectors. Results in a much happier userspace. Signed-off-by: Paul Mundt <lethal@linux-sh.org>
-rw-r--r--arch/sh/kernel/traps.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/arch/sh/kernel/traps.c b/arch/sh/kernel/traps.c
index 502d43e4785c..67015044d74a 100644
--- a/arch/sh/kernel/traps.c
+++ b/arch/sh/kernel/traps.c
@@ -854,9 +854,14 @@ void __init trap_init(void)
set_exception_table_evt(0x800, do_reserved_inst);
set_exception_table_evt(0x820, do_illegal_slot_inst);
#elif defined(CONFIG_SH_FPU)
+#ifdef CONFIG_CPU_SUBTYPE_SHX3
+ set_exception_table_evt(0xd80, do_fpu_state_restore);
+ set_exception_table_evt(0xda0, do_fpu_state_restore);
+#else
set_exception_table_evt(0x800, do_fpu_state_restore);
set_exception_table_evt(0x820, do_fpu_state_restore);
#endif
+#endif
#ifdef CONFIG_CPU_SH2
set_exception_table_vec(TRAP_ADDRESS_ERROR, address_error_handler);