diff -Nru linux/arch/mips/kernel/entry.S.orig linux/arch/mips/kernel/entry.S --- linux/arch/mips/kernel/entry.S.orig Mon Aug 5 16:53:33 2002 +++ linux/arch/mips/kernel/entry.S Mon Dec 16 18:23:43 2002 @@ -232,6 +232,7 @@ BUILD_HANDLER(ov,ov,sti,silent) /* #12 */ BUILD_HANDLER(tr,tr,sti,silent) /* #13 */ BUILD_HANDLER(fpe,fpe,fpe,silent) /* #15 */ + BUILD_HANDLER(mdmx,mdmx,sti,silent) /* #22 */ BUILD_HANDLER(watch,watch,sti,silent) /* #23 */ BUILD_HANDLER(mcheck,mcheck,cli,silent) /* #24 */ BUILD_HANDLER(reserved,reserved,sti,silent) /* others */ diff -Nru linux/arch/mips/kernel/traps.c.orig linux/arch/mips/kernel/traps.c --- linux/arch/mips/kernel/traps.c.orig Mon Dec 16 18:12:48 2002 +++ linux/arch/mips/kernel/traps.c Mon Dec 16 18:35:32 2002 @@ -54,6 +54,7 @@ extern asmlinkage void handle_ov(void); extern asmlinkage void handle_tr(void); extern asmlinkage void handle_fpe(void); +extern asmlinkage void handle_mdmx(void); extern asmlinkage void handle_watch(void); extern asmlinkage void handle_mcheck(void); extern asmlinkage void handle_reserved(void); @@ -720,6 +721,12 @@ force_sig(SIGILL, current); } +asmlinkage void do_mdmx(struct pt_regs *regs) +{ + compute_return_epc(regs); + force_sig(SIGILL, current); +} + asmlinkage void do_watch(struct pt_regs *regs) { /* @@ -989,6 +996,7 @@ set_except_vector(11, handle_cpu); set_except_vector(12, handle_ov); set_except_vector(13, handle_tr); + set_except_vector(22, handle_mdmx); if ((mips_cpu.options & MIPS_CPU_FPU) && !(mips_cpu.options & MIPS_CPU_NOFPUEX))