]> git.proxmox.com Git - mirror_edk2.git/blobdiff - OldMdePkg/Include/Protocol/DebugSupport.h
Retiring the ANT/JAVA build and removing the older EDK II packages that required...
[mirror_edk2.git] / OldMdePkg / Include / Protocol / DebugSupport.h
diff --git a/OldMdePkg/Include/Protocol/DebugSupport.h b/OldMdePkg/Include/Protocol/DebugSupport.h
deleted file mode 100644 (file)
index 8313bf5..0000000
+++ /dev/null
@@ -1,658 +0,0 @@
-/** @file\r
-  DebugSupport protocol and supporting definitions as defined in the UEFI2.0\r
-  specification.\r
-\r
-  The DebugSupport protocol is used by source level debuggers to abstract the\r
-  processor and handle context save and restore operations.\r
-\r
-  Copyright (c) 2006, Intel Corporation                                                         \r
-  All rights reserved. This program and the accompanying materials                          \r
-  are licensed and made available under the terms and conditions of the BSD License         \r
-  which accompanies this distribution.  The full text of the license may be found at        \r
-  http://opensource.org/licenses/bsd-license.php                                            \r
-\r
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     \r
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.             \r
-\r
-  Module Name:  DebugSupport.h\r
-\r
-**/\r
-\r
-#ifndef __DEBUG_SUPPORT_H__\r
-#define __DEBUG_SUPPORT_H__\r
-\r
-typedef struct _EFI_DEBUG_SUPPORT_PROTOCOL EFI_DEBUG_SUPPORT_PROTOCOL;\r
-\r
-//\r
-// Debug Support protocol {2755590C-6F3C-42FA-9EA4-A3BA543CDA25}\r
-//\r
-#define EFI_DEBUG_SUPPORT_PROTOCOL_GUID \\r
-  { \\r
-    0x2755590C, 0x6F3C, 0x42FA, {0x9E, 0xA4, 0xA3, 0xBA, 0x54, 0x3C, 0xDA, 0x25 } \\r
-  }\r
-\r
-//\r
-// Debug Support definitions\r
-//\r
-typedef INTN  EFI_EXCEPTION_TYPE;\r
-\r
-//\r
-//  IA-32 processor exception types\r
-//\r
-#define EXCEPT_IA32_DIVIDE_ERROR    0\r
-#define EXCEPT_IA32_DEBUG           1\r
-#define EXCEPT_IA32_NMI             2\r
-#define EXCEPT_IA32_BREAKPOINT      3\r
-#define EXCEPT_IA32_OVERFLOW        4\r
-#define EXCEPT_IA32_BOUND           5\r
-#define EXCEPT_IA32_INVALID_OPCODE  6\r
-#define EXCEPT_IA32_DOUBLE_FAULT    8\r
-#define EXCEPT_IA32_INVALID_TSS     10\r
-#define EXCEPT_IA32_SEG_NOT_PRESENT 11\r
-#define EXCEPT_IA32_STACK_FAULT     12\r
-#define EXCEPT_IA32_GP_FAULT        13\r
-#define EXCEPT_IA32_PAGE_FAULT      14\r
-#define EXCEPT_IA32_FP_ERROR        16\r
-#define EXCEPT_IA32_ALIGNMENT_CHECK 17\r
-#define EXCEPT_IA32_MACHINE_CHECK   18\r
-#define EXCEPT_IA32_SIMD            19\r
-\r
-//\r
-//  IA-32 processor context definition\r
-//\r
-//\r
-// FXSAVE_STATE\r
-// FP / MMX / XMM registers (see fxrstor instruction definition)\r
-//\r
-typedef struct {\r
-  UINT16  Fcw;\r
-  UINT16  Fsw;\r
-  UINT16  Ftw;\r
-  UINT16  Opcode;\r
-  UINT32  Eip;\r
-  UINT16  Cs;\r
-  UINT16  Reserved1;\r
-  UINT32  DataOffset;\r
-  UINT16  Ds;\r
-  UINT8   Reserved2[10];\r
-#if (EFI_SPECIFICATION_VERSION >= 0x00020000)\r
-  UINT8   St0Mm0[10], Reserved3[6];\r
-  UINT8   St1Mm1[10], Reserved4[6];\r
-  UINT8   St2Mm2[10], Reserved5[6];\r
-  UINT8   St3Mm3[10], Reserved6[6];\r
-  UINT8   St4Mm4[10], Reserved7[6];\r
-  UINT8   St5Mm5[10], Reserved8[6];\r
-  UINT8   St6Mm6[10], Reserved9[6];\r
-  UINT8   St7Mm7[10], Reserved10[6];\r
-  UINT8   Xmm0[16];\r
-  UINT8   Xmm1[16];\r
-  UINT8   Xmm2[16];\r
-  UINT8   Xmm3[16];\r
-  UINT8   Xmm4[16];\r
-  UINT8   Xmm5[16];\r
-  UINT8   Xmm6[16];\r
-  UINT8   Xmm7[16];\r
-  UINT8   Reserved11[14 * 16];\r
-} EFI_FX_SAVE_STATE_IA32;\r
-#else\r
-  UINT8   St0Mm0[10], Reserved3[6];\r
-  UINT8   St0Mm1[10], Reserved4[6];\r
-  UINT8   St0Mm2[10], Reserved5[6];\r
-  UINT8   St0Mm3[10], Reserved6[6];\r
-  UINT8   St0Mm4[10], Reserved7[6];\r
-  UINT8   St0Mm5[10], Reserved8[6];\r
-  UINT8   St0Mm6[10], Reserved9[6];\r
-  UINT8   St0Mm7[10], Reserved10[6];\r
-  UINT8   Reserved11[22 * 16];\r
-} EFI_FX_SAVE_STATE;\r
-#endif\r
-\r
-typedef struct {\r
-  UINT32                 ExceptionData;\r
-#if (EFI_SPECIFICATION_VERSION >= 0x00020000)\r
-  EFI_FX_SAVE_STATE_IA32 FxSaveState;\r
-#else\r
-  EFI_FX_SAVE_STATE      FxSaveState;\r
-#endif\r
-  UINT32                 Dr0;\r
-  UINT32                 Dr1;\r
-  UINT32                 Dr2;\r
-  UINT32                 Dr3;\r
-  UINT32                 Dr6;\r
-  UINT32                 Dr7;\r
-  UINT32                 Cr0;\r
-  UINT32                 Cr1;  /* Reserved */\r
-  UINT32                 Cr2;\r
-  UINT32                 Cr3;\r
-  UINT32                 Cr4;\r
-  UINT32                 Eflags;\r
-  UINT32                 Ldtr;\r
-  UINT32                 Tr;\r
-  UINT32                 Gdtr[2];\r
-  UINT32                 Idtr[2];\r
-  UINT32                 Eip;\r
-  UINT32                 Gs;\r
-  UINT32                 Fs;\r
-  UINT32                 Es;\r
-  UINT32                 Ds;\r
-  UINT32                 Cs;\r
-  UINT32                 Ss;\r
-  UINT32                 Edi;\r
-  UINT32                 Esi;\r
-  UINT32                 Ebp;\r
-  UINT32                 Esp;\r
-  UINT32                 Ebx;\r
-  UINT32                 Edx;\r
-  UINT32                 Ecx;\r
-  UINT32                 Eax;\r
-} EFI_SYSTEM_CONTEXT_IA32;\r
-\r
-//\r
-//  X64 processor exception types\r
-//\r
-#define EXCEPT_X64_DIVIDE_ERROR    0\r
-#define EXCEPT_X64_DEBUG           1\r
-#define EXCEPT_X64_NMI             2\r
-#define EXCEPT_X64_BREAKPOINT      3\r
-#define EXCEPT_X64_OVERFLOW        4\r
-#define EXCEPT_X64_BOUND           5\r
-#define EXCEPT_X64_INVALID_OPCODE  6\r
-#define EXCEPT_X64_DOUBLE_FAULT    8\r
-#define EXCEPT_X64_INVALID_TSS     10\r
-#define EXCEPT_X64_SEG_NOT_PRESENT 11\r
-#define EXCEPT_X64_STACK_FAULT     12\r
-#define EXCEPT_X64_GP_FAULT        13\r
-#define EXCEPT_X64_PAGE_FAULT      14\r
-#define EXCEPT_X64_FP_ERROR        16\r
-#define EXCEPT_X64_ALIGNMENT_CHECK 17\r
-#define EXCEPT_X64_MACHINE_CHECK   18\r
-#define EXCEPT_X64_SIMD            19\r
-\r
-//\r
-//  X64 processor context definition\r
-//\r
-// FXSAVE_STATE\r
-// FP / MMX / XMM registers (see fxrstor instruction definition)\r
-//\r
-typedef struct {\r
-  UINT16  Fcw;\r
-  UINT16  Fsw;\r
-  UINT16  Ftw;\r
-  UINT16  Opcode;\r
-  UINT64  Rip;\r
-  UINT64  DataOffset;\r
-  UINT8   Reserved1[8];\r
-  UINT8   St0Mm0[10], Reserved2[6];\r
-  UINT8   St1Mm1[10], Reserved3[6];\r
-  UINT8   St2Mm2[10], Reserved4[6];\r
-  UINT8   St3Mm3[10], Reserved5[6];\r
-  UINT8   St4Mm4[10], Reserved6[6];\r
-  UINT8   St5Mm5[10], Reserved7[6];\r
-  UINT8   St6Mm6[10], Reserved8[6];\r
-  UINT8   St7Mm7[10], Reserved9[6];\r
-  UINT8   Xmm0[16];\r
-  UINT8   Xmm1[16];\r
-  UINT8   Xmm2[16];\r
-  UINT8   Xmm3[16];\r
-  UINT8   Xmm4[16];\r
-  UINT8   Xmm5[16];\r
-  UINT8   Xmm6[16];\r
-  UINT8   Xmm7[16];\r
-#if (EFI_SPECIFICATION_VERSION >= 0x00020000)\r
-  //\r
-  // NOTE: UEFI 2.0 spec definition as follows. It should be updated \r
-  // after spec update.\r
-  //\r
-  UINT8   Reserved11[14 * 16];\r
-#else\r
-  UINT8   Xmm8[16];\r
-  UINT8   Xmm9[16];\r
-  UINT8   Xmm10[16];\r
-  UINT8   Xmm11[16];\r
-  UINT8   Xmm12[16];\r
-  UINT8   Xmm13[16];\r
-  UINT8   Xmm14[16];\r
-  UINT8   Xmm15[16];\r
-  UINT8   Reserved10[6 * 16];\r
-#endif\r
-} EFI_FX_SAVE_STATE_X64;\r
-\r
-typedef struct {\r
-  UINT64                ExceptionData;\r
-  EFI_FX_SAVE_STATE_X64 FxSaveState;\r
-  UINT64                Dr0;\r
-  UINT64                Dr1;\r
-  UINT64                Dr2;\r
-  UINT64                Dr3;\r
-  UINT64                Dr6;\r
-  UINT64                Dr7;\r
-  UINT64                Cr0;\r
-  UINT64                Cr1;  /* Reserved */\r
-  UINT64                Cr2;\r
-  UINT64                Cr3;\r
-  UINT64                Cr4;\r
-  UINT64                Cr8;\r
-  UINT64                Rflags;\r
-  UINT64                Ldtr;\r
-  UINT64                Tr;\r
-  UINT64                Gdtr[2];\r
-  UINT64                Idtr[2];\r
-  UINT64                Rip;\r
-  UINT64                Gs;\r
-  UINT64                Fs;\r
-  UINT64                Es;\r
-  UINT64                Ds;\r
-  UINT64                Cs;\r
-  UINT64                Ss;\r
-  UINT64                Rdi;\r
-  UINT64                Rsi;\r
-  UINT64                Rbp;\r
-  UINT64                Rsp;\r
-  UINT64                Rbx;\r
-  UINT64                Rdx;\r
-  UINT64                Rcx;\r
-  UINT64                Rax;\r
-  UINT64                R8;\r
-  UINT64                R9;\r
-  UINT64                R10;\r
-  UINT64                R11;\r
-  UINT64                R12;\r
-  UINT64                R13;\r
-  UINT64                R14;\r
-  UINT64                R15;\r
-} EFI_SYSTEM_CONTEXT_X64;\r
-\r
-//\r
-//  IPF processor exception types\r
-//\r
-#define EXCEPT_IPF_VHTP_TRANSLATION       0\r
-#define EXCEPT_IPF_INSTRUCTION_TLB        1\r
-#define EXCEPT_IPF_DATA_TLB               2\r
-#define EXCEPT_IPF_ALT_INSTRUCTION_TLB    3\r
-#define EXCEPT_IPF_ALT_DATA_TLB           4\r
-#define EXCEPT_IPF_DATA_NESTED_TLB        5\r
-#define EXCEPT_IPF_INSTRUCTION_KEY_MISSED 6\r
-#define EXCEPT_IPF_DATA_KEY_MISSED        7\r
-#define EXCEPT_IPF_DIRTY_BIT              8\r
-#define EXCEPT_IPF_INSTRUCTION_ACCESS_BIT 9\r
-#define EXCEPT_IPF_DATA_ACCESS_BIT        10\r
-#define EXCEPT_IPF_BREAKPOINT             11\r
-#define EXCEPT_IPF_EXTERNAL_INTERRUPT     12\r
-//\r
-// 13 - 19 reserved\r
-//\r
-#define EXCEPT_IPF_PAGE_NOT_PRESENT           20\r
-#define EXCEPT_IPF_KEY_PERMISSION             21\r
-#define EXCEPT_IPF_INSTRUCTION_ACCESS_RIGHTS  22\r
-#define EXCEPT_IPF_DATA_ACCESS_RIGHTS         23\r
-#define EXCEPT_IPF_GENERAL_EXCEPTION          24\r
-#define EXCEPT_IPF_DISABLED_FP_REGISTER       25\r
-#define EXCEPT_IPF_NAT_CONSUMPTION            26\r
-#define EXCEPT_IPF_SPECULATION                27\r
-//\r
-// 28 reserved\r
-//\r
-#define EXCEPT_IPF_DEBUG                          29\r
-#define EXCEPT_IPF_UNALIGNED_REFERENCE            30\r
-#define EXCEPT_IPF_UNSUPPORTED_DATA_REFERENCE     31\r
-#define EXCEPT_IPF_FP_FAULT                       32\r
-#define EXCEPT_IPF_FP_TRAP                        33\r
-#define EXCEPT_IPF_LOWER_PRIVILEGE_TRANSFER_TRAP  34\r
-#define EXCEPT_IPF_TAKEN_BRANCH                   35\r
-#define EXCEPT_IPF_SINGLE_STEP                    36\r
-//\r
-// 37 - 44 reserved\r
-//\r
-#define EXCEPT_IPF_IA32_EXCEPTION 45\r
-#define EXCEPT_IPF_IA32_INTERCEPT 46\r
-#define EXCEPT_IPF_IA32_INTERRUPT 47\r
-\r
-//\r
-//  IPF processor context definition\r
-//\r
-typedef struct {\r
-  //\r
-  // The first reserved field is necessary to preserve alignment for the correct\r
-  // bits in UNAT and to insure F2 is 16 byte aligned..\r
-  //\r
-  UINT64  Reserved;\r
-  UINT64  R1;\r
-  UINT64  R2;\r
-  UINT64  R3;\r
-  UINT64  R4;\r
-  UINT64  R5;\r
-  UINT64  R6;\r
-  UINT64  R7;\r
-  UINT64  R8;\r
-  UINT64  R9;\r
-  UINT64  R10;\r
-  UINT64  R11;\r
-  UINT64  R12;\r
-  UINT64  R13;\r
-  UINT64  R14;\r
-  UINT64  R15;\r
-  UINT64  R16;\r
-  UINT64  R17;\r
-  UINT64  R18;\r
-  UINT64  R19;\r
-  UINT64  R20;\r
-  UINT64  R21;\r
-  UINT64  R22;\r
-  UINT64  R23;\r
-  UINT64  R24;\r
-  UINT64  R25;\r
-  UINT64  R26;\r
-  UINT64  R27;\r
-  UINT64  R28;\r
-  UINT64  R29;\r
-  UINT64  R30;\r
-  UINT64  R31;\r
-\r
-  UINT64  F2[2];\r
-  UINT64  F3[2];\r
-  UINT64  F4[2];\r
-  UINT64  F5[2];\r
-  UINT64  F6[2];\r
-  UINT64  F7[2];\r
-  UINT64  F8[2];\r
-  UINT64  F9[2];\r
-  UINT64  F10[2];\r
-  UINT64  F11[2];\r
-  UINT64  F12[2];\r
-  UINT64  F13[2];\r
-  UINT64  F14[2];\r
-  UINT64  F15[2];\r
-  UINT64  F16[2];\r
-  UINT64  F17[2];\r
-  UINT64  F18[2];\r
-  UINT64  F19[2];\r
-  UINT64  F20[2];\r
-  UINT64  F21[2];\r
-  UINT64  F22[2];\r
-  UINT64  F23[2];\r
-  UINT64  F24[2];\r
-  UINT64  F25[2];\r
-  UINT64  F26[2];\r
-  UINT64  F27[2];\r
-  UINT64  F28[2];\r
-  UINT64  F29[2];\r
-  UINT64  F30[2];\r
-  UINT64  F31[2];\r
-\r
-  UINT64  Pr;\r
-\r
-  UINT64  B0;\r
-  UINT64  B1;\r
-  UINT64  B2;\r
-  UINT64  B3;\r
-  UINT64  B4;\r
-  UINT64  B5;\r
-  UINT64  B6;\r
-  UINT64  B7;\r
-\r
-  //\r
-  // application registers\r
-  //\r
-  UINT64  ArRsc;\r
-  UINT64  ArBsp;\r
-  UINT64  ArBspstore;\r
-  UINT64  ArRnat;\r
-\r
-  UINT64  ArFcr;\r
-\r
-  UINT64  ArEflag;\r
-  UINT64  ArCsd;\r
-  UINT64  ArSsd;\r
-  UINT64  ArCflg;\r
-  UINT64  ArFsr;\r
-  UINT64  ArFir;\r
-  UINT64  ArFdr;\r
-\r
-  UINT64  ArCcv;\r
-\r
-  UINT64  ArUnat;\r
-\r
-  UINT64  ArFpsr;\r
-\r
-  UINT64  ArPfs;\r
-  UINT64  ArLc;\r
-  UINT64  ArEc;\r
-\r
-  //\r
-  // control registers\r
-  //\r
-  UINT64  CrDcr;\r
-  UINT64  CrItm;\r
-  UINT64  CrIva;\r
-  UINT64  CrPta;\r
-  UINT64  CrIpsr;\r
-  UINT64  CrIsr;\r
-  UINT64  CrIip;\r
-  UINT64  CrIfa;\r
-  UINT64  CrItir;\r
-  UINT64  CrIipa;\r
-  UINT64  CrIfs;\r
-  UINT64  CrIim;\r
-  UINT64  CrIha;\r
-\r
-  //\r
-  // debug registers\r
-  //\r
-  UINT64  Dbr0;\r
-  UINT64  Dbr1;\r
-  UINT64  Dbr2;\r
-  UINT64  Dbr3;\r
-  UINT64  Dbr4;\r
-  UINT64  Dbr5;\r
-  UINT64  Dbr6;\r
-  UINT64  Dbr7;\r
-\r
-  UINT64  Ibr0;\r
-  UINT64  Ibr1;\r
-  UINT64  Ibr2;\r
-  UINT64  Ibr3;\r
-  UINT64  Ibr4;\r
-  UINT64  Ibr5;\r
-  UINT64  Ibr6;\r
-  UINT64  Ibr7;\r
-\r
-  //\r
-  // virtual registers - nat bits for R1-R31\r
-  //\r
-  UINT64  IntNat;\r
-\r
-} EFI_SYSTEM_CONTEXT_IPF;\r
-\r
-//\r
-//  EBC processor exception types\r
-//\r
-#define EXCEPT_EBC_UNDEFINED            0\r
-#define EXCEPT_EBC_DIVIDE_ERROR         1\r
-#define EXCEPT_EBC_DEBUG                2\r
-#define EXCEPT_EBC_BREAKPOINT           3\r
-#define EXCEPT_EBC_OVERFLOW             4\r
-#define EXCEPT_EBC_INVALID_OPCODE       5   // opcode out of range\r
-#define EXCEPT_EBC_STACK_FAULT          6\r
-#define EXCEPT_EBC_ALIGNMENT_CHECK      7\r
-#define EXCEPT_EBC_INSTRUCTION_ENCODING 8   // malformed instruction\r
-#define EXCEPT_EBC_BAD_BREAK            9   // BREAK 0 or undefined BREAK\r
-#define EXCEPT_EBC_STEP                 10  // to support debug stepping\r
-//\r
-// For coding convenience, define the maximum valid EBC exception.\r
-//\r
-#define MAX_EBC_EXCEPTION EXCEPT_EBC_STEP\r
-\r
-//\r
-//  EBC processor context definition\r
-//\r
-typedef struct {\r
-  UINT64  R0;\r
-  UINT64  R1;\r
-  UINT64  R2;\r
-  UINT64  R3;\r
-  UINT64  R4;\r
-  UINT64  R5;\r
-  UINT64  R6;\r
-  UINT64  R7;\r
-  UINT64  Flags;\r
-  UINT64  ControlFlags;\r
-  UINT64  Ip;\r
-} EFI_SYSTEM_CONTEXT_EBC;\r
-\r
-//\r
-// Universal EFI_SYSTEM_CONTEXT definition\r
-//\r
-typedef union {\r
-  EFI_SYSTEM_CONTEXT_EBC  *SystemContextEbc;\r
-  EFI_SYSTEM_CONTEXT_IA32 *SystemContextIa32;\r
-  EFI_SYSTEM_CONTEXT_X64  *SystemContextX64;\r
-  EFI_SYSTEM_CONTEXT_IPF  *SystemContextIpf;\r
-} EFI_SYSTEM_CONTEXT;\r
-\r
-//\r
-// DebugSupport callback function prototypes\r
-//\r
-\r
-/**                                                                 \r
-  Registers and enables an exception callback function for the specified exception.\r
-    \r
-  @param  ExceptionType         Exception types in EBC, IA-32, X64, or IPF\r
-  @param  SystemContext         Exception content.\r
-                                   \r
-**/\r
-typedef\r
-VOID\r
-(*EFI_EXCEPTION_CALLBACK) (\r
-  IN     EFI_EXCEPTION_TYPE               ExceptionType,\r
-  IN OUT EFI_SYSTEM_CONTEXT               SystemContext\r
-  );\r
-\r
-/**                                                                 \r
-  Registers and enables the on-target debug agent's periodic entry point.\r
-      \r
-  @param  SystemContext         Exception content.\r
-                                   \r
-**/\r
-typedef\r
-VOID\r
-(*EFI_PERIODIC_CALLBACK) (\r
-  IN OUT EFI_SYSTEM_CONTEXT               SystemContext\r
-  );\r
-\r
-//\r
-// Machine type definition\r
-//\r
-typedef enum {\r
-  IsaIa32 = IMAGE_FILE_MACHINE_I386, // 0x014C\r
-  IsaX64  = IMAGE_FILE_MACHINE_X64,   // 0x8664\r
-  IsaIpf  = IMAGE_FILE_MACHINE_IA64,  // 0x0200\r
-  IsaEbc  = IMAGE_FILE_MACHINE_EBC    // 0x0EBC\r
-} EFI_INSTRUCTION_SET_ARCHITECTURE;\r
-\r
-\r
-//\r
-// DebugSupport member function definitions\r
-//\r
-\r
-/**                                                                 \r
-  Returns the maximum value that may be used for the ProcessorIndex parameter in\r
-  RegisterPeriodicCallback() and RegisterExceptionCallback().                   \r
-    \r
-  @param  This                  A pointer to the EFI_DEBUG_SUPPORT_PROTOCOL instance.\r
-  @param  MaxProcessorIndex     Pointer to a caller-allocated UINTN in which the maximum supported\r
-                                processor index is returned.                                      \r
-                                \r
-  @retval EFI_SUCCESS           The function completed successfully.  \r
-                                   \r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_GET_MAXIMUM_PROCESSOR_INDEX) (\r
-  IN EFI_DEBUG_SUPPORT_PROTOCOL          *This,\r
-  OUT UINTN                              *MaxProcessorIndex\r
-  );\r
-\r
-/**                                                                 \r
-  Registers a function to be called back periodically in interrupt context.\r
-    \r
-  @param  This                  A pointer to the EFI_DEBUG_SUPPORT_PROTOCOL instance.\r
-  @param  ProcessorIndex        Specifies which processor the callback function applies to.\r
-  @param  PeriodicCallback      A pointer to a function of type PERIODIC_CALLBACK that is the main\r
-                                periodic entry point of the debug agent.\r
-                                \r
-  @retval EFI_SUCCESS           The function completed successfully.  \r
-  @retval EFI_ALREADY_STARTED   Non-NULL PeriodicCallback parameter when a callback\r
-                                function was previously registered.                \r
-  @retval EFI_OUT_OF_RESOURCES  System has insufficient memory resources to register new callback                               \r
-                                function.                                                           \r
-                                \r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_REGISTER_PERIODIC_CALLBACK) (\r
-  IN EFI_DEBUG_SUPPORT_PROTOCOL          *This,\r
-  IN UINTN                               ProcessorIndex,\r
-  IN EFI_PERIODIC_CALLBACK               PeriodicCallback\r
-  );\r
-\r
-/**                                                                 \r
-  Registers a function to be called when a given processor exception occurs.\r
-    \r
-  @param  This                  A pointer to the EFI_DEBUG_SUPPORT_PROTOCOL instance.\r
-  @param  ProcessorIndex        Specifies which processor the callback function applies to.\r
-  @param  PeriodicCallback      A pointer to a function of type EXCEPTION_CALLBACK that is called\r
-                                when the processor exception specified by ExceptionType occurs.  \r
-  @param  ExceptionType         Specifies which processor exception to hook.                       \r
-                                \r
-  @retval EFI_SUCCESS           The function completed successfully.  \r
-  @retval EFI_ALREADY_STARTED   Non-NULL PeriodicCallback parameter when a callback\r
-                                function was previously registered.                \r
-  @retval EFI_OUT_OF_RESOURCES  System has insufficient memory resources to register new callback                               \r
-                                function.                                                           \r
-                                \r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_REGISTER_EXCEPTION_CALLBACK) (\r
-  IN EFI_DEBUG_SUPPORT_PROTOCOL          *This,\r
-  IN UINTN                               ProcessorIndex,\r
-  IN EFI_EXCEPTION_CALLBACK              ExceptionCallback,\r
-  IN EFI_EXCEPTION_TYPE                  ExceptionType\r
-  );\r
-\r
-/**                                                                 \r
-  Invalidates processor instruction cache for a memory range. Subsequent execution in this range\r
-  causes a fresh memory fetch to retrieve code to be executed.                                  \r
-    \r
-  @param  This                  A pointer to the EFI_DEBUG_SUPPORT_PROTOCOL instance.\r
-  @param  ProcessorIndex        Specifies which processor's instruction cache is to be invalidated.\r
-  @param  Start                 Specifies the physical base of the memory range to be invalidated.                                \r
-  @param  Length                Specifies the minimum number of bytes in the processor's instruction\r
-                                cache to invalidate.                                                 \r
-                                \r
-  @retval EFI_SUCCESS           The function completed successfully.  \r
-                                \r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_INVALIDATE_INSTRUCTION_CACHE) (\r
-  IN EFI_DEBUG_SUPPORT_PROTOCOL          *This,\r
-  IN UINTN                               ProcessorIndex,\r
-  IN VOID                                *Start,\r
-  IN UINT64                              Length\r
-  );\r
-\r
-//\r
-// DebugSupport protocol definition\r
-//\r
-struct _EFI_DEBUG_SUPPORT_PROTOCOL {\r
-  EFI_INSTRUCTION_SET_ARCHITECTURE  Isa;\r
-  EFI_GET_MAXIMUM_PROCESSOR_INDEX   GetMaximumProcessorIndex;\r
-  EFI_REGISTER_PERIODIC_CALLBACK    RegisterPeriodicCallback;\r
-  EFI_REGISTER_EXCEPTION_CALLBACK   RegisterExceptionCallback;\r
-  EFI_INVALIDATE_INSTRUCTION_CACHE  InvalidateInstructionCache;\r
-};\r
-\r
-extern EFI_GUID gEfiDebugSupportProtocolGuid;\r
-\r
-#endif \r