1 /* $NetBSD: efidebug.h,v 1.1.1.2 2018/08/16 18:17:47 jmcneill Exp $ */ 2 3 #ifndef _EFI_DEBUG_H 4 #define _EFI_DEBUG_H 5 6 /*++ 7 8 Copyright (c) 1998 Intel Corporation 9 10 Module Name: 11 12 efidebug.h 13 14 Abstract: 15 16 EFI library debug functions 17 18 19 20 Revision History 21 22 --*/ 23 24 extern UINTN EFIDebug; 25 26 #if EFI_DEBUG 27 28 #define DBGASSERT(a) DbgAssert(__FILE__, __LINE__, #a) 29 #define DEBUG(a) DbgPrint a 30 31 #else 32 33 #define DBGASSERT(a) 34 #define DEBUG(a) 35 36 #endif 37 38 #if EFI_DEBUG_CLEAR_MEMORY 39 40 #define DBGSETMEM(a,l) SetMem(a,l,(CHAR8)BAD_POINTER) 41 42 #else 43 44 #define DBGSETMEM(a,l) 45 46 #endif 47 48 #define D_INIT 0x00000001 // Initialization style messages 49 #define D_WARN 0x00000002 // Warnings 50 #define D_LOAD 0x00000004 // Load events 51 #define D_FS 0x00000008 // EFI File system 52 #define D_POOL 0x00000010 // Alloc & Free's 53 #define D_PAGE 0x00000020 // Alloc & Free's 54 #define D_INFO 0x00000040 // Verbose 55 #define D_VAR 0x00000100 // Variable 56 #define D_PARSE 0x00000200 // Command parsing 57 #define D_BM 0x00000400 // Boot manager 58 #define D_BLKIO 0x00001000 // BlkIo Driver 59 #define D_BLKIO_ULTRA 0x00002000 // BlkIo Driver 60 #define D_NET 0x00004000 // SNI Driver 61 #define D_NET_ULTRA 0x00008000 // SNI Driver 62 #define D_TXTIN 0x00010000 // Simple Input Driver 63 #define D_TXTOUT 0x00020000 // Simple Text Output Driver 64 #define D_ERROR_ATA 0x00040000 // ATA error messages 65 #define D_ERROR 0x80000000 // Error 66 67 #define D_RESERVED 0x7fffC880 // Bits not reserved above 68 69 // 70 // Current Debug level of the system, value of EFIDebug 71 // 72 //#define EFI_DBUG_MASK (D_ERROR | D_WARN | D_LOAD | D_BLKIO | D_INIT) 73 #define EFI_DBUG_MASK (D_ERROR) 74 75 // 76 // 77 // 78 79 #if EFI_DEBUG 80 81 #define ASSERT(a) if(!(a)) DBGASSERT(a) 82 #define ASSERT_LOCKED(l) if(!(l)->Lock) DBGASSERT(l not locked) 83 #define ASSERT_STRUCT(p,t) DBGASSERT(t not structure), p 84 85 #else 86 87 #define ASSERT(a) 88 #define ASSERT_LOCKED(l) 89 #define ASSERT_STRUCT(p,t) 90 91 #endif 92 93 // 94 // Prototypes 95 // 96 97 INTN 98 DbgAssert ( 99 CONST CHAR8 *file, 100 INTN lineno, 101 CONST CHAR8 *string 102 ); 103 104 INTN 105 DbgPrint ( 106 INTN mask, 107 CONST CHAR8 *format, 108 ... 109 ); 110 111 // 112 // Instruction Set Architectures definitions for debuggers 113 // 114 115 typedef INTN EFI_EXCEPTION_TYPE; 116 117 // IA32 118 #define EXCEPT_IA32_DIVIDE_ERROR 0 119 #define EXCEPT_IA32_DEBUG 1 120 #define EXCEPT_IA32_NMI 2 121 #define EXCEPT_IA32_BREAKPOINT 3 122 #define EXCEPT_IA32_OVERFLOW 4 123 #define EXCEPT_IA32_BOUND 5 124 #define EXCEPT_IA32_INVALID_OPCODE 6 125 #define EXCEPT_IA32_DOUBLE_FAULT 8 126 #define EXCEPT_IA32_INVALID_TSS 10 127 #define EXCEPT_IA32_SEG_NOT_PRESENT 11 128 #define EXCEPT_IA32_STACK_FAULT 12 129 #define EXCEPT_IA32_GP_FAULT 13 130 #define EXCEPT_IA32_PAGE_FAULT 14 131 #define EXCEPT_IA32_FP_ERROR 16 132 #define EXCEPT_IA32_ALIGNMENT_CHECK 17 133 #define EXCEPT_IA32_MACHINE_CHECK 18 134 #define EXCEPT_IA32_SIMD 19 135 136 typedef struct { 137 UINT16 Fcw; 138 UINT16 Fsw; 139 UINT16 Ftw; 140 UINT16 Opcode; 141 UINT32 Eip; 142 UINT16 Cs; 143 UINT16 Reserved1; 144 UINT32 DataOffset; 145 UINT16 Ds; 146 UINT8 Reserved2[10]; 147 UINT8 St0Mm0[10], Reserved3[6]; 148 UINT8 St1Mm1[10], Reserved4[6]; 149 UINT8 St2Mm2[10], Reserved5[6]; 150 UINT8 St3Mm3[10], Reserved6[6]; 151 UINT8 St4Mm4[10], Reserved7[6]; 152 UINT8 St5Mm5[10], Reserved8[6]; 153 UINT8 St6Mm6[10], Reserved9[6]; 154 UINT8 St7Mm7[10], Reserved10[6]; 155 UINT8 Xmm0[16]; 156 UINT8 Xmm1[16]; 157 UINT8 Xmm2[16]; 158 UINT8 Xmm3[16]; 159 UINT8 Xmm4[16]; 160 UINT8 Xmm5[16]; 161 UINT8 Xmm6[16]; 162 UINT8 Xmm7[16]; 163 UINT8 Reserved11[14 * 16]; 164 } EFI_FX_SAVE_STATE_IA32; 165 166 typedef struct { 167 UINT32 ExceptionData; 168 EFI_FX_SAVE_STATE_IA32 FxSaveState; 169 UINT32 Dr0; 170 UINT32 Dr1; 171 UINT32 Dr2; 172 UINT32 Dr3; 173 UINT32 Dr6; 174 UINT32 Dr7; 175 UINT32 Cr0; 176 UINT32 Cr1; 177 UINT32 Cr2; 178 UINT32 Cr3; 179 UINT32 Cr4; 180 UINT32 Eflags; 181 UINT32 Ldtr; 182 UINT32 Tr; 183 UINT32 Gdtr[2]; 184 UINT32 Idtr[2]; 185 UINT32 Eip; 186 UINT32 Gs; 187 UINT32 Fs; 188 UINT32 Es; 189 UINT32 Ds; 190 UINT32 Cs; 191 UINT32 Ss; 192 UINT32 Edi; 193 UINT32 Esi; 194 UINT32 Ebp; 195 UINT32 Esp; 196 UINT32 Ebx; 197 UINT32 Edx; 198 UINT32 Ecx; 199 UINT32 Eax; 200 } EFI_SYSTEM_CONTEXT_IA32; 201 202 // X64 203 #define EXCEPT_X64_DIVIDE_ERROR 0 204 #define EXCEPT_X64_DEBUG 1 205 #define EXCEPT_X64_NMI 2 206 #define EXCEPT_X64_BREAKPOINT 3 207 #define EXCEPT_X64_OVERFLOW 4 208 #define EXCEPT_X64_BOUND 5 209 #define EXCEPT_X64_INVALID_OPCODE 6 210 #define EXCEPT_X64_DOUBLE_FAULT 8 211 #define EXCEPT_X64_INVALID_TSS 10 212 #define EXCEPT_X64_SEG_NOT_PRESENT 11 213 #define EXCEPT_X64_STACK_FAULT 12 214 #define EXCEPT_X64_GP_FAULT 13 215 #define EXCEPT_X64_PAGE_FAULT 14 216 #define EXCEPT_X64_FP_ERROR 16 217 #define EXCEPT_X64_ALIGNMENT_CHECK 17 218 #define EXCEPT_X64_MACHINE_CHECK 18 219 #define EXCEPT_X64_SIMD 19 220 221 typedef struct { 222 UINT16 Fcw; 223 UINT16 Fsw; 224 UINT16 Ftw; 225 UINT16 Opcode; 226 UINT64 Rip; 227 UINT64 DataOffset; 228 UINT8 Reserved1[8]; 229 UINT8 St0Mm0[10], Reserved2[6]; 230 UINT8 St1Mm1[10], Reserved3[6]; 231 UINT8 St2Mm2[10], Reserved4[6]; 232 UINT8 St3Mm3[10], Reserved5[6]; 233 UINT8 St4Mm4[10], Reserved6[6]; 234 UINT8 St5Mm5[10], Reserved7[6]; 235 UINT8 St6Mm6[10], Reserved8[6]; 236 UINT8 St7Mm7[10], Reserved9[6]; 237 UINT8 Xmm0[16]; 238 UINT8 Xmm1[16]; 239 UINT8 Xmm2[16]; 240 UINT8 Xmm3[16]; 241 UINT8 Xmm4[16]; 242 UINT8 Xmm5[16]; 243 UINT8 Xmm6[16]; 244 UINT8 Xmm7[16]; 245 UINT8 Reserved11[14 * 16]; 246 } EFI_FX_SAVE_STATE_X64; 247 248 typedef struct { 249 UINT64 ExceptionData; 250 EFI_FX_SAVE_STATE_X64 FxSaveState; 251 UINT64 Dr0; 252 UINT64 Dr1; 253 UINT64 Dr2; 254 UINT64 Dr3; 255 UINT64 Dr6; 256 UINT64 Dr7; 257 UINT64 Cr0; 258 UINT64 Cr1; 259 UINT64 Cr2; 260 UINT64 Cr3; 261 UINT64 Cr4; 262 UINT64 Cr8; 263 UINT64 Rflags; 264 UINT64 Ldtr; 265 UINT64 Tr; 266 UINT64 Gdtr[2]; 267 UINT64 Idtr[2]; 268 UINT64 Rip; 269 UINT64 Gs; 270 UINT64 Fs; 271 UINT64 Es; 272 UINT64 Ds; 273 UINT64 Cs; 274 UINT64 Ss; 275 UINT64 Rdi; 276 UINT64 Rsi; 277 UINT64 Rbp; 278 UINT64 Rsp; 279 UINT64 Rbx; 280 UINT64 Rdx; 281 UINT64 Rcx; 282 UINT64 Rax; 283 UINT64 R8; 284 UINT64 R9; 285 UINT64 R10; 286 UINT64 R11; 287 UINT64 R12; 288 UINT64 R13; 289 UINT64 R14; 290 UINT64 R15; 291 } EFI_SYSTEM_CONTEXT_X64; 292 293 /// IA64 294 #define EXCEPT_IPF_VHTP_TRANSLATION 0 295 #define EXCEPT_IPF_INSTRUCTION_TLB 1 296 #define EXCEPT_IPF_DATA_TLB 2 297 #define EXCEPT_IPF_ALT_INSTRUCTION_TLB 3 298 #define EXCEPT_IPF_ALT_DATA_TLB 4 299 #define EXCEPT_IPF_DATA_NESTED_TLB 5 300 #define EXCEPT_IPF_INSTRUCTION_KEY_MISSED 6 301 #define EXCEPT_IPF_DATA_KEY_MISSED 7 302 #define EXCEPT_IPF_DIRTY_BIT 8 303 #define EXCEPT_IPF_INSTRUCTION_ACCESS_BIT 9 304 #define EXCEPT_IPF_DATA_ACCESS_BIT 10 305 #define EXCEPT_IPF_BREAKPOINT 11 306 #define EXCEPT_IPF_EXTERNAL_INTERRUPT 12 307 #define EXCEPT_IPF_PAGE_NOT_PRESENT 20 308 #define EXCEPT_IPF_KEY_PERMISSION 21 309 #define EXCEPT_IPF_INSTRUCTION_ACCESS_RIGHTS 22 310 #define EXCEPT_IPF_DATA_ACCESS_RIGHTS 23 311 #define EXCEPT_IPF_GENERAL_EXCEPTION 24 312 #define EXCEPT_IPF_DISABLED_FP_REGISTER 25 313 #define EXCEPT_IPF_NAT_CONSUMPTION 26 314 #define EXCEPT_IPF_SPECULATION 27 315 #define EXCEPT_IPF_DEBUG 29 316 #define EXCEPT_IPF_UNALIGNED_REFERENCE 30 317 #define EXCEPT_IPF_UNSUPPORTED_DATA_REFERENCE 31 318 #define EXCEPT_IPF_FP_FAULT 32 319 #define EXCEPT_IPF_FP_TRAP 33 320 #define EXCEPT_IPF_LOWER_PRIVILEGE_TRANSFER_TRAP 34 321 #define EXCEPT_IPF_TAKEN_BRANCH 35 322 #define EXCEPT_IPF_SINGLE_STEP 36 323 #define EXCEPT_IPF_IA32_EXCEPTION 45 324 #define EXCEPT_IPF_IA32_INTERCEPT 46 325 #define EXCEPT_IPF_IA32_INTERRUPT 47 326 327 typedef struct { 328 UINT64 Reserved; 329 UINT64 R1; 330 UINT64 R2; 331 UINT64 R3; 332 UINT64 R4; 333 UINT64 R5; 334 UINT64 R6; 335 UINT64 R7; 336 UINT64 R8; 337 UINT64 R9; 338 UINT64 R10; 339 UINT64 R11; 340 UINT64 R12; 341 UINT64 R13; 342 UINT64 R14; 343 UINT64 R15; 344 UINT64 R16; 345 UINT64 R17; 346 UINT64 R18; 347 UINT64 R19; 348 UINT64 R20; 349 UINT64 R21; 350 UINT64 R22; 351 UINT64 R23; 352 UINT64 R24; 353 UINT64 R25; 354 UINT64 R26; 355 UINT64 R27; 356 UINT64 R28; 357 UINT64 R29; 358 UINT64 R30; 359 UINT64 R31; 360 UINT64 F2[2]; 361 UINT64 F3[2]; 362 UINT64 F4[2]; 363 UINT64 F5[2]; 364 UINT64 F6[2]; 365 UINT64 F7[2]; 366 UINT64 F8[2]; 367 UINT64 F9[2]; 368 UINT64 F10[2]; 369 UINT64 F11[2]; 370 UINT64 F12[2]; 371 UINT64 F13[2]; 372 UINT64 F14[2]; 373 UINT64 F15[2]; 374 UINT64 F16[2]; 375 UINT64 F17[2]; 376 UINT64 F18[2]; 377 UINT64 F19[2]; 378 UINT64 F20[2]; 379 UINT64 F21[2]; 380 UINT64 F22[2]; 381 UINT64 F23[2]; 382 UINT64 F24[2]; 383 UINT64 F25[2]; 384 UINT64 F26[2]; 385 UINT64 F27[2]; 386 UINT64 F28[2]; 387 UINT64 F29[2]; 388 UINT64 F30[2]; 389 UINT64 F31[2]; 390 UINT64 Pr; 391 UINT64 B0; 392 UINT64 B1; 393 UINT64 B2; 394 UINT64 B3; 395 UINT64 B4; 396 UINT64 B5; 397 UINT64 B6; 398 UINT64 B7; 399 UINT64 ArRsc; 400 UINT64 ArBsp; 401 UINT64 ArBspstore; 402 UINT64 ArRnat; 403 UINT64 ArFcr; 404 UINT64 ArEflag; 405 UINT64 ArCsd; 406 UINT64 ArSsd; 407 UINT64 ArCflg; 408 UINT64 ArFsr; 409 UINT64 ArFir; 410 UINT64 ArFdr; 411 UINT64 ArCcv; 412 UINT64 ArUnat; 413 UINT64 ArFpsr; 414 UINT64 ArPfs; 415 UINT64 ArLc; 416 UINT64 ArEc; 417 UINT64 CrDcr; 418 UINT64 CrItm; 419 UINT64 CrIva; 420 UINT64 CrPta; 421 UINT64 CrIpsr; 422 UINT64 CrIsr; 423 UINT64 CrIip; 424 UINT64 CrIfa; 425 UINT64 CrItir; 426 UINT64 CrIipa; 427 UINT64 CrIfs; 428 UINT64 CrIim; 429 UINT64 CrIha; 430 UINT64 Dbr0; 431 UINT64 Dbr1; 432 UINT64 Dbr2; 433 UINT64 Dbr3; 434 UINT64 Dbr4; 435 UINT64 Dbr5; 436 UINT64 Dbr6; 437 UINT64 Dbr7; 438 UINT64 Ibr0; 439 UINT64 Ibr1; 440 UINT64 Ibr2; 441 UINT64 Ibr3; 442 UINT64 Ibr4; 443 UINT64 Ibr5; 444 UINT64 Ibr6; 445 UINT64 Ibr7; 446 UINT64 IntNat; 447 } EFI_SYSTEM_CONTEXT_IPF; 448 449 // EBC 450 #define EXCEPT_EBC_UNDEFINED 0 451 #define EXCEPT_EBC_DIVIDE_ERROR 1 452 #define EXCEPT_EBC_DEBUG 2 453 #define EXCEPT_EBC_BREAKPOINT 3 454 #define EXCEPT_EBC_OVERFLOW 4 455 #define EXCEPT_EBC_INVALID_OPCODE 5 456 #define EXCEPT_EBC_STACK_FAULT 6 457 #define EXCEPT_EBC_ALIGNMENT_CHECK 7 458 #define EXCEPT_EBC_INSTRUCTION_ENCODING 8 459 #define EXCEPT_EBC_BAD_BREAK 9 460 #define EXCEPT_EBC_STEP 10 461 #define MAX_EBC_EXCEPTION EXCEPT_EBC_STEP 462 463 typedef struct { 464 UINT64 R0; 465 UINT64 R1; 466 UINT64 R2; 467 UINT64 R3; 468 UINT64 R4; 469 UINT64 R5; 470 UINT64 R6; 471 UINT64 R7; 472 UINT64 Flags; 473 UINT64 ControlFlags; 474 UINT64 Ip; 475 } EFI_SYSTEM_CONTEXT_EBC; 476 477 // ARM 478 #define EXCEPT_ARM_RESET 0 479 #define EXCEPT_ARM_UNDEFINED_INSTRUCTION 1 480 #define EXCEPT_ARM_SOFTWARE_INTERRUPT 2 481 #define EXCEPT_ARM_PREFETCH_ABORT 3 482 #define EXCEPT_ARM_DATA_ABORT 4 483 #define EXCEPT_ARM_RESERVED 5 484 #define EXCEPT_ARM_IRQ 6 485 #define EXCEPT_ARM_FIQ 7 486 #define MAX_ARM_EXCEPTION EXCEPT_ARM_FIQ 487 488 typedef struct { 489 UINT32 R0; 490 UINT32 R1; 491 UINT32 R2; 492 UINT32 R3; 493 UINT32 R4; 494 UINT32 R5; 495 UINT32 R6; 496 UINT32 R7; 497 UINT32 R8; 498 UINT32 R9; 499 UINT32 R10; 500 UINT32 R11; 501 UINT32 R12; 502 UINT32 SP; 503 UINT32 LR; 504 UINT32 PC; 505 UINT32 CPSR; 506 UINT32 DFSR; 507 UINT32 DFAR; 508 UINT32 IFSR; 509 UINT32 IFAR; 510 } EFI_SYSTEM_CONTEXT_ARM; 511 512 513 typedef union { 514 EFI_SYSTEM_CONTEXT_EBC *SystemContextEbc; 515 EFI_SYSTEM_CONTEXT_IA32 *SystemContextIa32; 516 EFI_SYSTEM_CONTEXT_X64 *SystemContextX64; 517 EFI_SYSTEM_CONTEXT_IPF *SystemContextIpf; 518 EFI_SYSTEM_CONTEXT_ARM *SystemContextArm; 519 } EFI_SYSTEM_CONTEXT; 520 521 typedef 522 VOID 523 (EFIAPI *EFI_EXCEPTION_CALLBACK)( 524 IN EFI_EXCEPTION_TYPE ExceptionType, 525 IN OUT EFI_SYSTEM_CONTEXT SystemContext); 526 527 typedef 528 VOID 529 (EFIAPI *EFI_PERIODIC_CALLBACK)( 530 IN OUT EFI_SYSTEM_CONTEXT SystemContext); 531 532 typedef enum { 533 IsaIa32 = EFI_IMAGE_MACHINE_IA32, 534 IsaX64 = EFI_IMAGE_MACHINE_X64, 535 IsaIpf = EFI_IMAGE_MACHINE_IA64, 536 IsaEbc = EFI_IMAGE_MACHINE_EBC, 537 IsaArm = EFI_IMAGE_MACHINE_ARMTHUMB_MIXED, 538 // IsaArm64 = EFI_IMAGE_MACHINE_AARCH64 539 } EFI_INSTRUCTION_SET_ARCHITECTURE; 540 541 // 542 // DEBUG_IMAGE_INFO 543 // 544 545 #define EFI_DEBUG_IMAGE_INFO_TABLE_GUID \ 546 { 0x49152e77, 0x1ada, 0x4764, {0xb7, 0xa2, 0x7a, 0xfe, 0xfe, 0xd9, 0x5e, 0x8b} } 547 548 #define EFI_DEBUG_IMAGE_INFO_UPDATE_IN_PROGRESS 0x01 549 #define EFI_DEBUG_IMAGE_INFO_TABLE_MODIFIED 0x02 550 #define EFI_DEBUG_IMAGE_INFO_INITIAL_SIZE (EFI_PAGE_SIZE / sizeof (UINTN)) 551 #define EFI_DEBUG_IMAGE_INFO_TYPE_NORMAL 0x01 552 553 typedef struct { 554 UINT64 Signature; 555 EFI_PHYSICAL_ADDRESS EfiSystemTableBase; 556 UINT32 Crc32; 557 } EFI_SYSTEM_TABLE_POINTER; 558 559 typedef struct { 560 UINT32 ImageInfoType; 561 EFI_LOADED_IMAGE_PROTOCOL *LoadedImageProtocolInstance; 562 EFI_HANDLE *ImageHandle; 563 } EFI_DEBUG_IMAGE_INFO_NORMAL; 564 565 typedef union { 566 UINT32 *ImageInfoType; 567 EFI_DEBUG_IMAGE_INFO_NORMAL *NormalImage; 568 } EFI_DEBUG_IMAGE_INFO; 569 570 typedef struct { 571 volatile UINT32 UpdateStatus; 572 UINT32 TableSize; 573 EFI_DEBUG_IMAGE_INFO *EfiDebugImageInfoTable; 574 } EFI_DEBUG_IMAGE_INFO_TABLE_HEADER; 575 576 // 577 // EFI_DEBUGGER_PROTOCOL 578 // 579 580 #define EFI_DEBUG_SUPPORT_PROTOCOL_GUID \ 581 { 0x2755590c, 0x6f3c, 0x42fa, {0x9e, 0xa4, 0xa3, 0xba, 0x54, 0x3c, 0xda, 0x25} } 582 583 INTERFACE_DECL(_EFI_DEBUG_SUPPORT_PROTOCOL); 584 585 typedef 586 EFI_STATUS 587 (EFIAPI *EFI_GET_MAXIMUM_PROCESSOR_INDEX)( 588 IN struct _EFI_DEBUG_SUPPORT_PROTOCOL *This, 589 OUT UINTN *MaxProcessorIndex); 590 591 typedef 592 EFI_STATUS 593 (EFIAPI *EFI_REGISTER_PERIODIC_CALLBACK)( 594 IN struct _EFI_DEBUG_SUPPORT_PROTOCOL *This, 595 IN UINTN ProcessorIndex, 596 IN EFI_PERIODIC_CALLBACK PeriodicCallback); 597 598 typedef 599 EFI_STATUS 600 (EFIAPI *EFI_REGISTER_EXCEPTION_CALLBACK)( 601 IN struct _EFI_DEBUG_SUPPORT_PROTOCOL *This, 602 IN UINTN ProcessorIndex, 603 IN EFI_EXCEPTION_CALLBACK ExceptionCallback, 604 IN EFI_EXCEPTION_TYPE ExceptionType); 605 606 typedef 607 EFI_STATUS 608 (EFIAPI *EFI_INVALIDATE_INSTRUCTION_CACHE)( 609 IN struct _EFI_DEBUG_SUPPORT_PROTOCOL *This, 610 IN UINTN ProcessorIndex, 611 IN VOID *Start, 612 IN UINT64 Length); 613 614 typedef struct _EFI_DEBUG_SUPPORT_PROTOCOL { 615 EFI_INSTRUCTION_SET_ARCHITECTURE Isa; 616 EFI_GET_MAXIMUM_PROCESSOR_INDEX GetMaximumProcessorIndex; 617 EFI_REGISTER_PERIODIC_CALLBACK RegisterPeriodicCallback; 618 EFI_REGISTER_EXCEPTION_CALLBACK RegisterExceptionCallback; 619 EFI_INVALIDATE_INSTRUCTION_CACHE InvalidateInstructionCache; 620 } EFI_DEBUG_SUPPORT_PROTOCOL; 621 622 #endif 623