xref: /openbmc/linux/arch/csky/include/asm/kprobes.h (revision 03ab8e6297acd1bc0eedaa050e2a1635c576fd11)
1  /* SPDX-License-Identifier: GPL-2.0-only */
2  
3  #ifndef __ASM_CSKY_KPROBES_H
4  #define __ASM_CSKY_KPROBES_H
5  
6  #include <asm-generic/kprobes.h>
7  
8  #ifdef CONFIG_KPROBES
9  #include <linux/types.h>
10  #include <linux/ptrace.h>
11  #include <linux/percpu.h>
12  
13  #define __ARCH_WANT_KPROBES_INSN_SLOT
14  #define MAX_INSN_SIZE			1
15  
16  #define flush_insn_slot(p)		do { } while (0)
17  #define kretprobe_blacklist_size	0
18  
19  #include <asm/probes.h>
20  
21  struct prev_kprobe {
22  	struct kprobe *kp;
23  	unsigned int status;
24  };
25  
26  /* Single step context for kprobe */
27  struct kprobe_step_ctx {
28  	unsigned long ss_pending;
29  	unsigned long match_addr;
30  };
31  
32  /* per-cpu kprobe control block */
33  struct kprobe_ctlblk {
34  	unsigned int kprobe_status;
35  	unsigned long saved_sr;
36  	struct prev_kprobe prev_kprobe;
37  	struct kprobe_step_ctx ss_ctx;
38  };
39  
40  void arch_remove_kprobe(struct kprobe *p);
41  int kprobe_fault_handler(struct pt_regs *regs, unsigned int trapnr);
42  int kprobe_breakpoint_handler(struct pt_regs *regs);
43  int kprobe_single_step_handler(struct pt_regs *regs);
44  void __kretprobe_trampoline(void);
45  void __kprobes *trampoline_probe_handler(struct pt_regs *regs);
46  
47  #endif /* CONFIG_KPROBES */
48  #endif /* __ASM_CSKY_KPROBES_H */
49