diff options
Diffstat (limited to 'arch/x86/include/asm/uprobes.h')
| -rw-r--r-- | arch/x86/include/asm/uprobes.h | 32 | 
1 files changed, 20 insertions, 12 deletions
diff --git a/arch/x86/include/asm/uprobes.h b/arch/x86/include/asm/uprobes.h index 6e5197910fd..74f4c2ff642 100644 --- a/arch/x86/include/asm/uprobes.h +++ b/arch/x86/include/asm/uprobes.h @@ -33,12 +33,27 @@ typedef u8 uprobe_opcode_t;  #define UPROBE_SWBP_INSN		0xcc  #define UPROBE_SWBP_INSN_SIZE		   1 +struct uprobe_xol_ops; +  struct arch_uprobe { -	u16				fixups; -	u8				insn[MAX_UINSN_BYTES]; -#ifdef CONFIG_X86_64 -	unsigned long			rip_rela_target_address; -#endif +	union { +		u8			insn[MAX_UINSN_BYTES]; +		u8			ixol[MAX_UINSN_BYTES]; +	}; + +	const struct uprobe_xol_ops	*ops; + +	union { +		struct { +			s32	offs; +			u8	ilen; +			u8	opc1; +		}			branch; +		struct { +			u8	fixups; +			u8	ilen; +		} 			defparam; +	};  };  struct arch_uprobe_task { @@ -49,11 +64,4 @@ struct arch_uprobe_task {  	unsigned int			saved_tf;  }; -extern int  arch_uprobe_analyze_insn(struct arch_uprobe *aup, struct mm_struct *mm, unsigned long addr); -extern int  arch_uprobe_pre_xol(struct arch_uprobe *aup, struct pt_regs *regs); -extern int  arch_uprobe_post_xol(struct arch_uprobe *aup, struct pt_regs *regs); -extern bool arch_uprobe_xol_was_trapped(struct task_struct *tsk); -extern int  arch_uprobe_exception_notify(struct notifier_block *self, unsigned long val, void *data); -extern void arch_uprobe_abort_xol(struct arch_uprobe *aup, struct pt_regs *regs); -extern unsigned long arch_uretprobe_hijack_return_addr(unsigned long trampoline_vaddr, struct pt_regs *regs);  #endif	/* _ASM_UPROBES_H */  | 
