aboutsummaryrefslogtreecommitdiff
path: root/arch/arm64/kernel/probes/decode-insn.h
diff options
context:
space:
mode:
authorAlex Shi <alex.shi@linaro.org>2017-04-07 16:50:41 +0800
committerAlex Shi <alex.shi@linaro.org>2017-04-07 16:50:41 +0800
commit11cbb42a86895b88ac906a6768c998f9e98a37e2 (patch)
tree3eaeec2cff4c7e34add793c77079cdc85b058bb8 /arch/arm64/kernel/probes/decode-insn.h
parent95ffb43f1ba759fb1205a8ce38a7ea5bab6be02d (diff)
parent95bcc3e563748f65c9fc0eb1bbc3f99b76efd4b2 (diff)
Merge remote-tracking branch 'origin/v4.4/topic/hibernate' into hikey-mainline-rebase-4.4hikey-hibernate-v4.4
Conflicts: arch/arm64/Makefile arch/arm64/kernel/arm64ksyms.c arch/arm64/kernel/asm-offsets.c arch/arm64/kvm/hyp/fpsimd.S drivers/firmware/psci.c fs/proc/task_mmu.c mm/memcontrol.c
Diffstat (limited to 'arch/arm64/kernel/probes/decode-insn.h')
-rw-r--r--arch/arm64/kernel/probes/decode-insn.h35
1 files changed, 35 insertions, 0 deletions
diff --git a/arch/arm64/kernel/probes/decode-insn.h b/arch/arm64/kernel/probes/decode-insn.h
new file mode 100644
index 000000000000..d438289646a6
--- /dev/null
+++ b/arch/arm64/kernel/probes/decode-insn.h
@@ -0,0 +1,35 @@
+/*
+ * arch/arm64/kernel/probes/decode-insn.h
+ *
+ * Copyright (C) 2013 Linaro Limited.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ */
+
+#ifndef _ARM_KERNEL_KPROBES_ARM64_H
+#define _ARM_KERNEL_KPROBES_ARM64_H
+
+/*
+ * ARM strongly recommends a limit of 128 bytes between LoadExcl and
+ * StoreExcl instructions in a single thread of execution. So keep the
+ * max atomic context size as 32.
+ */
+#define MAX_ATOMIC_CONTEXT_SIZE (128 / sizeof(kprobe_opcode_t))
+
+enum kprobe_insn {
+ INSN_REJECTED,
+ INSN_GOOD_NO_SLOT,
+ INSN_GOOD,
+};
+
+enum kprobe_insn __kprobes
+arm_kprobe_decode_insn(kprobe_opcode_t *addr, struct arch_specific_insn *asi);
+
+#endif /* _ARM_KERNEL_KPROBES_ARM64_H */