Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target...
[cascardo/linux.git] / arch / arm64 / kernel / probes / decode-insn.h
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 */