target/hexagon: Add guest, system reg number defs
Signed-off-by: Brian Cain <brian.cain@oss.qualcomm.com> Reviewed-by: Taylor Simpson <ltaylorsimpson@gmail.com> Signed-off-by: Brian Cain <brian.cain@oss.qualcomm.com>
Brian Cain committed
Jun 22, 2026 at 15:28 UTC
bac34422c53c43e8113367ae02088336e2208eef
2 files changed
+124
target/hexagon/cpu.h
+7
@@ -20,6 +20,13 @@
20
21
#include "fpu/softfloat-types.h"
22
23
+#ifndef CONFIG_USER_ONLY
24
+#define NUM_GREGS 32
25
+#define GREG_WRITES_MAX 2
26
+#define NUM_SREGS 64
27
+#define SREG_WRITES_MAX 2
28
+#endif
29
+
30
#include "cpu-qom.h"
31
#include "exec/cpu-common.h"
32
#include "exec/target_long.h"
target/hexagon/hex_regs.h
+117
@@ -81,4 +81,121 @@ enum {
81
HEX_REG_UTIMERHI = 63,
82
};
83
84
+#ifndef CONFIG_USER_ONLY
85
+
86
+#define HEX_GREG_VALUES \
87
+ DECL_HEX_GREG(G0, 0) \
88
+ DECL_HEX_GREG(GELR, 0) \
89
+ DECL_HEX_GREG(G1, 1) \
90
+ DECL_HEX_GREG(GSR, 1) \
91
+ DECL_HEX_GREG(G2, 2) \
92
+ DECL_HEX_GREG(GOSP, 2) \
93
+ DECL_HEX_GREG(G3, 3) \
94
+ DECL_HEX_GREG(GBADVA, 3) \
95
+ DECL_HEX_GREG(GCYCLE_1T, 10) \
96
+ DECL_HEX_GREG(GCYCLE_2T, 11) \
97
+ DECL_HEX_GREG(GCYCLE_3T, 12) \
98
+ DECL_HEX_GREG(GCYCLE_4T, 13) \
99
+ DECL_HEX_GREG(GCYCLE_5T, 14) \
100
+ DECL_HEX_GREG(GCYCLE_6T, 15) \
101
+ DECL_HEX_GREG(GPMUCNT4, 16) \
102
+ DECL_HEX_GREG(GPMUCNT5, 17) \
103
+ DECL_HEX_GREG(GPMUCNT6, 18) \
104
+ DECL_HEX_GREG(GPMUCNT7, 19) \
105
+ DECL_HEX_GREG(GPCYCLELO, 24) \
106
+ DECL_HEX_GREG(GPCYCLEHI, 25) \
107
+ DECL_HEX_GREG(GPMUCNT0, 26) \
108
+ DECL_HEX_GREG(GPMUCNT1, 27) \
109
+ DECL_HEX_GREG(GPMUCNT2, 28) \
110
+ DECL_HEX_GREG(GPMUCNT3, 29) \
111
+ DECL_HEX_GREG_DONE
112
+
113
+#define DECL_HEX_GREG_DONE
114
+#define DECL_HEX_GREG(name, val) HEX_GREG_ ##name = val,
115
+enum hex_greg {
116
+ HEX_GREG_VALUES
117
+};
118
+#undef DECL_HEX_GREG
119
+#undef DECL_HEX_GREG_DONE
120
+
121
+#define DECL_HEX_GREG_DONE 0
122
+#define DECL_HEX_GREG(_, val) (1 << val) |
123
+static inline bool greg_implemented(enum hex_greg greg)
124
+{
125
+#if NUM_GREGS > 32
126
+#error "NUM_GREGS too large for greg_implemented(): update `impl_bitmap`"
127
+#endif
128
+ static int32_t impl_bitmap = HEX_GREG_VALUES;
129
+ return impl_bitmap & (1 << greg);
130
+}
131
+#undef DECL_HEX_GREG
132
+#undef DECL_HEX_GREG_DONE
133
+
134
+#endif /* CONFIG_USER_ONLY */
135
+
136
+#ifndef CONFIG_USER_ONLY
137
+enum {
138
+ HEX_SREG_SGP0 = 0,
139
+ HEX_SREG_SGP1 = 1,
140
+ HEX_SREG_STID = 2,
141
+ HEX_SREG_ELR = 3,
142
+ HEX_SREG_BADVA0 = 4,
143
+ HEX_SREG_BADVA1 = 5,
144
+ HEX_SREG_SSR = 6,
145
+ HEX_SREG_CCR = 7,
146
+ HEX_SREG_HTID = 8,
147
+ HEX_SREG_BADVA = 9,
148
+ HEX_SREG_IMASK = 10,
149
+ HEX_SREG_GEVB = 11,
150
+ HEX_SREG_GLB_START = 16,
151
+ HEX_SREG_EVB = 16,
152
+ HEX_SREG_MODECTL = 17,
153
+ HEX_SREG_SYSCFG = 18,
154
+ HEX_SREG_IPENDAD = 20,
155
+ HEX_SREG_VID = 21,
156
+ HEX_SREG_VID1 = 22,
157
+ HEX_SREG_BESTWAIT = 23,
158
+ HEX_SREG_IEL = 24,
159
+ HEX_SREG_SCHEDCFG = 25,
160
+ HEX_SREG_IAHL = 26,
161
+ HEX_SREG_CFGBASE = 27,
162
+ HEX_SREG_DIAG = 28,
163
+ HEX_SREG_REV = 29,
164
+ HEX_SREG_PCYCLELO = 30,
165
+ HEX_SREG_PCYCLEHI = 31,
166
+ HEX_SREG_ISDBST = 32,
167
+ HEX_SREG_ISDBCFG0 = 33,
168
+ HEX_SREG_ISDBCFG1 = 34,
169
+ HEX_SREG_LIVELOCK = 35,
170
+ HEX_SREG_BRKPTPC0 = 36,
171
+ HEX_SREG_BRKPTCFG0 = 37,
172
+ HEX_SREG_BRKPTPC1 = 38,
173
+ HEX_SREG_BRKPTCFG1 = 39,
174
+ HEX_SREG_ISDBMBXIN = 40,
175
+ HEX_SREG_ISDBMBXOUT = 41,
176
+ HEX_SREG_ISDBEN = 42,
177
+ HEX_SREG_ISDBGPR = 43,
178
+ HEX_SREG_PMUCNT4 = 44,
179
+ HEX_SREG_PMUCNT5 = 45,
180
+ HEX_SREG_PMUCNT6 = 46,
181
+ HEX_SREG_PMUCNT7 = 47,
182
+ HEX_SREG_PMUCNT0 = 48,
183
+ HEX_SREG_PMUCNT1 = 49,
184
+ HEX_SREG_PMUCNT2 = 50,
185
+ HEX_SREG_PMUCNT3 = 51,
186
+ HEX_SREG_PMUEVTCFG = 52,
187
+ HEX_SREG_PMUSTID0 = 53,
188
+ HEX_SREG_PMUEVTCFG1 = 54,
189
+ HEX_SREG_PMUSTID1 = 55,
190
+ HEX_SREG_TIMERLO = 56,
191
+ HEX_SREG_TIMERHI = 57,
192
+ HEX_SREG_PMUCFG = 58,
193
+ HEX_SREG_S59 = 59,
194
+ HEX_SREG_S60 = 60,
195
+ HEX_SREG_S61 = 61,
196
+ HEX_SREG_S62 = 62,
197
+ HEX_SREG_S63 = 63,
198
+};
199
+#endif /* !CONFIG_USER_ONLY */
200
+
201
#endif