diff options
author | Ralf Baechle <ralf@linux-mips.org> | 2005-08-17 13:44:08 -0400 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2005-10-29 14:32:10 -0400 |
commit | 340ee4b98c0543b5632cac975a7449a2d28762d8 (patch) | |
tree | 94b7315d53d6eadd145c8691f0a9925f5ae389f5 /arch/mips/kernel/traps.c | |
parent | d03d0a57754cb820d318d2234c60b728eb38a94d (diff) |
Virtual SMP support for the 34K.
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'arch/mips/kernel/traps.c')
-rw-r--r-- | arch/mips/kernel/traps.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c index 876aff71cd2e..e38f24b2b3db 100644 --- a/arch/mips/kernel/traps.c +++ b/arch/mips/kernel/traps.c | |||
@@ -28,6 +28,8 @@ | |||
28 | #include <asm/cpu.h> | 28 | #include <asm/cpu.h> |
29 | #include <asm/dsp.h> | 29 | #include <asm/dsp.h> |
30 | #include <asm/fpu.h> | 30 | #include <asm/fpu.h> |
31 | #include <asm/mipsregs.h> | ||
32 | #include <asm/mipsmtregs.h> | ||
31 | #include <asm/module.h> | 33 | #include <asm/module.h> |
32 | #include <asm/pgtable.h> | 34 | #include <asm/pgtable.h> |
33 | #include <asm/ptrace.h> | 35 | #include <asm/ptrace.h> |
@@ -56,6 +58,7 @@ extern asmlinkage void handle_tr(void); | |||
56 | extern asmlinkage void handle_fpe(void); | 58 | extern asmlinkage void handle_fpe(void); |
57 | extern asmlinkage void handle_mdmx(void); | 59 | extern asmlinkage void handle_mdmx(void); |
58 | extern asmlinkage void handle_watch(void); | 60 | extern asmlinkage void handle_watch(void); |
61 | extern asmlinkage void handle_mt(void); | ||
59 | extern asmlinkage void handle_dsp(void); | 62 | extern asmlinkage void handle_dsp(void); |
60 | extern asmlinkage void handle_mcheck(void); | 63 | extern asmlinkage void handle_mcheck(void); |
61 | extern asmlinkage void handle_reserved(void); | 64 | extern asmlinkage void handle_reserved(void); |
@@ -797,6 +800,14 @@ asmlinkage void do_mcheck(struct pt_regs *regs) | |||
797 | (regs->cp0_status & ST0_TS) ? "" : "not "); | 800 | (regs->cp0_status & ST0_TS) ? "" : "not "); |
798 | } | 801 | } |
799 | 802 | ||
803 | asmlinkage void do_mt(struct pt_regs *regs) | ||
804 | { | ||
805 | die_if_kernel("MIPS MT Thread exception in kernel", regs); | ||
806 | |||
807 | force_sig(SIGILL, current); | ||
808 | } | ||
809 | |||
810 | |||
800 | asmlinkage void do_dsp(struct pt_regs *regs) | 811 | asmlinkage void do_dsp(struct pt_regs *regs) |
801 | { | 812 | { |
802 | if (cpu_has_dsp) | 813 | if (cpu_has_dsp) |
@@ -1338,6 +1349,9 @@ void __init trap_init(void) | |||
1338 | if (cpu_has_mcheck) | 1349 | if (cpu_has_mcheck) |
1339 | set_except_vector(24, handle_mcheck); | 1350 | set_except_vector(24, handle_mcheck); |
1340 | 1351 | ||
1352 | if (cpu_has_mipsmt) | ||
1353 | set_except_vector(25, handle_mt); | ||
1354 | |||
1341 | if (cpu_has_dsp) | 1355 | if (cpu_has_dsp) |
1342 | set_except_vector(26, handle_dsp); | 1356 | set_except_vector(26, handle_dsp); |
1343 | 1357 | ||