xref: /freebsd/sys/cddl/dev/kinst/riscv/kinst_isa.h (revision 2d7bb03adb43dd605464db3a9634ff33bf74ca5f)
1*2d7bb03aSChristos Margiolis /*
2*2d7bb03aSChristos Margiolis  * SPDX-License-Identifier: CDDL 1.0
3*2d7bb03aSChristos Margiolis  *
4*2d7bb03aSChristos Margiolis  * Copyright (c) 2023 The FreeBSD Foundation
5*2d7bb03aSChristos Margiolis  *
6*2d7bb03aSChristos Margiolis  * This software was developed by Christos Margiolis <christos@FreeBSD.org>
7*2d7bb03aSChristos Margiolis  * under sponsorship from the FreeBSD Foundation.
8*2d7bb03aSChristos Margiolis  */
9*2d7bb03aSChristos Margiolis 
10*2d7bb03aSChristos Margiolis #ifndef _KINST_ISA_H_
11*2d7bb03aSChristos Margiolis #define _KINST_ISA_H_
12*2d7bb03aSChristos Margiolis 
13*2d7bb03aSChristos Margiolis #include <machine/riscvreg.h>
14*2d7bb03aSChristos Margiolis #include <machine/encoding.h>
15*2d7bb03aSChristos Margiolis 
16*2d7bb03aSChristos Margiolis #define KINST_PATCHVAL		MATCH_EBREAK
17*2d7bb03aSChristos Margiolis #define KINST_C_PATCHVAL	MATCH_C_EBREAK
18*2d7bb03aSChristos Margiolis 
19*2d7bb03aSChristos Margiolis /*
20*2d7bb03aSChristos Margiolis  * The trampoline contains [instruction, [nop padding], ebreak].
21*2d7bb03aSChristos Margiolis  */
22*2d7bb03aSChristos Margiolis #define KINST_TRAMP_SIZE	8
23*2d7bb03aSChristos Margiolis 
24*2d7bb03aSChristos Margiolis typedef uint32_t kinst_patchval_t;
25*2d7bb03aSChristos Margiolis 
26*2d7bb03aSChristos Margiolis struct kinst_probe_md {
27*2d7bb03aSChristos Margiolis 	int	instlen;	/* original instr len */
28*2d7bb03aSChristos Margiolis 	bool	emulate;	/* emulate in sw */
29*2d7bb03aSChristos Margiolis };
30*2d7bb03aSChristos Margiolis 
31*2d7bb03aSChristos Margiolis #endif /* _KINST_ISA_H_ */
32