Merge branch 'kprobes' of git://git.linaro.org/people/nico/linux into fixes

This commit is contained in:
Russell King 2011-04-29 11:02:45 +01:00
commit 408133e9dc
3 changed files with 470 additions and 329 deletions

View File

@ -39,10 +39,13 @@ typedef u32 kprobe_opcode_t;
struct kprobe; struct kprobe;
typedef void (kprobe_insn_handler_t)(struct kprobe *, struct pt_regs *); typedef void (kprobe_insn_handler_t)(struct kprobe *, struct pt_regs *);
typedef unsigned long (kprobe_check_cc)(unsigned long);
/* Architecture specific copy of original instruction. */ /* Architecture specific copy of original instruction. */
struct arch_specific_insn { struct arch_specific_insn {
kprobe_opcode_t *insn; kprobe_opcode_t *insn;
kprobe_insn_handler_t *insn_handler; kprobe_insn_handler_t *insn_handler;
kprobe_check_cc *insn_check_cc;
}; };
struct prev_kprobe { struct prev_kprobe {

File diff suppressed because it is too large Load Diff

View File

@ -134,7 +134,8 @@ static void __kprobes singlestep(struct kprobe *p, struct pt_regs *regs,
struct kprobe_ctlblk *kcb) struct kprobe_ctlblk *kcb)
{ {
regs->ARM_pc += 4; regs->ARM_pc += 4;
p->ainsn.insn_handler(p, regs); if (p->ainsn.insn_check_cc(regs->ARM_cpsr))
p->ainsn.insn_handler(p, regs);
} }
/* /*