summaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorPaul Mundt <lethal@linux-sh.org>2007-08-01 16:55:07 +0900
committerPaul Mundt <lethal@linux-sh.org>2007-08-01 16:55:07 +0900
commite0a3647fd7729bee1ed9667ce5d8eb88f0604138 (patch)
treef83dcc17c4825f0b0fdbd1d0db5df83c5ec84364 /arch
parent06f862c8ce0893b5525ce90f39168eaf4608ecc6 (diff)
downloadlinux-stable-e0a3647fd7729bee1ed9667ce5d8eb88f0604138.tar.gz
linux-stable-e0a3647fd7729bee1ed9667ce5d8eb88f0604138.tar.bz2
linux-stable-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>
Diffstat (limited to 'arch')
-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);