--- diff -puN arch/ppc64/xmon/xmon.c~xmon-lpar-bp arch/ppc64/xmon/xmon.c --- linux-2.6-bk/arch/ppc64/xmon/xmon.c~xmon-lpar-bp Wed Jan 5 08:14:09 2005 +++ linux-2.6-bk-moilanen/arch/ppc64/xmon/xmon.c Wed Jan 5 09:01:24 2005 @@ -1050,7 +1050,7 @@ static char *breakpoint_help_string = "b [cnt] set breakpoint at given instr addr\n" "bc clear all breakpoints\n" "bc clear breakpoint number n or at addr\n" - "bi [cnt] set hardware instr breakpoint (broken?)\n" + "bi [cnt] set hardware instr breakpoint\n" "bd [cnt] set hardware data breakpoint (broken?)\n" ""; @@ -1088,11 +1088,6 @@ bpt_cmds(void) break; case 'i': /* bi - hardware instr breakpoint */ - if (!(cur_cpu_spec->cpu_features & CPU_FTR_IABR)) { - printf("Hardware instruction breakpoint " - "not supported on this cpu\n"); - break; - } if (iabr) { iabr->enabled &= ~(BP_IABR | BP_IABR_TE); iabr = NULL; @@ -1101,11 +1096,16 @@ bpt_cmds(void) break; if (!check_bp_loc(a)) break; + bp = new_breakpoint(a); - if (bp != NULL) { - bp->enabled |= BP_IABR | BP_IABR_TE; - iabr = bp; + if (bp) { + if (cur_cpu_spec->cpu_features & CPU_FTR_IABR) { + bp->enabled |= BP_IABR | BP_IABR_TE; + iabr = bp; + } else + bp->enabled |= BP_TRAP; } + break; case 'c': _