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 */
34