xref: /linux/arch/arm64/kernel/probes/decode-insn.h (revision e831101a73fbc8339ef1d1909dad3ef64f089e70)
1 /*
2  * arch/arm64/kernel/probes/decode-insn.h
3  *
4  * Copyright (C) 2013 Linaro Limited.
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License version 2 as
8  * published by the Free Software Foundation.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  * General Public License for more details.
14  */
15 
16 #ifndef _ARM_KERNEL_KPROBES_ARM64_H
17 #define _ARM_KERNEL_KPROBES_ARM64_H
18 
19 /*
20  * ARM strongly recommends a limit of 128 bytes between LoadExcl and
21  * StoreExcl instructions in a single thread of execution. So keep the
22  * max atomic context size as 32.
23  */
24 #define MAX_ATOMIC_CONTEXT_SIZE	(128 / sizeof(kprobe_opcode_t))
25 
26 enum kprobe_insn {
27 	INSN_REJECTED,
28 	INSN_GOOD_NO_SLOT,
29 	INSN_GOOD,
30 };
31 
32 enum kprobe_insn __kprobes
33 arm_kprobe_decode_insn(kprobe_opcode_t *addr, struct arch_specific_insn *asi);
34 
35 #endif /* _ARM_KERNEL_KPROBES_ARM64_H */
36