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