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 26struct prev_kprobe { 27 struct kprobe *kp; 28 unsigned int status; 29}; 30 31/* Single step context for kprobe */ 32struct kprobe_step_ctx { 33 unsigned long ss_pending; 34 unsigned long match_addr; 35}; 36 37/* per-cpu kprobe control block */ 38struct kprobe_ctlblk { 39 unsigned int kprobe_status; 40 unsigned long saved_irqflag; 41 struct prev_kprobe prev_kprobe; 42 struct kprobe_step_ctx ss_ctx; 43}; 44 45void arch_remove_kprobe(struct kprobe *); 46int kprobe_fault_handler(struct pt_regs *regs, unsigned int fsr); 47int kprobe_exceptions_notify(struct notifier_block *self, 48 unsigned long val, void *data); 49void kretprobe_trampoline(void); 50void __kprobes *trampoline_probe_handler(struct pt_regs *regs); 51 52#endif /* CONFIG_KPROBES */ 53#endif /* _ARM_KPROBES_H */ 54