summaryrefslogtreecommitdiff
path: root/arch/arm/kernel/probes-thumb.c
diff options
context:
space:
mode:
authorDavid A. Long <dave.long@linaro.org>2014-03-07 11:19:32 -0500
committerDavid A. Long <dave.long@linaro.org>2014-03-18 16:39:37 -0400
commit7579f4b3764337b39087d10496af0e741cbfe570 (patch)
tree009a68f8615a04fa038874522493006c2efb8022 /arch/arm/kernel/probes-thumb.c
parent3e6cd394bb10c2d65322e5f5d2ff0a9074d903a1 (diff)
ARM: Remove use of struct kprobe from generic probes code
Change the generic ARM probes code to pass in the opcode and architecture-specific structure separately instead of using struct kprobe, so we do not pollute code being used only for uprobes or other non-kprobes instruction interpretation. Signed-off-by: David A. Long <dave.long@linaro.org> Acked-by: Jon Medhurst <tixy@linaro.org>
Diffstat (limited to 'arch/arm/kernel/probes-thumb.c')
-rw-r--r--arch/arm/kernel/probes-thumb.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/arch/arm/kernel/probes-thumb.c b/arch/arm/kernel/probes-thumb.c
index 2abe8ceeb670..aa3176da1b29 100644
--- a/arch/arm/kernel/probes-thumb.c
+++ b/arch/arm/kernel/probes-thumb.c
@@ -10,10 +10,9 @@
#include <linux/stddef.h>
#include <linux/kernel.h>
-#include <linux/kprobes.h>
#include <linux/module.h>
-#include "kprobes.h"
+#include "probes.h"
#include "probes-thumb.h"
@@ -844,17 +843,21 @@ static unsigned long __kprobes thumb_check_cc(unsigned long cpsr)
return true;
}
-static void __kprobes thumb16_singlestep(struct kprobe *p, struct pt_regs *regs)
+static void __kprobes thumb16_singlestep(kprobe_opcode_t opcode,
+ struct arch_specific_insn *asi,
+ struct pt_regs *regs)
{
regs->ARM_pc += 2;
- p->ainsn.insn_handler(p, regs);
+ asi->insn_handler(opcode, asi, regs);
regs->ARM_cpsr = it_advance(regs->ARM_cpsr);
}
-static void __kprobes thumb32_singlestep(struct kprobe *p, struct pt_regs *regs)
+static void __kprobes thumb32_singlestep(kprobe_opcode_t opcode,
+ struct arch_specific_insn *asi,
+ struct pt_regs *regs)
{
regs->ARM_pc += 4;
- p->ainsn.insn_handler(p, regs);
+ asi->insn_handler(opcode, asi, regs);
regs->ARM_cpsr = it_advance(regs->ARM_cpsr);
}