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/* per-cpu kprobe control block */
32struct kprobe_ctlblk {
33	unsigned int kprobe_status;
34	unsigned long saved_irqflag;
35	struct prev_kprobe prev_kprobe;
36};
37
38void arch_remove_kprobe(struct kprobe *);
39int kprobe_fault_handler(struct pt_regs *regs, unsigned int fsr);
40void __kretprobe_trampoline(void);
41void __kprobes *trampoline_probe_handler(struct pt_regs *regs);
42
43#endif /* CONFIG_KPROBES */
44#endif /* _ARM_KPROBES_H */
45