summaryrefslogtreecommitdiffstats
path: root/arch/mips/kernel/traps.c
diff options
context:
space:
mode:
authorRalf Baechle2005-08-17 15:44:26 +0200
committerRalf Baechle2005-10-29 20:32:09 +0200
commitd03d0a57754cb820d318d2234c60b728eb38a94d (patch)
treec9feac8689e0081304382411592f3e074fe96502 /arch/mips/kernel/traps.c
parentOn CONFIG_64BIT_PHYS_ADDR, pfn always fits in 'unsigned long', but (diff)
downloadkernel-qcow2-linux-d03d0a57754cb820d318d2234c60b728eb38a94d.tar.gz
kernel-qcow2-linux-d03d0a57754cb820d318d2234c60b728eb38a94d.tar.xz
kernel-qcow2-linux-d03d0a57754cb820d318d2234c60b728eb38a94d.zip
MT bulletproofing.
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'arch/mips/kernel/traps.c')
-rw-r--r--arch/mips/kernel/traps.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c
index 519b8f18eedf..876aff71cd2e 100644
--- a/arch/mips/kernel/traps.c
+++ b/arch/mips/kernel/traps.c
@@ -1186,8 +1186,14 @@ void __init per_cpu_trap_init(void)
/* Setting vector spacing enables EI/VI mode */
change_c0_intctl (0x3e0, VECTORSPACING);
}
- if (cpu_has_divec)
- set_c0_cause(CAUSEF_IV);
+ if (cpu_has_divec) {
+ if (cpu_has_mipsmt) {
+ unsigned int vpflags = dvpe();
+ set_c0_cause(CAUSEF_IV);
+ evpe(vpflags);
+ } else
+ set_c0_cause(CAUSEF_IV);
+ }
cpu_data[cpu].asid_cache = ASID_FIRST_VERSION;
TLBMISS_HANDLER_SETUP();