VESA_BIOS_EXTENSIONS_VALID_EDID_TIMING ValidEdidTiming;\r
EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE *GraphicsOutputMode;\r
\r
+ DEBUG ((EFI_D_INFO, "Enter BiosVideoCheckForVbe()\n"));\r
//\r
// Allocate buffer under 1MB for VBE data structures\r
//\r
Regs.X.ES = EFI_SEGMENT ((UINTN) BiosVideoPrivate->VbeInformationBlock);\r
Regs.X.DI = EFI_OFFSET ((UINTN) BiosVideoPrivate->VbeInformationBlock);\r
\r
+ DEBUG ((EFI_D_INFO, "Before VESA!\n"));\r
LegacyBiosInt86 (BiosVideoPrivate, 0x10, &Regs);\r
- \r
+ DEBUG ((EFI_D_INFO, "Call VESA! Return Status=0x%X\n", Regs.X.AX));\r
+ DEBUG ((EFI_D_INFO, "Call VESA! VESA Signature =0x%X\n", BiosVideoPrivate->VbeInformationBlock->VESASignature));\r
+ DEBUG ((EFI_D_INFO, "Call VESA! VESA Version =0x%X\n", BiosVideoPrivate->VbeInformationBlock->VESAVersion));\r
+ \r
Status = EFI_DEVICE_ERROR;\r
\r
//\r
// See if the VESA call succeeded\r
//\r
if (Regs.X.AX != VESA_BIOS_EXTENSIONS_STATUS_SUCCESS) {\r
+ DEBUG ((EFI_D_INFO, "Fail to call VESA! Status=0x%X\n", Regs.X.AX));\r
return Status;\r
}\r
//\r
// Check for 'VESA' signature\r
//\r
if (BiosVideoPrivate->VbeInformationBlock->VESASignature != VESA_BIOS_EXTENSIONS_VESA_SIGNATURE) {\r
+ DEBUG ((EFI_D_INFO, "Fail to check VESA signature!\n"));\r
return Status;\r
}\r
//\r
// Check to see if this is VBE 2.0 or higher\r
//\r
if (BiosVideoPrivate->VbeInformationBlock->VESAVersion < VESA_BIOS_EXTENSIONS_VERSION_2_0) {\r
+ DEBUG ((EFI_D_INFO, "VBE version is little than 2.0!\n"));\r
return Status;\r
}\r
\r
BOOLEAN Ret;\r
UINT16 *Stack16;\r
\r
- Regs->X.Flags.Reserved1 = 1;\r
- Regs->X.Flags.Reserved2 = 0;\r
- Regs->X.Flags.Reserved3 = 0;\r
- Regs->X.Flags.Reserved4 = 0;\r
- Regs->X.Flags.IOPL = 3;\r
- Regs->X.Flags.NT = 0;\r
- Regs->X.Flags.IF = 1;\r
- Regs->X.Flags.TF = 0;\r
- Regs->X.Flags.CF = 0;\r
-\r
ZeroMem (&ThunkRegSet, sizeof (ThunkRegSet));\r
+ ThunkRegSet.E.EFLAGS.Bits.Reserved_0 = 1;\r
+ ThunkRegSet.E.EFLAGS.Bits.Reserved_1 = 0;\r
+ ThunkRegSet.E.EFLAGS.Bits.Reserved_2 = 0;\r
+ ThunkRegSet.E.EFLAGS.Bits.Reserved_3 = 0;\r
+ ThunkRegSet.E.EFLAGS.Bits.IOPL = 3;\r
+ ThunkRegSet.E.EFLAGS.Bits.NT = 0;\r
+ ThunkRegSet.E.EFLAGS.Bits.IF = 1;\r
+ ThunkRegSet.E.EFLAGS.Bits.TF = 0;\r
+ ThunkRegSet.E.EFLAGS.Bits.CF = 0;\r
+ \r
ThunkRegSet.E.EDI = Regs->E.EDI;\r
ThunkRegSet.E.ESI = Regs->E.ESI;\r
ThunkRegSet.E.EBP = Regs->E.EBP;\r
ThunkRegSet.E.DS = Regs->E.DS;\r
ThunkRegSet.E.ES = Regs->E.ES;\r
\r
- CopyMem (&(ThunkRegSet.E.EFLAGS), &(Regs->E.EFlags), sizeof (UINT32));\r
- \r
//\r
// The call to Legacy16 is a critical section to EFI\r
//\r
ASSERT_EFI_ERROR (Status);\r
\r
Stack16 = (UINT16 *)((UINT8 *) BiosDev->ThunkContext->RealModeBuffer + BiosDev->ThunkContext->RealModeBufferSize - sizeof (UINT16));\r
- Stack16 -= sizeof (ThunkRegSet.E.EFLAGS) / sizeof (UINT16);\r
- CopyMem (Stack16, &ThunkRegSet.E.EFLAGS, sizeof (ThunkRegSet.E.EFLAGS));\r
\r
ThunkRegSet.E.SS = (UINT16) (((UINTN) Stack16 >> 16) << 12);\r
ThunkRegSet.E.ESP = (UINT16) (UINTN) Stack16;\r
+\r
ThunkRegSet.E.Eip = (UINT16)((UINT32 *)NULL)[BiosInt];\r
ThunkRegSet.E.CS = (UINT16)(((UINT32 *)NULL)[BiosInt] >> 16);\r
BiosDev->ThunkContext->RealModeState = &ThunkRegSet;\r
AsmThunk16 (BiosDev->ThunkContext);\r
-\r
+ \r
//\r
// Restore protected mode interrupt state\r
//\r