forked from mirrors/linux
		
	powerpc/xmon: Add patch_instruction() support for xmon
Move from mwrite() to patch_instruction() for xmon for breakpoint addition and removal. Signed-off-by: Balbir Singh <bsingharora@gmail.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
This commit is contained in:
		
							parent
							
								
									f3eca95638
								
							
						
					
					
						commit
						efe4fbb1ac
					
				
					 1 changed files with 5 additions and 2 deletions
				
			
		| 
						 | 
				
			
			@ -53,6 +53,7 @@
 | 
			
		|||
#include <asm/xive.h>
 | 
			
		||||
#include <asm/opal.h>
 | 
			
		||||
#include <asm/firmware.h>
 | 
			
		||||
#include <asm/code-patching.h>
 | 
			
		||||
 | 
			
		||||
#ifdef CONFIG_PPC64
 | 
			
		||||
#include <asm/hvcall.h>
 | 
			
		||||
| 
						 | 
				
			
			@ -837,7 +838,8 @@ static void insert_bpts(void)
 | 
			
		|||
		store_inst(&bp->instr[0]);
 | 
			
		||||
		if (bp->enabled & BP_CIABR)
 | 
			
		||||
			continue;
 | 
			
		||||
		if (mwrite(bp->address, &bpinstr, 4) != 4) {
 | 
			
		||||
		if (patch_instruction((unsigned int *)bp->address,
 | 
			
		||||
							bpinstr) != 0) {
 | 
			
		||||
			printf("Couldn't write instruction at %lx, "
 | 
			
		||||
			       "disabling breakpoint there\n", bp->address);
 | 
			
		||||
			bp->enabled &= ~BP_TRAP;
 | 
			
		||||
| 
						 | 
				
			
			@ -874,7 +876,8 @@ static void remove_bpts(void)
 | 
			
		|||
			continue;
 | 
			
		||||
		if (mread(bp->address, &instr, 4) == 4
 | 
			
		||||
		    && 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",
 | 
			
		||||
			       bp->address);
 | 
			
		||||
		else
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue