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 | |
15 | typedef 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 | |
23 | struct uprobe_xol_ops; |
24 | |
25 | struct 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 | |
50 | struct 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 | |