1pub const EFI_DEBUG_SUPPORT_PROTOCOL_GUID: EFI_GUID = unsafe {
20 EFI_GUID::from_raw_parts(
21 0x2755590C,
22 0x6F3C,
23 0x42FA,
24 [0x9E, 0xA4, 0xA3, 0xBA, 0x54, 0x3C, 0xDA, 0x25],
25 )
26};
27
28pub const EXCEPT_AARCH64_SYNCHRONOUS_EXCEPTIONS: INTN = 0;
29pub const EXCEPT_AARCH64_IRQ: INTN = 1;
30pub const EXCEPT_AARCH64_FIQ: INTN = 2;
31pub const EXCEPT_AARCH64_SERROR: INTN = 3;
32
33pub const EXCEPT_ARM_RESET: INTN = 0;
34pub const EXCEPT_ARM_UNDEFINED_INSTRUCTION: INTN = 1;
35pub const EXCEPT_ARM_SOFTWARE_INTERRUPT: INTN = 2;
36pub const EXCEPT_ARM_PREFETCH_ABORT: INTN = 3;
37pub const EXCEPT_ARM_DATA_ABORT: INTN = 4;
38pub const EXCEPT_ARM_RESERVED: INTN = 5;
39pub const EXCEPT_ARM_IRQ: INTN = 6;
40pub const EXCEPT_ARM_FIQ: INTN = 7;
41
42pub const EXCEPT_EBC_UNDEFINED: INTN = 0;
43pub const EXCEPT_EBC_DIVIDE_ERROR: INTN = 1;
44pub const EXCEPT_EBC_DEBUG: INTN = 2;
45pub const EXCEPT_EBC_BREAKPOINT: INTN = 3;
46pub const EXCEPT_EBC_OVERFLOW: INTN = 4;
47pub const EXCEPT_EBC_INVALID_OPCODE: INTN = 5;
48pub const EXCEPT_EBC_STACK_FAULT: INTN = 6;
49pub const EXCEPT_EBC_ALIGNMENT_CHECK: INTN = 7;
50pub const EXCEPT_EBC_INSTRUCTION_ENCODING: INTN = 8;
51pub const EXCEPT_EBC_BAD_BREAK: INTN = 9;
52pub const EXCEPT_EBC_SINGLE_STEP: INTN = 10;
53
54pub const EXCEPT_IA32_DIVIDE_ERROR: INTN = 0;
55pub const EXCEPT_IA32_DEBUG: INTN = 1;
56pub const EXCEPT_IA32_NMI: INTN = 2;
57pub const EXCEPT_IA32_BREAKPOINT: INTN = 3;
58pub const EXCEPT_IA32_OVERFLOW: INTN = 4;
59pub const EXCEPT_IA32_BOUND: INTN = 5;
60pub const EXCEPT_IA32_INVALID_OPCODE: INTN = 6;
61pub const EXCEPT_IA32_DOUBLE_FAULT: INTN = 8;
62pub const EXCEPT_IA32_INVALID_TSS: INTN = 10;
63pub const EXCEPT_IA32_SEG_NOT_PRESENT: INTN = 11;
64pub const EXCEPT_IA32_STACK_FAULT: INTN = 12;
65pub const EXCEPT_IA32_GP_FAULT: INTN = 13;
66pub const EXCEPT_IA32_PAGE_FAULT: INTN = 14;
67pub const EXCEPT_IA32_FP_ERROR: INTN = 16;
68pub const EXCEPT_IA32_ALIGNMENT_CHECK: INTN = 17;
69pub const EXCEPT_IA32_MACHINE_CHECK: INTN = 18;
70pub const EXCEPT_IA32_SIMD: INTN = 19;
71
72pub const EXCEPT_IPF_VHTP_TRANSLATION: INTN = 0;
73pub const EXCEPT_IPF_INSTRUCTION_TLB: INTN = 1;
74pub const EXCEPT_IPF_DATA_TLB: INTN = 2;
75pub const EXCEPT_IPF_ALT_INSTRUCTION_TLB: INTN = 3;
76pub const EXCEPT_IPF_ALT_DATA_TLB: INTN = 4;
77pub const EXCEPT_IPF_DATA_NESTED_TLB: INTN = 5;
78pub const EXCEPT_IPF_INSTRUCTION_KEY_MISSED: INTN = 6;
79pub const EXCEPT_IPF_DATA_KEY_MISSED: INTN = 7;
80pub const EXCEPT_IPF_DIRTY_BIT: INTN = 8;
81pub const EXCEPT_IPF_INSTRUCTION_ACCESS_BIT: INTN = 9;
82pub const EXCEPT_IPF_DATA_ACCESS_BIT: INTN = 10;
83pub const EXCEPT_IPF_BREAKPOINT: INTN = 11;
84pub const EXCEPT_IPF_EXTERNAL_INTERRUPT: INTN = 12;
85pub const EXCEPT_IPF_PAGE_NOT_PRESENT: INTN = 20;
86pub const EXCEPT_IPF_KEY_PERMISSION: INTN = 21;
87pub const EXCEPT_IPF_INSTRUCTION_ACCESS_RIGHTS: INTN = 22;
88pub const EXCEPT_IPF_DATA_ACCESS_RIGHTS: INTN = 23;
89pub const EXCEPT_IPF_GENERAL_EXCEPTION: INTN = 24;
90pub const EXCEPT_IPF_DISABLED_FP_REGISTER: INTN = 25;
91pub const EXCEPT_IPF_NAT_CONSUMPTION: INTN = 26;
92pub const EXCEPT_IPF_SPECULATION: INTN = 27;
93pub const EXCEPT_IPF_DEBUG: INTN = 29;
94pub const EXCEPT_IPF_UNALIGNED_REFERENCE: INTN = 30;
95pub const EXCEPT_IPF_UNSUPPORTED_DATA_REFERENCE: INTN = 31;
96pub const EXCEPT_IPF_FP_FAULT: INTN = 32;
97pub const EXCEPT_IPF_FP_TRAP: INTN = 33;
98pub const EXCEPT_IPF_LOWER_PRIVILEGE_TRANSFER_TRAP: INTN = 34;
99pub const EXCEPT_IPF_TAKEN_BRANCH: INTN = 35;
100pub const EXCEPT_IPF_SINGLE_STEP: INTN = 36;
101pub const EXCEPT_IPF_IA32_EXCEPTION: INTN = 45;
102pub const EXCEPT_IPF_IA32_INTERCEPT: INTN = 46;
103pub const EXCEPT_IPF_IA32_INTERRUPT: INTN = 47;
104
105pub const EXCEPT_LOONGARCH_INT: INTN = 0;
106pub const EXCEPT_LOONGARCH_PIL: INTN = 1;
107pub const EXCEPT_LOONGARCH_PIS: INTN = 2;
108pub const EXCEPT_LOONGARCH_PIF: INTN = 3;
109pub const EXCEPT_LOONGARCH_PME: INTN = 4;
110pub const EXCEPT_LOONGARCH_PNR: INTN = 5;
111pub const EXCEPT_LOONGARCH_PNX: INTN = 6;
112pub const EXCEPT_LOONGARCH_PPI: INTN = 7;
113pub const EXCEPT_LOONGARCH_ADE: INTN = 8;
114pub const EXCEPT_LOONGARCH_ALE: INTN = 9;
115pub const EXCEPT_LOONGARCH_BCE: INTN = 10;
116pub const EXCEPT_LOONGARCH_SYS: INTN = 11;
117pub const EXCEPT_LOONGARCH_BRK: INTN = 12;
118pub const EXCEPT_LOONGARCH_INE: INTN = 13;
119pub const EXCEPT_LOONGARCH_IPE: INTN = 14;
120pub const EXCEPT_LOONGARCH_FPD: INTN = 15;
121pub const EXCEPT_LOONGARCH_SXD: INTN = 16;
122pub const EXCEPT_LOONGARCH_ASXD: INTN = 17;
123pub const EXCEPT_LOONGARCH_FPE: INTN = 18;
124
125pub const EXCEPT_LOONGARCH_INT_SIP0: INTN = 0;
126pub const EXCEPT_LOONGARCH_INT_SIP1: INTN = 1;
127pub const EXCEPT_LOONGARCH_INT_IP0: INTN = 2;
128pub const EXCEPT_LOONGARCH_INT_IP1: INTN = 3;
129pub const EXCEPT_LOONGARCH_INT_IP2: INTN = 4;
130pub const EXCEPT_LOONGARCH_INT_IP3: INTN = 5;
131pub const EXCEPT_LOONGARCH_INT_IP4: INTN = 6;
132pub const EXCEPT_LOONGARCH_INT_IP5: INTN = 7;
133pub const EXCEPT_LOONGARCH_INT_IP6: INTN = 8;
134pub const EXCEPT_LOONGARCH_INT_IP7: INTN = 9;
135pub const EXCEPT_LOONGARCH_INT_PMC: INTN = 10;
136pub const EXCEPT_LOONGARCH_INT_TIMER: INTN = 11;
137pub const EXCEPT_LOONGARCH_INT_IPI: INTN = 12;
138
139pub const EXCEPT_RISCV_INST_MISALIGNED: INTN = 0;
140pub const EXCEPT_RISCV_INST_ACCESS_FAULT: INTN = 1;
141pub const EXCEPT_RISCV_ILLEGAL_INST: INTN = 2;
142pub const EXCEPT_RISCV_BREAKPOINT: INTN = 3;
143pub const EXCEPT_RISCV_LOAD_ADDRESS_MISALIGNED: INTN = 4;
144pub const EXCEPT_RISCV_LOAD_ACCESS_FAULT: INTN = 5;
145pub const EXCEPT_RISCV_STORE_AMO_ADDRESS_MISALIGNED: INTN = 6;
146pub const EXCEPT_RISCV_STORE_AMO_ACCESS_FAULT: INTN = 7;
147pub const EXCEPT_RISCV_ENV_CALL_FROM_UMODE: INTN = 8;
148pub const EXCEPT_RISCV_ENV_CALL_FROM_SMODE: INTN = 9;
149pub const EXCEPT_RISCV_ENV_CALL_FROM_MMODE: INTN = 11;
150pub const EXCEPT_RISCV_INST_PAGE_FAULT: INTN = 12;
151pub const EXCEPT_RISCV_LOAD_PAGE_FAULT: INTN = 13;
152pub const EXCEPT_RISCV_STORE_AMO_PAGE_FAULT: INTN = 15;
153
154pub const EXCEPT_RISCV_SUPERVISOR_SOFTWARE_INT: INTN = 1;
155pub const EXCEPT_RISCV_MACHINE_SOFTWARE_INT: INTN = 3;
156pub const EXCEPT_RISCV_SUPERVISOR_TIMER_INT: INTN = 5;
157pub const EXCEPT_RISCV_MACHINE_TIMER_INT: INTN = 7;
158pub const EXCEPT_RISCV_SUPERVISOR_EXTERNAL_INT: INTN = 9;
159pub const EXCEPT_RISCV_MACHINE_EXTERNAL_INT: INTN = 11;
160
161pub const EXCEPT_X64_DIVIDE_ERROR: INTN = 0;
162pub const EXCEPT_X64_DEBUG: INTN = 1;
163pub const EXCEPT_X64_NMI: INTN = 2;
164pub const EXCEPT_X64_BREAKPOINT: INTN = 3;
165pub const EXCEPT_X64_OVERFLOW: INTN = 4;
166pub const EXCEPT_X64_BOUND: INTN = 5;
167pub const EXCEPT_X64_INVALID_OPCODE: INTN = 6;
168pub const EXCEPT_X64_DOUBLE_FAULT: INTN = 8;
169pub const EXCEPT_X64_INVALID_TSS: INTN = 10;
170pub const EXCEPT_X64_SEG_NOT_PRESENT: INTN = 11;
171pub const EXCEPT_X64_STACK_FAULT: INTN = 12;
172pub const EXCEPT_X64_GP_FAULT: INTN = 13;
173pub const EXCEPT_X64_PAGE_FAULT: INTN = 14;
174pub const EXCEPT_X64_FP_ERROR: INTN = 16;
175pub const EXCEPT_X64_ALIGNMENT_CHECK: INTN = 17;
176pub const EXCEPT_X64_MACHINE_CHECK: INTN = 18;
177pub const EXCEPT_X64_SIMD: INTN = 19;
178
179pub const MAX_LOONGARCH_INTERRUPT: INTN = 14;
180
181#[repr(C)]
182pub enum EFI_INSTRUCTION_SET_ARCHITECTURE {
183 IsaIa32 = 0x014C,
184 IsaX64 = 0x8664,
185 IsaIpf = 0x0200,
186 IsaEbc = 0x0EBC,
187 IsaArm = 0x01C2,
188 IsaAArch64 = 0xAA64,
189 IsaRISCV32 = 0x5032,
190 IsaRISCV64 = 0x5064,
191 IsaRISCV128 = 0x5128,
192 IsaLoongArch32 = 0x6232,
193 IsaLoongArch64 = 0x6264,
194}
195
196#[repr(C)]
197pub struct EFI_DEBUG_SUPPORT_PROTOCOL {
198 pub Isa: EFI_INSTRUCTION_SET_ARCHITECTURE,
199 pub GetMaximumProcessorIndex: unsafe extern "efiapi" fn(
200 This: *mut EFI_DEBUG_SUPPORT_PROTOCOL,
201 MaxProcessorIndex: *mut UINTN,
202 ) -> EFI_STATUS,
203 pub RegisterPeriodicCallback: unsafe extern "efiapi" fn(
204 This: *mut EFI_DEBUG_SUPPORT_PROTOCOL,
205 ProcessorIndex: UINTN,
206 PeriodicCallback: EFI_PERIODIC_CALLBACK,
207 ) -> EFI_STATUS,
208 pub RegisterExceptionCallback: unsafe extern "efiapi" fn(
209 This: *mut EFI_DEBUG_SUPPORT_PROTOCOL,
210 ProcessorIndex: UINTN,
211 ExceptionCallback: EFI_EXCEPTION_CALLBACK,
212 ExceptionType: EFI_EXCEPTION_TYPE,
213 ) -> EFI_STATUS,
214 pub InvalidateInstructionCache: unsafe extern "efiapi" fn(
215 This: *mut EFI_DEBUG_SUPPORT_PROTOCOL,
216 ProcessorIndex: UINTN,
217 Start: *mut VOID,
218 Length: UINT64,
219 ) -> EFI_STATUS,
220}
221
222#[repr(C)]
223pub struct EFI_FX_SAVE_STATE_IA32 {
224 pub Fcw: UINT16,
225 pub Fsw: UINT16,
226 pub Ftw: UINT16,
227 pub Opcode: UINT16,
228 pub Eip: UINT32,
229 pub Cs: UINT16,
230 Reserved1: UINT16,
231 pub DataOffset: UINT32,
232 pub Ds: UINT16,
233 Reserved2: [UINT8; 10],
234 pub St0Mm0: [UINT8; 10],
235 Reserved3: [UINT8; 6],
236 pub St0Mm1: [UINT8; 10],
237 Reserved4: [UINT8; 6],
238 pub St0Mm2: [UINT8; 10],
239 Reserved5: [UINT8; 6],
240 pub St0Mm3: [UINT8; 10],
241 Reserved6: [UINT8; 6],
242 pub St0Mm4: [UINT8; 10],
243 Reserved7: [UINT8; 6],
244 pub St0Mm5: [UINT8; 10],
245 Reserved8: [UINT8; 6],
246 pub St0Mm6: [UINT8; 10],
247 Reserved9: [UINT8; 6],
248 pub St0Mm7: [UINT8; 10],
249 Reserved10: [UINT8; 6],
250 pub Xmm0: [UINT8; 16],
251 pub Xmm1: [UINT8; 16],
252 pub Xmm2: [UINT8; 16],
253 pub Xmm3: [UINT8; 16],
254 pub Xmm4: [UINT8; 16],
255 pub Xmm5: [UINT8; 16],
256 pub Xmm6: [UINT8; 16],
257 pub Xmm7: [UINT8; 16],
258 Reserved11: [UINT8; 224],
259}
260
261#[repr(C)]
262pub struct EFI_FX_SAVE_STATE_X64 {
263 pub Fcw: UINT16,
264 pub Fsw: UINT16,
265 pub Ftw: UINT16,
266 pub Opcode: UINT16,
267 pub Rip: UINT64,
268 pub DataOffset: UINT64,
269 Reserved1: [UINT8; 8],
270 pub St0Mm0: [UINT8; 10],
271 Reserved2: [UINT8; 6],
272 pub St0Mm1: [UINT8; 10],
273 Reserved3: [UINT8; 6],
274 pub St0Mm2: [UINT8; 10],
275 Reserved4: [UINT8; 6],
276 pub St0Mm3: [UINT8; 10],
277 Reserved5: [UINT8; 6],
278 pub St0Mm4: [UINT8; 10],
279 Reserved6: [UINT8; 6],
280 pub St0Mm5: [UINT8; 10],
281 Reserved7: [UINT8; 6],
282 pub St0Mm6: [UINT8; 10],
283 Reserved8: [UINT8; 6],
284 pub St0Mm7: [UINT8; 10],
285 Reserved9: [UINT8; 6],
286 pub Xmm0: [UINT8; 16],
287 pub Xmm1: [UINT8; 16],
288 pub Xmm2: [UINT8; 16],
289 pub Xmm3: [UINT8; 16],
290 pub Xmm4: [UINT8; 16],
291 pub Xmm5: [UINT8; 16],
292 pub Xmm6: [UINT8; 16],
293 pub Xmm7: [UINT8; 16],
294 Reserved11: [UINT8; 224],
295}
296
297#[repr(C)]
298pub struct EFI_SYSTEM_CONTEXT_AARCH64 {
299 pub X0: UINT64,
300 pub X1: UINT64,
301 pub X2: UINT64,
302 pub X3: UINT64,
303 pub X4: UINT64,
304 pub X5: UINT64,
305 pub X6: UINT64,
306 pub X7: UINT64,
307 pub X8: UINT64,
308 pub X9: UINT64,
309 pub X10: UINT64,
310 pub X11: UINT64,
311 pub X12: UINT64,
312 pub X13: UINT64,
313 pub X14: UINT64,
314 pub X15: UINT64,
315 pub X16: UINT64,
316 pub X17: UINT64,
317 pub X18: UINT64,
318 pub X19: UINT64,
319 pub X20: UINT64,
320 pub X21: UINT64,
321 pub X22: UINT64,
322 pub X23: UINT64,
323 pub X24: UINT64,
324 pub X25: UINT64,
325 pub X26: UINT64,
326 pub X27: UINT64,
327 pub X28: UINT64,
328 pub FP: UINT64,
329 pub LR: UINT64,
330 pub SP: UINT64,
331 pub V0: [UINT64; 2],
332 pub V1: [UINT64; 2],
333 pub V2: [UINT64; 2],
334 pub V3: [UINT64; 2],
335 pub V4: [UINT64; 2],
336 pub V5: [UINT64; 2],
337 pub V6: [UINT64; 2],
338 pub V7: [UINT64; 2],
339 pub V8: [UINT64; 2],
340 pub V9: [UINT64; 2],
341 pub V10: [UINT64; 2],
342 pub V11: [UINT64; 2],
343 pub V12: [UINT64; 2],
344 pub V13: [UINT64; 2],
345 pub V14: [UINT64; 2],
346 pub V15: [UINT64; 2],
347 pub V16: [UINT64; 2],
348 pub V17: [UINT64; 2],
349 pub V18: [UINT64; 2],
350 pub V19: [UINT64; 2],
351 pub V20: [UINT64; 2],
352 pub V21: [UINT64; 2],
353 pub V22: [UINT64; 2],
354 pub V23: [UINT64; 2],
355 pub V24: [UINT64; 2],
356 pub V25: [UINT64; 2],
357 pub V26: [UINT64; 2],
358 pub V27: [UINT64; 2],
359 pub V28: [UINT64; 2],
360 pub V29: [UINT64; 2],
361 pub V30: [UINT64; 2],
362 pub V31: [UINT64; 2],
363 pub ELR: UINT64,
364 pub SPSR: UINT64,
365 pub FPSR: UINT64,
366 pub ESR: UINT64,
367 pub FAR: UINT64,
368}
369
370#[repr(C)]
371pub struct EFI_SYSTEM_CONTEXT_ARM {
372 pub R0: UINT32,
373 pub R1: UINT32,
374 pub R2: UINT32,
375 pub R3: UINT32,
376 pub R4: UINT32,
377 pub R5: UINT32,
378 pub R6: UINT32,
379 pub R7: UINT32,
380 pub R8: UINT32,
381 pub R9: UINT32,
382 pub R10: UINT32,
383 pub R11: UINT32,
384 pub R12: UINT32,
385 pub SP: UINT32,
386 pub LR: UINT32,
387 pub PC: UINT32,
388 pub CPSR: UINT32,
389 pub DFSR: UINT32,
390 pub DFAR: UINT32,
391 pub IFSR: UINT32,
392}
393
394#[repr(C)]
395pub struct EFI_SYSTEM_CONTEXT_EBC {
396 pub R0: UINT64,
397 pub R1: UINT64,
398 pub R2: UINT64,
399 pub R3: UINT64,
400 pub R4: UINT64,
401 pub R5: UINT64,
402 pub R6: UINT64,
403 pub R7: UINT64,
404 pub Flags: UINT64,
405 pub ControlFlags: UINT64,
406 pub Ip: UINT64,
407}
408
409#[repr(C)]
410pub struct EFI_SYSTEM_CONTEXT_IA32 {
411 pub ExceptionData: UINT32,
412 pub FxSaveState: EFI_FX_SAVE_STATE_IA32,
413 pub Dr0: UINT32,
414 pub Dr1: UINT32,
415 pub Dr2: UINT32,
416 pub Dr3: UINT32,
417 pub Dr6: UINT32,
418 pub Dr7: UINT32,
419 pub Cr0: UINT32,
420 pub Cr1: UINT32,
421 Reserved: UINT32,
422 pub Cr2: UINT32,
423 pub Cr3: UINT32,
424 pub Cr4: UINT32,
425 pub Eflags: UINT32,
426 pub Ldtr: UINT32,
427 pub Tr: UINT32,
428 pub Gdtr: [UINT32; 2],
429 pub Idtr: [UINT32; 2],
430 pub Eip: UINT32,
431 pub Gs: UINT32,
432 pub Fs: UINT32,
433 pub Es: UINT32,
434 pub Ds: UINT32,
435 pub Cs: UINT32,
436 pub Ss: UINT32,
437 pub Edi: UINT32,
438 pub Esi: UINT32,
439 pub Ebp: UINT32,
440 pub Esp: UINT32,
441 pub Ebx: UINT32,
442 pub Edx: UINT32,
443 pub Ecx: UINT32,
444 pub Eax: UINT32,
445}
446
447#[repr(C)]
448pub struct EFI_SYSTEM_CONTEXT_IPF {
449 Reserved: UINT64,
450 pub R1: UINT64,
451 pub R2: UINT64,
452 pub R3: UINT64,
453 pub R4: UINT64,
454 pub R5: UINT64,
455 pub R6: UINT64,
456 pub R7: UINT64,
457 pub R8: UINT64,
458 pub R9: UINT64,
459 pub R10: UINT64,
460 pub R11: UINT64,
461 pub R12: UINT64,
462 pub R13: UINT64,
463 pub R14: UINT64,
464 pub R15: UINT64,
465 pub R16: UINT64,
466 pub R17: UINT64,
467 pub R18: UINT64,
468 pub R19: UINT64,
469 pub R20: UINT64,
470 pub R21: UINT64,
471 pub R22: UINT64,
472 pub R23: UINT64,
473 pub R24: UINT64,
474 pub R25: UINT64,
475 pub R26: UINT64,
476 pub R27: UINT64,
477 pub R28: UINT64,
478 pub R29: UINT64,
479 pub R30: UINT64,
480 pub F2: [UINT64; 2],
481 pub F3: [UINT64; 2],
482 pub F4: [UINT64; 2],
483 pub F5: [UINT64; 2],
484 pub F6: [UINT64; 2],
485 pub F7: [UINT64; 2],
486 pub F8: [UINT64; 2],
487 pub F9: [UINT64; 2],
488 pub F10: [UINT64; 2],
489 pub F11: [UINT64; 2],
490 pub F12: [UINT64; 2],
491 pub F13: [UINT64; 2],
492 pub F14: [UINT64; 2],
493 pub F15: [UINT64; 2],
494 pub F16: [UINT64; 2],
495 pub F17: [UINT64; 2],
496 pub F18: [UINT64; 2],
497 pub F19: [UINT64; 2],
498 pub F20: [UINT64; 2],
499 pub F21: [UINT64; 2],
500 pub F22: [UINT64; 2],
501 pub F23: [UINT64; 2],
502 pub F24: [UINT64; 2],
503 pub F25: [UINT64; 2],
504 pub F26: [UINT64; 2],
505 pub F27: [UINT64; 2],
506 pub F28: [UINT64; 2],
507 pub F29: [UINT64; 2],
508 pub F30: [UINT64; 2],
509 pub F31: [UINT64; 2],
510 pub Pr: UINT64,
511 pub B0: UINT64,
512 pub B1: UINT64,
513 pub B2: UINT64,
514 pub B3: UINT64,
515 pub B4: UINT64,
516 pub B5: UINT64,
517 pub B6: UINT64,
518 pub B7: UINT64,
519 pub ArRsc: UINT64,
520 pub ArBsp: UINT64,
521 pub ArBspstore: UINT64,
522 pub ArRnat: UINT64,
523 pub ArFcr: UINT64,
524 pub ArEflag: UINT64,
525 pub ArCsd: UINT64,
526 pub ArSsd: UINT64,
527 pub ArCflg: UINT64,
528 pub ArFsr: UINT64,
529 pub ArFir: UINT64,
530 pub ArFdr: UINT64,
531 pub ArCcv: UINT64,
532 pub ArUnat: UINT64,
533 pub ArFpsr: UINT64,
534 pub ArPfs: UINT64,
535 pub ArLc: UINT64,
536 pub ArEc: UINT64,
537 pub CrDcr: UINT64,
538 pub CrItm: UINT64,
539 pub CrIva: UINT64,
540 pub CrPta: UINT64,
541 pub CrIpsr: UINT64,
542 pub CrIsr: UINT64,
543 pub CrIip: UINT64,
544 pub CrIfa: UINT64,
545 pub CrItir: UINT64,
546 pub CrIipa: UINT64,
547 pub CrIfs: UINT64,
548 pub CrIim: UINT64,
549 pub CrIha: UINT64,
550 pub Dbr0: UINT64,
551 pub Dbr1: UINT64,
552 pub Dbr2: UINT64,
553 pub Dbr3: UINT64,
554 pub Dbr4: UINT64,
555 pub Dbr5: UINT64,
556 pub Dbr6: UINT64,
557 pub Dbr7: UINT64,
558 pub Ibr0: UINT64,
559 pub Ibr1: UINT64,
560 pub Ibr2: UINT64,
561 pub Ibr3: UINT64,
562 pub Ibr4: UINT64,
563 pub Ibr5: UINT64,
564 pub Ibr6: UINT64,
565 pub Ibr7: UINT64,
566 pub IntNat: UINT64,
567}
568
569#[repr(C)]
570pub struct EFI_SYSTEM_CONTEXT_LOONGARCH64 {
571 pub R0: UINT64,
572 pub R1: UINT64,
573 pub R2: UINT64,
574 pub R3: UINT64,
575 pub R4: UINT64,
576 pub R5: UINT64,
577 pub R6: UINT64,
578 pub R7: UINT64,
579 pub R8: UINT64,
580 pub R9: UINT64,
581 pub R10: UINT64,
582 pub R11: UINT64,
583 pub R12: UINT64,
584 pub R13: UINT64,
585 pub R14: UINT64,
586 pub R15: UINT64,
587 pub R16: UINT64,
588 pub R17: UINT64,
589 pub R18: UINT64,
590 pub R19: UINT64,
591 pub R20: UINT64,
592 pub R21: UINT64,
593 pub R22: UINT64,
594 pub R23: UINT64,
595 pub R24: UINT64,
596 pub R25: UINT64,
597 pub R26: UINT64,
598 pub R27: UINT64,
599 pub R28: UINT64,
600 pub R29: UINT64,
601 pub R30: UINT64,
602 pub R31: UINT64,
603 pub CRMD: UINT64,
604 pub PRMD: UINT64,
605 pub EUEN: UINT64,
606 pub MISC: UINT64,
607 pub ECFG: UINT64,
608 pub ESTAT: UINT64,
609 pub ERA: UINT64,
610 pub BADV: UINT64,
611 pub BADI: UINT64,
612}
613
614#[repr(C)]
615pub struct EFI_SYSTEM_CONTEXT_RISCV32 {
616 pub Zero: UINT32,
617 pub Ra: UINT32,
618 pub Sp: UINT32,
619 pub Gp: UINT32,
620 pub Tp: UINT32,
621 pub T0: UINT32,
622 pub T1: UINT32,
623 pub T2: UINT32,
624 pub S0FP: UINT32,
625 pub S1: UINT32,
626 pub A0: UINT32,
627 pub A1: UINT32,
628 pub A2: UINT32,
629 pub A3: UINT32,
630 pub A4: UINT32,
631 pub A5: UINT32,
632 pub A6: UINT32,
633 pub A7: UINT32,
634 pub S2: UINT32,
635 pub S3: UINT32,
636 pub S4: UINT32,
637 pub S5: UINT32,
638 pub S6: UINT32,
639 pub S7: UINT32,
640 pub S8: UINT32,
641 pub S9: UINT32,
642 pub S10: UINT32,
643 pub S11: UINT32,
644 pub T3: UINT32,
645 pub T4: UINT32,
646 pub T5: UINT32,
647 pub T6: UINT32,
648 pub Ft0: UINT128,
649 pub Ft1: UINT128,
650 pub Ft2: UINT128,
651 pub Ft3: UINT128,
652 pub Ft4: UINT128,
653 pub Ft5: UINT128,
654 pub Ft6: UINT128,
655 pub Ft7: UINT128,
656 pub Fs0: UINT128,
657 pub Fs1: UINT128,
658 pub Fa0: UINT128,
659 pub Fa1: UINT128,
660 pub Fa2: UINT128,
661 pub Fa3: UINT128,
662 pub Fa4: UINT128,
663 pub Fa5: UINT128,
664 pub Fa6: UINT128,
665 pub Fa7: UINT128,
666 pub Fs2: UINT128,
667 pub Fs3: UINT128,
668 pub Fs4: UINT128,
669 pub Fs5: UINT128,
670 pub Fs6: UINT128,
671 pub Fs7: UINT128,
672 pub Fs8: UINT128,
673 pub Fs9: UINT128,
674 pub Fs10: UINT128,
675 pub Fs11: UINT128,
676 pub Ft8: UINT128,
677 pub Ft9: UINT128,
678 pub Ft10: UINT128,
679 pub Ft11: UINT128,
680}
681
682#[repr(C)]
683pub struct EFI_SYSTEM_CONTEXT_RISCV64 {
684 pub Zero: UINT64,
685 pub Ra: UINT64,
686 pub Sp: UINT64,
687 pub Gp: UINT64,
688 pub Tp: UINT64,
689 pub T0: UINT64,
690 pub T1: UINT64,
691 pub T2: UINT64,
692 pub S0FP: UINT64,
693 pub S1: UINT64,
694 pub A0: UINT64,
695 pub A1: UINT64,
696 pub A2: UINT64,
697 pub A3: UINT64,
698 pub A4: UINT64,
699 pub A5: UINT64,
700 pub A6: UINT64,
701 pub A7: UINT64,
702 pub S2: UINT64,
703 pub S3: UINT64,
704 pub S4: UINT64,
705 pub S5: UINT64,
706 pub S6: UINT64,
707 pub S7: UINT64,
708 pub S8: UINT64,
709 pub S9: UINT64,
710 pub S10: UINT64,
711 pub S11: UINT64,
712 pub T3: UINT64,
713 pub T4: UINT64,
714 pub T5: UINT64,
715 pub T6: UINT64,
716 pub Ft0: UINT128,
717 pub Ft1: UINT128,
718 pub Ft2: UINT128,
719 pub Ft3: UINT128,
720 pub Ft4: UINT128,
721 pub Ft5: UINT128,
722 pub Ft6: UINT128,
723 pub Ft7: UINT128,
724 pub Fs0: UINT128,
725 pub Fs1: UINT128,
726 pub Fa0: UINT128,
727 pub Fa1: UINT128,
728 pub Fa2: UINT128,
729 pub Fa3: UINT128,
730 pub Fa4: UINT128,
731 pub Fa5: UINT128,
732 pub Fa6: UINT128,
733 pub Fa7: UINT128,
734 pub Fs2: UINT128,
735 pub Fs3: UINT128,
736 pub Fs4: UINT128,
737 pub Fs5: UINT128,
738 pub Fs6: UINT128,
739 pub Fs7: UINT128,
740 pub Fs8: UINT128,
741 pub Fs9: UINT128,
742 pub Fs10: UINT128,
743 pub Fs11: UINT128,
744 pub Ft8: UINT128,
745 pub Ft9: UINT128,
746 pub Ft10: UINT128,
747 pub Ft11: UINT128,
748}
749
750#[repr(C)]
751pub struct EFI_SYSTEM_CONTEXT_RISCV128 {
752 pub Zero: UINT128,
753 pub Ra: UINT128,
754 pub Sp: UINT128,
755 pub Gp: UINT128,
756 pub Tp: UINT128,
757 pub T0: UINT128,
758 pub T1: UINT128,
759 pub T2: UINT128,
760 pub S0FP: UINT128,
761 pub S1: UINT128,
762 pub A0: UINT128,
763 pub A1: UINT128,
764 pub A2: UINT128,
765 pub A3: UINT128,
766 pub A4: UINT128,
767 pub A5: UINT128,
768 pub A6: UINT128,
769 pub A7: UINT128,
770 pub S2: UINT128,
771 pub S3: UINT128,
772 pub S4: UINT128,
773 pub S5: UINT128,
774 pub S6: UINT128,
775 pub S7: UINT128,
776 pub S8: UINT128,
777 pub S9: UINT128,
778 pub S10: UINT128,
779 pub S11: UINT128,
780 pub T3: UINT128,
781 pub T4: UINT128,
782 pub T5: UINT128,
783 pub T6: UINT128,
784 pub Ft0: UINT128,
785 pub Ft1: UINT128,
786 pub Ft2: UINT128,
787 pub Ft3: UINT128,
788 pub Ft4: UINT128,
789 pub Ft5: UINT128,
790 pub Ft6: UINT128,
791 pub Ft7: UINT128,
792 pub Fs0: UINT128,
793 pub Fs1: UINT128,
794 pub Fa0: UINT128,
795 pub Fa1: UINT128,
796 pub Fa2: UINT128,
797 pub Fa3: UINT128,
798 pub Fa4: UINT128,
799 pub Fa5: UINT128,
800 pub Fa6: UINT128,
801 pub Fa7: UINT128,
802 pub Fs2: UINT128,
803 pub Fs3: UINT128,
804 pub Fs4: UINT128,
805 pub Fs5: UINT128,
806 pub Fs6: UINT128,
807 pub Fs7: UINT128,
808 pub Fs8: UINT128,
809 pub Fs9: UINT128,
810 pub Fs10: UINT128,
811 pub Fs11: UINT128,
812 pub Ft8: UINT128,
813 pub Ft9: UINT128,
814 pub Ft10: UINT128,
815 pub Ft11: UINT128,
816}
817
818#[repr(C)]
819pub struct EFI_SYSTEM_CONTEXT_X64 {
820 pub ExceptionData: UINT64,
821 pub FxSaveState: EFI_FX_SAVE_STATE_X64,
822 pub Dr0: UINT32,
823 pub Dr1: UINT32,
824 pub Dr2: UINT32,
825 pub Dr3: UINT32,
826 pub Dr6: UINT32,
827 pub Dr7: UINT32,
828 pub Cr0: UINT32,
829 pub Cr1: UINT32,
830 Reserved: UINT32,
831 pub Cr2: UINT32,
832 pub Cr3: UINT32,
833 pub Cr4: UINT32,
834 pub Cr8: UINT32,
835 pub Rflags: UINT32,
836 pub Ldtr: UINT32,
837 pub Tr: UINT32,
838 pub Gdtr: [UINT32; 2],
839 pub Idtr: [UINT32; 2],
840 pub Rip: UINT32,
841 pub Gs: UINT32,
842 pub Fs: UINT32,
843 pub Es: UINT32,
844 pub Ds: UINT32,
845 pub Cs: UINT32,
846 pub Ss: UINT32,
847 pub Rdi: UINT32,
848 pub Rsi: UINT32,
849 pub Rbp: UINT32,
850 pub Rsp: UINT32,
851 pub Rbx: UINT32,
852 pub Rdx: UINT32,
853 pub Rcx: UINT32,
854 pub Rax: UINT32,
855 pub R8: UINT32,
856 pub R9: UINT32,
857 pub R10: UINT32,
858 pub R11: UINT32,
859 pub R12: UINT32,
860 pub R13: UINT32,
861 pub R14: UINT32,
862 pub R15: UINT32,
863}
864
865pub type EFI_EXCEPTION_CALLBACK =
866 unsafe extern "efiapi" fn(ExceptionType: EFI_EXCEPTION_TYPE, SystemContext: EFI_SYSTEM_CONTEXT);
867
868pub type EFI_EXCEPTION_TYPE = INTN;
869
870pub type EFI_PERIODIC_CALLBACK = unsafe extern "efiapi" fn(SystemContext: EFI_SYSTEM_CONTEXT);
871
872#[repr(C)]
873pub union EFI_SYSTEM_CONTEXT {
874 pub SystemContextEbc: *mut EFI_SYSTEM_CONTEXT_EBC,
875 pub SystemContextIa32: *mut EFI_SYSTEM_CONTEXT_IA32,
876 pub SystemContextX64: *mut EFI_SYSTEM_CONTEXT_X64,
877 pub SystemContextIpf: *mut EFI_SYSTEM_CONTEXT_IPF,
878 pub SystemContextArm: *mut EFI_SYSTEM_CONTEXT_ARM,
879 pub SystemContextRiscV32: *mut EFI_SYSTEM_CONTEXT_RISCV32,
880 pub SystemContextRiscV64: *mut EFI_SYSTEM_CONTEXT_RISCV64,
881 pub SystemContextRiscV128: *mut EFI_SYSTEM_CONTEXT_RISCV128,
882 pub SystemContextLongArch64: *mut EFI_SYSTEM_CONTEXT_LOONGARCH64,
883}