Commit efe4fbb1 authored by Balbir Singh's avatar Balbir Singh Committed by Michael Ellerman

powerpc/xmon: Add patch_instruction() support for xmon

Move from mwrite() to patch_instruction() for xmon for
breakpoint addition and removal.
Signed-off-by: default avatarBalbir Singh <bsingharora@gmail.com>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
parent f3eca956
...@@ -53,6 +53,7 @@ ...@@ -53,6 +53,7 @@
#include <asm/xive.h> #include <asm/xive.h>
#include <asm/opal.h> #include <asm/opal.h>
#include <asm/firmware.h> #include <asm/firmware.h>
#include <asm/code-patching.h>
#ifdef CONFIG_PPC64 #ifdef CONFIG_PPC64
#include <asm/hvcall.h> #include <asm/hvcall.h>
...@@ -837,7 +838,8 @@ static void insert_bpts(void) ...@@ -837,7 +838,8 @@ static void insert_bpts(void)
store_inst(&bp->instr[0]); store_inst(&bp->instr[0]);
if (bp->enabled & BP_CIABR) if (bp->enabled & BP_CIABR)
continue; continue;
if (mwrite(bp->address, &bpinstr, 4) != 4) { if (patch_instruction((unsigned int *)bp->address,
bpinstr) != 0) {
printf("Couldn't write instruction at %lx, " printf("Couldn't write instruction at %lx, "
"disabling breakpoint there\n", bp->address); "disabling breakpoint there\n", bp->address);
bp->enabled &= ~BP_TRAP; bp->enabled &= ~BP_TRAP;
...@@ -874,7 +876,8 @@ static void remove_bpts(void) ...@@ -874,7 +876,8 @@ static void remove_bpts(void)
continue; continue;
if (mread(bp->address, &instr, 4) == 4 if (mread(bp->address, &instr, 4) == 4
&& instr == bpinstr && instr == bpinstr
&& mwrite(bp->address, &bp->instr, 4) != 4) && patch_instruction(
(unsigned int *)bp->address, bp->instr[0]) != 0)
printf("Couldn't remove breakpoint at %lx\n", printf("Couldn't remove breakpoint at %lx\n",
bp->address); bp->address);
else else
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment