1/* SPDX-License-Identifier: GPL-2.0-or-later */
2#ifndef _ASM_UPROBES_H
3#define _ASM_UPROBES_H
4/*
5 * User-space Probes (UProbes) for x86
6 *
7 * Copyright (C) IBM Corporation, 2008-2011
8 * Authors:
9 *	Srikar Dronamraju
10 *	Jim Keniston
11 */
12
13#include <linux/notifier.h>
14
15typedef u8 uprobe_opcode_t;
16
17#define MAX_UINSN_BYTES			  16
18#define UPROBE_XOL_SLOT_BYTES		 128	/* to keep it cache aligned */
19
20#define UPROBE_SWBP_INSN		0xcc
21#define UPROBE_SWBP_INSN_SIZE		   1
22
23struct uprobe_xol_ops;
24
25struct arch_uprobe {
26	union {
27		u8			insn[MAX_UINSN_BYTES];
28		u8			ixol[MAX_UINSN_BYTES];
29	};
30
31	const struct uprobe_xol_ops	*ops;
32
33	union {
34		struct {
35			s32	offs;
36			u8	ilen;
37			u8	opc1;
38		}			branch;
39		struct {
40			u8	fixups;
41			u8	ilen;
42		} 			defparam;
43		struct {
44			u8	reg_offset;	/* to the start of pt_regs */
45			u8	ilen;
46		}			push;
47	};
48};
49
50struct arch_uprobe_task {
51#ifdef CONFIG_X86_64
52	unsigned long			saved_scratch_register;
53#endif
54	unsigned int			saved_trap_nr;
55	unsigned int			saved_tf;
56};
57
58#endif	/* _ASM_UPROBES_H */
59