Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 183019
b: refs/heads/master
c: d23bc1b
h: refs/heads/master
i:
  183017: e8ab5ee
  183015: 7f34346
v: v3
  • Loading branch information
Daniel Jacobowitz authored and Russell King committed Feb 15, 2010
1 parent 1956dad commit f48e48a
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 1 deletion.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 1a28e3d977860dc760909083df625b300f695680
refs/heads/master: d23bc1b3a7e6db935acb9a949a5985d9b77dfd13
31 changes: 31 additions & 0 deletions trunk/arch/arm/kernel/ptrace.c
Original file line number Diff line number Diff line change
Expand Up @@ -499,10 +499,41 @@ static struct undef_hook thumb_break_hook = {
.fn = break_trap,
};

static int thumb2_break_trap(struct pt_regs *regs, unsigned int instr)
{
unsigned int instr2;
void __user *pc;

/* Check the second half of the instruction. */
pc = (void __user *)(instruction_pointer(regs) + 2);

if (processor_mode(regs) == SVC_MODE) {
instr2 = *(u16 *) pc;
} else {
get_user(instr2, (u16 __user *)pc);
}

if (instr2 == 0xa000) {
ptrace_break(current, regs);
return 0;
} else {
return 1;
}
}

static struct undef_hook thumb2_break_hook = {
.instr_mask = 0xffff,
.instr_val = 0xf7f0,
.cpsr_mask = PSR_T_BIT,
.cpsr_val = PSR_T_BIT,
.fn = thumb2_break_trap,
};

static int __init ptrace_break_init(void)
{
register_undef_hook(&arm_break_hook);
register_undef_hook(&thumb_break_hook);
register_undef_hook(&thumb2_break_hook);
return 0;
}

Expand Down

0 comments on commit f48e48a

Please sign in to comment.