kprobes.h (30176466e36aadba01e1a630cf42397a3438efa4) | kprobes.h (51c9c0843993528bffc920c54c2121d9e6f8b090) |
---|---|
1#ifndef _ASM_POWERPC_KPROBES_H 2#define _ASM_POWERPC_KPROBES_H 3#ifdef __KERNEL__ 4/* 5 * Kernel Probes (KProbes) 6 * 7 * This program is free software; you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License as published by --- 26 unchanged lines hidden (view full) --- 35 36#ifdef CONFIG_KPROBES 37#define __ARCH_WANT_KPROBES_INSN_SLOT 38 39struct pt_regs; 40struct kprobe; 41 42typedef ppc_opcode_t kprobe_opcode_t; | 1#ifndef _ASM_POWERPC_KPROBES_H 2#define _ASM_POWERPC_KPROBES_H 3#ifdef __KERNEL__ 4/* 5 * Kernel Probes (KProbes) 6 * 7 * This program is free software; you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License as published by --- 26 unchanged lines hidden (view full) --- 35 36#ifdef CONFIG_KPROBES 37#define __ARCH_WANT_KPROBES_INSN_SLOT 38 39struct pt_regs; 40struct kprobe; 41 42typedef ppc_opcode_t kprobe_opcode_t; |
43#define MAX_INSN_SIZE 1 | |
44 | 43 |
44extern kprobe_opcode_t optinsn_slot; 45 46/* Optinsn template address */ 47extern kprobe_opcode_t optprobe_template_entry[]; 48extern kprobe_opcode_t optprobe_template_op_address[]; 49extern kprobe_opcode_t optprobe_template_call_handler[]; 50extern kprobe_opcode_t optprobe_template_insn[]; 51extern kprobe_opcode_t optprobe_template_call_emulate[]; 52extern kprobe_opcode_t optprobe_template_ret[]; 53extern kprobe_opcode_t optprobe_template_end[]; 54 55/* Fixed instruction size for powerpc */ 56#define MAX_INSN_SIZE 1 57#define MAX_OPTIMIZED_LENGTH sizeof(kprobe_opcode_t) /* 4 bytes */ 58#define MAX_OPTINSN_SIZE (optprobe_template_end - optprobe_template_entry) 59#define RELATIVEJUMP_SIZE sizeof(kprobe_opcode_t) /* 4 bytes */ 60 |
|
45#ifdef PPC64_ELF_ABI_v2 46/* PPC64 ABIv2 needs local entry point */ 47#define kprobe_lookup_name(name, addr) \ 48{ \ 49 addr = (kprobe_opcode_t *)kallsyms_lookup_name(name); \ 50 if (addr) \ 51 addr = (kprobe_opcode_t *)ppc_function_entry(addr); \ 52} --- 68 unchanged lines hidden (view full) --- 121/* per-cpu kprobe control block */ 122struct kprobe_ctlblk { 123 unsigned long kprobe_status; 124 unsigned long kprobe_saved_msr; 125 struct pt_regs jprobe_saved_regs; 126 struct prev_kprobe prev_kprobe; 127}; 128 | 61#ifdef PPC64_ELF_ABI_v2 62/* PPC64 ABIv2 needs local entry point */ 63#define kprobe_lookup_name(name, addr) \ 64{ \ 65 addr = (kprobe_opcode_t *)kallsyms_lookup_name(name); \ 66 if (addr) \ 67 addr = (kprobe_opcode_t *)ppc_function_entry(addr); \ 68} --- 68 unchanged lines hidden (view full) --- 137/* per-cpu kprobe control block */ 138struct kprobe_ctlblk { 139 unsigned long kprobe_status; 140 unsigned long kprobe_saved_msr; 141 struct pt_regs jprobe_saved_regs; 142 struct prev_kprobe prev_kprobe; 143}; 144 |
145struct arch_optimized_insn { 146 kprobe_opcode_t copied_insn[1]; 147 /* detour buffer */ 148 kprobe_opcode_t *insn; 149}; 150 |
|
129extern int kprobe_exceptions_notify(struct notifier_block *self, 130 unsigned long val, void *data); 131extern int kprobe_fault_handler(struct pt_regs *regs, int trapnr); 132extern int kprobe_handler(struct pt_regs *regs); 133extern int kprobe_post_handler(struct pt_regs *regs); 134#else 135static inline int kprobe_handler(struct pt_regs *regs) { return 0; } 136static inline int kprobe_post_handler(struct pt_regs *regs) { return 0; } 137#endif /* CONFIG_KPROBES */ 138#endif /* __KERNEL__ */ 139#endif /* _ASM_POWERPC_KPROBES_H */ | 151extern int kprobe_exceptions_notify(struct notifier_block *self, 152 unsigned long val, void *data); 153extern int kprobe_fault_handler(struct pt_regs *regs, int trapnr); 154extern int kprobe_handler(struct pt_regs *regs); 155extern int kprobe_post_handler(struct pt_regs *regs); 156#else 157static inline int kprobe_handler(struct pt_regs *regs) { return 0; } 158static inline int kprobe_post_handler(struct pt_regs *regs) { return 0; } 159#endif /* CONFIG_KPROBES */ 160#endif /* __KERNEL__ */ 161#endif /* _ASM_POWERPC_KPROBES_H */ |