1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /* 3 * arch/arm64/include/asm/kprobes.h 4 * 5 * Copyright (C) 2013 Linaro Limited 6 */ 7 8 #ifndef _ARM_KPROBES_H 9 #define _ARM_KPROBES_H 10 11 #include <asm-generic/kprobes.h> 12 13 #ifdef CONFIG_KPROBES 14 #include <linux/types.h> 15 #include <linux/ptrace.h> 16 #include <linux/percpu.h> 17 18 #define __ARCH_WANT_KPROBES_INSN_SLOT 19 #define MAX_INSN_SIZE 2 20 21 #define flush_insn_slot(p) do { } while (0) 22 #define kretprobe_blacklist_size 0 23 24 #include <asm/probes.h> 25 26 struct prev_kprobe { 27 struct kprobe *kp; 28 unsigned int status; 29 30 /* 31 * The original DAIF state of the outer kprobe, saved here before 32 * a nested kprobe overwrites kcb->saved_irqflag during reentry. 33 */ 34 unsigned long saved_irqflag; 35 }; 36 37 /* per-cpu kprobe control block */ 38 struct kprobe_ctlblk { 39 unsigned int kprobe_status; 40 unsigned long saved_irqflag; 41 struct prev_kprobe prev_kprobe; 42 }; 43 44 void arch_remove_kprobe(struct kprobe *); 45 int kprobe_fault_handler(struct pt_regs *regs, unsigned int fsr); 46 void __kretprobe_trampoline(void); 47 void __kprobes *trampoline_probe_handler(struct pt_regs *regs); 48 49 #endif /* CONFIG_KPROBES */ 50 51 int __kprobes kprobe_brk_handler(struct pt_regs *regs, 52 unsigned long esr); 53 int __kprobes kprobe_ss_brk_handler(struct pt_regs *regs, 54 unsigned long esr); 55 int __kprobes kretprobe_brk_handler(struct pt_regs *regs, 56 unsigned long esr); 57 58 #endif /* _ARM_KPROBES_H */ 59