xref: /OK3568_Linux_fs/kernel/arch/arm64/include/asm/uprobes.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-only */
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  * Copyright (C) 2014-2016 Pratyush Anand <panand@redhat.com>
4*4882a593Smuzhiyun  */
5*4882a593Smuzhiyun 
6*4882a593Smuzhiyun #ifndef _ASM_UPROBES_H
7*4882a593Smuzhiyun #define _ASM_UPROBES_H
8*4882a593Smuzhiyun 
9*4882a593Smuzhiyun #include <asm/debug-monitors.h>
10*4882a593Smuzhiyun #include <asm/insn.h>
11*4882a593Smuzhiyun #include <asm/probes.h>
12*4882a593Smuzhiyun 
13*4882a593Smuzhiyun #define MAX_UINSN_BYTES		AARCH64_INSN_SIZE
14*4882a593Smuzhiyun 
15*4882a593Smuzhiyun #define UPROBE_SWBP_INSN	BRK64_OPCODE_UPROBES
16*4882a593Smuzhiyun #define UPROBE_SWBP_INSN_SIZE	AARCH64_INSN_SIZE
17*4882a593Smuzhiyun #define UPROBE_XOL_SLOT_BYTES	MAX_UINSN_BYTES
18*4882a593Smuzhiyun 
19*4882a593Smuzhiyun typedef u32 uprobe_opcode_t;
20*4882a593Smuzhiyun 
21*4882a593Smuzhiyun struct arch_uprobe_task {
22*4882a593Smuzhiyun };
23*4882a593Smuzhiyun 
24*4882a593Smuzhiyun struct arch_uprobe {
25*4882a593Smuzhiyun 	union {
26*4882a593Smuzhiyun 		u8 insn[MAX_UINSN_BYTES];
27*4882a593Smuzhiyun 		u8 ixol[MAX_UINSN_BYTES];
28*4882a593Smuzhiyun 	};
29*4882a593Smuzhiyun 	struct arch_probe_insn api;
30*4882a593Smuzhiyun 	bool simulate;
31*4882a593Smuzhiyun };
32*4882a593Smuzhiyun 
33*4882a593Smuzhiyun #endif
34