mirror of https://gitee.com/openkylin/linux.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 <jniethe5@gmail.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Reviewed-by: Alistair Popple <alistair@popple.id.au> Link: https://lore.kernel.org/r/20200506034050.24806-20-jniethe5@gmail.com
This commit is contained in:
parent
6c7a4f0a9f
commit
7fccfcfba0
|
@ -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,
|
||||
|
|
Loading…
Reference in New Issue