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 struct prev_kprobe { 36 struct kprobe *kp; 37 unsigned long status; 38 }; 39 40 struct kprobe_ctlblk { 41 unsigned int kprobe_status; 42 struct prev_kprobe prev_kprobe; 43 }; 44 45 int kprobe_fault_handler(struct pt_regs *regs, unsigned long cause); 46 void __kretprobe_trampoline(void); 47 void trap_is_kprobe(unsigned long address, struct pt_regs *regs); 48 #else 49 #define trap_is_kprobe(address, regs) 50 #endif /* CONFIG_KPROBES */ 51 52 #endif /* _ARC_KPROBES_H */ 53