/** Display CPU information. @param ExceptionType Exception type. @param SystemContext Pointer to EFI_SYSTEM_CONTEXT. **/ VOID DumpCpuContent ( IN EFI_EXCEPTION_TYPE ExceptionType, IN EFI_SYSTEM_CONTEXT SystemContext ) { UINTN ImageBase; UINTN EntryPoint; InternalPrintMessage ( "!!!! IA32 Exception Type - %08x CPU Apic ID - %08x !!!!\n", ExceptionType, GetApicId () ); InternalPrintMessage ( "EIP - %08x, CS - %08x, EFLAGS - %08x\n", SystemContext.SystemContextIa32->Eip, SystemContext.SystemContextIa32->Cs, SystemContext.SystemContextIa32->Eflags ); if ((mErrorCodeFlag & (1 << ExceptionType)) != 0) { InternalPrintMessage ( "ExceptionData - %08x\n", SystemContext.SystemContextIa32->ExceptionData ); } InternalPrintMessage ( "EAX - %08x, ECX - %08x, EDX - %08x, EBX - %08x\n", SystemContext.SystemContextIa32->Eax, SystemContext.SystemContextIa32->Ecx, SystemContext.SystemContextIa32->Edx, SystemContext.SystemContextIa32->Ebx ); InternalPrintMessage ( "ESP - %08x, EBP - %08x, ESI - %08x, EDI - %08x\n", SystemContext.SystemContextIa32->Esp, SystemContext.SystemContextIa32->Ebp, SystemContext.SystemContextIa32->Esi, SystemContext.SystemContextIa32->Edi ); InternalPrintMessage ( "DS - %08x, ES - %08x, FS - %08x, GS - %08x, SS - %08x\n", SystemContext.SystemContextIa32->Ds, SystemContext.SystemContextIa32->Es, SystemContext.SystemContextIa32->Fs, SystemContext.SystemContextIa32->Gs, SystemContext.SystemContextIa32->Ss ); InternalPrintMessage ( "CR0 - %08x, CR2 - %08x, CR3 - %08x, CR4 - %08x\n", SystemContext.SystemContextIa32->Cr0, SystemContext.SystemContextIa32->Cr2, SystemContext.SystemContextIa32->Cr3, SystemContext.SystemContextIa32->Cr4 ); InternalPrintMessage ( "DR0 - %08x, DR1 - %08x, DR2 - %08x, DR3 - %08x\n", SystemContext.SystemContextIa32->Dr0, SystemContext.SystemContextIa32->Dr1, SystemContext.SystemContextIa32->Dr2, SystemContext.SystemContextIa32->Dr3 ); InternalPrintMessage ( "DR6 - %08x, DR7 - %08x\n", SystemContext.SystemContextIa32->Dr6, SystemContext.SystemContextIa32->Dr7 ); InternalPrintMessage ( "GDTR - %08x %08x, IDTR - %08x %08x\n", SystemContext.SystemContextIa32->Gdtr[0], SystemContext.SystemContextIa32->Gdtr[1], SystemContext.SystemContextIa32->Idtr[0], SystemContext.SystemContextIa32->Idtr[1] ); InternalPrintMessage ( "LDTR - %08x, TR - %08x\n", SystemContext.SystemContextIa32->Ldtr, SystemContext.SystemContextIa32->Tr ); InternalPrintMessage ( "FXSAVE_STATE - %08x\n", &SystemContext.SystemContextIa32->FxSaveState ); // // Find module image base and module entry point by RIP // ImageBase = FindModuleImageBase (SystemContext.SystemContextIa32->Eip, &EntryPoint); if (ImageBase != 0) { InternalPrintMessage ( " (ImageBase=%08x, EntryPoint=%08x) !!!!\n", ImageBase, EntryPoint ); } }
/** Display CPU information. @param ExceptionType Exception type. @param SystemContext Pointer to EFI_SYSTEM_CONTEXT. **/ VOID DumpCpuContent ( IN EFI_EXCEPTION_TYPE ExceptionType, IN EFI_SYSTEM_CONTEXT SystemContext ) { UINTN ImageBase; UINTN EntryPoint; InternalPrintMessage ( "!!!! X64 Exception Type - %016lx CPU Apic ID - %08x !!!!\n", ExceptionType, GetApicId () ); InternalPrintMessage ( "RIP - %016lx, CS - %016lx, RFLAGS - %016lx\n", SystemContext.SystemContextX64->Rip, SystemContext.SystemContextX64->Cs, SystemContext.SystemContextX64->Rflags ); if (mErrorCodeFlag & (1 << ExceptionType)) { InternalPrintMessage ( "ExceptionData - %016lx\n", SystemContext.SystemContextX64->ExceptionData ); } InternalPrintMessage ( "RAX - %016lx, RCX - %016lx, RDX - %016lx\n", SystemContext.SystemContextX64->Rax, SystemContext.SystemContextX64->Rcx, SystemContext.SystemContextX64->Rdx ); InternalPrintMessage ( "RBX - %016lx, RSP - %016lx, RBP - %016lx\n", SystemContext.SystemContextX64->Rbx, SystemContext.SystemContextX64->Rsp, SystemContext.SystemContextX64->Rbp ); InternalPrintMessage ( "RSI - %016lx, RDI - %016lx\n", SystemContext.SystemContextX64->Rsi, SystemContext.SystemContextX64->Rdi ); InternalPrintMessage ( "R8 - %016lx, R9 - %016lx, R10 - %016lx\n", SystemContext.SystemContextX64->R8, SystemContext.SystemContextX64->R9, SystemContext.SystemContextX64->R10 ); InternalPrintMessage ( "R11 - %016lx, R12 - %016lx, R13 - %016lx\n", SystemContext.SystemContextX64->R11, SystemContext.SystemContextX64->R12, SystemContext.SystemContextX64->R13 ); InternalPrintMessage ( "R14 - %016lx, R15 - %016lx\n", SystemContext.SystemContextX64->R14, SystemContext.SystemContextX64->R15 ); InternalPrintMessage ( "DS - %016lx, ES - %016lx, FS - %016lx\n", SystemContext.SystemContextX64->Ds, SystemContext.SystemContextX64->Es, SystemContext.SystemContextX64->Fs ); InternalPrintMessage ( "GS - %016lx, SS - %016lx\n", SystemContext.SystemContextX64->Gs, SystemContext.SystemContextX64->Ss ); InternalPrintMessage ( "CR0 - %016lx, CR2 - %016lx, CR3 - %016lx\n", SystemContext.SystemContextX64->Cr0, SystemContext.SystemContextX64->Cr2, SystemContext.SystemContextX64->Cr3 ); InternalPrintMessage ( "CR4 - %016lx, CR8 - %016lx\n", SystemContext.SystemContextX64->Cr4, SystemContext.SystemContextX64->Cr8 ); InternalPrintMessage ( "DR0 - %016lx, DR1 - %016lx, DR2 - %016lx\n", SystemContext.SystemContextX64->Dr0, SystemContext.SystemContextX64->Dr1, SystemContext.SystemContextX64->Dr2 ); InternalPrintMessage ( "DR3 - %016lx, DR6 - %016lx, DR7 - %016lx\n", SystemContext.SystemContextX64->Dr3, SystemContext.SystemContextX64->Dr6, SystemContext.SystemContextX64->Dr7 ); InternalPrintMessage ( "GDTR - %016lx %016lx, LDTR - %016lx\n", SystemContext.SystemContextX64->Gdtr[0], SystemContext.SystemContextX64->Gdtr[1], SystemContext.SystemContextX64->Ldtr ); InternalPrintMessage ( "IDTR - %016lx %016lx, TR - %016lx\n", SystemContext.SystemContextX64->Idtr[0], SystemContext.SystemContextX64->Idtr[1], SystemContext.SystemContextX64->Tr ); InternalPrintMessage ( "FXSAVE_STATE - %016lx\n", &SystemContext.SystemContextX64->FxSaveState ); // // Find module image base and module entry point by RIP // ImageBase = FindModuleImageBase (SystemContext.SystemContextX64->Rip, &EntryPoint); if (ImageBase != 0) { InternalPrintMessage ( " (ImageBase=%016lx, EntryPoint=%016lx) !!!!\n", ImageBase, EntryPoint ); } }