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