1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* 3 * arch/parisc/include/asm/kprobes.h 4 * 5 * PA-RISC kprobes implementation 6 * 7 * Copyright (c) 2019 Sven Schnelle <svens@stackframe.org> 8 */ 9 10 #ifndef _PARISC_KPROBES_H 11 #define _PARISC_KPROBES_H 12 13 #ifdef CONFIG_KPROBES 14 15 #include <asm-generic/kprobes.h> 16 #include <linux/types.h> 17 #include <linux/ptrace.h> 18 #include <linux/notifier.h> 19 20 #define PARISC_KPROBES_BREAK_INSN 0x3ff801f 21 #define __ARCH_WANT_KPROBES_INSN_SLOT 22 #define MAX_INSN_SIZE 1 23 24 typedef u32 kprobe_opcode_t; 25 struct kprobe; 26 27 void arch_remove_kprobe(struct kprobe *p); 28 29 #define flush_insn_slot(p) \ 30 flush_icache_range((unsigned long)&(p)->ainsn.insn[0], \ 31 (unsigned long)&(p)->ainsn.insn[0] + \ 32 sizeof(kprobe_opcode_t)) 33 34 #define kretprobe_blacklist_size 0 35 36 struct arch_specific_insn { 37 kprobe_opcode_t *insn; 38 }; 39 40 struct prev_kprobe { 41 struct kprobe *kp; 42 unsigned long status; 43 }; 44 45 struct kprobe_ctlblk { 46 unsigned int kprobe_status; 47 struct prev_kprobe prev_kprobe; 48 unsigned long iaoq[2]; 49 }; 50 51 int __kprobes parisc_kprobe_break_handler(struct pt_regs *regs); 52 int __kprobes parisc_kprobe_ss_handler(struct pt_regs *regs); 53 54 #endif /* CONFIG_KPROBES */ 55 #endif /* _PARISC_KPROBES_H */ 56