blob: 192ab007bacb3c28e487d4823eeca2c1f7c1e8f8 [file] [log] [blame]
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001/*
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#include <asm/kprobes.h>
20
21/*
22 * ARM strongly recommends a limit of 128 bytes between LoadExcl and
23 * StoreExcl instructions in a single thread of execution. So keep the
24 * max atomic context size as 32.
25 */
26#define MAX_ATOMIC_CONTEXT_SIZE (128 / sizeof(kprobe_opcode_t))
27
28enum probe_insn {
29 INSN_REJECTED,
30 INSN_GOOD_NO_SLOT,
31 INSN_GOOD,
32};
33
34#ifdef CONFIG_KPROBES
35enum probe_insn __kprobes
36arm_kprobe_decode_insn(kprobe_opcode_t *addr, struct arch_specific_insn *asi);
37#endif
38enum probe_insn __kprobes
39arm_probe_decode_insn(probe_opcode_t insn, struct arch_probe_insn *asi);
40
41#endif /* _ARM_KERNEL_KPROBES_ARM64_H */