linux/arch/parisc/include/asm/kprobes.h
<<
>>
Prefs
   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