patch-2.2.14 linux/arch/ppc/xmon/xmon.c
Next file: linux/arch/s390/Makefile
Previous file: linux/arch/ppc/mm/init.c
Back to the patch index
Back to the overall index
- Lines: 49
- Date:
Tue Jan 4 10:12:12 2000
- Orig file:
v2.2.13/linux/arch/ppc/xmon/xmon.c
- Orig date:
Tue Oct 19 17:10:36 1999
diff -u --recursive --new-file v2.2.13/linux/arch/ppc/xmon/xmon.c linux/arch/ppc/xmon/xmon.c
@@ -115,9 +115,13 @@
{
struct pt_regs regs;
int msr, cmd;
+ static int entered = 0;
+
+ if (!entered) {
+ entered = 1;
+ printk("Entering xmon kernel debugger.\n");
+ }
- printk("Entering xmon kernel debugger.\n");
-
if (excp == NULL) {
asm volatile ("stw 0,0(%0)\n\
lwz 0,0(1)\n\
@@ -230,7 +234,7 @@
if (dabr.enabled && pc == dabr.instr)
return &dabr;
- if (iabr.enabled && pc == iabr.address)
+ if (iabr.enabled && ((pc ^ iabr.address) & ~3) == 0)
return &iabr;
bp = bpts;
for (i = 0; i < NBPTS; ++i, ++bp)
@@ -254,7 +258,9 @@
printf("Couldn't insert breakpoint at %x, disabling\n",
bp->address);
bp->enabled = 0;
+ continue;
}
+ store_inst((void *) bp->address);
}
if (dabr.enabled)
set_dabr(dabr.address);
@@ -277,9 +283,12 @@
continue;
if (mread(bp->address, &instr, 4) == 4
&& instr == bpinstr
- && mwrite(bp->address, &bp->instr, 4) != 4)
+ && mwrite(bp->address, &bp->instr, 4) != 4) {
printf("Couldn't remove breakpoint at %x\n",
bp->address);
+ continue;
+ }
+ store_inst((void *) bp->address);
}
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)