Linux-libre 5.3.12-gnu
[librecmc/linux-libre.git] / arch / arm64 / kernel / probes / decode-insn.h
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /*
3  * arch/arm64/kernel/probes/decode-insn.h
4  *
5  * Copyright (C) 2013 Linaro Limited.
6  */
7
8 #ifndef _ARM_KERNEL_KPROBES_ARM64_H
9 #define _ARM_KERNEL_KPROBES_ARM64_H
10
11 #include <asm/kprobes.h>
12
13 /*
14  * ARM strongly recommends a limit of 128 bytes between LoadExcl and
15  * StoreExcl instructions in a single thread of execution. So keep the
16  * max atomic context size as 32.
17  */
18 #define MAX_ATOMIC_CONTEXT_SIZE (128 / sizeof(kprobe_opcode_t))
19
20 enum probe_insn {
21         INSN_REJECTED,
22         INSN_GOOD_NO_SLOT,
23         INSN_GOOD,
24 };
25
26 #ifdef CONFIG_KPROBES
27 enum probe_insn __kprobes
28 arm_kprobe_decode_insn(kprobe_opcode_t *addr, struct arch_specific_insn *asi);
29 #endif
30 enum probe_insn __kprobes
31 arm_probe_decode_insn(probe_opcode_t insn, struct arch_probe_insn *asi);
32
33 #endif /* _ARM_KERNEL_KPROBES_ARM64_H */