blob: 4e5873628b752590511174590d6c6fcc903b5e1a (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
/*
* SPDX-License-Identifier: CDDL 1.0
*
* Copyright 2022 Christos Margiolis <christos@FreeBSD.org>
* Copyright 2022 Mark Johnston <markj@FreeBSD.org>
*/
#ifndef _KINST_ISA_H_
#define _KINST_ISA_H_
#include <sys/types.h>
#define KINST_PATCHVAL 0xcc
/*
* Each trampoline is 32 bytes long and contains [instruction, jmp]. Since we
* have 2 instructions stored in the trampoline, and each of them can take up
* to 16 bytes, 32 bytes is enough to cover even the worst case scenario.
*/
#define KINST_TRAMP_SIZE 32
typedef uint8_t kinst_patchval_t;
struct kinst_probe_md {
int flags;
int instlen; /* original instr len */
int tinstlen; /* trampoline instr len */
uint8_t template[16]; /* copied into thread tramps */
int dispoff; /* offset of rip displacement */
/* operands to "call" instruction branch target */
int reg1;
int reg2;
int scale;
int64_t disp;
};
#endif /* _KINST_ISA_H_ */
|