Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 313624
b: refs/heads/master
c: b6e3796
h: refs/heads/master
v: v3
  • Loading branch information
Steven Rostedt authored and Benjamin Herrenschmidt committed Jul 3, 2012
1 parent 7947e6d commit c3a2ec4
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 7 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: ee456bb346e75a9b6d941224b108250e6ee5f79f
refs/heads/master: b6e3796834faefe4b6e9a2aedfe12665cd51fbc5
4 changes: 2 additions & 2 deletions trunk/arch/powerpc/include/asm/code-patching.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@ unsigned int create_branch(const unsigned int *addr,
unsigned long target, int flags);
unsigned int create_cond_branch(const unsigned int *addr,
unsigned long target, int flags);
void patch_branch(unsigned int *addr, unsigned long target, int flags);
void patch_instruction(unsigned int *addr, unsigned int instr);
int patch_branch(unsigned int *addr, unsigned long target, int flags);
int patch_instruction(unsigned int *addr, unsigned int instr);

int instr_is_relative_branch(unsigned int instr);
int instr_is_branch_to_addr(const unsigned int *instr, unsigned long addr);
Expand Down
14 changes: 10 additions & 4 deletions trunk/arch/powerpc/lib/code-patching.c
Original file line number Diff line number Diff line change
Expand Up @@ -13,17 +13,23 @@
#include <linux/mm.h>
#include <asm/page.h>
#include <asm/code-patching.h>
#include <asm/uaccess.h>


void patch_instruction(unsigned int *addr, unsigned int instr)
int patch_instruction(unsigned int *addr, unsigned int instr)
{
*addr = instr;
int err;

err = __put_user(instr, addr);
if (err)
return err;
asm ("dcbst 0, %0; sync; icbi 0,%0; sync; isync" : : "r" (addr));
return 0;
}

void patch_branch(unsigned int *addr, unsigned long target, int flags)
int patch_branch(unsigned int *addr, unsigned long target, int flags)
{
patch_instruction(addr, create_branch(addr, target, flags));
return patch_instruction(addr, create_branch(addr, target, flags));
}

unsigned int create_branch(const unsigned int *addr,
Expand Down

0 comments on commit c3a2ec4

Please sign in to comment.