1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */ 2a439fe51SSam Ravnborg #ifndef _SPARC64_KPROBES_H 3a439fe51SSam Ravnborg #define _SPARC64_KPROBES_H 4a439fe51SSam Ravnborg 57d134b2cSLuis R. Rodriguez #include <asm-generic/kprobes.h> 67d134b2cSLuis R. Rodriguez 77d134b2cSLuis R. Rodriguez #define BREAKPOINT_INSTRUCTION 0x91d02070 /* ta 0x70 */ 87d134b2cSLuis R. Rodriguez #define BREAKPOINT_INSTRUCTION_2 0x91d02071 /* ta 0x71 */ 97d134b2cSLuis R. Rodriguez 107d134b2cSLuis R. Rodriguez #ifdef CONFIG_KPROBES 11a439fe51SSam Ravnborg #include <linux/types.h> 12a439fe51SSam Ravnborg #include <linux/percpu.h> 13a439fe51SSam Ravnborg 14a439fe51SSam Ravnborg typedef u32 kprobe_opcode_t; 15a439fe51SSam Ravnborg 16a439fe51SSam Ravnborg #define MAX_INSN_SIZE 2 17a439fe51SSam Ravnborg 18a439fe51SSam Ravnborg #define kretprobe_blacklist_size 0 19a439fe51SSam Ravnborg 20a439fe51SSam Ravnborg #define arch_remove_kprobe(p) do {} while (0) 21a439fe51SSam Ravnborg 22a439fe51SSam Ravnborg #define flush_insn_slot(p) \ 23a439fe51SSam Ravnborg do { flushi(&(p)->ainsn.insn[0]); \ 24a439fe51SSam Ravnborg flushi(&(p)->ainsn.insn[1]); \ 25a439fe51SSam Ravnborg } while (0) 26a439fe51SSam Ravnborg 27*adf8a61aSMasami Hiramatsu void __kretprobe_trampoline(void); 28a439fe51SSam Ravnborg 29a439fe51SSam Ravnborg /* Architecture specific copy of original instruction*/ 30a439fe51SSam Ravnborg struct arch_specific_insn { 31a439fe51SSam Ravnborg /* copy of the original instruction */ 32a439fe51SSam Ravnborg kprobe_opcode_t insn[MAX_INSN_SIZE]; 33a439fe51SSam Ravnborg }; 34a439fe51SSam Ravnborg 35a439fe51SSam Ravnborg struct prev_kprobe { 36a439fe51SSam Ravnborg struct kprobe *kp; 37a439fe51SSam Ravnborg unsigned long status; 38a439fe51SSam Ravnborg unsigned long orig_tnpc; 39a439fe51SSam Ravnborg unsigned long orig_tstate_pil; 40a439fe51SSam Ravnborg }; 41a439fe51SSam Ravnborg 42a439fe51SSam Ravnborg /* per-cpu kprobe control block */ 43a439fe51SSam Ravnborg struct kprobe_ctlblk { 44a439fe51SSam Ravnborg unsigned long kprobe_status; 45a439fe51SSam Ravnborg unsigned long kprobe_orig_tnpc; 46a439fe51SSam Ravnborg unsigned long kprobe_orig_tstate_pil; 47a439fe51SSam Ravnborg struct prev_kprobe prev_kprobe; 48a439fe51SSam Ravnborg }; 49a439fe51SSam Ravnborg 50f05a6865SSam Ravnborg int kprobe_fault_handler(struct pt_regs *regs, int trapnr); 51758a0170SSam Ravnborg asmlinkage void __kprobes kprobe_trap(unsigned long trap_level, 52758a0170SSam Ravnborg struct pt_regs *regs); 537d134b2cSLuis R. Rodriguez 547d134b2cSLuis R. Rodriguez #endif /* CONFIG_KPROBES */ 55a439fe51SSam Ravnborg #endif /* _SPARC64_KPROBES_H */ 56