43 #ifndef __ARCH_ARM_REGS_INT_HH__
44 #define __ARCH_ARM_REGS_INT_HH__
59 SignedBitfield<31, 16>
sh1;
60 SignedBitfield<15, 0>
sh0;
62 SignedBitfield<31, 0>
sw;
82 INTREG_SP = INTREG_R13,
86 INTREG_PC = INTREG_R15,
89 INTREG_SP_SVC = INTREG_R13_SVC,
91 INTREG_LR_SVC = INTREG_R14_SVC,
94 INTREG_SP_MON = INTREG_R13_MON,
96 INTREG_LR_MON = INTREG_R14_MON,
99 INTREG_SP_HYP = INTREG_R13_HYP,
102 INTREG_SP_ABT = INTREG_R13_ABT,
104 INTREG_LR_ABT = INTREG_R14_ABT,
107 INTREG_SP_UND = INTREG_R13_UND,
109 INTREG_LR_UND = INTREG_R14_UND,
112 INTREG_SP_IRQ = INTREG_R13_IRQ,
114 INTREG_LR_IRQ = INTREG_R14_IRQ,
122 INTREG_SP_FIQ = INTREG_R13_FIQ,
124 INTREG_LR_FIQ = INTREG_R14_FIQ,
138 NUM_ARCH_INTREGS = 32,
174 INTREG_SPX = NUM_INTREGS,
179 INTREG_R0_USR = INTREG_R0,
180 INTREG_R1_USR = INTREG_R1,
181 INTREG_R2_USR = INTREG_R2,
182 INTREG_R3_USR = INTREG_R3,
183 INTREG_R4_USR = INTREG_R4,
184 INTREG_R5_USR = INTREG_R5,
185 INTREG_R6_USR = INTREG_R6,
186 INTREG_R7_USR = INTREG_R7,
187 INTREG_R8_USR = INTREG_R8,
188 INTREG_R9_USR = INTREG_R9,
189 INTREG_R10_USR = INTREG_R10,
190 INTREG_R11_USR = INTREG_R11,
191 INTREG_R12_USR = INTREG_R12,
192 INTREG_R13_USR = INTREG_R13,
193 INTREG_SP_USR = INTREG_SP,
194 INTREG_R14_USR = INTREG_R14,
196 INTREG_R15_USR = INTREG_R15,
197 INTREG_PC_USR = INTREG_PC,
200 INTREG_R0_SVC = INTREG_R0,
201 INTREG_R1_SVC = INTREG_R1,
202 INTREG_R2_SVC = INTREG_R2,
203 INTREG_R3_SVC = INTREG_R3,
204 INTREG_R4_SVC = INTREG_R4,
205 INTREG_R5_SVC = INTREG_R5,
206 INTREG_R6_SVC = INTREG_R6,
207 INTREG_R7_SVC = INTREG_R7,
208 INTREG_R8_SVC = INTREG_R8,
209 INTREG_R9_SVC = INTREG_R9,
210 INTREG_R10_SVC = INTREG_R10,
211 INTREG_R11_SVC = INTREG_R11,
212 INTREG_R12_SVC = INTREG_R12,
213 INTREG_PC_SVC = INTREG_PC,
214 INTREG_R15_SVC = INTREG_R15,
217 INTREG_R0_MON = INTREG_R0,
218 INTREG_R1_MON = INTREG_R1,
219 INTREG_R2_MON = INTREG_R2,
220 INTREG_R3_MON = INTREG_R3,
221 INTREG_R4_MON = INTREG_R4,
222 INTREG_R5_MON = INTREG_R5,
223 INTREG_R6_MON = INTREG_R6,
224 INTREG_R7_MON = INTREG_R7,
225 INTREG_R8_MON = INTREG_R8,
226 INTREG_R9_MON = INTREG_R9,
227 INTREG_R10_MON = INTREG_R10,
228 INTREG_R11_MON = INTREG_R11,
229 INTREG_R12_MON = INTREG_R12,
230 INTREG_PC_MON = INTREG_PC,
231 INTREG_R15_MON = INTREG_R15,
234 INTREG_R0_ABT = INTREG_R0,
235 INTREG_R1_ABT = INTREG_R1,
236 INTREG_R2_ABT = INTREG_R2,
237 INTREG_R3_ABT = INTREG_R3,
238 INTREG_R4_ABT = INTREG_R4,
239 INTREG_R5_ABT = INTREG_R5,
240 INTREG_R6_ABT = INTREG_R6,
241 INTREG_R7_ABT = INTREG_R7,
242 INTREG_R8_ABT = INTREG_R8,
243 INTREG_R9_ABT = INTREG_R9,
244 INTREG_R10_ABT = INTREG_R10,
245 INTREG_R11_ABT = INTREG_R11,
246 INTREG_R12_ABT = INTREG_R12,
247 INTREG_PC_ABT = INTREG_PC,
248 INTREG_R15_ABT = INTREG_R15,
251 INTREG_R0_HYP = INTREG_R0,
252 INTREG_R1_HYP = INTREG_R1,
253 INTREG_R2_HYP = INTREG_R2,
254 INTREG_R3_HYP = INTREG_R3,
255 INTREG_R4_HYP = INTREG_R4,
256 INTREG_R5_HYP = INTREG_R5,
257 INTREG_R6_HYP = INTREG_R6,
258 INTREG_R7_HYP = INTREG_R7,
259 INTREG_R8_HYP = INTREG_R8,
260 INTREG_R9_HYP = INTREG_R9,
261 INTREG_R10_HYP = INTREG_R10,
262 INTREG_R11_HYP = INTREG_R11,
263 INTREG_R12_HYP = INTREG_R12,
265 INTREG_R14_HYP = INTREG_R14,
266 INTREG_PC_HYP = INTREG_PC,
267 INTREG_R15_HYP = INTREG_R15,
270 INTREG_R0_UND = INTREG_R0,
271 INTREG_R1_UND = INTREG_R1,
272 INTREG_R2_UND = INTREG_R2,
273 INTREG_R3_UND = INTREG_R3,
274 INTREG_R4_UND = INTREG_R4,
275 INTREG_R5_UND = INTREG_R5,
276 INTREG_R6_UND = INTREG_R6,
277 INTREG_R7_UND = INTREG_R7,
278 INTREG_R8_UND = INTREG_R8,
279 INTREG_R9_UND = INTREG_R9,
280 INTREG_R10_UND = INTREG_R10,
281 INTREG_R11_UND = INTREG_R11,
282 INTREG_R12_UND = INTREG_R12,
283 INTREG_PC_UND = INTREG_PC,
284 INTREG_R15_UND = INTREG_R15,
287 INTREG_R0_IRQ = INTREG_R0,
288 INTREG_R1_IRQ = INTREG_R1,
289 INTREG_R2_IRQ = INTREG_R2,
290 INTREG_R3_IRQ = INTREG_R3,
291 INTREG_R4_IRQ = INTREG_R4,
292 INTREG_R5_IRQ = INTREG_R5,
293 INTREG_R6_IRQ = INTREG_R6,
294 INTREG_R7_IRQ = INTREG_R7,
295 INTREG_R8_IRQ = INTREG_R8,
296 INTREG_R9_IRQ = INTREG_R9,
297 INTREG_R10_IRQ = INTREG_R10,
298 INTREG_R11_IRQ = INTREG_R11,
299 INTREG_R12_IRQ = INTREG_R12,
300 INTREG_PC_IRQ = INTREG_PC,
301 INTREG_R15_IRQ = INTREG_R15,
304 INTREG_R0_FIQ = INTREG_R0,
305 INTREG_R1_FIQ = INTREG_R1,
306 INTREG_R2_FIQ = INTREG_R2,
307 INTREG_R3_FIQ = INTREG_R3,
308 INTREG_R4_FIQ = INTREG_R4,
309 INTREG_R5_FIQ = INTREG_R5,
310 INTREG_R6_FIQ = INTREG_R6,
311 INTREG_R7_FIQ = INTREG_R7,
312 INTREG_PC_FIQ = INTREG_PC,
313 INTREG_R15_FIQ = INTREG_R15
316 typedef IntRegIndex
IntRegMap[NUM_ARCH_INTREGS];
319 INTREG_R0, INTREG_R1, INTREG_R2, INTREG_R3,
320 INTREG_R4, INTREG_R5, INTREG_R6, INTREG_R7,
321 INTREG_R8_USR, INTREG_R9_USR, INTREG_R10_USR, INTREG_R11_USR,
322 INTREG_R12_USR, INTREG_R13_USR, INTREG_R14_USR, INTREG_R13_HYP,
323 INTREG_R14_IRQ, INTREG_R13_IRQ, INTREG_R14_SVC, INTREG_R13_SVC,
324 INTREG_R14_ABT, INTREG_R13_ABT, INTREG_R14_UND, INTREG_R13_UND,
325 INTREG_R8_FIQ, INTREG_R9_FIQ, INTREG_R10_FIQ, INTREG_R11_FIQ,
326 INTREG_R12_FIQ, INTREG_R13_FIQ, INTREG_R14_FIQ, INTREG_ZERO
330 INTREG_R0_USR, INTREG_R1_USR, INTREG_R2_USR, INTREG_R3_USR,
331 INTREG_R4_USR, INTREG_R5_USR, INTREG_R6_USR, INTREG_R7_USR,
332 INTREG_R8_USR, INTREG_R9_USR, INTREG_R10_USR, INTREG_R11_USR,
333 INTREG_R12_USR, INTREG_R13_USR, INTREG_R14_USR, INTREG_R15_USR,
334 INTREG_ZERO, INTREG_ZERO, INTREG_ZERO, INTREG_ZERO,
335 INTREG_ZERO, INTREG_ZERO, INTREG_ZERO, INTREG_ZERO,
336 INTREG_ZERO, INTREG_ZERO, INTREG_ZERO, INTREG_ZERO,
337 INTREG_ZERO, INTREG_ZERO, INTREG_ZERO, INTREG_ZERO
340 static inline IntRegIndex
343 assert(
index < NUM_ARCH_INTREGS);
348 INTREG_R0_HYP, INTREG_R1_HYP, INTREG_R2_HYP, INTREG_R3_HYP,
349 INTREG_R4_HYP, INTREG_R5_HYP, INTREG_R6_HYP, INTREG_R7_HYP,
350 INTREG_R8_HYP, INTREG_R9_HYP, INTREG_R10_HYP, INTREG_R11_HYP,
351 INTREG_R12_HYP, INTREG_R13_HYP, INTREG_R14_HYP, INTREG_R15_HYP,
352 INTREG_ZERO, INTREG_ZERO, INTREG_ZERO, INTREG_ZERO,
353 INTREG_ZERO, INTREG_ZERO, INTREG_ZERO, INTREG_ZERO,
354 INTREG_ZERO, INTREG_ZERO, INTREG_ZERO, INTREG_ZERO,
355 INTREG_ZERO, INTREG_ZERO, INTREG_ZERO, INTREG_ZERO
358 static inline IntRegIndex
361 assert(
index < NUM_ARCH_INTREGS);
366 INTREG_R0_SVC, INTREG_R1_SVC, INTREG_R2_SVC, INTREG_R3_SVC,
367 INTREG_R4_SVC, INTREG_R5_SVC, INTREG_R6_SVC, INTREG_R7_SVC,
368 INTREG_R8_SVC, INTREG_R9_SVC, INTREG_R10_SVC, INTREG_R11_SVC,
369 INTREG_R12_SVC, INTREG_R13_SVC, INTREG_R14_SVC, INTREG_R15_SVC,
370 INTREG_ZERO, INTREG_ZERO, INTREG_ZERO, INTREG_ZERO,
371 INTREG_ZERO, INTREG_ZERO, INTREG_ZERO, INTREG_ZERO,
372 INTREG_ZERO, INTREG_ZERO, INTREG_ZERO, INTREG_ZERO,
373 INTREG_ZERO, INTREG_ZERO, INTREG_ZERO, INTREG_ZERO
376 static inline IntRegIndex
379 assert(
index < NUM_ARCH_INTREGS);
384 INTREG_R0_MON, INTREG_R1_MON, INTREG_R2_MON, INTREG_R3_MON,
385 INTREG_R4_MON, INTREG_R5_MON, INTREG_R6_MON, INTREG_R7_MON,
386 INTREG_R8_MON, INTREG_R9_MON, INTREG_R10_MON, INTREG_R11_MON,
387 INTREG_R12_MON, INTREG_R13_MON, INTREG_R14_MON, INTREG_R15_MON,
388 INTREG_ZERO, INTREG_ZERO, INTREG_ZERO, INTREG_ZERO,
389 INTREG_ZERO, INTREG_ZERO, INTREG_ZERO, INTREG_ZERO,
390 INTREG_ZERO, INTREG_ZERO, INTREG_ZERO, INTREG_ZERO,
391 INTREG_ZERO, INTREG_ZERO, INTREG_ZERO, INTREG_ZERO
394 static inline IntRegIndex
397 assert(
index < NUM_ARCH_INTREGS);
402 INTREG_R0_ABT, INTREG_R1_ABT, INTREG_R2_ABT, INTREG_R3_ABT,
403 INTREG_R4_ABT, INTREG_R5_ABT, INTREG_R6_ABT, INTREG_R7_ABT,
404 INTREG_R8_ABT, INTREG_R9_ABT, INTREG_R10_ABT, INTREG_R11_ABT,
405 INTREG_R12_ABT, INTREG_R13_ABT, INTREG_R14_ABT, INTREG_R15_ABT,
406 INTREG_ZERO, INTREG_ZERO, INTREG_ZERO, INTREG_ZERO,
407 INTREG_ZERO, INTREG_ZERO, INTREG_ZERO, INTREG_ZERO,
408 INTREG_ZERO, INTREG_ZERO, INTREG_ZERO, INTREG_ZERO,
409 INTREG_ZERO, INTREG_ZERO, INTREG_ZERO, INTREG_ZERO
412 static inline IntRegIndex
415 assert(
index < NUM_ARCH_INTREGS);
420 INTREG_R0_UND, INTREG_R1_UND, INTREG_R2_UND, INTREG_R3_UND,
421 INTREG_R4_UND, INTREG_R5_UND, INTREG_R6_UND, INTREG_R7_UND,
422 INTREG_R8_UND, INTREG_R9_UND, INTREG_R10_UND, INTREG_R11_UND,
423 INTREG_R12_UND, INTREG_R13_UND, INTREG_R14_UND, INTREG_R15_UND,
424 INTREG_ZERO, INTREG_ZERO, INTREG_ZERO, INTREG_ZERO,
425 INTREG_ZERO, INTREG_ZERO, INTREG_ZERO, INTREG_ZERO,
426 INTREG_ZERO, INTREG_ZERO, INTREG_ZERO, INTREG_ZERO,
427 INTREG_ZERO, INTREG_ZERO, INTREG_ZERO, INTREG_ZERO
430 static inline IntRegIndex
433 assert(
index < NUM_ARCH_INTREGS);
438 INTREG_R0_IRQ, INTREG_R1_IRQ, INTREG_R2_IRQ, INTREG_R3_IRQ,
439 INTREG_R4_IRQ, INTREG_R5_IRQ, INTREG_R6_IRQ, INTREG_R7_IRQ,
440 INTREG_R8_IRQ, INTREG_R9_IRQ, INTREG_R10_IRQ, INTREG_R11_IRQ,
441 INTREG_R12_IRQ, INTREG_R13_IRQ, INTREG_R14_IRQ, INTREG_R15_IRQ,
442 INTREG_ZERO, INTREG_ZERO, INTREG_ZERO, INTREG_ZERO,
443 INTREG_ZERO, INTREG_ZERO, INTREG_ZERO, INTREG_ZERO,
444 INTREG_ZERO, INTREG_ZERO, INTREG_ZERO, INTREG_ZERO,
445 INTREG_ZERO, INTREG_ZERO, INTREG_ZERO, INTREG_ZERO
448 static inline IntRegIndex
451 assert(
index < NUM_ARCH_INTREGS);
456 INTREG_R0_FIQ, INTREG_R1_FIQ, INTREG_R2_FIQ, INTREG_R3_FIQ,
457 INTREG_R4_FIQ, INTREG_R5_FIQ, INTREG_R6_FIQ, INTREG_R7_FIQ,
458 INTREG_R8_FIQ, INTREG_R9_FIQ, INTREG_R10_FIQ, INTREG_R11_FIQ,
459 INTREG_R12_FIQ, INTREG_R13_FIQ, INTREG_R14_FIQ, INTREG_R15_FIQ,
460 INTREG_ZERO, INTREG_ZERO, INTREG_ZERO, INTREG_ZERO,
461 INTREG_ZERO, INTREG_ZERO, INTREG_ZERO, INTREG_ZERO,
462 INTREG_ZERO, INTREG_ZERO, INTREG_ZERO, INTREG_ZERO,
463 INTREG_ZERO, INTREG_ZERO, INTREG_ZERO, INTREG_ZERO
466 static inline IntRegIndex
469 assert(
index < NUM_ARCH_INTREGS);
478 assert(
reg < NUM_ARCH_INTREGS);
506 panic(
"%d: Flattening into an unknown mode: reg:%#x mode:%#x\n",
512 static inline IntRegIndex
515 if (
reg == INTREG_X31)
520 static inline IntRegIndex
523 if (
reg == INTREG_X31)
531 return reg == INTREG_SPX;