16#ifndef __DEBUG_SUPPORT_H__
17#define __DEBUG_SUPPORT_H__
29#define EFI_DEBUG_SUPPORT_PROTOCOL_GUID \
31 0x2755590C, 0x6F3C, 0x42FA, {0x9E, 0xA4, 0xA3, 0xBA, 0x54, 0x3C, 0xDA, 0x25 } \
43#define EXCEPT_IA32_DIVIDE_ERROR 0
44#define EXCEPT_IA32_DEBUG 1
45#define EXCEPT_IA32_NMI 2
46#define EXCEPT_IA32_BREAKPOINT 3
47#define EXCEPT_IA32_OVERFLOW 4
48#define EXCEPT_IA32_BOUND 5
49#define EXCEPT_IA32_INVALID_OPCODE 6
50#define EXCEPT_IA32_DOUBLE_FAULT 8
51#define EXCEPT_IA32_INVALID_TSS 10
52#define EXCEPT_IA32_SEG_NOT_PRESENT 11
53#define EXCEPT_IA32_STACK_FAULT 12
54#define EXCEPT_IA32_GP_FAULT 13
55#define EXCEPT_IA32_PAGE_FAULT 14
56#define EXCEPT_IA32_FP_ERROR 16
57#define EXCEPT_IA32_ALIGNMENT_CHECK 17
58#define EXCEPT_IA32_MACHINE_CHECK 18
59#define EXCEPT_IA32_SIMD 19
137#define EXCEPT_X64_DIVIDE_ERROR 0
138#define EXCEPT_X64_DEBUG 1
139#define EXCEPT_X64_NMI 2
140#define EXCEPT_X64_BREAKPOINT 3
141#define EXCEPT_X64_OVERFLOW 4
142#define EXCEPT_X64_BOUND 5
143#define EXCEPT_X64_INVALID_OPCODE 6
144#define EXCEPT_X64_DOUBLE_FAULT 8
145#define EXCEPT_X64_INVALID_TSS 10
146#define EXCEPT_X64_SEG_NOT_PRESENT 11
147#define EXCEPT_X64_STACK_FAULT 12
148#define EXCEPT_X64_GP_FAULT 13
149#define EXCEPT_X64_PAGE_FAULT 14
150#define EXCEPT_X64_FP_ERROR 16
151#define EXCEPT_X64_ALIGNMENT_CHECK 17
152#define EXCEPT_X64_MACHINE_CHECK 18
153#define EXCEPT_X64_SIMD 19
240#define EXCEPT_IPF_VHTP_TRANSLATION 0
241#define EXCEPT_IPF_INSTRUCTION_TLB 1
242#define EXCEPT_IPF_DATA_TLB 2
243#define EXCEPT_IPF_ALT_INSTRUCTION_TLB 3
244#define EXCEPT_IPF_ALT_DATA_TLB 4
245#define EXCEPT_IPF_DATA_NESTED_TLB 5
246#define EXCEPT_IPF_INSTRUCTION_KEY_MISSED 6
247#define EXCEPT_IPF_DATA_KEY_MISSED 7
248#define EXCEPT_IPF_DIRTY_BIT 8
249#define EXCEPT_IPF_INSTRUCTION_ACCESS_BIT 9
250#define EXCEPT_IPF_DATA_ACCESS_BIT 10
251#define EXCEPT_IPF_BREAKPOINT 11
252#define EXCEPT_IPF_EXTERNAL_INTERRUPT 12
256#define EXCEPT_IPF_PAGE_NOT_PRESENT 20
257#define EXCEPT_IPF_KEY_PERMISSION 21
258#define EXCEPT_IPF_INSTRUCTION_ACCESS_RIGHTS 22
259#define EXCEPT_IPF_DATA_ACCESS_RIGHTS 23
260#define EXCEPT_IPF_GENERAL_EXCEPTION 24
261#define EXCEPT_IPF_DISABLED_FP_REGISTER 25
262#define EXCEPT_IPF_NAT_CONSUMPTION 26
263#define EXCEPT_IPF_SPECULATION 27
267#define EXCEPT_IPF_DEBUG 29
268#define EXCEPT_IPF_UNALIGNED_REFERENCE 30
269#define EXCEPT_IPF_UNSUPPORTED_DATA_REFERENCE 31
270#define EXCEPT_IPF_FP_FAULT 32
271#define EXCEPT_IPF_FP_TRAP 33
272#define EXCEPT_IPF_LOWER_PRIVILEGE_TRANSFER_TRAP 34
273#define EXCEPT_IPF_TAKEN_BRANCH 35
274#define EXCEPT_IPF_SINGLE_STEP 36
278#define EXCEPT_IPF_IA32_EXCEPTION 45
279#define EXCEPT_IPF_IA32_INTERCEPT 46
280#define EXCEPT_IPF_IA32_INTERRUPT 47
440#define EXCEPT_EBC_UNDEFINED 0
441#define EXCEPT_EBC_DIVIDE_ERROR 1
442#define EXCEPT_EBC_DEBUG 2
443#define EXCEPT_EBC_BREAKPOINT 3
444#define EXCEPT_EBC_OVERFLOW 4
445#define EXCEPT_EBC_INVALID_OPCODE 5
446#define EXCEPT_EBC_STACK_FAULT 6
447#define EXCEPT_EBC_ALIGNMENT_CHECK 7
448#define EXCEPT_EBC_INSTRUCTION_ENCODING 8
449#define EXCEPT_EBC_BAD_BREAK 9
450#define EXCEPT_EBC_STEP 10
454#define MAX_EBC_EXCEPTION EXCEPT_EBC_STEP
476#define EXCEPT_ARM_RESET 0
477#define EXCEPT_ARM_UNDEFINED_INSTRUCTION 1
478#define EXCEPT_ARM_SOFTWARE_INTERRUPT 2
479#define EXCEPT_ARM_PREFETCH_ABORT 3
480#define EXCEPT_ARM_DATA_ABORT 4
481#define EXCEPT_ARM_RESERVED 5
482#define EXCEPT_ARM_IRQ 6
483#define EXCEPT_ARM_FIQ 7
488#define MAX_ARM_EXCEPTION EXCEPT_ARM_FIQ
520#define EXCEPT_AARCH64_SYNCHRONOUS_EXCEPTIONS 0
521#define EXCEPT_AARCH64_IRQ 1
522#define EXCEPT_AARCH64_FIQ 2
523#define EXCEPT_AARCH64_SERROR 3
528#define MAX_AARCH64_EXCEPTION EXCEPT_AARCH64_SERROR
609#define EXCEPT_RISCV_INST_MISALIGNED 0
610#define EXCEPT_RISCV_INST_ACCESS_FAULT 1
611#define EXCEPT_RISCV_ILLEGAL_INST 2
612#define EXCEPT_RISCV_BREAKPOINT 3
613#define EXCEPT_RISCV_LOAD_ADDRESS_MISALIGNED 4
614#define EXCEPT_RISCV_LOAD_ACCESS_FAULT 5
615#define EXCEPT_RISCV_STORE_AMO_ADDRESS_MISALIGNED 6
616#define EXCEPT_RISCV_STORE_AMO_ACCESS_FAULT 7
617#define EXCEPT_RISCV_ENV_CALL_FROM_UMODE 8
618#define EXCEPT_RISCV_ENV_CALL_FROM_SMODE 9
619#define EXCEPT_RISCV_ENV_CALL_FROM_VS_MODE 10
620#define EXCEPT_RISCV_ENV_CALL_FROM_MMODE 11
621#define EXCEPT_RISCV_INST_ACCESS_PAGE_FAULT 12
622#define EXCEPT_RISCV_LOAD_ACCESS_PAGE_FAULT 13
623#define EXCEPT_RISCV_14 14
624#define EXCEPT_RISCV_STORE_ACCESS_PAGE_FAULT 15
625#define EXCEPT_RISCV_16 16
626#define EXCEPT_RISCV_17 17
627#define EXCEPT_RISCV_18 18
628#define EXCEPT_RISCV_19 19
629#define EXCEPT_RISCV_INST_GUEST_PAGE_FAULT 20
630#define EXCEPT_RISCV_LOAD_GUEST_PAGE_FAULT 21
631#define EXCEPT_RISCV_VIRTUAL_INSTRUCTION 22
632#define EXCEPT_RISCV_STORE_GUEST_PAGE_FAULT 23
633#define EXCEPT_RISCV_MAX_EXCEPTIONS (EXCEPT_RISCV_STORE_GUEST_PAGE_FAULT)
638#define EXCEPT_RISCV_IS_IRQ(x) ((x & 0x8000000000000000UL) != 0)
639#define EXCEPT_RISCV_IRQ_INDEX(x) (x & 0x7FFFFFFFFFFFFFFFUL)
640#define EXCEPT_RISCV_IRQ_0 0x8000000000000000UL
641#define EXCEPT_RISCV_IRQ_SOFT_FROM_SMODE 0x8000000000000001UL
642#define EXCEPT_RISCV_IRQ_SOFT_FROM_VSMODE 0x8000000000000002UL
643#define EXCEPT_RISCV_IRQ_SOFT_FROM_MMODE 0x8000000000000003UL
644#define EXCEPT_RISCV_IRQ_4 0x8000000000000004UL
645#define EXCEPT_RISCV_IRQ_TIMER_FROM_SMODE 0x8000000000000005UL
646#define EXCEPT_RISCV_MAX_IRQS (EXCEPT_RISCV_IRQ_INDEX(EXCEPT_RISCV_IRQ_TIMER_FROM_SMODE))
703#define EXCEPT_LOONGARCH_INT 0
704#define EXCEPT_LOONGARCH_PIL 1
705#define EXCEPT_LOONGARCH_PIS 2
706#define EXCEPT_LOONGARCH_PIF 3
707#define EXCEPT_LOONGARCH_PME 4
708#define EXCEPT_LOONGARCH_PNR 5
709#define EXCEPT_LOONGARCH_PNX 6
710#define EXCEPT_LOONGARCH_PPI 7
711#define EXCEPT_LOONGARCH_ADE 8
712#define EXCEPT_LOONGARCH_ALE 9
713#define EXCEPT_LOONGARCH_BCE 10
714#define EXCEPT_LOONGARCH_SYS 11
715#define EXCEPT_LOONGARCH_BRK 12
716#define EXCEPT_LOONGARCH_INE 13
717#define EXCEPT_LOONGARCH_IPE 14
718#define EXCEPT_LOONGARCH_FPD 15
719#define EXCEPT_LOONGARCH_SXD 16
720#define EXCEPT_LOONGARCH_ASXD 17
721#define EXCEPT_LOONGARCH_FPE 18
722#define EXCEPT_LOONGARCH_WPE 19
723#define EXCEPT_LOONGARCH_BTD 20
724#define EXCEPT_LOONGARCH_BTE 21
725#define EXCEPT_LOONGARCH_GSPR 22
726#define EXCEPT_LOONGARCH_HVC 23
727#define EXCEPT_LOONGARCH_GCXC 24
733#define MAX_LOONGARCH_EXCEPTION 64
738#define EXCEPT_LOONGARCH_INT_SIP0 0
739#define EXCEPT_LOONGARCH_INT_SIP1 1
740#define EXCEPT_LOONGARCH_INT_IP0 2
741#define EXCEPT_LOONGARCH_INT_IP1 3
742#define EXCEPT_LOONGARCH_INT_IP2 4
743#define EXCEPT_LOONGARCH_INT_IP3 5
744#define EXCEPT_LOONGARCH_INT_IP4 6
745#define EXCEPT_LOONGARCH_INT_IP5 7
746#define EXCEPT_LOONGARCH_INT_IP6 8
747#define EXCEPT_LOONGARCH_INT_IP7 9
748#define EXCEPT_LOONGARCH_INT_PMC 10
749#define EXCEPT_LOONGARCH_INT_TIMER 11
750#define EXCEPT_LOONGARCH_INT_IPI 12
756#define MAX_LOONGARCH_INTERRUPT 16
unsigned short UINT16
2-byte unsigned value.
UINT64 UINTN
Unsigned value of native width.
unsigned long long UINT64
8-byte unsigned value.
INT64 INTN
Signed value of native width.
unsigned char UINT8
1-byte unsigned value.
unsigned int UINT32
4-byte unsigned value.
#define VOID
Undeclared type.
EFI_STATUS(EFIAPI * EFI_REGISTER_PERIODIC_CALLBACK)(IN EFI_DEBUG_SUPPORT_PROTOCOL *This, IN UINTN ProcessorIndex, IN EFI_PERIODIC_CALLBACK PeriodicCallback)
Registers a function to be called back periodically in interrupt context.
INTN EFI_EXCEPTION_TYPE
Processor exception to be hooked.
EFI_INSTRUCTION_SET_ARCHITECTURE
Machine type definition.
EFI_STATUS(EFIAPI * EFI_GET_MAXIMUM_PROCESSOR_INDEX)(IN EFI_DEBUG_SUPPORT_PROTOCOL *This, OUT UINTN *MaxProcessorIndex)
Returns the maximum value that may be used for the ProcessorIndex parameter in RegisterPeriodicCallba...
VOID(EFIAPI * EFI_EXCEPTION_CALLBACK)(IN EFI_EXCEPTION_TYPE ExceptionType, IN OUT EFI_SYSTEM_CONTEXT SystemContext)
Registers and enables an exception callback function for the specified exception.
struct _EFI_DEBUG_SUPPORT_PROTOCOL EFI_DEBUG_SUPPORT_PROTOCOL
VOID(EFIAPI * EFI_PERIODIC_CALLBACK)(IN OUT EFI_SYSTEM_CONTEXT SystemContext)
Registers and enables the on-target debug agent's periodic entry point.
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)
Registers a function to be called when a given processor exception occurs.
EFI_GUID gEfiDebugSupportProtocolGuid
EFI_STATUS(EFIAPI * EFI_INVALIDATE_INSTRUCTION_CACHE)(IN EFI_DEBUG_SUPPORT_PROTOCOL *This, IN UINTN ProcessorIndex, IN VOID *Start, IN UINT64 Length)
Invalidates processor instruction cache for a memory range.
EFI image format for PE32, PE32+ and TE.
#define IMAGE_FILE_MACHINE_EBC
#define IMAGE_FILE_MACHINE_I386
#define IMAGE_FILE_MACHINE_X64
#define IMAGE_FILE_MACHINE_IA64
#define IMAGE_FILE_MACHINE_ARM64
RETURN_STATUS EFI_STATUS
Function return status for EFI API.
GUID EFI_GUID
128-bit buffer containing a unique identifier value.
#define FILE_LICENCE(_licence)
Declare a particular licence as applying to a file.
#define FILE_SECBOOT(_status)
Declare a file's UEFI Secure Boot permission status.
UINT8_t Length
Length of this structure.
ARM processor context definition.
EBC processor context definition.
IA-32 processor context definition.
EFI_FX_SAVE_STATE_IA32 FxSaveState
IPF processor context definition.
x64 processor context definition.
EFI_FX_SAVE_STATE_X64 FxSaveState
This protocol provides the services to allow the debug agent to register callback functions that are ...
EFI_REGISTER_EXCEPTION_CALLBACK RegisterExceptionCallback
EFI_GET_MAXIMUM_PROCESSOR_INDEX GetMaximumProcessorIndex
EFI_REGISTER_PERIODIC_CALLBACK RegisterPeriodicCallback
EFI_INVALIDATE_INSTRUCTION_CACHE InvalidateInstructionCache
EFI_INSTRUCTION_SET_ARCHITECTURE Isa
Declares the processor architecture for this instance of the EFI Debug Support protocol.
Universal EFI_SYSTEM_CONTEXT definition.
EFI_SYSTEM_CONTEXT_RISCV64 * SystemContextRiscV64
EFI_SYSTEM_CONTEXT_EBC * SystemContextEbc
EFI_SYSTEM_CONTEXT_IA32 * SystemContextIa32
EFI_SYSTEM_CONTEXT_LOONGARCH64 * SystemContextLoongArch64
EFI_SYSTEM_CONTEXT_X64 * SystemContextX64
EFI_SYSTEM_CONTEXT_AARCH64 * SystemContextAArch64
EFI_SYSTEM_CONTEXT_ARM * SystemContextArm
EFI_SYSTEM_CONTEXT_IPF * SystemContextIpf