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