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 24typedef u32 kprobe_opcode_t; 25struct kprobe; 26 27void 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 36struct arch_specific_insn { 37 kprobe_opcode_t *insn; 38}; 39 40struct prev_kprobe { 41 struct kprobe *kp; 42 unsigned long status; 43}; 44 45struct kprobe_ctlblk { 46 unsigned int kprobe_status; 47 struct prev_kprobe prev_kprobe; 48 unsigned long iaoq[2]; 49}; 50 51int __kprobes parisc_kprobe_break_handler(struct pt_regs *regs); 52int __kprobes parisc_kprobe_ss_handler(struct pt_regs *regs); 53static inline int kprobe_fault_handler(struct pt_regs *regs, int trapnr) 54{ 55 return 0; 56} 57 58#endif /* CONFIG_KPROBES */ 59#endif /* _PARISC_KPROBES_H */ 60