aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/kernel/kprobes.h
diff options
context:
space:
mode:
authorJon Medhurst <tixy@yxit.co.uk>2011-07-07 03:57:22 -0400
committerTixy <tixy@medhuaa1.miniserver.com>2011-07-13 13:32:45 -0400
commit235a4ce79feb8d5351f9164981bc57d5e29f974b (patch)
treec3dd0e698781faf592b2b01880103cf0d57d8a92 /arch/arm/kernel/kprobes.h
parent263e368a2f1f960db07d7524a4a3e7df951f1f72 (diff)
ARM: kprobes: Add common decoding function for LDM and STM
The encoding of these instructions is substantially the same for both ARM and Thumb, so we can have common decoding and simulation functions. This patch moves the simulation functions from kprobes-arm.c to kprobes-common.c. It also adds a new simulation function (simulate_ldm1_pc) for the case where we load into PC because this may need to interwork. The instruction decoding is done by a custom function (kprobe_decode_ldmstm) rather than just relying on decoding table entries because we will later be adding optimisation code. Signed-off-by: Jon Medhurst <tixy@yxit.co.uk> Acked-by: Nicolas Pitre <nicolas.pitre@linaro.org>
Diffstat (limited to 'arch/arm/kernel/kprobes.h')
-rw-r--r--arch/arm/kernel/kprobes.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/arm/kernel/kprobes.h b/arch/arm/kernel/kprobes.h
index 5d6bf0d0a18a..c442852e65e4 100644
--- a/arch/arm/kernel/kprobes.h
+++ b/arch/arm/kernel/kprobes.h
@@ -136,6 +136,9 @@ static inline void __kprobes load_write_pc(long pcv, struct pt_regs *regs)
136void __kprobes kprobe_simulate_nop(struct kprobe *p, struct pt_regs *regs); 136void __kprobes kprobe_simulate_nop(struct kprobe *p, struct pt_regs *regs);
137void __kprobes kprobe_emulate_none(struct kprobe *p, struct pt_regs *regs); 137void __kprobes kprobe_emulate_none(struct kprobe *p, struct pt_regs *regs);
138 138
139enum kprobe_insn __kprobes
140kprobe_decode_ldmstm(kprobe_opcode_t insn, struct arch_specific_insn *asi);
141
139/* 142/*
140 * Test if load/store instructions writeback the address register. 143 * Test if load/store instructions writeback the address register.
141 * if P (bit 24) == 0 or W (bit 21) == 1 144 * if P (bit 24) == 0 or W (bit 21) == 1