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#include <asm-generic/kprobes.h> 14 15#ifdef CONFIG_KPROBES 16 17#include <linux/types.h> 18#include <linux/ptrace.h> 19#include <linux/notifier.h> 20 21#define PARISC_KPROBES_BREAK_INSN 0x3ff801f 22#define PARISC_KPROBES_BREAK_INSN2 0x3ff801e 23#define __ARCH_WANT_KPROBES_INSN_SLOT 24#define MAX_INSN_SIZE 2 25 26typedef u32 kprobe_opcode_t; 27struct kprobe; 28 29void arch_remove_kprobe(struct kprobe *p); 30 31#define flush_insn_slot(p) \ 32 flush_icache_range((unsigned long)&(p)->ainsn.insn[0], \ 33 (unsigned long)&(p)->ainsn.insn[0] + \ 34 MAX_INSN_SIZE*sizeof(kprobe_opcode_t)) 35 36#define kretprobe_blacklist_size 0 37 38struct arch_specific_insn { 39 kprobe_opcode_t *insn; 40}; 41 42struct prev_kprobe { 43 struct kprobe *kp; 44 unsigned long status; 45}; 46 47struct kprobe_ctlblk { 48 unsigned int kprobe_status; 49 struct prev_kprobe prev_kprobe; 50 unsigned long iaoq[2]; 51}; 52 53int __kprobes parisc_kprobe_break_handler(struct pt_regs *regs); 54int __kprobes parisc_kprobe_ss_handler(struct pt_regs *regs); 55static inline int kprobe_fault_handler(struct pt_regs *regs, int trapnr) 56{ 57 return 0; 58} 59 60#endif /* CONFIG_KPROBES */ 61#endif /* _PARISC_KPROBES_H */ 62