1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /* 3 * Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com) 4 */ 5 6 #ifndef _ARC_KPROBES_H 7 #define _ARC_KPROBES_H 8 9 #include <asm-generic/kprobes.h> 10 11 #ifdef CONFIG_KPROBES 12 13 typedef u16 kprobe_opcode_t; 14 15 #define UNIMP_S_INSTRUCTION 0x79e0 16 #define TRAP_S_2_INSTRUCTION 0x785e 17 18 #define MAX_INSN_SIZE 8 19 #define MAX_STACK_SIZE 64 20 21 struct arch_specific_insn { 22 int is_short; 23 kprobe_opcode_t *t1_addr, *t2_addr; 24 kprobe_opcode_t t1_opcode, t2_opcode; 25 }; 26 27 #define flush_insn_slot(p) do { } while (0) 28 29 #define kretprobe_blacklist_size 0 30 31 struct kprobe; 32 33 void arch_remove_kprobe(struct kprobe *p); 34 35 int kprobe_exceptions_notify(struct notifier_block *self, 36 unsigned long val, void *data); 37 38 struct prev_kprobe { 39 struct kprobe *kp; 40 unsigned long status; 41 }; 42 43 struct kprobe_ctlblk { 44 unsigned int kprobe_status; 45 struct prev_kprobe prev_kprobe; 46 }; 47 48 int kprobe_fault_handler(struct pt_regs *regs, unsigned long cause); 49 void kretprobe_trampoline(void); 50 void trap_is_kprobe(unsigned long address, struct pt_regs *regs); 51 #else 52 #define trap_is_kprobe(address, regs) 53 #endif /* CONFIG_KPROBES */ 54 55 #endif /* _ARC_KPROBES_H */ 56