16#ifndef __DEBUG_SUPPORT_H__
17#define __DEBUG_SUPPORT_H__
26#define EFI_DEBUG_SUPPORT_PROTOCOL_GUID \
28 0x2755590C, 0x6F3C, 0x42FA, {0x9E, 0xA4, 0xA3, 0xBA, 0x54, 0x3C, 0xDA, 0x25 } \
40#define EXCEPT_IA32_DIVIDE_ERROR 0
41#define EXCEPT_IA32_DEBUG 1
42#define EXCEPT_IA32_NMI 2
43#define EXCEPT_IA32_BREAKPOINT 3
44#define EXCEPT_IA32_OVERFLOW 4
45#define EXCEPT_IA32_BOUND 5
46#define EXCEPT_IA32_INVALID_OPCODE 6
47#define EXCEPT_IA32_DOUBLE_FAULT 8
48#define EXCEPT_IA32_INVALID_TSS 10
49#define EXCEPT_IA32_SEG_NOT_PRESENT 11
50#define EXCEPT_IA32_STACK_FAULT 12
51#define EXCEPT_IA32_GP_FAULT 13
52#define EXCEPT_IA32_PAGE_FAULT 14
53#define EXCEPT_IA32_FP_ERROR 16
54#define EXCEPT_IA32_ALIGNMENT_CHECK 17
55#define EXCEPT_IA32_MACHINE_CHECK 18
56#define EXCEPT_IA32_SIMD 19
73 UINT8 St0Mm0[10], Reserved3[6];
74 UINT8 St1Mm1[10], Reserved4[6];
75 UINT8 St2Mm2[10], Reserved5[6];
76 UINT8 St3Mm3[10], Reserved6[6];
77 UINT8 St4Mm4[10], Reserved7[6];
78 UINT8 St5Mm5[10], Reserved8[6];
79 UINT8 St6Mm6[10], Reserved9[6];
80 UINT8 St7Mm7[10], Reserved10[6];
89 UINT8 Reserved11[14 * 16];
134#define EXCEPT_X64_DIVIDE_ERROR 0
135#define EXCEPT_X64_DEBUG 1
136#define EXCEPT_X64_NMI 2
137#define EXCEPT_X64_BREAKPOINT 3
138#define EXCEPT_X64_OVERFLOW 4
139#define EXCEPT_X64_BOUND 5
140#define EXCEPT_X64_INVALID_OPCODE 6
141#define EXCEPT_X64_DOUBLE_FAULT 8
142#define EXCEPT_X64_INVALID_TSS 10
143#define EXCEPT_X64_SEG_NOT_PRESENT 11
144#define EXCEPT_X64_STACK_FAULT 12
145#define EXCEPT_X64_GP_FAULT 13
146#define EXCEPT_X64_PAGE_FAULT 14
147#define EXCEPT_X64_FP_ERROR 16
148#define EXCEPT_X64_ALIGNMENT_CHECK 17
149#define EXCEPT_X64_MACHINE_CHECK 18
150#define EXCEPT_X64_SIMD 19
164 UINT8 St0Mm0[10], Reserved2[6];
165 UINT8 St1Mm1[10], Reserved3[6];
166 UINT8 St2Mm2[10], Reserved4[6];
167 UINT8 St3Mm3[10], Reserved5[6];
168 UINT8 St4Mm4[10], Reserved6[6];
169 UINT8 St5Mm5[10], Reserved7[6];
170 UINT8 St6Mm6[10], Reserved8[6];
171 UINT8 St7Mm7[10], Reserved9[6];
183 UINT8 Reserved11[14 * 16];
190 UINT64 ExceptionData;
237#define EXCEPT_IPF_VHTP_TRANSLATION 0
238#define EXCEPT_IPF_INSTRUCTION_TLB 1
239#define EXCEPT_IPF_DATA_TLB 2
240#define EXCEPT_IPF_ALT_INSTRUCTION_TLB 3
241#define EXCEPT_IPF_ALT_DATA_TLB 4
242#define EXCEPT_IPF_DATA_NESTED_TLB 5
243#define EXCEPT_IPF_INSTRUCTION_KEY_MISSED 6
244#define EXCEPT_IPF_DATA_KEY_MISSED 7
245#define EXCEPT_IPF_DIRTY_BIT 8
246#define EXCEPT_IPF_INSTRUCTION_ACCESS_BIT 9
247#define EXCEPT_IPF_DATA_ACCESS_BIT 10
248#define EXCEPT_IPF_BREAKPOINT 11
249#define EXCEPT_IPF_EXTERNAL_INTERRUPT 12
253#define EXCEPT_IPF_PAGE_NOT_PRESENT 20
254#define EXCEPT_IPF_KEY_PERMISSION 21
255#define EXCEPT_IPF_INSTRUCTION_ACCESS_RIGHTS 22
256#define EXCEPT_IPF_DATA_ACCESS_RIGHTS 23
257#define EXCEPT_IPF_GENERAL_EXCEPTION 24
258#define EXCEPT_IPF_DISABLED_FP_REGISTER 25
259#define EXCEPT_IPF_NAT_CONSUMPTION 26
260#define EXCEPT_IPF_SPECULATION 27
264#define EXCEPT_IPF_DEBUG 29
265#define EXCEPT_IPF_UNALIGNED_REFERENCE 30
266#define EXCEPT_IPF_UNSUPPORTED_DATA_REFERENCE 31
267#define EXCEPT_IPF_FP_FAULT 32
268#define EXCEPT_IPF_FP_TRAP 33
269#define EXCEPT_IPF_LOWER_PRIVILEGE_TRANSFER_TRAP 34
270#define EXCEPT_IPF_TAKEN_BRANCH 35
271#define EXCEPT_IPF_SINGLE_STEP 36
275#define EXCEPT_IPF_IA32_EXCEPTION 45
276#define EXCEPT_IPF_IA32_INTERCEPT 46
277#define EXCEPT_IPF_IA32_INTERRUPT 47
437#define EXCEPT_EBC_UNDEFINED 0
438#define EXCEPT_EBC_DIVIDE_ERROR 1
439#define EXCEPT_EBC_DEBUG 2
440#define EXCEPT_EBC_BREAKPOINT 3
441#define EXCEPT_EBC_OVERFLOW 4
442#define EXCEPT_EBC_INVALID_OPCODE 5
443#define EXCEPT_EBC_STACK_FAULT 6
444#define EXCEPT_EBC_ALIGNMENT_CHECK 7
445#define EXCEPT_EBC_INSTRUCTION_ENCODING 8
446#define EXCEPT_EBC_BAD_BREAK 9
447#define EXCEPT_EBC_STEP 10
451#define MAX_EBC_EXCEPTION EXCEPT_EBC_STEP
473#define EXCEPT_ARM_RESET 0
474#define EXCEPT_ARM_UNDEFINED_INSTRUCTION 1
475#define EXCEPT_ARM_SOFTWARE_INTERRUPT 2
476#define EXCEPT_ARM_PREFETCH_ABORT 3
477#define EXCEPT_ARM_DATA_ABORT 4
478#define EXCEPT_ARM_RESERVED 5
479#define EXCEPT_ARM_IRQ 6
480#define EXCEPT_ARM_FIQ 7
485#define MAX_ARM_EXCEPTION EXCEPT_ARM_FIQ
517#define EXCEPT_AARCH64_SYNCHRONOUS_EXCEPTIONS 0
518#define EXCEPT_AARCH64_IRQ 1
519#define EXCEPT_AARCH64_FIQ 2
520#define EXCEPT_AARCH64_SERROR 3
525#define MAX_AARCH64_EXCEPTION EXCEPT_AARCH64_SERROR
606#define EXCEPT_RISCV_INST_MISALIGNED 0
607#define EXCEPT_RISCV_INST_ACCESS_FAULT 1
608#define EXCEPT_RISCV_ILLEGAL_INST 2
609#define EXCEPT_RISCV_BREAKPOINT 3
610#define EXCEPT_RISCV_LOAD_ADDRESS_MISALIGNED 4
611#define EXCEPT_RISCV_LOAD_ACCESS_FAULT 5
612#define EXCEPT_RISCV_STORE_AMO_ADDRESS_MISALIGNED 6
613#define EXCEPT_RISCV_STORE_AMO_ACCESS_FAULT 7
614#define EXCEPT_RISCV_ENV_CALL_FROM_UMODE 8
615#define EXCEPT_RISCV_ENV_CALL_FROM_SMODE 9
616#define EXCEPT_RISCV_ENV_CALL_FROM_VS_MODE 10
617#define EXCEPT_RISCV_ENV_CALL_FROM_MMODE 11
618#define EXCEPT_RISCV_INST_ACCESS_PAGE_FAULT 12
619#define EXCEPT_RISCV_LOAD_ACCESS_PAGE_FAULT 13
620#define EXCEPT_RISCV_14 14
621#define EXCEPT_RISCV_STORE_ACCESS_PAGE_FAULT 15
622#define EXCEPT_RISCV_16 16
623#define EXCEPT_RISCV_17 17
624#define EXCEPT_RISCV_18 18
625#define EXCEPT_RISCV_19 19
626#define EXCEPT_RISCV_INST_GUEST_PAGE_FAULT 20
627#define EXCEPT_RISCV_LOAD_GUEST_PAGE_FAULT 21
628#define EXCEPT_RISCV_VIRTUAL_INSTRUCTION 22
629#define EXCEPT_RISCV_STORE_GUEST_PAGE_FAULT 23
630#define EXCEPT_RISCV_MAX_EXCEPTIONS (EXCEPT_RISCV_STORE_GUEST_PAGE_FAULT)
635#define EXCEPT_RISCV_IS_IRQ(x) ((x & 0x8000000000000000UL) != 0)
636#define EXCEPT_RISCV_IRQ_INDEX(x) (x & 0x7FFFFFFFFFFFFFFFUL)
637#define EXCEPT_RISCV_IRQ_0 0x8000000000000000UL
638#define EXCEPT_RISCV_IRQ_SOFT_FROM_SMODE 0x8000000000000001UL
639#define EXCEPT_RISCV_IRQ_SOFT_FROM_VSMODE 0x8000000000000002UL
640#define EXCEPT_RISCV_IRQ_SOFT_FROM_MMODE 0x8000000000000003UL
641#define EXCEPT_RISCV_IRQ_4 0x8000000000000004UL
642#define EXCEPT_RISCV_IRQ_TIMER_FROM_SMODE 0x8000000000000005UL
643#define EXCEPT_RISCV_MAX_IRQS (EXCEPT_RISCV_IRQ_INDEX(EXCEPT_RISCV_IRQ_TIMER_FROM_SMODE))
700#define EXCEPT_LOONGARCH_INT 0
701#define EXCEPT_LOONGARCH_PIL 1
702#define EXCEPT_LOONGARCH_PIS 2
703#define EXCEPT_LOONGARCH_PIF 3
704#define EXCEPT_LOONGARCH_PME 4
705#define EXCEPT_LOONGARCH_PNR 5
706#define EXCEPT_LOONGARCH_PNX 6
707#define EXCEPT_LOONGARCH_PPI 7
708#define EXCEPT_LOONGARCH_ADE 8
709#define EXCEPT_LOONGARCH_ALE 9
710#define EXCEPT_LOONGARCH_BCE 10
711#define EXCEPT_LOONGARCH_SYS 11
712#define EXCEPT_LOONGARCH_BRK 12
713#define EXCEPT_LOONGARCH_INE 13
714#define EXCEPT_LOONGARCH_IPE 14
715#define EXCEPT_LOONGARCH_FPD 15
716#define EXCEPT_LOONGARCH_SXD 16
717#define EXCEPT_LOONGARCH_ASXD 17
718#define EXCEPT_LOONGARCH_FPE 18
719#define EXCEPT_LOONGARCH_WPE 19
720#define EXCEPT_LOONGARCH_BTD 20
721#define EXCEPT_LOONGARCH_BTE 21
722#define EXCEPT_LOONGARCH_GSPR 22
723#define EXCEPT_LOONGARCH_HVC 23
724#define EXCEPT_LOONGARCH_GCXC 24
730#define MAX_LOONGARCH_EXCEPTION 64
735#define EXCEPT_LOONGARCH_INT_SIP0 0
736#define EXCEPT_LOONGARCH_INT_SIP1 1
737#define EXCEPT_LOONGARCH_INT_IP0 2
738#define EXCEPT_LOONGARCH_INT_IP1 3
739#define EXCEPT_LOONGARCH_INT_IP2 4
740#define EXCEPT_LOONGARCH_INT_IP3 5
741#define EXCEPT_LOONGARCH_INT_IP4 6
742#define EXCEPT_LOONGARCH_INT_IP5 7
743#define EXCEPT_LOONGARCH_INT_IP6 8
744#define EXCEPT_LOONGARCH_INT_IP7 9
745#define EXCEPT_LOONGARCH_INT_PMC 10
746#define EXCEPT_LOONGARCH_INT_TIMER 11
747#define EXCEPT_LOONGARCH_INT_IPI 12
753#define MAX_LOONGARCH_INTERRUPT 16
963extern EFI_GUID gEfiDebugSupportProtocolGuid;
EFI_STATUS(EFIAPI * EFI_REGISTER_PERIODIC_CALLBACK)(IN EFI_DEBUG_SUPPORT_PROTOCOL *This, IN UINTN ProcessorIndex, IN EFI_PERIODIC_CALLBACK PeriodicCallback)
EFI_INSTRUCTION_SET_ARCHITECTURE
EFI_STATUS(EFIAPI * EFI_GET_MAXIMUM_PROCESSOR_INDEX)(IN EFI_DEBUG_SUPPORT_PROTOCOL *This, OUT UINTN *MaxProcessorIndex)
VOID(EFIAPI * EFI_EXCEPTION_CALLBACK)(IN EFI_EXCEPTION_TYPE ExceptionType, IN OUT EFI_SYSTEM_CONTEXT SystemContext)
VOID(EFIAPI * EFI_PERIODIC_CALLBACK)(IN OUT EFI_SYSTEM_CONTEXT SystemContext)
EFI_STATUS(EFIAPI * EFI_REGISTER_EXCEPTION_CALLBACK)(IN EFI_DEBUG_SUPPORT_PROTOCOL *This, IN UINTN ProcessorIndex, IN EFI_EXCEPTION_CALLBACK ExceptionCallback, IN EFI_EXCEPTION_TYPE ExceptionType)
EFI_STATUS(EFIAPI * EFI_INVALIDATE_INSTRUCTION_CACHE)(IN EFI_DEBUG_SUPPORT_PROTOCOL *This, IN UINTN ProcessorIndex, IN VOID *Start, IN UINT64 Length)
EFI_INSTRUCTION_SET_ARCHITECTURE Isa