There is a bug in the function get_insn_opcode in traps.c As 'epc' is an int pointer here, it should only be increased by 1 (4 byte) and not by 4 (4*4 = 16 bytes). See the patch below. /Carsten Index: arch/mips/kernel/traps.c =================================================================== RCS file: /home/repository/sw/linux-2.4.0/arch/mips/kernel/traps.c,v retrieving revision 1.10 diff -u -r1.10 traps.c --- traps.c 2001/02/28 13:46:43 1.10 +++ traps.c 2001/03/02 16:50:27 @@ -410,7 +410,7 @@ epc = (unsigned int *) (unsigned long) regs->cp0_epc; if (regs->cp0_cause & CAUSEF_BD) - epc += 4; + epc++; if (verify_area(VERIFY_READ, epc, 4)) { force_sig(SIGSEGV, current); Index: arch/mips64/kernel/traps.c =================================================================== RCS file: /home/repository/sw/linux-2.4.0/arch/mips64/kernel/traps.c,v retrieving revision 1.5 diff -u -r1.5 traps.c --- traps.c 2001/02/19 16:02:52 1.5 +++ traps.c 2001/03/02 16:50:13 @@ -371,7 +371,7 @@ epc = (unsigned int *) (unsigned long) regs->cp0_epc; if (regs->cp0_cause & CAUSEF_BD) - epc += 4; + epc++; if (verify_area(VERIFY_READ, epc, 4)) { force_sig(SIGSEGV, current); -- _ _ ____ ___ Carsten Langgaard Mailto:carstenl@mips.com |\ /|||___)(___ MIPS Denmark Direct: +45 4486 5527 | \/ ||| ____) Lautrupvang 4B Switch: +45 4486 5555 TECHNOLOGIES 2750 Ballerup Fax...: +45 4486 5556 Denmark http://www.mips.com