26 #include <linux/module.h>
27 #include <linux/sched.h>
29 #include <asm/cacheflush.h>
31 #include <asm/irq_regs.h>
43 sp = sp ? sp : (
unsigned long *)&sp;
48 if (i && ((i % 8) == 0))
71 sp = sp ? sp : (
long *) &sp;
77 if (i && ((i % 6) == 0))
84 if (i && ((i % 6) == 0))
104 for (i = -3; i < 6; i++) {
111 insn, (i ?
' ' :
'>'));
120 printk(
"r0 : %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
123 printk(
"r8 : %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
126 printk(
"r16: %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
129 printk(
"r24: %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
136 printk(
"EMA:%08lx, epc:%08lx %s\nPSR: %08lx\nECR:%08lx\nCondition : %08lx\n",
163 const char *
func,
unsigned long line)
168 printk(
" in %s:%s, line %ld", file, func, line);
178 __die(str, regs, file, func, line);
183 printk(
"do_ADE-linsn:ema:0x%08lx:epc:0x%08lx\n",
197 printk(
"do_ADE-data:ema:0x%08lx:epc:0x%08lx\n",
236 info.si_addr = (
void *)regs->
cp0_epc;
248 unsigned long epc_insn;
252 if (
current->thread.single_step == 1) {
253 if ((epc ==
current->thread.addr1) ||
254 (epc ==
current->thread.addr2)) {
261 ((epc_insn & 0x0000FFFF) == 0x7002) ||
262 ((epc_insn & 0xFFFF0000) == 0x70020000)) {
286 panic(
"Caught reserved exception - should not happen.");
294 die_if_kernel(
"nmi_exception_handler execution Exception", regs);
305 return (
void *)old_handler;
323 for (i = 0; i <= 31; i++)