summaryrefslogtreecommitdiffstats
path: root/arch/mips64/kernel/traps.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/mips64/kernel/traps.c')
-rw-r--r--arch/mips64/kernel/traps.c13
1 files changed, 3 insertions, 10 deletions
diff --git a/arch/mips64/kernel/traps.c b/arch/mips64/kernel/traps.c
index f5346da1e..f9b322534 100644
--- a/arch/mips64/kernel/traps.c
+++ b/arch/mips64/kernel/traps.c
@@ -1,5 +1,4 @@
-/* $Id: traps.c,v 1.4 2000/01/20 23:50:27 ralf Exp $
- *
+/*
* This file is subject to the terms and conditions of the GNU General Public
* License. See the file "COPYING" in the main directory of this archive
* for more details.
@@ -241,7 +240,6 @@ void do_fpe(struct pt_regs *regs, unsigned long fcr31)
return;
}
#endif
- lock_kernel();
if (fcr31 & 0x20000) {
/* Retry instruction with flush to zero ... */
if (!(fcr31 & (1<<24))) {
@@ -253,7 +251,7 @@ void do_fpe(struct pt_regs *regs, unsigned long fcr31)
"ctc1\t%0,$31"
: /* No outputs */
: "r" (fcr31));
- goto out;
+ return;
}
pc = regs->cp0_epc + ((regs->cp0_cause & CAUSEF_BD) ? 4 : 0);
if (get_user(insn, (unsigned int *)pc)) {
@@ -267,12 +265,9 @@ void do_fpe(struct pt_regs *regs, unsigned long fcr31)
}
if (compute_return_epc(regs))
- goto out;
+ return;
//force_sig(SIGFPE, current);
printk(KERN_DEBUG "Should send SIGFPE to %s\n", current->comm);
-
-out:
- unlock_kernel();
}
static inline int get_insn_opcode(struct pt_regs *regs, unsigned int *opcode)
@@ -331,11 +326,9 @@ void do_tr(struct pt_regs *regs)
void do_ri(struct pt_regs *regs)
{
- lock_kernel();
printk("Cpu%d[%s:%ld] Illegal instruction at %08lx ra=%08lx\n",
smp_processor_id(), current->comm, current->pid, regs->cp0_epc,
regs->regs[31]);
- unlock_kernel();
if (compute_return_epc(regs))
return;
force_sig(SIGILL, current);