diff options
author | Paul Mundt <lethal@linux-sh.org> | 2007-08-01 03:55:07 -0400 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2007-08-01 03:55:07 -0400 |
commit | e0a3647fd7729bee1ed9667ce5d8eb88f0604138 (patch) | |
tree | f83dcc17c4825f0b0fdbd1d0db5df83c5ec84364 /arch/sh/kernel/traps.c | |
parent | 06f862c8ce0893b5525ce90f39168eaf4608ecc6 (diff) |
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/sh/kernel/traps.c')
-rw-r--r-- | arch/sh/kernel/traps.c | 5 |
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) | |||
854 | set_exception_table_evt(0x800, do_reserved_inst); | 854 | set_exception_table_evt(0x800, do_reserved_inst); |
855 | set_exception_table_evt(0x820, do_illegal_slot_inst); | 855 | set_exception_table_evt(0x820, do_illegal_slot_inst); |
856 | #elif defined(CONFIG_SH_FPU) | 856 | #elif defined(CONFIG_SH_FPU) |
857 | #ifdef CONFIG_CPU_SUBTYPE_SHX3 | ||
858 | set_exception_table_evt(0xd80, do_fpu_state_restore); | ||
859 | set_exception_table_evt(0xda0, do_fpu_state_restore); | ||
860 | #else | ||
857 | set_exception_table_evt(0x800, do_fpu_state_restore); | 861 | set_exception_table_evt(0x800, do_fpu_state_restore); |
858 | set_exception_table_evt(0x820, do_fpu_state_restore); | 862 | set_exception_table_evt(0x820, do_fpu_state_restore); |
859 | #endif | 863 | #endif |
864 | #endif | ||
860 | 865 | ||
861 | #ifdef CONFIG_CPU_SH2 | 866 | #ifdef CONFIG_CPU_SH2 |
862 | set_exception_table_vec(TRAP_ADDRESS_ERROR, address_error_handler); | 867 | set_exception_table_vec(TRAP_ADDRESS_ERROR, address_error_handler); |