summaryrefslogtreecommitdiffstats
path: root/arch/arm/probes/decode.h
diff options
context:
space:
mode:
authorWang Nan2015-01-05 12:29:18 +0100
committerJon Medhurst2015-01-09 10:36:51 +0100
commit83803d97dae1eaf6850a45ef8ee179cc66e147dc (patch)
treee2b1124f1c7896dcadb2af471a0570b019dad551 /arch/arm/probes/decode.h
parentARM: probes: Use correct action types for MOVW, SEV and WFI (diff)
downloadkernel-qcow2-linux-83803d97dae1eaf6850a45ef8ee179cc66e147dc.tar.gz
kernel-qcow2-linux-83803d97dae1eaf6850a45ef8ee179cc66e147dc.tar.xz
kernel-qcow2-linux-83803d97dae1eaf6850a45ef8ee179cc66e147dc.zip
ARM: kprobes: introduces checker
This patch introdces 'checker' to decoding phase, and calls checkers when instruction decoding. This allows further decoding for specific instructions. This patch introduces a stub call of checkers in kprobe arch_prepare_kprobe() as an example and for further expansion. Signed-off-by: Wang Nan <wangnan0@huawei.com> Reviewed-by: Jon Medhurst <tixy@linaro.org> Reviewed-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com> Signed-off-by: Jon Medhurst <tixy@linaro.org>
Diffstat (limited to 'arch/arm/probes/decode.h')
-rw-r--r--arch/arm/probes/decode.h11
1 files changed, 10 insertions, 1 deletions
diff --git a/arch/arm/probes/decode.h b/arch/arm/probes/decode.h
index 1d0b53169080..f9b08ba7fe73 100644
--- a/arch/arm/probes/decode.h
+++ b/arch/arm/probes/decode.h
@@ -314,6 +314,14 @@ union decode_action {
probes_custom_decode_t *decoder;
};
+typedef enum probes_insn (probes_check_t)(probes_opcode_t,
+ struct arch_probes_insn *,
+ const struct decode_header *);
+
+struct decode_checker {
+ probes_check_t *checker;
+};
+
#define DECODE_END \
{.bits = DECODE_TYPE_END}
@@ -402,6 +410,7 @@ probes_insn_handler_t probes_emulate_none;
int __kprobes
probes_decode_insn(probes_opcode_t insn, struct arch_probes_insn *asi,
const union decode_item *table, bool thumb, bool emulate,
- const union decode_action *actions);
+ const union decode_action *actions,
+ const struct decode_checker **checkers);
#endif