From: Jordan Niethe Date: Wed, 6 May 2020 03:40:39 +0000 (+1000) Subject: powerpc/xmon: Move insertion of breakpoint for xol'ing X-Git-Tag: v5.10.7~2436^2~131 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=7fccfcfba04f9cb46438f368755d368f6c57f3a0;p=platform%2Fkernel%2Flinux-rpi.git powerpc/xmon: Move insertion of breakpoint for xol'ing When a new breakpoint is created, the second instruction of that breakpoint is patched with a trap instruction. This assumes the length of the instruction is always the same. In preparation for prefixed instructions, remove this assumption. Insert the trap instruction at the same time the first instruction is inserted. Signed-off-by: Jordan Niethe Signed-off-by: Michael Ellerman Reviewed-by: Alistair Popple Link: https://lore.kernel.org/r/20200506034050.24806-20-jniethe5@gmail.com --- diff --git a/arch/powerpc/xmon/xmon.c b/arch/powerpc/xmon/xmon.c index d8b29f6925be..00b24f357c2b 100644 --- a/arch/powerpc/xmon/xmon.c +++ b/arch/powerpc/xmon/xmon.c @@ -878,7 +878,6 @@ static struct bpt *new_breakpoint(unsigned long a) if (!bp->enabled && atomic_read(&bp->ref_count) == 0) { bp->address = a; bp->instr = (void *)(bpt_table + ((bp - bpts) * BPT_WORDS)); - patch_instruction(bp->instr + 1, ppc_inst(bpinstr)); return bp; } } @@ -910,6 +909,8 @@ static void insert_bpts(void) continue; } patch_instruction(bp->instr, instr); + patch_instruction((void *)bp->instr + ppc_inst_len(instr), + ppc_inst(bpinstr)); if (bp->enabled & BP_CIABR) continue; if (patch_instruction((struct ppc_inst *)bp->address,