From ac0a286f4d747a4c6c603a7b225917293cbe1e9f Mon Sep 17 00:00:00 2001 From: Michael Kubacki Date: Sun, 5 Dec 2021 14:54:09 -0800 Subject: OvmfPkg: Apply uncrustify changes REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3737 Apply uncrustify changes to .c/.h files in the OvmfPkg package Cc: Andrew Fish Cc: Leif Lindholm Cc: Michael D Kinney Signed-off-by: Michael Kubacki Reviewed-by: Andrew Fish --- OvmfPkg/QemuVideoDxe/ComponentName.c | 27 +- OvmfPkg/QemuVideoDxe/Driver.c | 605 ++++++++------- OvmfPkg/QemuVideoDxe/Gop.c | 198 ++--- OvmfPkg/QemuVideoDxe/Initialize.c | 206 ++--- OvmfPkg/QemuVideoDxe/Qemu.h | 236 +++--- OvmfPkg/QemuVideoDxe/VbeShim.c | 116 +-- OvmfPkg/QemuVideoDxe/VbeShim.h | 1389 +++++++++++++++++----------------- 7 files changed, 1437 insertions(+), 1340 deletions(-) (limited to 'OvmfPkg/QemuVideoDxe') diff --git a/OvmfPkg/QemuVideoDxe/ComponentName.c b/OvmfPkg/QemuVideoDxe/ComponentName.c index 82922f92c0..7972b9309c 100644 --- a/OvmfPkg/QemuVideoDxe/ComponentName.c +++ b/OvmfPkg/QemuVideoDxe/ComponentName.c @@ -21,21 +21,20 @@ GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gQemuVideoComponentNa // // EFI Component Name 2 Protocol // -GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gQemuVideoComponentName2 = { - (EFI_COMPONENT_NAME2_GET_DRIVER_NAME) QemuVideoComponentNameGetDriverName, - (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) QemuVideoComponentNameGetControllerName, +GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gQemuVideoComponentName2 = { + (EFI_COMPONENT_NAME2_GET_DRIVER_NAME)QemuVideoComponentNameGetDriverName, + (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME)QemuVideoComponentNameGetControllerName, "en" }; - -GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mQemuVideoDriverNameTable[] = { +GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mQemuVideoDriverNameTable[] = { { "eng;en", L"QEMU Video Driver" }, - { NULL , NULL } + { NULL, NULL } }; -GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mQemuVideoControllerNameTable[] = { +GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mQemuVideoControllerNameTable[] = { { "eng;en", L"QEMU Video PCI Adapter" }, - { NULL , NULL } + { NULL, NULL } }; /** @@ -165,14 +164,14 @@ QemuVideoComponentNameGetDriverName ( EFI_STATUS EFIAPI QemuVideoComponentNameGetControllerName ( - IN EFI_COMPONENT_NAME_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE ChildHandle OPTIONAL, - IN CHAR8 *Language, - OUT CHAR16 **ControllerName + IN EFI_COMPONENT_NAME_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE ChildHandle OPTIONAL, + IN CHAR8 *Language, + OUT CHAR16 **ControllerName ) { - EFI_STATUS Status; + EFI_STATUS Status; // // This is a device driver, so ChildHandle must be NULL. diff --git a/OvmfPkg/QemuVideoDxe/Driver.c b/OvmfPkg/QemuVideoDxe/Driver.c index 85edfcb1d6..d9f0a2464a 100644 --- a/OvmfPkg/QemuVideoDxe/Driver.c +++ b/OvmfPkg/QemuVideoDxe/Driver.c @@ -11,7 +11,7 @@ #include "Qemu.h" #include -EFI_DRIVER_BINDING_PROTOCOL gQemuVideoDriverBinding = { +EFI_DRIVER_BINDING_PROTOCOL gQemuVideoDriverBinding = { QemuVideoControllerDriverSupported, QemuVideoControllerDriverStart, QemuVideoControllerDriverStop, @@ -20,77 +20,80 @@ EFI_DRIVER_BINDING_PROTOCOL gQemuVideoDriverBinding = { NULL }; -QEMU_VIDEO_CARD gQemuVideoCardList[] = { - { - PCI_CLASS_DISPLAY_VGA, - CIRRUS_LOGIC_VENDOR_ID, - CIRRUS_LOGIC_5430_DEVICE_ID, - QEMU_VIDEO_CIRRUS_5430, - L"Cirrus 5430" - },{ - PCI_CLASS_DISPLAY_VGA, - CIRRUS_LOGIC_VENDOR_ID, - CIRRUS_LOGIC_5430_ALTERNATE_DEVICE_ID, - QEMU_VIDEO_CIRRUS_5430, - L"Cirrus 5430" - },{ - PCI_CLASS_DISPLAY_VGA, - CIRRUS_LOGIC_VENDOR_ID, - CIRRUS_LOGIC_5446_DEVICE_ID, - QEMU_VIDEO_CIRRUS_5446, - L"Cirrus 5446" - },{ - PCI_CLASS_DISPLAY_VGA, - 0x1234, - 0x1111, - QEMU_VIDEO_BOCHS_MMIO, - L"QEMU Standard VGA" - },{ - PCI_CLASS_DISPLAY_OTHER, - 0x1234, - 0x1111, - QEMU_VIDEO_BOCHS_MMIO, - L"QEMU Standard VGA (secondary)" - },{ - PCI_CLASS_DISPLAY_VGA, - 0x1b36, - 0x0100, - QEMU_VIDEO_BOCHS, - L"QEMU QXL VGA" - },{ - PCI_CLASS_DISPLAY_VGA, - 0x1af4, - 0x1050, - QEMU_VIDEO_BOCHS_MMIO, - L"QEMU VirtIO VGA" - },{ - PCI_CLASS_DISPLAY_VGA, - 0x15ad, - 0x0405, - QEMU_VIDEO_VMWARE_SVGA, - L"QEMU VMWare SVGA" - },{ - 0 /* end of list */ - } +QEMU_VIDEO_CARD gQemuVideoCardList[] = { + { + PCI_CLASS_DISPLAY_VGA, + CIRRUS_LOGIC_VENDOR_ID, + CIRRUS_LOGIC_5430_DEVICE_ID, + QEMU_VIDEO_CIRRUS_5430, + L"Cirrus 5430" + },{ + PCI_CLASS_DISPLAY_VGA, + CIRRUS_LOGIC_VENDOR_ID, + CIRRUS_LOGIC_5430_ALTERNATE_DEVICE_ID, + QEMU_VIDEO_CIRRUS_5430, + L"Cirrus 5430" + },{ + PCI_CLASS_DISPLAY_VGA, + CIRRUS_LOGIC_VENDOR_ID, + CIRRUS_LOGIC_5446_DEVICE_ID, + QEMU_VIDEO_CIRRUS_5446, + L"Cirrus 5446" + },{ + PCI_CLASS_DISPLAY_VGA, + 0x1234, + 0x1111, + QEMU_VIDEO_BOCHS_MMIO, + L"QEMU Standard VGA" + },{ + PCI_CLASS_DISPLAY_OTHER, + 0x1234, + 0x1111, + QEMU_VIDEO_BOCHS_MMIO, + L"QEMU Standard VGA (secondary)" + },{ + PCI_CLASS_DISPLAY_VGA, + 0x1b36, + 0x0100, + QEMU_VIDEO_BOCHS, + L"QEMU QXL VGA" + },{ + PCI_CLASS_DISPLAY_VGA, + 0x1af4, + 0x1050, + QEMU_VIDEO_BOCHS_MMIO, + L"QEMU VirtIO VGA" + },{ + PCI_CLASS_DISPLAY_VGA, + 0x15ad, + 0x0405, + QEMU_VIDEO_VMWARE_SVGA, + L"QEMU VMWare SVGA" + },{ + 0 /* end of list */ + } }; -static QEMU_VIDEO_CARD* -QemuVideoDetect( - IN UINT8 SubClass, - IN UINT16 VendorId, - IN UINT16 DeviceId +static QEMU_VIDEO_CARD * +QemuVideoDetect ( + IN UINT8 SubClass, + IN UINT16 VendorId, + IN UINT16 DeviceId ) { - UINTN Index = 0; + UINTN Index = 0; while (gQemuVideoCardList[Index].VendorId != 0) { - if (gQemuVideoCardList[Index].SubClass == SubClass && - gQemuVideoCardList[Index].VendorId == VendorId && - gQemuVideoCardList[Index].DeviceId == DeviceId) { + if ((gQemuVideoCardList[Index].SubClass == SubClass) && + (gQemuVideoCardList[Index].VendorId == VendorId) && + (gQemuVideoCardList[Index].DeviceId == DeviceId)) + { return gQemuVideoCardList + Index; } + Index++; } + return NULL; } @@ -108,15 +111,15 @@ QemuVideoDetect( EFI_STATUS EFIAPI QemuVideoControllerDriverSupported ( - IN EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE Controller, - IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath + IN EFI_DRIVER_BINDING_PROTOCOL *This, + IN EFI_HANDLE Controller, + IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath ) { - EFI_STATUS Status; - EFI_PCI_IO_PROTOCOL *PciIo; - PCI_TYPE00 Pci; - QEMU_VIDEO_CARD *Card; + EFI_STATUS Status; + EFI_PCI_IO_PROTOCOL *PciIo; + PCI_TYPE00 Pci; + QEMU_VIDEO_CARD *Card; // // Open the PCI I/O Protocol @@ -124,7 +127,7 @@ QemuVideoControllerDriverSupported ( Status = gBS->OpenProtocol ( Controller, &gEfiPciIoProtocolGuid, - (VOID **) &PciIo, + (VOID **)&PciIo, This->DriverBindingHandle, Controller, EFI_OPEN_PROTOCOL_BY_DRIVER @@ -151,7 +154,8 @@ QemuVideoControllerDriverSupported ( if (!IS_PCI_DISPLAY (&Pci)) { goto Done; } - Card = QemuVideoDetect(Pci.Hdr.ClassCode[1], Pci.Hdr.VendorId, Pci.Hdr.DeviceId); + + Card = QemuVideoDetect (Pci.Hdr.ClassCode[1], Pci.Hdr.VendorId, Pci.Hdr.DeviceId); if (Card != NULL) { DEBUG ((DEBUG_INFO, "QemuVideo: %s detected\n", Card->Name)); Status = EFI_SUCCESS; @@ -162,11 +166,11 @@ Done: // Close the PCI I/O Protocol // gBS->CloseProtocol ( - Controller, - &gEfiPciIoProtocolGuid, - This->DriverBindingHandle, - Controller - ); + Controller, + &gEfiPciIoProtocolGuid, + This->DriverBindingHandle, + Controller + ); return Status; } @@ -187,21 +191,21 @@ Done: EFI_STATUS EFIAPI QemuVideoControllerDriverStart ( - IN EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE Controller, - IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath + IN EFI_DRIVER_BINDING_PROTOCOL *This, + IN EFI_HANDLE Controller, + IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath ) { - EFI_TPL OldTpl; - EFI_STATUS Status; - QEMU_VIDEO_PRIVATE_DATA *Private; - BOOLEAN IsQxl; - EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath; - ACPI_ADR_DEVICE_PATH AcpiDeviceNode; - PCI_TYPE00 Pci; - QEMU_VIDEO_CARD *Card; - EFI_PCI_IO_PROTOCOL *ChildPciIo; - UINT64 SupportedVgaIo; + EFI_TPL OldTpl; + EFI_STATUS Status; + QEMU_VIDEO_PRIVATE_DATA *Private; + BOOLEAN IsQxl; + EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath; + ACPI_ADR_DEVICE_PATH AcpiDeviceNode; + PCI_TYPE00 Pci; + QEMU_VIDEO_CARD *Card; + EFI_PCI_IO_PROTOCOL *ChildPciIo; + UINT64 SupportedVgaIo; OldTpl = gBS->RaiseTPL (TPL_CALLBACK); @@ -217,7 +221,7 @@ QemuVideoControllerDriverStart ( // // Set up context record // - Private->Signature = QEMU_VIDEO_PRIVATE_DATA_SIGNATURE; + Private->Signature = QEMU_VIDEO_PRIVATE_DATA_SIGNATURE; // // Open PCI I/O Protocol @@ -225,7 +229,7 @@ QemuVideoControllerDriverStart ( Status = gBS->OpenProtocol ( Controller, &gEfiPciIoProtocolGuid, - (VOID **) &Private->PciIo, + (VOID **)&Private->PciIo, This->DriverBindingHandle, Controller, EFI_OPEN_PROTOCOL_BY_DRIVER @@ -238,12 +242,12 @@ QemuVideoControllerDriverStart ( // Read the PCI Configuration Header from the PCI Device // Status = Private->PciIo->Pci.Read ( - Private->PciIo, - EfiPciIoWidthUint32, - 0, - sizeof (Pci) / sizeof (UINT32), - &Pci - ); + Private->PciIo, + EfiPciIoWidthUint32, + 0, + sizeof (Pci) / sizeof (UINT32), + &Pci + ); if (EFI_ERROR (Status)) { goto ClosePciIo; } @@ -251,11 +255,12 @@ QemuVideoControllerDriverStart ( // // Determine card variant. // - Card = QemuVideoDetect(Pci.Hdr.ClassCode[1], Pci.Hdr.VendorId, Pci.Hdr.DeviceId); + Card = QemuVideoDetect (Pci.Hdr.ClassCode[1], Pci.Hdr.VendorId, Pci.Hdr.DeviceId); if (Card == NULL) { Status = EFI_DEVICE_ERROR; goto ClosePciIo; } + Private->Variant = Card->Variant; // @@ -268,11 +273,11 @@ QemuVideoControllerDriverStart ( // Save original PCI attributes // Status = Private->PciIo->Attributes ( - Private->PciIo, - EfiPciIoAttributeOperationGet, - 0, - &Private->OriginalPciAttributes - ); + Private->PciIo, + EfiPciIoAttributeOperationGet, + 0, + &Private->OriginalPciAttributes + ); if (EFI_ERROR (Status)) { goto ClosePciIo; @@ -292,7 +297,7 @@ QemuVideoControllerDriverStart ( } SupportedVgaIo &= (UINT64)(EFI_PCI_IO_ATTRIBUTE_VGA_IO | EFI_PCI_IO_ATTRIBUTE_VGA_IO_16); - if (SupportedVgaIo == 0 && IS_PCI_VGA (&Pci)) { + if ((SupportedVgaIo == 0) && IS_PCI_VGA (&Pci)) { Status = EFI_UNSUPPORTED; goto ClosePciIo; } @@ -301,11 +306,11 @@ QemuVideoControllerDriverStart ( // Set new PCI attributes // Status = Private->PciIo->Attributes ( - Private->PciIo, - EfiPciIoAttributeOperationEnable, - EFI_PCI_DEVICE_ENABLE | EFI_PCI_IO_ATTRIBUTE_VGA_MEMORY | SupportedVgaIo, - NULL - ); + Private->PciIo, + EfiPciIoAttributeOperationEnable, + EFI_PCI_DEVICE_ENABLE | EFI_PCI_IO_ATTRIBUTE_VGA_MEMORY | SupportedVgaIo, + NULL + ); if (EFI_ERROR (Status)) { goto ClosePciIo; } @@ -314,21 +319,25 @@ QemuVideoControllerDriverStart ( // Check whenever the qemu stdvga mmio bar is present (qemu 1.3+). // if (Private->Variant == QEMU_VIDEO_BOCHS_MMIO) { - EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR *MmioDesc; + EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR *MmioDesc; Status = Private->PciIo->GetBarAttributes ( - Private->PciIo, - PCI_BAR_IDX2, - NULL, - (VOID**) &MmioDesc - ); + Private->PciIo, + PCI_BAR_IDX2, + NULL, + (VOID **)&MmioDesc + ); if (EFI_ERROR (Status) || - MmioDesc->ResType != ACPI_ADDRESS_SPACE_TYPE_MEM) { + (MmioDesc->ResType != ACPI_ADDRESS_SPACE_TYPE_MEM)) + { DEBUG ((DEBUG_INFO, "QemuVideo: No mmio bar, fallback to port io\n")); Private->Variant = QEMU_VIDEO_BOCHS; } else { - DEBUG ((DEBUG_INFO, "QemuVideo: Using mmio bar @ 0x%lx\n", - MmioDesc->AddrRangeMin)); + DEBUG (( + DEBUG_INFO, + "QemuVideo: Using mmio bar @ 0x%lx\n", + MmioDesc->AddrRangeMin + )); } if (!EFI_ERROR (Status)) { @@ -340,17 +349,18 @@ QemuVideoControllerDriverStart ( // VMWare SVGA is handled like Bochs (with port IO only). // if (Private->Variant == QEMU_VIDEO_VMWARE_SVGA) { - Private->Variant = QEMU_VIDEO_BOCHS; + Private->Variant = QEMU_VIDEO_BOCHS; Private->FrameBufferVramBarIndex = PCI_BAR_IDX1; } // // Check if accessing the bochs interface works. // - if (Private->Variant == QEMU_VIDEO_BOCHS_MMIO || - Private->Variant == QEMU_VIDEO_BOCHS) { - UINT16 BochsId; - BochsId = BochsRead(Private, VBE_DISPI_INDEX_ID); + if ((Private->Variant == QEMU_VIDEO_BOCHS_MMIO) || + (Private->Variant == QEMU_VIDEO_BOCHS)) + { + UINT16 BochsId; + BochsId = BochsRead (Private, VBE_DISPI_INDEX_ID); if ((BochsId & 0xFFF0) != VBE_DISPI_ID0) { DEBUG ((DEBUG_INFO, "QemuVideo: BochsID mismatch (got 0x%x)\n", BochsId)); Status = EFI_DEVICE_ERROR; @@ -364,7 +374,7 @@ QemuVideoControllerDriverStart ( Status = gBS->HandleProtocol ( Controller, &gEfiDevicePathProtocolGuid, - (VOID **) &ParentDevicePath + (VOID **)&ParentDevicePath ); if (EFI_ERROR (Status)) { goto RestoreAttributes; @@ -374,15 +384,15 @@ QemuVideoControllerDriverStart ( // Set Gop Device Path // ZeroMem (&AcpiDeviceNode, sizeof (ACPI_ADR_DEVICE_PATH)); - AcpiDeviceNode.Header.Type = ACPI_DEVICE_PATH; + AcpiDeviceNode.Header.Type = ACPI_DEVICE_PATH; AcpiDeviceNode.Header.SubType = ACPI_ADR_DP; - AcpiDeviceNode.ADR = ACPI_DISPLAY_ADR (1, 0, 0, 1, 0, ACPI_ADR_DISPLAY_TYPE_VGA, 0, 0); + AcpiDeviceNode.ADR = ACPI_DISPLAY_ADR (1, 0, 0, 1, 0, ACPI_ADR_DISPLAY_TYPE_VGA, 0, 0); SetDevicePathNodeLength (&AcpiDeviceNode.Header, sizeof (ACPI_ADR_DEVICE_PATH)); Private->GopDevicePath = AppendDevicePathNode ( - ParentDevicePath, - (EFI_DEVICE_PATH_PROTOCOL *) &AcpiDeviceNode - ); + ParentDevicePath, + (EFI_DEVICE_PATH_PROTOCOL *)&AcpiDeviceNode + ); if (Private->GopDevicePath == NULL) { Status = EFI_OUT_OF_RESOURCES; goto RestoreAttributes; @@ -405,19 +415,20 @@ QemuVideoControllerDriverStart ( // Construct video mode buffer // switch (Private->Variant) { - case QEMU_VIDEO_CIRRUS_5430: - case QEMU_VIDEO_CIRRUS_5446: - Status = QemuVideoCirrusModeSetup (Private); - break; - case QEMU_VIDEO_BOCHS_MMIO: - case QEMU_VIDEO_BOCHS: - Status = QemuVideoBochsModeSetup (Private, IsQxl); - break; - default: - ASSERT (FALSE); - Status = EFI_DEVICE_ERROR; - break; + case QEMU_VIDEO_CIRRUS_5430: + case QEMU_VIDEO_CIRRUS_5446: + Status = QemuVideoCirrusModeSetup (Private); + break; + case QEMU_VIDEO_BOCHS_MMIO: + case QEMU_VIDEO_BOCHS: + Status = QemuVideoBochsModeSetup (Private, IsQxl); + break; + default: + ASSERT (FALSE); + Status = EFI_DEVICE_ERROR; + break; } + if (EFI_ERROR (Status)) { goto UninstallGopDevicePath; } @@ -444,30 +455,35 @@ QemuVideoControllerDriverStart ( // Reference parent handle from child handle. // Status = gBS->OpenProtocol ( - Controller, - &gEfiPciIoProtocolGuid, - (VOID **) &ChildPciIo, - This->DriverBindingHandle, - Private->Handle, - EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER - ); + Controller, + &gEfiPciIoProtocolGuid, + (VOID **)&ChildPciIo, + This->DriverBindingHandle, + Private->Handle, + EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER + ); if (EFI_ERROR (Status)) { goto UninstallGop; } -#if defined MDE_CPU_IA32 || defined MDE_CPU_X64 - if (Private->Variant == QEMU_VIDEO_BOCHS_MMIO || - Private->Variant == QEMU_VIDEO_BOCHS) { + #if defined MDE_CPU_IA32 || defined MDE_CPU_X64 + if ((Private->Variant == QEMU_VIDEO_BOCHS_MMIO) || + (Private->Variant == QEMU_VIDEO_BOCHS)) + { InstallVbeShim (Card->Name, Private->GraphicsOutput.Mode->FrameBufferBase); } -#endif + + #endif gBS->RestoreTPL (OldTpl); return EFI_SUCCESS; UninstallGop: - gBS->UninstallProtocolInterface (Private->Handle, - &gEfiGraphicsOutputProtocolGuid, &Private->GraphicsOutput); + gBS->UninstallProtocolInterface ( + Private->Handle, + &gEfiGraphicsOutputProtocolGuid, + &Private->GraphicsOutput + ); DestructQemuVideoGraphics: QemuVideoGraphicsOutputDestructor (Private); @@ -476,19 +492,30 @@ FreeModeData: FreePool (Private->ModeData); UninstallGopDevicePath: - gBS->UninstallProtocolInterface (Private->Handle, - &gEfiDevicePathProtocolGuid, Private->GopDevicePath); + gBS->UninstallProtocolInterface ( + Private->Handle, + &gEfiDevicePathProtocolGuid, + Private->GopDevicePath + ); FreeGopDevicePath: FreePool (Private->GopDevicePath); RestoreAttributes: - Private->PciIo->Attributes (Private->PciIo, EfiPciIoAttributeOperationSet, - Private->OriginalPciAttributes, NULL); + Private->PciIo->Attributes ( + Private->PciIo, + EfiPciIoAttributeOperationSet, + Private->OriginalPciAttributes, + NULL + ); ClosePciIo: - gBS->CloseProtocol (Controller, &gEfiPciIoProtocolGuid, - This->DriverBindingHandle, Controller); + gBS->CloseProtocol ( + Controller, + &gEfiPciIoProtocolGuid, + This->DriverBindingHandle, + Controller + ); FreePrivate: FreePool (Private); @@ -515,15 +542,15 @@ RestoreTpl: EFI_STATUS EFIAPI QemuVideoControllerDriverStop ( - IN EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE Controller, - IN UINTN NumberOfChildren, - IN EFI_HANDLE *ChildHandleBuffer + IN EFI_DRIVER_BINDING_PROTOCOL *This, + IN EFI_HANDLE Controller, + IN UINTN NumberOfChildren, + IN EFI_HANDLE *ChildHandleBuffer ) { - EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput; + EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput; - EFI_STATUS Status; + EFI_STATUS Status; QEMU_VIDEO_PRIVATE_DATA *Private; if (NumberOfChildren == 0) { @@ -531,11 +558,11 @@ QemuVideoControllerDriverStop ( // Close the PCI I/O Protocol // gBS->CloseProtocol ( - Controller, - &gEfiPciIoProtocolGuid, - This->DriverBindingHandle, - Controller - ); + Controller, + &gEfiPciIoProtocolGuid, + This->DriverBindingHandle, + Controller + ); return EFI_SUCCESS; } @@ -547,7 +574,7 @@ QemuVideoControllerDriverStop ( Status = gBS->OpenProtocol ( ChildHandleBuffer[0], &gEfiGraphicsOutputProtocolGuid, - (VOID **) &GraphicsOutput, + (VOID **)&GraphicsOutput, This->DriverBindingHandle, Controller, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -581,22 +608,25 @@ QemuVideoControllerDriverStop ( // Restore original PCI attributes // Private->PciIo->Attributes ( - Private->PciIo, - EfiPciIoAttributeOperationSet, - Private->OriginalPciAttributes, - NULL - ); + Private->PciIo, + EfiPciIoAttributeOperationSet, + Private->OriginalPciAttributes, + NULL + ); gBS->CloseProtocol ( - Controller, - &gEfiPciIoProtocolGuid, - This->DriverBindingHandle, - Private->Handle - ); + Controller, + &gEfiPciIoProtocolGuid, + This->DriverBindingHandle, + Private->Handle + ); FreePool (Private->ModeData); - gBS->UninstallProtocolInterface (Private->Handle, - &gEfiDevicePathProtocolGuid, Private->GopDevicePath); + gBS->UninstallProtocolInterface ( + Private->Handle, + &gEfiDevicePathProtocolGuid, + Private->GopDevicePath + ); FreePool (Private->GopDevicePath); // @@ -620,18 +650,18 @@ QemuVideoControllerDriverStop ( VOID outb ( QEMU_VIDEO_PRIVATE_DATA *Private, - UINTN Address, - UINT8 Data + UINTN Address, + UINT8 Data ) { Private->PciIo->Io.Write ( - Private->PciIo, - EfiPciIoWidthUint8, - EFI_PCI_IO_PASS_THROUGH_BAR, - Address, - 1, - &Data - ); + Private->PciIo, + EfiPciIoWidthUint8, + EFI_PCI_IO_PASS_THROUGH_BAR, + Address, + 1, + &Data + ); } /** @@ -647,18 +677,18 @@ outb ( VOID outw ( QEMU_VIDEO_PRIVATE_DATA *Private, - UINTN Address, - UINT16 Data + UINTN Address, + UINT16 Data ) { Private->PciIo->Io.Write ( - Private->PciIo, - EfiPciIoWidthUint16, - EFI_PCI_IO_PASS_THROUGH_BAR, - Address, - 1, - &Data - ); + Private->PciIo, + EfiPciIoWidthUint16, + EFI_PCI_IO_PASS_THROUGH_BAR, + Address, + 1, + &Data + ); } /** @@ -673,19 +703,19 @@ outw ( UINT8 inb ( QEMU_VIDEO_PRIVATE_DATA *Private, - UINTN Address + UINTN Address ) { - UINT8 Data; + UINT8 Data; Private->PciIo->Io.Read ( - Private->PciIo, - EfiPciIoWidthUint8, - EFI_PCI_IO_PASS_THROUGH_BAR, - Address, - 1, - &Data - ); + Private->PciIo, + EfiPciIoWidthUint8, + EFI_PCI_IO_PASS_THROUGH_BAR, + Address, + 1, + &Data + ); return Data; } @@ -701,19 +731,19 @@ inb ( UINT16 inw ( QEMU_VIDEO_PRIVATE_DATA *Private, - UINTN Address + UINTN Address ) { UINT16 Data; Private->PciIo->Io.Read ( - Private->PciIo, - EfiPciIoWidthUint16, - EFI_PCI_IO_PASS_THROUGH_BAR, - Address, - 1, - &Data - ); + Private->PciIo, + EfiPciIoWidthUint16, + EFI_PCI_IO_PASS_THROUGH_BAR, + Address, + 1, + &Data + ); return Data; } @@ -732,16 +762,16 @@ inw ( VOID SetPaletteColor ( QEMU_VIDEO_PRIVATE_DATA *Private, - UINTN Index, - UINT8 Red, - UINT8 Green, - UINT8 Blue + UINTN Index, + UINT8 Red, + UINT8 Green, + UINT8 Blue ) { - VgaOutb (Private, PALETTE_INDEX_REGISTER, (UINT8) Index); - VgaOutb (Private, PALETTE_DATA_REGISTER, (UINT8) (Red >> 2)); - VgaOutb (Private, PALETTE_DATA_REGISTER, (UINT8) (Green >> 2)); - VgaOutb (Private, PALETTE_DATA_REGISTER, (UINT8) (Blue >> 2)); + VgaOutb (Private, PALETTE_INDEX_REGISTER, (UINT8)Index); + VgaOutb (Private, PALETTE_DATA_REGISTER, (UINT8)(Red >> 2)); + VgaOutb (Private, PALETTE_DATA_REGISTER, (UINT8)(Green >> 2)); + VgaOutb (Private, PALETTE_DATA_REGISTER, (UINT8)(Blue >> 2)); } /** @@ -757,16 +787,16 @@ SetDefaultPalette ( QEMU_VIDEO_PRIVATE_DATA *Private ) { - UINTN Index; - UINTN RedIndex; - UINTN GreenIndex; - UINTN BlueIndex; + UINTN Index; + UINTN RedIndex; + UINTN GreenIndex; + UINTN BlueIndex; Index = 0; for (RedIndex = 0; RedIndex < 8; RedIndex++) { for (GreenIndex = 0; GreenIndex < 8; GreenIndex++) { for (BlueIndex = 0; BlueIndex < 4; BlueIndex++) { - SetPaletteColor (Private, Index, (UINT8) (RedIndex << 5), (UINT8) (GreenIndex << 5), (UINT8) (BlueIndex << 6)); + SetPaletteColor (Private, Index, (UINT8)(RedIndex << 5), (UINT8)(GreenIndex << 5), (UINT8)(BlueIndex << 6)); Index++; } } @@ -810,8 +840,8 @@ ClearScreen ( VOID DrawLogo ( QEMU_VIDEO_PRIVATE_DATA *Private, - UINTN ScreenWidth, - UINTN ScreenHeight + UINTN ScreenWidth, + UINTN ScreenHeight ) { } @@ -831,8 +861,8 @@ InitializeCirrusGraphicsMode ( QEMU_VIDEO_CIRRUS_MODES *ModeData ) { - UINT8 Byte; - UINTN Index; + UINT8 Byte; + UINTN Index; outw (Private, SEQ_ADDRESS_REGISTER, 0x1206); outw (Private, SEQ_ADDRESS_REGISTER, 0x0012); @@ -843,7 +873,7 @@ InitializeCirrusGraphicsMode ( if (Private->Variant == QEMU_VIDEO_CIRRUS_5430) { outb (Private, SEQ_ADDRESS_REGISTER, 0x0f); - Byte = (UINT8) ((inb (Private, SEQ_DATA_REGISTER) & 0xc7) ^ 0x30); + Byte = (UINT8)((inb (Private, SEQ_DATA_REGISTER) & 0xc7) ^ 0x30); outb (Private, SEQ_DATA_REGISTER, Byte); } @@ -853,17 +883,17 @@ InitializeCirrusGraphicsMode ( outw (Private, CRTC_ADDRESS_REGISTER, 0x2011); for (Index = 0; Index < 28; Index++) { - outw (Private, CRTC_ADDRESS_REGISTER, (UINT16) ((ModeData->CrtcSettings[Index] << 8) | Index)); + outw (Private, CRTC_ADDRESS_REGISTER, (UINT16)((ModeData->CrtcSettings[Index] << 8) | Index)); } for (Index = 0; Index < 9; Index++) { - outw (Private, GRAPH_ADDRESS_REGISTER, (UINT16) ((GraphicsController[Index] << 8) | Index)); + outw (Private, GRAPH_ADDRESS_REGISTER, (UINT16)((GraphicsController[Index] << 8) | Index)); } inb (Private, INPUT_STATUS_1_REGISTER); for (Index = 0; Index < 21; Index++) { - outb (Private, ATT_ADDRESS_REGISTER, (UINT8) Index); + outb (Private, ATT_ADDRESS_REGISTER, (UINT8)Index); outb (Private, ATT_ADDRESS_REGISTER, AttributeController[Index]); } @@ -885,21 +915,21 @@ BochsWrite ( UINT16 Data ) { - EFI_STATUS Status; + EFI_STATUS Status; if (Private->Variant == QEMU_VIDEO_BOCHS_MMIO) { Status = Private->PciIo->Mem.Write ( - Private->PciIo, - EfiPciIoWidthUint16, - PCI_BAR_IDX2, - 0x500 + (Reg << 1), - 1, - &Data - ); + Private->PciIo, + EfiPciIoWidthUint16, + PCI_BAR_IDX2, + 0x500 + (Reg << 1), + 1, + &Data + ); ASSERT_EFI_ERROR (Status); } else { outw (Private, VBE_DISPI_IOPORT_INDEX, Reg); - outw (Private, VBE_DISPI_IOPORT_DATA, Data); + outw (Private, VBE_DISPI_IOPORT_DATA, Data); } } @@ -909,23 +939,24 @@ BochsRead ( UINT16 Reg ) { - EFI_STATUS Status; - UINT16 Data; + EFI_STATUS Status; + UINT16 Data; if (Private->Variant == QEMU_VIDEO_BOCHS_MMIO) { Status = Private->PciIo->Mem.Read ( - Private->PciIo, - EfiPciIoWidthUint16, - PCI_BAR_IDX2, - 0x500 + (Reg << 1), - 1, - &Data - ); + Private->PciIo, + EfiPciIoWidthUint16, + PCI_BAR_IDX2, + 0x500 + (Reg << 1), + 1, + &Data + ); ASSERT_EFI_ERROR (Status); } else { outw (Private, VBE_DISPI_IOPORT_INDEX, Reg); Data = inw (Private, VBE_DISPI_IOPORT_DATA); } + return Data; } @@ -936,17 +967,17 @@ VgaOutb ( UINT8 Data ) { - EFI_STATUS Status; + EFI_STATUS Status; if (Private->Variant == QEMU_VIDEO_BOCHS_MMIO) { Status = Private->PciIo->Mem.Write ( - Private->PciIo, - EfiPciIoWidthUint8, - PCI_BAR_IDX2, - 0x400 - 0x3c0 + Reg, - 1, - &Data - ); + Private->PciIo, + EfiPciIoWidthUint8, + PCI_BAR_IDX2, + 0x400 - 0x3c0 + Reg, + 1, + &Data + ); ASSERT_EFI_ERROR (Status); } else { outb (Private, Reg, Data); @@ -956,28 +987,36 @@ VgaOutb ( VOID InitializeBochsGraphicsMode ( QEMU_VIDEO_PRIVATE_DATA *Private, - QEMU_VIDEO_BOCHS_MODES *ModeData + QEMU_VIDEO_BOCHS_MODES *ModeData ) { - DEBUG ((DEBUG_INFO, "InitializeBochsGraphicsMode: %dx%d @ %d\n", - ModeData->Width, ModeData->Height, ModeData->ColorDepth)); + DEBUG (( + DEBUG_INFO, + "InitializeBochsGraphicsMode: %dx%d @ %d\n", + ModeData->Width, + ModeData->Height, + ModeData->ColorDepth + )); /* unblank */ VgaOutb (Private, ATT_ADDRESS_REGISTER, 0x20); - BochsWrite (Private, VBE_DISPI_INDEX_ENABLE, 0); - BochsWrite (Private, VBE_DISPI_INDEX_BANK, 0); - BochsWrite (Private, VBE_DISPI_INDEX_X_OFFSET, 0); - BochsWrite (Private, VBE_DISPI_INDEX_Y_OFFSET, 0); + BochsWrite (Private, VBE_DISPI_INDEX_ENABLE, 0); + BochsWrite (Private, VBE_DISPI_INDEX_BANK, 0); + BochsWrite (Private, VBE_DISPI_INDEX_X_OFFSET, 0); + BochsWrite (Private, VBE_DISPI_INDEX_Y_OFFSET, 0); - BochsWrite (Private, VBE_DISPI_INDEX_BPP, (UINT16) ModeData->ColorDepth); - BochsWrite (Private, VBE_DISPI_INDEX_XRES, (UINT16) ModeData->Width); - BochsWrite (Private, VBE_DISPI_INDEX_VIRT_WIDTH, (UINT16) ModeData->Width); - BochsWrite (Private, VBE_DISPI_INDEX_YRES, (UINT16) ModeData->Height); - BochsWrite (Private, VBE_DISPI_INDEX_VIRT_HEIGHT, (UINT16) ModeData->Height); + BochsWrite (Private, VBE_DISPI_INDEX_BPP, (UINT16)ModeData->ColorDepth); + BochsWrite (Private, VBE_DISPI_INDEX_XRES, (UINT16)ModeData->Width); + BochsWrite (Private, VBE_DISPI_INDEX_VIRT_WIDTH, (UINT16)ModeData->Width); + BochsWrite (Private, VBE_DISPI_INDEX_YRES, (UINT16)ModeData->Height); + BochsWrite (Private, VBE_DISPI_INDEX_VIRT_HEIGHT, (UINT16)ModeData->Height); - BochsWrite (Private, VBE_DISPI_INDEX_ENABLE, - VBE_DISPI_ENABLED | VBE_DISPI_LFB_ENABLED); + BochsWrite ( + Private, + VBE_DISPI_INDEX_ENABLE, + VBE_DISPI_ENABLED | VBE_DISPI_LFB_ENABLED + ); SetDefaultPalette (Private); ClearScreen (Private); @@ -986,11 +1025,11 @@ InitializeBochsGraphicsMode ( EFI_STATUS EFIAPI InitializeQemuVideo ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable ) { - EFI_STATUS Status; + EFI_STATUS Status; Status = EfiLibInstallDriverBindingComponentName2 ( ImageHandle, diff --git a/OvmfPkg/QemuVideoDxe/Gop.c b/OvmfPkg/QemuVideoDxe/Gop.c index 6b0a11ec12..5ad0afe883 100644 --- a/OvmfPkg/QemuVideoDxe/Gop.c +++ b/OvmfPkg/QemuVideoDxe/Gop.c @@ -12,52 +12,52 @@ STATIC VOID QemuVideoCompleteModeInfo ( - IN QEMU_VIDEO_MODE_DATA *ModeData, + IN QEMU_VIDEO_MODE_DATA *ModeData, OUT EFI_GRAPHICS_OUTPUT_MODE_INFORMATION *Info ) { Info->Version = 0; if (ModeData->ColorDepth == 8) { - Info->PixelFormat = PixelBitMask; - Info->PixelInformation.RedMask = PIXEL_RED_MASK; - Info->PixelInformation.GreenMask = PIXEL_GREEN_MASK; - Info->PixelInformation.BlueMask = PIXEL_BLUE_MASK; + Info->PixelFormat = PixelBitMask; + Info->PixelInformation.RedMask = PIXEL_RED_MASK; + Info->PixelInformation.GreenMask = PIXEL_GREEN_MASK; + Info->PixelInformation.BlueMask = PIXEL_BLUE_MASK; Info->PixelInformation.ReservedMask = 0; } else if (ModeData->ColorDepth == 24) { - Info->PixelFormat = PixelBitMask; - Info->PixelInformation.RedMask = PIXEL24_RED_MASK; - Info->PixelInformation.GreenMask = PIXEL24_GREEN_MASK; - Info->PixelInformation.BlueMask = PIXEL24_BLUE_MASK; + Info->PixelFormat = PixelBitMask; + Info->PixelInformation.RedMask = PIXEL24_RED_MASK; + Info->PixelInformation.GreenMask = PIXEL24_GREEN_MASK; + Info->PixelInformation.BlueMask = PIXEL24_BLUE_MASK; Info->PixelInformation.ReservedMask = 0; } else if (ModeData->ColorDepth == 32) { DEBUG ((DEBUG_INFO, "PixelBlueGreenRedReserved8BitPerColor\n")); Info->PixelFormat = PixelBlueGreenRedReserved8BitPerColor; } + Info->PixelsPerScanLine = Info->HorizontalResolution; } - STATIC EFI_STATUS QemuVideoCompleteModeData ( - IN QEMU_VIDEO_PRIVATE_DATA *Private, - OUT EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE *Mode + IN QEMU_VIDEO_PRIVATE_DATA *Private, + OUT EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE *Mode ) { EFI_GRAPHICS_OUTPUT_MODE_INFORMATION *Info; EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR *FrameBufDesc; - QEMU_VIDEO_MODE_DATA *ModeData; + QEMU_VIDEO_MODE_DATA *ModeData; ModeData = &Private->ModeData[Mode->Mode]; - Info = Mode->Info; + Info = Mode->Info; QemuVideoCompleteModeInfo (ModeData, Info); Private->PciIo->GetBarAttributes ( - Private->PciIo, - Private->FrameBufferVramBarIndex, - NULL, - (VOID**) &FrameBufDesc - ); + Private->PciIo, + Private->FrameBufferVramBarIndex, + NULL, + (VOID **)&FrameBufDesc + ); Mode->FrameBufferBase = FrameBufDesc->AddrRangeMin; Mode->FrameBufferSize = Info->HorizontalResolution * Info->VerticalResolution; @@ -65,8 +65,12 @@ QemuVideoCompleteModeData ( Mode->FrameBufferSize = EFI_PAGES_TO_SIZE ( EFI_SIZE_TO_PAGES (Mode->FrameBufferSize) ); - DEBUG ((DEBUG_INFO, "FrameBufferBase: 0x%Lx, FrameBufferSize: 0x%Lx\n", - Mode->FrameBufferBase, (UINT64)Mode->FrameBufferSize)); + DEBUG (( + DEBUG_INFO, + "FrameBufferBase: 0x%Lx, FrameBufferSize: 0x%Lx\n", + Mode->FrameBufferBase, + (UINT64)Mode->FrameBufferSize + )); FreePool (FrameBufDesc); return EFI_SUCCESS; @@ -83,6 +87,7 @@ QemuVideoGraphicsOutputQueryMode ( OUT UINTN *SizeOfInfo, OUT EFI_GRAPHICS_OUTPUT_MODE_INFORMATION **Info ) + /*++ Routine Description: @@ -109,7 +114,7 @@ Routine Description: Private = QEMU_VIDEO_PRIVATE_DATA_FROM_GRAPHICS_OUTPUT_THIS (This); - if (Info == NULL || SizeOfInfo == NULL || ModeNumber >= This->Mode->MaxMode) { + if ((Info == NULL) || (SizeOfInfo == NULL) || (ModeNumber >= This->Mode->MaxMode)) { return EFI_INVALID_PARAMETER; } @@ -120,7 +125,7 @@ Routine Description: *SizeOfInfo = sizeof (EFI_GRAPHICS_OUTPUT_MODE_INFORMATION); - ModeData = &Private->ModeData[ModeNumber]; + ModeData = &Private->ModeData[ModeNumber]; (*Info)->HorizontalResolution = ModeData->HorizontalResolution; (*Info)->VerticalResolution = ModeData->VerticalResolution; QemuVideoCompleteModeInfo (ModeData, *Info); @@ -131,9 +136,10 @@ Routine Description: EFI_STATUS EFIAPI QemuVideoGraphicsOutputSetMode ( - IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This, - IN UINT32 ModeNumber + IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This, + IN UINT32 ModeNumber ) + /*++ Routine Description: @@ -151,10 +157,10 @@ Routine Description: --*/ { - QEMU_VIDEO_PRIVATE_DATA *Private; - QEMU_VIDEO_MODE_DATA *ModeData; - RETURN_STATUS Status; - EFI_GRAPHICS_OUTPUT_BLT_PIXEL Black; + QEMU_VIDEO_PRIVATE_DATA *Private; + QEMU_VIDEO_MODE_DATA *ModeData; + RETURN_STATUS Status; + EFI_GRAPHICS_OUTPUT_BLT_PIXEL Black; Private = QEMU_VIDEO_PRIVATE_DATA_FROM_GRAPHICS_OUTPUT_THIS (This); @@ -165,23 +171,23 @@ Routine Description: ModeData = &Private->ModeData[ModeNumber]; switch (Private->Variant) { - case QEMU_VIDEO_CIRRUS_5430: - case QEMU_VIDEO_CIRRUS_5446: - InitializeCirrusGraphicsMode (Private, &QemuVideoCirrusModes[ModeData->InternalModeIndex]); - break; - case QEMU_VIDEO_BOCHS_MMIO: - case QEMU_VIDEO_BOCHS: - InitializeBochsGraphicsMode (Private, &QemuVideoBochsModes[ModeData->InternalModeIndex]); - break; - default: - ASSERT (FALSE); - return EFI_DEVICE_ERROR; + case QEMU_VIDEO_CIRRUS_5430: + case QEMU_VIDEO_CIRRUS_5446: + InitializeCirrusGraphicsMode (Private, &QemuVideoCirrusModes[ModeData->InternalModeIndex]); + break; + case QEMU_VIDEO_BOCHS_MMIO: + case QEMU_VIDEO_BOCHS: + InitializeBochsGraphicsMode (Private, &QemuVideoBochsModes[ModeData->InternalModeIndex]); + break; + default: + ASSERT (FALSE); + return EFI_DEVICE_ERROR; } - This->Mode->Mode = ModeNumber; + This->Mode->Mode = ModeNumber; This->Mode->Info->HorizontalResolution = ModeData->HorizontalResolution; - This->Mode->Info->VerticalResolution = ModeData->VerticalResolution; - This->Mode->SizeOfInfo = sizeof(EFI_GRAPHICS_OUTPUT_MODE_INFORMATION); + This->Mode->Info->VerticalResolution = ModeData->VerticalResolution; + This->Mode->SizeOfInfo = sizeof (EFI_GRAPHICS_OUTPUT_MODE_INFORMATION); QemuVideoCompleteModeData (Private, This->Mode); @@ -189,7 +195,7 @@ Routine Description: // Re-initialize the frame buffer configure when mode changes. // Status = FrameBufferBltConfigure ( - (VOID*) (UINTN) This->Mode->FrameBufferBase, + (VOID *)(UINTN)This->Mode->FrameBufferBase, This->Mode->Info, Private->FrameBufferBltConfigure, &Private->FrameBufferBltConfigureSize @@ -201,6 +207,7 @@ Routine Description: if (Private->FrameBufferBltConfigure != NULL) { FreePool (Private->FrameBufferBltConfigure); } + Private->FrameBufferBltConfigure = AllocatePool (Private->FrameBufferBltConfigureSize); ASSERT (Private->FrameBufferBltConfigure != NULL); @@ -209,12 +216,13 @@ Routine Description: // Create the configuration for FrameBufferBltLib // Status = FrameBufferBltConfigure ( - (VOID*) (UINTN) This->Mode->FrameBufferBase, - This->Mode->Info, - Private->FrameBufferBltConfigure, - &Private->FrameBufferBltConfigureSize - ); + (VOID *)(UINTN)This->Mode->FrameBufferBase, + This->Mode->Info, + Private->FrameBufferBltConfigure, + &Private->FrameBufferBltConfigureSize + ); } + ASSERT (Status == RETURN_SUCCESS); // @@ -225,9 +233,12 @@ Routine Description: Private->FrameBufferBltConfigure, &Black, EfiBltVideoFill, - 0, 0, - 0, 0, - This->Mode->Info->HorizontalResolution, This->Mode->Info->VerticalResolution, + 0, + 0, + 0, + 0, + This->Mode->Info->HorizontalResolution, + This->Mode->Info->VerticalResolution, 0 ); ASSERT_RETURN_ERROR (Status); @@ -238,17 +249,18 @@ Routine Description: EFI_STATUS EFIAPI QemuVideoGraphicsOutputBlt ( - IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This, - IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer OPTIONAL, - IN EFI_GRAPHICS_OUTPUT_BLT_OPERATION BltOperation, - IN UINTN SourceX, - IN UINTN SourceY, - IN UINTN DestinationX, - IN UINTN DestinationY, - IN UINTN Width, - IN UINTN Height, - IN UINTN Delta + IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This, + IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer OPTIONAL, + IN EFI_GRAPHICS_OUTPUT_BLT_OPERATION BltOperation, + IN UINTN SourceX, + IN UINTN SourceY, + IN UINTN DestinationX, + IN UINTN DestinationY, + IN UINTN Width, + IN UINTN Height, + IN UINTN Delta ) + /*++ Routine Description: @@ -278,9 +290,9 @@ Returns: --*/ { - EFI_STATUS Status; - EFI_TPL OriginalTPL; - QEMU_VIDEO_PRIVATE_DATA *Private; + EFI_STATUS Status; + EFI_TPL OriginalTPL; + QEMU_VIDEO_PRIVATE_DATA *Private; Private = QEMU_VIDEO_PRIVATE_DATA_FROM_GRAPHICS_OUTPUT_THIS (This); // @@ -291,27 +303,27 @@ Returns: OriginalTPL = gBS->RaiseTPL (TPL_NOTIFY); switch (BltOperation) { - case EfiBltVideoToBltBuffer: - case EfiBltBufferToVideo: - case EfiBltVideoFill: - case EfiBltVideoToVideo: - Status = FrameBufferBlt ( - Private->FrameBufferBltConfigure, - BltBuffer, - BltOperation, - SourceX, - SourceY, - DestinationX, - DestinationY, - Width, - Height, - Delta - ); - break; - - default: - Status = EFI_INVALID_PARAMETER; - break; + case EfiBltVideoToBltBuffer: + case EfiBltBufferToVideo: + case EfiBltVideoFill: + case EfiBltVideoToVideo: + Status = FrameBufferBlt ( + Private->FrameBufferBltConfigure, + BltBuffer, + BltOperation, + SourceX, + SourceY, + DestinationX, + DestinationY, + Width, + Height, + Delta + ); + break; + + default: + Status = EFI_INVALID_PARAMETER; + break; } gBS->RestoreTPL (OriginalTPL); @@ -324,9 +336,8 @@ QemuVideoGraphicsOutputConstructor ( QEMU_VIDEO_PRIVATE_DATA *Private ) { - EFI_STATUS Status; - EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput; - + EFI_STATUS Status; + EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput; GraphicsOutput = &Private->GraphicsOutput; GraphicsOutput->QueryMode = QemuVideoGraphicsOutputQueryMode; @@ -339,7 +350,7 @@ QemuVideoGraphicsOutputConstructor ( Status = gBS->AllocatePool ( EfiBootServicesData, sizeof (EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE), - (VOID **) &Private->GraphicsOutput.Mode + (VOID **)&Private->GraphicsOutput.Mode ); if (EFI_ERROR (Status)) { return Status; @@ -348,12 +359,13 @@ QemuVideoGraphicsOutputConstructor ( Status = gBS->AllocatePool ( EfiBootServicesData, sizeof (EFI_GRAPHICS_OUTPUT_MODE_INFORMATION), - (VOID **) &Private->GraphicsOutput.Mode->Info + (VOID **)&Private->GraphicsOutput.Mode->Info ); if (EFI_ERROR (Status)) { goto FreeMode; } - Private->GraphicsOutput.Mode->MaxMode = (UINT32) Private->MaxMode; + + Private->GraphicsOutput.Mode->MaxMode = (UINT32)Private->MaxMode; Private->GraphicsOutput.Mode->Mode = GRAPHICS_OUTPUT_INVALIDE_MODE_NUMBER; Private->FrameBufferBltConfigure = NULL; Private->FrameBufferBltConfigureSize = 0; @@ -388,6 +400,7 @@ EFI_STATUS QemuVideoGraphicsOutputDestructor ( QEMU_VIDEO_PRIVATE_DATA *Private ) + /*++ Routine Description: @@ -408,6 +421,7 @@ Returns: if (Private->GraphicsOutput.Mode->Info != NULL) { gBS->FreePool (Private->GraphicsOutput.Mode->Info); } + gBS->FreePool (Private->GraphicsOutput.Mode); } diff --git a/OvmfPkg/QemuVideoDxe/Initialize.c b/OvmfPkg/QemuVideoDxe/Initialize.c index b5a5660ed2..533ec661d6 100644 --- a/OvmfPkg/QemuVideoDxe/Initialize.c +++ b/OvmfPkg/QemuVideoDxe/Initialize.c @@ -9,7 +9,6 @@ #include "Qemu.h" - /// /// Generic Attribute Controller Register Settings /// @@ -22,33 +21,33 @@ UINT8 AttributeController[21] = { /// /// Generic Graphics Controller Register Settings /// -UINT8 GraphicsController[9] = { +UINT8 GraphicsController[9] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0x0F, 0xFF }; // // 640 x 480 x 256 color @ 60 Hertz // -UINT8 Crtc_640_480_256_60[28] = { +UINT8 Crtc_640_480_256_60[28] = { 0x5d, 0x4f, 0x50, 0x82, 0x53, 0x9f, 0x00, 0x3e, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe1, 0x83, 0xdf, 0x50, 0x00, 0xe7, 0x04, 0xe3, 0xff, 0x00, 0x00, 0x22 }; -UINT8 Crtc_640_480_32bpp_60[28] = { +UINT8 Crtc_640_480_32bpp_60[28] = { 0x5d, 0x4f, 0x50, 0x82, 0x53, 0x9f, 0x00, 0x3e, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe1, 0x83, 0xdf, 0x40, 0x00, 0xe7, 0x04, 0xe3, 0xff, 0x00, 0x00, 0x32 }; -UINT16 Seq_640_480_256_60[15] = { +UINT16 Seq_640_480_256_60[15] = { 0x0100, 0x0101, 0x0f02, 0x0003, 0x0e04, 0x1107, 0x0008, 0x4a0b, 0x5b0c, 0x450d, 0x7e0e, 0x2b1b, 0x2f1c, 0x301d, 0x331e }; -UINT16 Seq_640_480_32bpp_60[15] = { +UINT16 Seq_640_480_32bpp_60[15] = { 0x0100, 0x0101, 0x0f02, 0x0003, 0x0e04, 0x1907, 0x0008, 0x4a0b, 0x5b0c, 0x450d, 0x7e0e, 0x2b1b, 0x2f1c, 0x301d, 0x331e }; @@ -56,38 +55,38 @@ UINT16 Seq_640_480_32bpp_60[15] = { // // 800 x 600 x 256 color @ 60 Hertz // -UINT8 Crtc_800_600_256_60[28] = { +UINT8 Crtc_800_600_256_60[28] = { 0x7F, 0x63, 0x64, 0x80, 0x6B, 0x1B, 0x72, 0xF0, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x8C, 0x57, 0x64, 0x00, 0x5F, 0x91, 0xE3, 0xFF, 0x00, 0x00, 0x22 }; -UINT8 Crtc_800_600_32bpp_60[28] = { +UINT8 Crtc_800_600_32bpp_60[28] = { 0x7F, 0x63, 0x64, 0x80, 0x6B, 0x1B, 0x72, 0xF0, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x8C, 0x57, 0x90, 0x00, 0x5F, 0x91, 0xE3, 0xFF, 0x00, 0x00, 0x32 }; -UINT16 Seq_800_600_256_60[15] = { +UINT16 Seq_800_600_256_60[15] = { 0x0100, 0x0101, 0x0f02, 0x0003, 0x0e04, 0x1107, 0x0008, 0x4a0b, 0x5b0c, 0x450d, 0x510e, 0x2b1b, 0x2f1c, 0x301d, 0x3a1e }; -UINT16 Seq_800_600_32bpp_60[15] = { +UINT16 Seq_800_600_32bpp_60[15] = { 0x0100, 0x0101, 0x0f02, 0x0003, 0x0e04, 0x1907, 0x0008, 0x4a0b, 0x5b0c, 0x450d, 0x510e, 0x2b1b, 0x2f1c, 0x301d, 0x3a1e }; -UINT8 Crtc_960_720_32bpp_60[28] = { +UINT8 Crtc_960_720_32bpp_60[28] = { 0xA3, 0x77, 0x80, 0x86, 0x85, 0x96, 0x24, 0xFD, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x88, 0xCF, 0xe0, 0x00, 0x00, 0x64, 0xE3, 0xFF, 0x4A, 0x00, 0x32 }; -UINT16 Seq_960_720_32bpp_60[15] = { +UINT16 Seq_960_720_32bpp_60[15] = { 0x0100, 0x0101, 0x0f02, 0x0003, 0x0e04, 0x1907, 0x0008, 0x4a0b, 0x5b0c, 0x450d, 0x760e, 0x2b1b, 0x2f1c, 0x301d, 0x341e }; @@ -95,14 +94,14 @@ UINT16 Seq_960_720_32bpp_60[15] = { // // 1024 x 768 x 256 color @ 60 Hertz // -UINT8 Crtc_1024_768_256_60[28] = { +UINT8 Crtc_1024_768_256_60[28] = { 0xA3, 0x7F, 0x80, 0x86, 0x85, 0x96, 0x24, 0xFD, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x88, 0xFF, 0x80, 0x00, 0x00, 0x24, 0xE3, 0xFF, 0x4A, 0x00, 0x22 }; -UINT16 Seq_1024_768_256_60[15] = { +UINT16 Seq_1024_768_256_60[15] = { 0x0100, 0x0101, 0x0f02, 0x0003, 0x0e04, 0x1107, 0x0008, 0x4a0b, 0x5b0c, 0x450d, 0x760e, 0x2b1b, 0x2f1c, 0x301d, 0x341e }; @@ -110,26 +109,26 @@ UINT16 Seq_1024_768_256_60[15] = { // // 1024 x 768 x 24-bit color @ 60 Hertz // -UINT8 Crtc_1024_768_24bpp_60[28] = { +UINT8 Crtc_1024_768_24bpp_60[28] = { 0xA3, 0x7F, 0x80, 0x86, 0x85, 0x96, 0x24, 0xFD, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x88, 0xFF, 0x80, 0x00, 0x00, 0x24, 0xE3, 0xFF, 0x4A, 0x00, 0x32 }; -UINT16 Seq_1024_768_24bpp_60[15] = { +UINT16 Seq_1024_768_24bpp_60[15] = { 0x0100, 0x0101, 0x0f02, 0x0003, 0x0e04, 0x1507, 0x0008, 0x4a0b, 0x5b0c, 0x450d, 0x760e, 0x2b1b, 0x2f1c, 0x301d, 0x341e }; -UINT8 Crtc_1024_768_32bpp_60[28] = { +UINT8 Crtc_1024_768_32bpp_60[28] = { 0xA3, 0x7F, 0x80, 0x86, 0x85, 0x96, 0x24, 0xFD, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x88, 0xFF, 0xe0, 0x00, 0x00, 0x64, 0xE3, 0xFF, 0x4A, 0x00, 0x32 }; -UINT16 Seq_1024_768_32bpp_60[15] = { +UINT16 Seq_1024_768_32bpp_60[15] = { 0x0100, 0x0101, 0x0f02, 0x0003, 0x0e04, 0x1907, 0x0008, 0x4a0b, 0x5b0c, 0x450d, 0x760e, 0x2b1b, 0x2f1c, 0x301d, 0x341e }; @@ -138,14 +137,14 @@ UINT16 Seq_1024_768_32bpp_60[15] = { /// Table of supported video modes /// QEMU_VIDEO_CIRRUS_MODES QemuVideoCirrusModes[] = { -// { 640, 480, 8, Crtc_640_480_256_60, Seq_640_480_256_60, 0xe3 }, -// { 800, 600, 8, Crtc_800_600_256_60, Seq_800_600_256_60, 0xef }, - { 640, 480, 32, Crtc_640_480_32bpp_60, Seq_640_480_32bpp_60, 0xef }, - { 800, 600, 32, Crtc_800_600_32bpp_60, Seq_800_600_32bpp_60, 0xef }, -// { 1024, 768, 8, Crtc_1024_768_256_60, Seq_1024_768_256_60, 0xef } + // { 640, 480, 8, Crtc_640_480_256_60, Seq_640_480_256_60, 0xe3 }, + // { 800, 600, 8, Crtc_800_600_256_60, Seq_800_600_256_60, 0xef }, + { 640, 480, 32, Crtc_640_480_32bpp_60, Seq_640_480_32bpp_60, 0xef }, + { 800, 600, 32, Crtc_800_600_32bpp_60, Seq_800_600_32bpp_60, 0xef }, + // { 1024, 768, 8, Crtc_1024_768_256_60, Seq_1024_768_256_60, 0xef } { 1024, 768, 24, Crtc_1024_768_24bpp_60, Seq_1024_768_24bpp_60, 0xef } -// { 1024, 768, 32, Crtc_1024_768_32bpp_60, Seq_1024_768_32bpp_60, 0xef } -// { 960, 720, 32, Crtc_960_720_32bpp_60, Seq_1024_768_32bpp_60, 0xef } + // { 1024, 768, 32, Crtc_1024_768_32bpp_60, Seq_1024_768_32bpp_60, 0xef } + // { 960, 720, 32, Crtc_960_720_32bpp_60, Seq_1024_768_32bpp_60, 0xef } }; #define QEMU_VIDEO_CIRRUS_MODE_COUNT \ @@ -160,9 +159,9 @@ QemuVideoCirrusModeSetup ( QEMU_VIDEO_PRIVATE_DATA *Private ) { - UINT32 Index; - QEMU_VIDEO_MODE_DATA *ModeData; - QEMU_VIDEO_CIRRUS_MODES *VideoMode; + UINT32 Index; + QEMU_VIDEO_MODE_DATA *ModeData; + QEMU_VIDEO_CIRRUS_MODES *VideoMode; // // Setup Video Modes @@ -173,25 +172,28 @@ QemuVideoCirrusModeSetup ( if (Private->ModeData == NULL) { return EFI_OUT_OF_RESOURCES; } - ModeData = Private->ModeData; + + ModeData = Private->ModeData; VideoMode = &QemuVideoCirrusModes[0]; - for (Index = 0; Index < QEMU_VIDEO_CIRRUS_MODE_COUNT; Index ++) { - ModeData->InternalModeIndex = Index; - ModeData->HorizontalResolution = VideoMode->Width; - ModeData->VerticalResolution = VideoMode->Height; - ModeData->ColorDepth = VideoMode->ColorDepth; - DEBUG ((DEBUG_INFO, + for (Index = 0; Index < QEMU_VIDEO_CIRRUS_MODE_COUNT; Index++) { + ModeData->InternalModeIndex = Index; + ModeData->HorizontalResolution = VideoMode->Width; + ModeData->VerticalResolution = VideoMode->Height; + ModeData->ColorDepth = VideoMode->ColorDepth; + DEBUG (( + DEBUG_INFO, "Adding Mode %d as Cirrus Internal Mode %d: %dx%d, %d-bit\n", - (INT32) (ModeData - Private->ModeData), + (INT32)(ModeData - Private->ModeData), ModeData->InternalModeIndex, ModeData->HorizontalResolution, ModeData->VerticalResolution, ModeData->ColorDepth )); - ModeData ++ ; - VideoMode ++; + ModeData++; + VideoMode++; } + Private->MaxMode = ModeData - Private->ModeData; return EFI_SUCCESS; @@ -201,26 +203,26 @@ QemuVideoCirrusModeSetup ( /// Table of supported video modes /// QEMU_VIDEO_BOCHS_MODES QemuVideoBochsModes[] = { - { 640, 480, 32 }, - { 800, 480, 32 }, - { 800, 600, 32 }, - { 832, 624, 32 }, - { 960, 640, 32 }, - { 1024, 600, 32 }, - { 1024, 768, 32 }, - { 1152, 864, 32 }, - { 1152, 870, 32 }, - { 1280, 720, 32 }, - { 1280, 760, 32 }, - { 1280, 768, 32 }, - { 1280, 800, 32 }, - { 1280, 960, 32 }, + { 640, 480, 32 }, + { 800, 480, 32 }, + { 800, 600, 32 }, + { 832, 624, 32 }, + { 960, 640, 32 }, + { 1024, 600, 32 }, + { 1024, 768, 32 }, + { 1152, 864, 32 }, + { 1152, 870, 32 }, + { 1280, 720, 32 }, + { 1280, 760, 32 }, + { 1280, 768, 32 }, + { 1280, 800, 32 }, + { 1280, 960, 32 }, { 1280, 1024, 32 }, - { 1360, 768, 32 }, - { 1366, 768, 32 }, + { 1360, 768, 32 }, + { 1366, 768, 32 }, { 1400, 1050, 32 }, - { 1440, 900, 32 }, - { 1600, 900, 32 }, + { 1440, 900, 32 }, + { 1600, 900, 32 }, { 1600, 1200, 32 }, { 1680, 1050, 32 }, { 1920, 1080, 32 }, @@ -249,10 +251,10 @@ QemuVideoBochsModeSetup ( BOOLEAN IsQxl ) { - UINT32 AvailableFbSize; - UINT32 Index; - QEMU_VIDEO_MODE_DATA *ModeData; - QEMU_VIDEO_BOCHS_MODES *VideoMode; + UINT32 AvailableFbSize; + UINT32 Index; + QEMU_VIDEO_MODE_DATA *ModeData; + QEMU_VIDEO_BOCHS_MODES *VideoMode; // // Fetch the available framebuffer size. @@ -272,33 +274,64 @@ QemuVideoBochsModeSetup ( // where it is also available. // if (IsQxl) { - UINT32 Signature; - UINT32 DrawStart; + UINT32 Signature; + UINT32 DrawStart; - Signature = 0; - DrawStart = 0xFFFFFFFF; + Signature = 0; + DrawStart = 0xFFFFFFFF; AvailableFbSize = 0; if (EFI_ERROR ( - Private->PciIo->Mem.Read (Private->PciIo, EfiPciIoWidthUint32, - PCI_BAR_IDX2, 0, 1, &Signature)) || - Signature != SIGNATURE_32 ('Q', 'X', 'R', 'O') || + Private->PciIo->Mem.Read ( + Private->PciIo, + EfiPciIoWidthUint32, + PCI_BAR_IDX2, + 0, + 1, + &Signature + ) + ) || + (Signature != SIGNATURE_32 ('Q', 'X', 'R', 'O')) || EFI_ERROR ( - Private->PciIo->Mem.Read (Private->PciIo, EfiPciIoWidthUint32, - PCI_BAR_IDX2, 36, 1, &DrawStart)) || - DrawStart != 0 || + Private->PciIo->Mem.Read ( + Private->PciIo, + EfiPciIoWidthUint32, + PCI_BAR_IDX2, + 36, + 1, + &DrawStart + ) + ) || + (DrawStart != 0) || EFI_ERROR ( - Private->PciIo->Mem.Read (Private->PciIo, EfiPciIoWidthUint32, - PCI_BAR_IDX2, 40, 1, &AvailableFbSize))) { - DEBUG ((DEBUG_ERROR, "%a: can't read size of drawable buffer from QXL " - "ROM\n", __FUNCTION__)); + Private->PciIo->Mem.Read ( + Private->PciIo, + EfiPciIoWidthUint32, + PCI_BAR_IDX2, + 40, + 1, + &AvailableFbSize + ) + )) + { + DEBUG (( + DEBUG_ERROR, + "%a: can't read size of drawable buffer from QXL " + "ROM\n", + __FUNCTION__ + )); return EFI_NOT_FOUND; } } else { AvailableFbSize = BochsRead (Private, VBE_DISPI_INDEX_VIDEO_MEMORY_64K); AvailableFbSize *= SIZE_64KB; } - DEBUG ((DEBUG_INFO, "%a: AvailableFbSize=0x%x\n", __FUNCTION__, - AvailableFbSize)); + + DEBUG (( + DEBUG_INFO, + "%a: AvailableFbSize=0x%x\n", + __FUNCTION__, + AvailableFbSize + )); // // Setup Video Modes @@ -309,34 +342,37 @@ QemuVideoBochsModeSetup ( if (Private->ModeData == NULL) { return EFI_OUT_OF_RESOURCES; } - ModeData = Private->ModeData; + + ModeData = Private->ModeData; VideoMode = &QemuVideoBochsModes[0]; - for (Index = 0; Index < QEMU_VIDEO_BOCHS_MODE_COUNT; Index ++) { - UINTN RequiredFbSize; + for (Index = 0; Index < QEMU_VIDEO_BOCHS_MODE_COUNT; Index++) { + UINTN RequiredFbSize; ASSERT (VideoMode->ColorDepth % 8 == 0); - RequiredFbSize = (UINTN) VideoMode->Width * VideoMode->Height * + RequiredFbSize = (UINTN)VideoMode->Width * VideoMode->Height * (VideoMode->ColorDepth / 8); if (RequiredFbSize <= AvailableFbSize) { ModeData->InternalModeIndex = Index; ModeData->HorizontalResolution = VideoMode->Width; ModeData->VerticalResolution = VideoMode->Height; ModeData->ColorDepth = VideoMode->ColorDepth; - DEBUG ((DEBUG_INFO, + DEBUG (( + DEBUG_INFO, "Adding Mode %d as Bochs Internal Mode %d: %dx%d, %d-bit\n", - (INT32) (ModeData - Private->ModeData), + (INT32)(ModeData - Private->ModeData), ModeData->InternalModeIndex, ModeData->HorizontalResolution, ModeData->VerticalResolution, ModeData->ColorDepth )); - ModeData ++ ; + ModeData++; } - VideoMode ++; + + VideoMode++; } + Private->MaxMode = ModeData - Private->ModeData; return EFI_SUCCESS; } - diff --git a/OvmfPkg/QemuVideoDxe/Qemu.h b/OvmfPkg/QemuVideoDxe/Qemu.h index 87c933935f..8f05898f86 100644 --- a/OvmfPkg/QemuVideoDxe/Qemu.h +++ b/OvmfPkg/QemuVideoDxe/Qemu.h @@ -13,7 +13,6 @@ #ifndef _QEMU_H_ #define _QEMU_H_ - #include #include #include @@ -37,33 +36,33 @@ // // QEMU Video PCI Configuration Header values // -#define CIRRUS_LOGIC_VENDOR_ID 0x1013 -#define CIRRUS_LOGIC_5430_DEVICE_ID 0x00a8 -#define CIRRUS_LOGIC_5430_ALTERNATE_DEVICE_ID 0x00a0 -#define CIRRUS_LOGIC_5446_DEVICE_ID 0x00b8 +#define CIRRUS_LOGIC_VENDOR_ID 0x1013 +#define CIRRUS_LOGIC_5430_DEVICE_ID 0x00a8 +#define CIRRUS_LOGIC_5430_ALTERNATE_DEVICE_ID 0x00a0 +#define CIRRUS_LOGIC_5446_DEVICE_ID 0x00b8 // // QEMU Vide Graphical Mode Data // typedef struct { - UINT32 InternalModeIndex; // points into card-specific mode table - UINT32 HorizontalResolution; - UINT32 VerticalResolution; - UINT32 ColorDepth; + UINT32 InternalModeIndex; // points into card-specific mode table + UINT32 HorizontalResolution; + UINT32 VerticalResolution; + UINT32 ColorDepth; } QEMU_VIDEO_MODE_DATA; -#define PIXEL_RED_SHIFT 0 -#define PIXEL_GREEN_SHIFT 3 -#define PIXEL_BLUE_SHIFT 6 +#define PIXEL_RED_SHIFT 0 +#define PIXEL_GREEN_SHIFT 3 +#define PIXEL_BLUE_SHIFT 6 #define PIXEL_RED_MASK (BIT7 | BIT6 | BIT5) #define PIXEL_GREEN_MASK (BIT4 | BIT3 | BIT2) #define PIXEL_BLUE_MASK (BIT1 | BIT0) -#define PIXEL_TO_COLOR_BYTE(pixel, mask, shift) ((UINT8) ((pixel & mask) << shift)) -#define PIXEL_TO_RED_BYTE(pixel) PIXEL_TO_COLOR_BYTE(pixel, PIXEL_RED_MASK, PIXEL_RED_SHIFT) -#define PIXEL_TO_GREEN_BYTE(pixel) PIXEL_TO_COLOR_BYTE(pixel, PIXEL_GREEN_MASK, PIXEL_GREEN_SHIFT) -#define PIXEL_TO_BLUE_BYTE(pixel) PIXEL_TO_COLOR_BYTE(pixel, PIXEL_BLUE_MASK, PIXEL_BLUE_SHIFT) +#define PIXEL_TO_COLOR_BYTE(pixel, mask, shift) ((UINT8) ((pixel & mask) << shift)) +#define PIXEL_TO_RED_BYTE(pixel) PIXEL_TO_COLOR_BYTE(pixel, PIXEL_RED_MASK, PIXEL_RED_SHIFT) +#define PIXEL_TO_GREEN_BYTE(pixel) PIXEL_TO_COLOR_BYTE(pixel, PIXEL_GREEN_MASK, PIXEL_GREEN_SHIFT) +#define PIXEL_TO_BLUE_BYTE(pixel) PIXEL_TO_COLOR_BYTE(pixel, PIXEL_BLUE_MASK, PIXEL_BLUE_SHIFT) #define RGB_BYTES_TO_PIXEL(Red, Green, Blue) \ (UINT8) ( (((Red) >> PIXEL_RED_SHIFT) & PIXEL_RED_MASK) | \ @@ -90,117 +89,116 @@ typedef enum { } QEMU_VIDEO_VARIANT; typedef struct { - UINT8 SubClass; - UINT16 VendorId; - UINT16 DeviceId; - QEMU_VIDEO_VARIANT Variant; - CHAR16 *Name; + UINT8 SubClass; + UINT16 VendorId; + UINT16 DeviceId; + QEMU_VIDEO_VARIANT Variant; + CHAR16 *Name; } QEMU_VIDEO_CARD; typedef struct { - UINT64 Signature; - EFI_HANDLE Handle; - EFI_PCI_IO_PROTOCOL *PciIo; - UINT64 OriginalPciAttributes; - EFI_GRAPHICS_OUTPUT_PROTOCOL GraphicsOutput; - EFI_DEVICE_PATH_PROTOCOL *GopDevicePath; + UINT64 Signature; + EFI_HANDLE Handle; + EFI_PCI_IO_PROTOCOL *PciIo; + UINT64 OriginalPciAttributes; + EFI_GRAPHICS_OUTPUT_PROTOCOL GraphicsOutput; + EFI_DEVICE_PATH_PROTOCOL *GopDevicePath; // // The next two fields match the client-visible // EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE.MaxMode field. // - UINTN MaxMode; - QEMU_VIDEO_MODE_DATA *ModeData; + UINTN MaxMode; + QEMU_VIDEO_MODE_DATA *ModeData; - QEMU_VIDEO_VARIANT Variant; - FRAME_BUFFER_CONFIGURE *FrameBufferBltConfigure; - UINTN FrameBufferBltConfigureSize; - UINT8 FrameBufferVramBarIndex; + QEMU_VIDEO_VARIANT Variant; + FRAME_BUFFER_CONFIGURE *FrameBufferBltConfigure; + UINTN FrameBufferBltConfigureSize; + UINT8 FrameBufferVramBarIndex; } QEMU_VIDEO_PRIVATE_DATA; /// /// Card-specific Video Mode structures /// typedef struct { - UINT32 Width; - UINT32 Height; - UINT32 ColorDepth; - UINT8 *CrtcSettings; - UINT16 *SeqSettings; - UINT8 MiscSetting; + UINT32 Width; + UINT32 Height; + UINT32 ColorDepth; + UINT8 *CrtcSettings; + UINT16 *SeqSettings; + UINT8 MiscSetting; } QEMU_VIDEO_CIRRUS_MODES; typedef struct { - UINT32 Width; - UINT32 Height; - UINT32 ColorDepth; + UINT32 Width; + UINT32 Height; + UINT32 ColorDepth; } QEMU_VIDEO_BOCHS_MODES; #define QEMU_VIDEO_PRIVATE_DATA_FROM_GRAPHICS_OUTPUT_THIS(a) \ CR(a, QEMU_VIDEO_PRIVATE_DATA, GraphicsOutput, QEMU_VIDEO_PRIVATE_DATA_SIGNATURE) - // // Global Variables // -extern UINT8 AttributeController[]; -extern UINT8 GraphicsController[]; -extern UINT8 Crtc_640_480_256_60[]; -extern UINT16 Seq_640_480_256_60[]; -extern UINT8 Crtc_800_600_256_60[]; -extern UINT16 Seq_800_600_256_60[]; -extern UINT8 Crtc_1024_768_256_60[]; -extern UINT16 Seq_1024_768_256_60[]; -extern QEMU_VIDEO_CIRRUS_MODES QemuVideoCirrusModes[]; -extern QEMU_VIDEO_BOCHS_MODES QemuVideoBochsModes[]; -extern EFI_DRIVER_BINDING_PROTOCOL gQemuVideoDriverBinding; -extern EFI_COMPONENT_NAME_PROTOCOL gQemuVideoComponentName; -extern EFI_COMPONENT_NAME2_PROTOCOL gQemuVideoComponentName2; +extern UINT8 AttributeController[]; +extern UINT8 GraphicsController[]; +extern UINT8 Crtc_640_480_256_60[]; +extern UINT16 Seq_640_480_256_60[]; +extern UINT8 Crtc_800_600_256_60[]; +extern UINT16 Seq_800_600_256_60[]; +extern UINT8 Crtc_1024_768_256_60[]; +extern UINT16 Seq_1024_768_256_60[]; +extern QEMU_VIDEO_CIRRUS_MODES QemuVideoCirrusModes[]; +extern QEMU_VIDEO_BOCHS_MODES QemuVideoBochsModes[]; +extern EFI_DRIVER_BINDING_PROTOCOL gQemuVideoDriverBinding; +extern EFI_COMPONENT_NAME_PROTOCOL gQemuVideoComponentName; +extern EFI_COMPONENT_NAME2_PROTOCOL gQemuVideoComponentName2; // // Io Registers defined by VGA // -#define CRTC_ADDRESS_REGISTER 0x3d4 -#define CRTC_DATA_REGISTER 0x3d5 -#define SEQ_ADDRESS_REGISTER 0x3c4 -#define SEQ_DATA_REGISTER 0x3c5 -#define GRAPH_ADDRESS_REGISTER 0x3ce -#define GRAPH_DATA_REGISTER 0x3cf -#define ATT_ADDRESS_REGISTER 0x3c0 -#define MISC_OUTPUT_REGISTER 0x3c2 -#define INPUT_STATUS_1_REGISTER 0x3da -#define DAC_PIXEL_MASK_REGISTER 0x3c6 -#define PALETTE_INDEX_REGISTER 0x3c8 -#define PALETTE_DATA_REGISTER 0x3c9 - -#define VBE_DISPI_IOPORT_INDEX 0x01CE -#define VBE_DISPI_IOPORT_DATA 0x01D0 - -#define VBE_DISPI_INDEX_ID 0x0 -#define VBE_DISPI_INDEX_XRES 0x1 -#define VBE_DISPI_INDEX_YRES 0x2 -#define VBE_DISPI_INDEX_BPP 0x3 -#define VBE_DISPI_INDEX_ENABLE 0x4 -#define VBE_DISPI_INDEX_BANK 0x5 -#define VBE_DISPI_INDEX_VIRT_WIDTH 0x6 -#define VBE_DISPI_INDEX_VIRT_HEIGHT 0x7 -#define VBE_DISPI_INDEX_X_OFFSET 0x8 -#define VBE_DISPI_INDEX_Y_OFFSET 0x9 -#define VBE_DISPI_INDEX_VIDEO_MEMORY_64K 0xa - -#define VBE_DISPI_ID0 0xB0C0 -#define VBE_DISPI_ID1 0xB0C1 -#define VBE_DISPI_ID2 0xB0C2 -#define VBE_DISPI_ID3 0xB0C3 -#define VBE_DISPI_ID4 0xB0C4 -#define VBE_DISPI_ID5 0xB0C5 - -#define VBE_DISPI_DISABLED 0x00 -#define VBE_DISPI_ENABLED 0x01 -#define VBE_DISPI_GETCAPS 0x02 -#define VBE_DISPI_8BIT_DAC 0x20 -#define VBE_DISPI_LFB_ENABLED 0x40 -#define VBE_DISPI_NOCLEARMEM 0x80 +#define CRTC_ADDRESS_REGISTER 0x3d4 +#define CRTC_DATA_REGISTER 0x3d5 +#define SEQ_ADDRESS_REGISTER 0x3c4 +#define SEQ_DATA_REGISTER 0x3c5 +#define GRAPH_ADDRESS_REGISTER 0x3ce +#define GRAPH_DATA_REGISTER 0x3cf +#define ATT_ADDRESS_REGISTER 0x3c0 +#define MISC_OUTPUT_REGISTER 0x3c2 +#define INPUT_STATUS_1_REGISTER 0x3da +#define DAC_PIXEL_MASK_REGISTER 0x3c6 +#define PALETTE_INDEX_REGISTER 0x3c8 +#define PALETTE_DATA_REGISTER 0x3c9 + +#define VBE_DISPI_IOPORT_INDEX 0x01CE +#define VBE_DISPI_IOPORT_DATA 0x01D0 + +#define VBE_DISPI_INDEX_ID 0x0 +#define VBE_DISPI_INDEX_XRES 0x1 +#define VBE_DISPI_INDEX_YRES 0x2 +#define VBE_DISPI_INDEX_BPP 0x3 +#define VBE_DISPI_INDEX_ENABLE 0x4 +#define VBE_DISPI_INDEX_BANK 0x5 +#define VBE_DISPI_INDEX_VIRT_WIDTH 0x6 +#define VBE_DISPI_INDEX_VIRT_HEIGHT 0x7 +#define VBE_DISPI_INDEX_X_OFFSET 0x8 +#define VBE_DISPI_INDEX_Y_OFFSET 0x9 +#define VBE_DISPI_INDEX_VIDEO_MEMORY_64K 0xa + +#define VBE_DISPI_ID0 0xB0C0 +#define VBE_DISPI_ID1 0xB0C1 +#define VBE_DISPI_ID2 0xB0C2 +#define VBE_DISPI_ID3 0xB0C3 +#define VBE_DISPI_ID4 0xB0C4 +#define VBE_DISPI_ID5 0xB0C5 + +#define VBE_DISPI_DISABLED 0x00 +#define VBE_DISPI_ENABLED 0x01 +#define VBE_DISPI_GETCAPS 0x02 +#define VBE_DISPI_8BIT_DAC 0x20 +#define VBE_DISPI_LFB_ENABLED 0x40 +#define VBE_DISPI_NOCLEARMEM 0x80 // // Graphics Output Hardware abstraction internal worker functions @@ -215,10 +213,10 @@ QemuVideoGraphicsOutputDestructor ( QEMU_VIDEO_PRIVATE_DATA *Private ); - // // EFI_DRIVER_BINDING_PROTOCOL Protocol Interface // + /** TODO: Add function description @@ -278,6 +276,7 @@ QemuVideoControllerDriverStop ( // // EFI Component Name Functions // + /** Retrieves a Unicode string that is the user readable name of the driver. @@ -325,7 +324,6 @@ QemuVideoComponentNameGetDriverName ( OUT CHAR16 **DriverName ); - /** Retrieves a Unicode string that is the user readable name of the controller that is being managed by a driver. @@ -397,14 +395,13 @@ QemuVideoComponentNameGetDriverName ( EFI_STATUS EFIAPI QemuVideoComponentNameGetControllerName ( - IN EFI_COMPONENT_NAME_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE ChildHandle OPTIONAL, - IN CHAR8 *Language, - OUT CHAR16 **ControllerName + IN EFI_COMPONENT_NAME_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE ChildHandle OPTIONAL, + IN CHAR8 *Language, + OUT CHAR16 **ControllerName ); - // // Local Function Prototypes // @@ -423,10 +420,10 @@ InitializeBochsGraphicsMode ( VOID SetPaletteColor ( QEMU_VIDEO_PRIVATE_DATA *Private, - UINTN Index, - UINT8 Red, - UINT8 Green, - UINT8 Blue + UINTN Index, + UINT8 Red, + UINT8 Green, + UINT8 Blue ); VOID @@ -437,34 +434,34 @@ SetDefaultPalette ( VOID DrawLogo ( QEMU_VIDEO_PRIVATE_DATA *Private, - UINTN ScreenWidth, - UINTN ScreenHeight + UINTN ScreenWidth, + UINTN ScreenHeight ); VOID outb ( QEMU_VIDEO_PRIVATE_DATA *Private, - UINTN Address, - UINT8 Data + UINTN Address, + UINT8 Data ); VOID outw ( QEMU_VIDEO_PRIVATE_DATA *Private, - UINTN Address, - UINT16 Data + UINTN Address, + UINT16 Data ); UINT8 inb ( QEMU_VIDEO_PRIVATE_DATA *Private, - UINTN Address + UINTN Address ); UINT16 inw ( QEMU_VIDEO_PRIVATE_DATA *Private, - UINTN Address + UINTN Address ); VOID @@ -500,7 +497,8 @@ QemuVideoBochsModeSetup ( VOID InstallVbeShim ( - IN CONST CHAR16 *CardName, - IN EFI_PHYSICAL_ADDRESS FrameBufferBase + IN CONST CHAR16 *CardName, + IN EFI_PHYSICAL_ADDRESS FrameBufferBase ); + #endif diff --git a/OvmfPkg/QemuVideoDxe/VbeShim.c b/OvmfPkg/QemuVideoDxe/VbeShim.c index 048ffa7058..8faa146b6c 100644 --- a/OvmfPkg/QemuVideoDxe/VbeShim.c +++ b/OvmfPkg/QemuVideoDxe/VbeShim.c @@ -26,8 +26,8 @@ #pragma pack (1) typedef struct { - UINT16 Offset; - UINT16 Segment; + UINT16 Offset; + UINT16 Segment; } IVT_ENTRY; #pragma pack () @@ -35,7 +35,7 @@ typedef struct { // This string is displayed by Windows 2008 R2 SP1 in the Screen Resolution, // Advanced Settings dialog. It should be short. // -STATIC CONST CHAR8 mProductRevision[] = "OVMF Int10h (fake)"; +STATIC CONST CHAR8 mProductRevision[] = "OVMF Int10h (fake)"; /** Install the VBE Info and VBE Mode Info structures, and the VBE service @@ -51,23 +51,23 @@ STATIC CONST CHAR8 mProductRevision[] = "OVMF Int10h (fake)"; **/ VOID InstallVbeShim ( - IN CONST CHAR16 *CardName, - IN EFI_PHYSICAL_ADDRESS FrameBufferBase + IN CONST CHAR16 *CardName, + IN EFI_PHYSICAL_ADDRESS FrameBufferBase ) { - EFI_PHYSICAL_ADDRESS Segment0, SegmentC, SegmentF; - UINTN Segment0Pages; - IVT_ENTRY *Int0x10; - EFI_STATUS Segment0AllocationStatus; - UINT16 HostBridgeDevId; - UINTN Pam1Address; - UINT8 Pam1; - UINTN SegmentCPages; - VBE_INFO *VbeInfoFull; - VBE_INFO_BASE *VbeInfo; - UINT8 *Ptr; - UINTN Printed; - VBE_MODE_INFO *VbeModeInfo; + EFI_PHYSICAL_ADDRESS Segment0, SegmentC, SegmentF; + UINTN Segment0Pages; + IVT_ENTRY *Int0x10; + EFI_STATUS Segment0AllocationStatus; + UINT16 HostBridgeDevId; + UINTN Pam1Address; + UINT8 Pam1; + UINTN SegmentCPages; + VBE_INFO *VbeInfoFull; + VBE_INFO_BASE *VbeInfo; + UINT8 *Ptr; + UINTN Printed; + VBE_MODE_INFO *VbeModeInfo; if ((PcdGet8 (PcdNullPointerDetectionPropertyMask) & (BIT0|BIT7)) == BIT0) { DEBUG (( @@ -95,8 +95,8 @@ InstallVbeShim ( // // The allocation request may fail, eg. if LegacyBiosDxe has already run. // - Segment0Pages = 1; - Int0x10 = (IVT_ENTRY *)(UINTN)(Segment0 + 0x10 * sizeof (IVT_ENTRY)); + Segment0Pages = 1; + Int0x10 = (IVT_ENTRY *)(UINTN)(Segment0 + 0x10 * sizeof (IVT_ENTRY)); Segment0AllocationStatus = gBS->AllocatePages ( AllocateAddress, EfiBootServicesCode, @@ -105,7 +105,7 @@ InstallVbeShim ( ); if (EFI_ERROR (Segment0AllocationStatus)) { - EFI_PHYSICAL_ADDRESS Handler; + EFI_PHYSICAL_ADDRESS Handler; // // Check if a video BIOS handler has been installed previously -- we @@ -113,9 +113,14 @@ InstallVbeShim ( // it's already present. // Handler = (Int0x10->Segment << 4) + Int0x10->Offset; - if (Handler >= SegmentC && Handler < SegmentF) { - DEBUG ((DEBUG_INFO, "%a: Video BIOS handler found at %04x:%04x\n", - __FUNCTION__, Int0x10->Segment, Int0x10->Offset)); + if ((Handler >= SegmentC) && (Handler < SegmentF)) { + DEBUG (( + DEBUG_INFO, + "%a: Video BIOS handler found at %04x:%04x\n", + __FUNCTION__, + Int0x10->Segment, + Int0x10->Offset + )); return; } @@ -145,26 +150,28 @@ InstallVbeShim ( // HostBridgeDevId = PcdGet16 (PcdOvmfHostBridgePciDevId); switch (HostBridgeDevId) { - case INTEL_82441_DEVICE_ID: - Pam1Address = PMC_REGISTER_PIIX4 (PIIX4_PAM1); - break; - case INTEL_Q35_MCH_DEVICE_ID: - Pam1Address = DRAMC_REGISTER_Q35 (MCH_PAM1); - break; - default: - DEBUG (( - DEBUG_ERROR, - "%a: unknown host bridge device ID: 0x%04x\n", - __FUNCTION__, - HostBridgeDevId - )); - ASSERT (FALSE); + case INTEL_82441_DEVICE_ID: + Pam1Address = PMC_REGISTER_PIIX4 (PIIX4_PAM1); + break; + case INTEL_Q35_MCH_DEVICE_ID: + Pam1Address = DRAMC_REGISTER_Q35 (MCH_PAM1); + break; + default: + DEBUG (( + DEBUG_ERROR, + "%a: unknown host bridge device ID: 0x%04x\n", + __FUNCTION__, + HostBridgeDevId + )); + ASSERT (FALSE); + + if (!EFI_ERROR (Segment0AllocationStatus)) { + gBS->FreePages (Segment0, Segment0Pages); + } - if (!EFI_ERROR (Segment0AllocationStatus)) { - gBS->FreePages (Segment0, Segment0Pages); - } - return; + return; } + // // low nibble covers 0xC0000 to 0xC3FFF // high nibble covers 0xC4000 to 0xC7FFF @@ -201,12 +208,12 @@ InstallVbeShim ( VbeInfo->Capabilities = BIT0; // DAC can be switched into 8-bit mode VbeInfo->ModeListAddress = (UINT32)SegmentC << 12 | (UINT16)(UINTN)Ptr; - *(UINT16*)Ptr = 0x00f1; // mode number - Ptr += 2; - *(UINT16*)Ptr = 0xFFFF; // mode list terminator - Ptr += 2; + *(UINT16 *)Ptr = 0x00f1; // mode number + Ptr += 2; + *(UINT16 *)Ptr = 0xFFFF; // mode list terminator + Ptr += 2; - VbeInfo->VideoMem64K = (UINT16)((1024 * 768 * 4 + 65535) / 65536); + VbeInfo->VideoMem64K = (UINT16)((1024 * 768 * 4 + 65535) / 65536); VbeInfo->OemSoftwareVersion = 0x0000; VbeInfo->VendorNameAddress = (UINT32)SegmentC << 12 | (UINT16)(UINTN)Ptr; @@ -214,9 +221,12 @@ InstallVbeShim ( Ptr += 5; VbeInfo->ProductNameAddress = (UINT32)SegmentC << 12 | (UINT16)(UINTN)Ptr; - Printed = AsciiSPrint ((CHAR8 *)Ptr, - sizeof VbeInfoFull->Buffer - (Ptr - VbeInfoFull->Buffer), "%s", - CardName); + Printed = AsciiSPrint ( + (CHAR8 *)Ptr, + sizeof VbeInfoFull->Buffer - (Ptr - VbeInfoFull->Buffer), + "%s", + CardName + ); Ptr += Printed + 1; VbeInfo->ProductRevAddress = (UINT32)SegmentC << 12 | (UINT16)(UINTN)Ptr; @@ -246,7 +256,7 @@ InstallVbeShim ( // bit1: bit1: readable // bit2: writeable // - VbeModeInfo->WindowAAttr = BIT2 | BIT1 | BIT0; + VbeModeInfo->WindowAAttr = BIT2 | BIT1 | BIT0; VbeModeInfo->WindowBAttr = 0x00; VbeModeInfo->WindowGranularityKB = 0x0040; @@ -309,8 +319,8 @@ InstallVbeShim ( // // Second, point the Int10h vector at the shim. // - Int0x10->Segment = (UINT16) ((UINT32)SegmentC >> 4); - Int0x10->Offset = (UINT16) ((UINTN) (VbeModeInfo + 1) - SegmentC); + Int0x10->Segment = (UINT16)((UINT32)SegmentC >> 4); + Int0x10->Offset = (UINT16)((UINTN)(VbeModeInfo + 1) - SegmentC); DEBUG ((DEBUG_INFO, "%a: VBE shim installed\n", __FUNCTION__)); } diff --git a/OvmfPkg/QemuVideoDxe/VbeShim.h b/OvmfPkg/QemuVideoDxe/VbeShim.h index cc9b6e14cd..f72e18843f 100644 --- a/OvmfPkg/QemuVideoDxe/VbeShim.h +++ b/OvmfPkg/QemuVideoDxe/VbeShim.h @@ -1,701 +1,702 @@ // // THIS FILE WAS GENERATED BY "VbeShim.sh". DO NOT EDIT. // + #ifndef _VBE_SHIM_H_ #define _VBE_SHIM_H_ -STATIC CONST UINT8 mVbeShim[] = { - /* 00000000 nop */ 0x90, - /* 00000001 nop */ 0x90, - /* 00000002 nop */ 0x90, - /* 00000003 nop */ 0x90, - /* 00000004 nop */ 0x90, - /* 00000005 nop */ 0x90, - /* 00000006 nop */ 0x90, - /* 00000007 nop */ 0x90, - /* 00000008 nop */ 0x90, - /* 00000009 nop */ 0x90, - /* 0000000A nop */ 0x90, - /* 0000000B nop */ 0x90, - /* 0000000C nop */ 0x90, - /* 0000000D nop */ 0x90, - /* 0000000E nop */ 0x90, - /* 0000000F nop */ 0x90, - /* 00000010 nop */ 0x90, - /* 00000011 nop */ 0x90, - /* 00000012 nop */ 0x90, - /* 00000013 nop */ 0x90, - /* 00000014 nop */ 0x90, - /* 00000015 nop */ 0x90, - /* 00000016 nop */ 0x90, - /* 00000017 nop */ 0x90, - /* 00000018 nop */ 0x90, - /* 00000019 nop */ 0x90, - /* 0000001A nop */ 0x90, - /* 0000001B nop */ 0x90, - /* 0000001C nop */ 0x90, - /* 0000001D nop */ 0x90, - /* 0000001E nop */ 0x90, - /* 0000001F nop */ 0x90, - /* 00000020 nop */ 0x90, - /* 00000021 nop */ 0x90, - /* 00000022 nop */ 0x90, - /* 00000023 nop */ 0x90, - /* 00000024 nop */ 0x90, - /* 00000025 nop */ 0x90, - /* 00000026 nop */ 0x90, - /* 00000027 nop */ 0x90, - /* 00000028 nop */ 0x90, - /* 00000029 nop */ 0x90, - /* 0000002A nop */ 0x90, - /* 0000002B nop */ 0x90, - /* 0000002C nop */ 0x90, - /* 0000002D nop */ 0x90, - /* 0000002E nop */ 0x90, - /* 0000002F nop */ 0x90, - /* 00000030 nop */ 0x90, - /* 00000031 nop */ 0x90, - /* 00000032 nop */ 0x90, - /* 00000033 nop */ 0x90, - /* 00000034 nop */ 0x90, - /* 00000035 nop */ 0x90, - /* 00000036 nop */ 0x90, - /* 00000037 nop */ 0x90, - /* 00000038 nop */ 0x90, - /* 00000039 nop */ 0x90, - /* 0000003A nop */ 0x90, - /* 0000003B nop */ 0x90, - /* 0000003C nop */ 0x90, - /* 0000003D nop */ 0x90, - /* 0000003E nop */ 0x90, - /* 0000003F nop */ 0x90, - /* 00000040 nop */ 0x90, - /* 00000041 nop */ 0x90, - /* 00000042 nop */ 0x90, - /* 00000043 nop */ 0x90, - /* 00000044 nop */ 0x90, - /* 00000045 nop */ 0x90, - /* 00000046 nop */ 0x90, - /* 00000047 nop */ 0x90, - /* 00000048 nop */ 0x90, - /* 00000049 nop */ 0x90, - /* 0000004A nop */ 0x90, - /* 0000004B nop */ 0x90, - /* 0000004C nop */ 0x90, - /* 0000004D nop */ 0x90, - /* 0000004E nop */ 0x90, - /* 0000004F nop */ 0x90, - /* 00000050 nop */ 0x90, - /* 00000051 nop */ 0x90, - /* 00000052 nop */ 0x90, - /* 00000053 nop */ 0x90, - /* 00000054 nop */ 0x90, - /* 00000055 nop */ 0x90, - /* 00000056 nop */ 0x90, - /* 00000057 nop */ 0x90, - /* 00000058 nop */ 0x90, - /* 00000059 nop */ 0x90, - /* 0000005A nop */ 0x90, - /* 0000005B nop */ 0x90, - /* 0000005C nop */ 0x90, - /* 0000005D nop */ 0x90, - /* 0000005E nop */ 0x90, - /* 0000005F nop */ 0x90, - /* 00000060 nop */ 0x90, - /* 00000061 nop */ 0x90, - /* 00000062 nop */ 0x90, - /* 00000063 nop */ 0x90, - /* 00000064 nop */ 0x90, - /* 00000065 nop */ 0x90, - /* 00000066 nop */ 0x90, - /* 00000067 nop */ 0x90, - /* 00000068 nop */ 0x90, - /* 00000069 nop */ 0x90, - /* 0000006A nop */ 0x90, - /* 0000006B nop */ 0x90, - /* 0000006C nop */ 0x90, - /* 0000006D nop */ 0x90, - /* 0000006E nop */ 0x90, - /* 0000006F nop */ 0x90, - /* 00000070 nop */ 0x90, - /* 00000071 nop */ 0x90, - /* 00000072 nop */ 0x90, - /* 00000073 nop */ 0x90, - /* 00000074 nop */ 0x90, - /* 00000075 nop */ 0x90, - /* 00000076 nop */ 0x90, - /* 00000077 nop */ 0x90, - /* 00000078 nop */ 0x90, - /* 00000079 nop */ 0x90, - /* 0000007A nop */ 0x90, - /* 0000007B nop */ 0x90, - /* 0000007C nop */ 0x90, - /* 0000007D nop */ 0x90, - /* 0000007E nop */ 0x90, - /* 0000007F nop */ 0x90, - /* 00000080 nop */ 0x90, - /* 00000081 nop */ 0x90, - /* 00000082 nop */ 0x90, - /* 00000083 nop */ 0x90, - /* 00000084 nop */ 0x90, - /* 00000085 nop */ 0x90, - /* 00000086 nop */ 0x90, - /* 00000087 nop */ 0x90, - /* 00000088 nop */ 0x90, - /* 00000089 nop */ 0x90, - /* 0000008A nop */ 0x90, - /* 0000008B nop */ 0x90, - /* 0000008C nop */ 0x90, - /* 0000008D nop */ 0x90, - /* 0000008E nop */ 0x90, - /* 0000008F nop */ 0x90, - /* 00000090 nop */ 0x90, - /* 00000091 nop */ 0x90, - /* 00000092 nop */ 0x90, - /* 00000093 nop */ 0x90, - /* 00000094 nop */ 0x90, - /* 00000095 nop */ 0x90, - /* 00000096 nop */ 0x90, - /* 00000097 nop */ 0x90, - /* 00000098 nop */ 0x90, - /* 00000099 nop */ 0x90, - /* 0000009A nop */ 0x90, - /* 0000009B nop */ 0x90, - /* 0000009C nop */ 0x90, - /* 0000009D nop */ 0x90, - /* 0000009E nop */ 0x90, - /* 0000009F nop */ 0x90, - /* 000000A0 nop */ 0x90, - /* 000000A1 nop */ 0x90, - /* 000000A2 nop */ 0x90, - /* 000000A3 nop */ 0x90, - /* 000000A4 nop */ 0x90, - /* 000000A5 nop */ 0x90, - /* 000000A6 nop */ 0x90, - /* 000000A7 nop */ 0x90, - /* 000000A8 nop */ 0x90, - /* 000000A9 nop */ 0x90, - /* 000000AA nop */ 0x90, - /* 000000AB nop */ 0x90, - /* 000000AC nop */ 0x90, - /* 000000AD nop */ 0x90, - /* 000000AE nop */ 0x90, - /* 000000AF nop */ 0x90, - /* 000000B0 nop */ 0x90, - /* 000000B1 nop */ 0x90, - /* 000000B2 nop */ 0x90, - /* 000000B3 nop */ 0x90, - /* 000000B4 nop */ 0x90, - /* 000000B5 nop */ 0x90, - /* 000000B6 nop */ 0x90, - /* 000000B7 nop */ 0x90, - /* 000000B8 nop */ 0x90, - /* 000000B9 nop */ 0x90, - /* 000000BA nop */ 0x90, - /* 000000BB nop */ 0x90, - /* 000000BC nop */ 0x90, - /* 000000BD nop */ 0x90, - /* 000000BE nop */ 0x90, - /* 000000BF nop */ 0x90, - /* 000000C0 nop */ 0x90, - /* 000000C1 nop */ 0x90, - /* 000000C2 nop */ 0x90, - /* 000000C3 nop */ 0x90, - /* 000000C4 nop */ 0x90, - /* 000000C5 nop */ 0x90, - /* 000000C6 nop */ 0x90, - /* 000000C7 nop */ 0x90, - /* 000000C8 nop */ 0x90, - /* 000000C9 nop */ 0x90, - /* 000000CA nop */ 0x90, - /* 000000CB nop */ 0x90, - /* 000000CC nop */ 0x90, - /* 000000CD nop */ 0x90, - /* 000000CE nop */ 0x90, - /* 000000CF nop */ 0x90, - /* 000000D0 nop */ 0x90, - /* 000000D1 nop */ 0x90, - /* 000000D2 nop */ 0x90, - /* 000000D3 nop */ 0x90, - /* 000000D4 nop */ 0x90, - /* 000000D5 nop */ 0x90, - /* 000000D6 nop */ 0x90, - /* 000000D7 nop */ 0x90, - /* 000000D8 nop */ 0x90, - /* 000000D9 nop */ 0x90, - /* 000000DA nop */ 0x90, - /* 000000DB nop */ 0x90, - /* 000000DC nop */ 0x90, - /* 000000DD nop */ 0x90, - /* 000000DE nop */ 0x90, - /* 000000DF nop */ 0x90, - /* 000000E0 nop */ 0x90, - /* 000000E1 nop */ 0x90, - /* 000000E2 nop */ 0x90, - /* 000000E3 nop */ 0x90, - /* 000000E4 nop */ 0x90, - /* 000000E5 nop */ 0x90, - /* 000000E6 nop */ 0x90, - /* 000000E7 nop */ 0x90, - /* 000000E8 nop */ 0x90, - /* 000000E9 nop */ 0x90, - /* 000000EA nop */ 0x90, - /* 000000EB nop */ 0x90, - /* 000000EC nop */ 0x90, - /* 000000ED nop */ 0x90, - /* 000000EE nop */ 0x90, - /* 000000EF nop */ 0x90, - /* 000000F0 nop */ 0x90, - /* 000000F1 nop */ 0x90, - /* 000000F2 nop */ 0x90, - /* 000000F3 nop */ 0x90, - /* 000000F4 nop */ 0x90, - /* 000000F5 nop */ 0x90, - /* 000000F6 nop */ 0x90, - /* 000000F7 nop */ 0x90, - /* 000000F8 nop */ 0x90, - /* 000000F9 nop */ 0x90, - /* 000000FA nop */ 0x90, - /* 000000FB nop */ 0x90, - /* 000000FC nop */ 0x90, - /* 000000FD nop */ 0x90, - /* 000000FE nop */ 0x90, - /* 000000FF nop */ 0x90, - /* 00000100 nop */ 0x90, - /* 00000101 nop */ 0x90, - /* 00000102 nop */ 0x90, - /* 00000103 nop */ 0x90, - /* 00000104 nop */ 0x90, - /* 00000105 nop */ 0x90, - /* 00000106 nop */ 0x90, - /* 00000107 nop */ 0x90, - /* 00000108 nop */ 0x90, - /* 00000109 nop */ 0x90, - /* 0000010A nop */ 0x90, - /* 0000010B nop */ 0x90, - /* 0000010C nop */ 0x90, - /* 0000010D nop */ 0x90, - /* 0000010E nop */ 0x90, - /* 0000010F nop */ 0x90, - /* 00000110 nop */ 0x90, - /* 00000111 nop */ 0x90, - /* 00000112 nop */ 0x90, - /* 00000113 nop */ 0x90, - /* 00000114 nop */ 0x90, - /* 00000115 nop */ 0x90, - /* 00000116 nop */ 0x90, - /* 00000117 nop */ 0x90, - /* 00000118 nop */ 0x90, - /* 00000119 nop */ 0x90, - /* 0000011A nop */ 0x90, - /* 0000011B nop */ 0x90, - /* 0000011C nop */ 0x90, - /* 0000011D nop */ 0x90, - /* 0000011E nop */ 0x90, - /* 0000011F nop */ 0x90, - /* 00000120 nop */ 0x90, - /* 00000121 nop */ 0x90, - /* 00000122 nop */ 0x90, - /* 00000123 nop */ 0x90, - /* 00000124 nop */ 0x90, - /* 00000125 nop */ 0x90, - /* 00000126 nop */ 0x90, - /* 00000127 nop */ 0x90, - /* 00000128 nop */ 0x90, - /* 00000129 nop */ 0x90, - /* 0000012A nop */ 0x90, - /* 0000012B nop */ 0x90, - /* 0000012C nop */ 0x90, - /* 0000012D nop */ 0x90, - /* 0000012E nop */ 0x90, - /* 0000012F nop */ 0x90, - /* 00000130 nop */ 0x90, - /* 00000131 nop */ 0x90, - /* 00000132 nop */ 0x90, - /* 00000133 nop */ 0x90, - /* 00000134 nop */ 0x90, - /* 00000135 nop */ 0x90, - /* 00000136 nop */ 0x90, - /* 00000137 nop */ 0x90, - /* 00000138 nop */ 0x90, - /* 00000139 nop */ 0x90, - /* 0000013A nop */ 0x90, - /* 0000013B nop */ 0x90, - /* 0000013C nop */ 0x90, - /* 0000013D nop */ 0x90, - /* 0000013E nop */ 0x90, - /* 0000013F nop */ 0x90, - /* 00000140 nop */ 0x90, - /* 00000141 nop */ 0x90, - /* 00000142 nop */ 0x90, - /* 00000143 nop */ 0x90, - /* 00000144 nop */ 0x90, - /* 00000145 nop */ 0x90, - /* 00000146 nop */ 0x90, - /* 00000147 nop */ 0x90, - /* 00000148 nop */ 0x90, - /* 00000149 nop */ 0x90, - /* 0000014A nop */ 0x90, - /* 0000014B nop */ 0x90, - /* 0000014C nop */ 0x90, - /* 0000014D nop */ 0x90, - /* 0000014E nop */ 0x90, - /* 0000014F nop */ 0x90, - /* 00000150 nop */ 0x90, - /* 00000151 nop */ 0x90, - /* 00000152 nop */ 0x90, - /* 00000153 nop */ 0x90, - /* 00000154 nop */ 0x90, - /* 00000155 nop */ 0x90, - /* 00000156 nop */ 0x90, - /* 00000157 nop */ 0x90, - /* 00000158 nop */ 0x90, - /* 00000159 nop */ 0x90, - /* 0000015A nop */ 0x90, - /* 0000015B nop */ 0x90, - /* 0000015C nop */ 0x90, - /* 0000015D nop */ 0x90, - /* 0000015E nop */ 0x90, - /* 0000015F nop */ 0x90, - /* 00000160 nop */ 0x90, - /* 00000161 nop */ 0x90, - /* 00000162 nop */ 0x90, - /* 00000163 nop */ 0x90, - /* 00000164 nop */ 0x90, - /* 00000165 nop */ 0x90, - /* 00000166 nop */ 0x90, - /* 00000167 nop */ 0x90, - /* 00000168 nop */ 0x90, - /* 00000169 nop */ 0x90, - /* 0000016A nop */ 0x90, - /* 0000016B nop */ 0x90, - /* 0000016C nop */ 0x90, - /* 0000016D nop */ 0x90, - /* 0000016E nop */ 0x90, - /* 0000016F nop */ 0x90, - /* 00000170 nop */ 0x90, - /* 00000171 nop */ 0x90, - /* 00000172 nop */ 0x90, - /* 00000173 nop */ 0x90, - /* 00000174 nop */ 0x90, - /* 00000175 nop */ 0x90, - /* 00000176 nop */ 0x90, - /* 00000177 nop */ 0x90, - /* 00000178 nop */ 0x90, - /* 00000179 nop */ 0x90, - /* 0000017A nop */ 0x90, - /* 0000017B nop */ 0x90, - /* 0000017C nop */ 0x90, - /* 0000017D nop */ 0x90, - /* 0000017E nop */ 0x90, - /* 0000017F nop */ 0x90, - /* 00000180 nop */ 0x90, - /* 00000181 nop */ 0x90, - /* 00000182 nop */ 0x90, - /* 00000183 nop */ 0x90, - /* 00000184 nop */ 0x90, - /* 00000185 nop */ 0x90, - /* 00000186 nop */ 0x90, - /* 00000187 nop */ 0x90, - /* 00000188 nop */ 0x90, - /* 00000189 nop */ 0x90, - /* 0000018A nop */ 0x90, - /* 0000018B nop */ 0x90, - /* 0000018C nop */ 0x90, - /* 0000018D nop */ 0x90, - /* 0000018E nop */ 0x90, - /* 0000018F nop */ 0x90, - /* 00000190 nop */ 0x90, - /* 00000191 nop */ 0x90, - /* 00000192 nop */ 0x90, - /* 00000193 nop */ 0x90, - /* 00000194 nop */ 0x90, - /* 00000195 nop */ 0x90, - /* 00000196 nop */ 0x90, - /* 00000197 nop */ 0x90, - /* 00000198 nop */ 0x90, - /* 00000199 nop */ 0x90, - /* 0000019A nop */ 0x90, - /* 0000019B nop */ 0x90, - /* 0000019C nop */ 0x90, - /* 0000019D nop */ 0x90, - /* 0000019E nop */ 0x90, - /* 0000019F nop */ 0x90, - /* 000001A0 nop */ 0x90, - /* 000001A1 nop */ 0x90, - /* 000001A2 nop */ 0x90, - /* 000001A3 nop */ 0x90, - /* 000001A4 nop */ 0x90, - /* 000001A5 nop */ 0x90, - /* 000001A6 nop */ 0x90, - /* 000001A7 nop */ 0x90, - /* 000001A8 nop */ 0x90, - /* 000001A9 nop */ 0x90, - /* 000001AA nop */ 0x90, - /* 000001AB nop */ 0x90, - /* 000001AC nop */ 0x90, - /* 000001AD nop */ 0x90, - /* 000001AE nop */ 0x90, - /* 000001AF nop */ 0x90, - /* 000001B0 nop */ 0x90, - /* 000001B1 nop */ 0x90, - /* 000001B2 nop */ 0x90, - /* 000001B3 nop */ 0x90, - /* 000001B4 nop */ 0x90, - /* 000001B5 nop */ 0x90, - /* 000001B6 nop */ 0x90, - /* 000001B7 nop */ 0x90, - /* 000001B8 nop */ 0x90, - /* 000001B9 nop */ 0x90, - /* 000001BA nop */ 0x90, - /* 000001BB nop */ 0x90, - /* 000001BC nop */ 0x90, - /* 000001BD nop */ 0x90, - /* 000001BE nop */ 0x90, - /* 000001BF nop */ 0x90, - /* 000001C0 nop */ 0x90, - /* 000001C1 nop */ 0x90, - /* 000001C2 nop */ 0x90, - /* 000001C3 nop */ 0x90, - /* 000001C4 nop */ 0x90, - /* 000001C5 nop */ 0x90, - /* 000001C6 nop */ 0x90, - /* 000001C7 nop */ 0x90, - /* 000001C8 nop */ 0x90, - /* 000001C9 nop */ 0x90, - /* 000001CA nop */ 0x90, - /* 000001CB nop */ 0x90, - /* 000001CC nop */ 0x90, - /* 000001CD nop */ 0x90, - /* 000001CE nop */ 0x90, - /* 000001CF nop */ 0x90, - /* 000001D0 nop */ 0x90, - /* 000001D1 nop */ 0x90, - /* 000001D2 nop */ 0x90, - /* 000001D3 nop */ 0x90, - /* 000001D4 nop */ 0x90, - /* 000001D5 nop */ 0x90, - /* 000001D6 nop */ 0x90, - /* 000001D7 nop */ 0x90, - /* 000001D8 nop */ 0x90, - /* 000001D9 nop */ 0x90, - /* 000001DA nop */ 0x90, - /* 000001DB nop */ 0x90, - /* 000001DC nop */ 0x90, - /* 000001DD nop */ 0x90, - /* 000001DE nop */ 0x90, - /* 000001DF nop */ 0x90, - /* 000001E0 nop */ 0x90, - /* 000001E1 nop */ 0x90, - /* 000001E2 nop */ 0x90, - /* 000001E3 nop */ 0x90, - /* 000001E4 nop */ 0x90, - /* 000001E5 nop */ 0x90, - /* 000001E6 nop */ 0x90, - /* 000001E7 nop */ 0x90, - /* 000001E8 nop */ 0x90, - /* 000001E9 nop */ 0x90, - /* 000001EA nop */ 0x90, - /* 000001EB nop */ 0x90, - /* 000001EC nop */ 0x90, - /* 000001ED nop */ 0x90, - /* 000001EE nop */ 0x90, - /* 000001EF nop */ 0x90, - /* 000001F0 nop */ 0x90, - /* 000001F1 nop */ 0x90, - /* 000001F2 nop */ 0x90, - /* 000001F3 nop */ 0x90, - /* 000001F4 nop */ 0x90, - /* 000001F5 nop */ 0x90, - /* 000001F6 nop */ 0x90, - /* 000001F7 nop */ 0x90, - /* 000001F8 nop */ 0x90, - /* 000001F9 nop */ 0x90, - /* 000001FA nop */ 0x90, - /* 000001FB nop */ 0x90, - /* 000001FC nop */ 0x90, - /* 000001FD nop */ 0x90, - /* 000001FE nop */ 0x90, - /* 000001FF nop */ 0x90, - /* 00000200 cmp ax,0x4f00 */ 0x3D, 0x00, 0x4F, - /* 00000203 jz 0x22d */ 0x74, 0x28, - /* 00000205 cmp ax,0x4f01 */ 0x3D, 0x01, 0x4F, - /* 00000208 jz 0x245 */ 0x74, 0x3B, - /* 0000020A cmp ax,0x4f02 */ 0x3D, 0x02, 0x4F, - /* 0000020D jz 0x269 */ 0x74, 0x5A, - /* 0000020F cmp ax,0x4f03 */ 0x3D, 0x03, 0x4F, - /* 00000212 jz word 0x331 */ 0x0F, 0x84, 0x1B, 0x01, - /* 00000216 cmp ax,0x4f10 */ 0x3D, 0x10, 0x4F, - /* 00000219 jz word 0x336 */ 0x0F, 0x84, 0x19, 0x01, - /* 0000021D cmp ax,0x4f15 */ 0x3D, 0x15, 0x4F, - /* 00000220 jz word 0x338 */ 0x0F, 0x84, 0x14, 0x01, - /* 00000224 cmp ah,0x0 */ 0x80, 0xFC, 0x00, - /* 00000227 jz word 0x33a */ 0x0F, 0x84, 0x0F, 0x01, - /* 0000022B jmp short 0x22b */ 0xEB, 0xFE, - /* 0000022D push es */ 0x06, - /* 0000022E push di */ 0x57, - /* 0000022F push ds */ 0x1E, - /* 00000230 push si */ 0x56, - /* 00000231 push cx */ 0x51, - /* 00000232 push cs */ 0x0E, - /* 00000233 pop ds */ 0x1F, - /* 00000234 mov si,0x0 */ 0xBE, 0x00, 0x00, - /* 00000237 mov cx,0x100 */ 0xB9, 0x00, 0x01, - /* 0000023A cld */ 0xFC, - /* 0000023B rep movsb */ 0xF3, 0xA4, - /* 0000023D pop cx */ 0x59, - /* 0000023E pop si */ 0x5E, - /* 0000023F pop ds */ 0x1F, - /* 00000240 pop di */ 0x5F, - /* 00000241 pop es */ 0x07, - /* 00000242 jmp word 0x34c */ 0xE9, 0x07, 0x01, - /* 00000245 push es */ 0x06, - /* 00000246 push di */ 0x57, - /* 00000247 push ds */ 0x1E, - /* 00000248 push si */ 0x56, - /* 00000249 push cx */ 0x51, - /* 0000024A and cx,0xbfff */ 0x81, 0xE1, 0xFF, 0xBF, - /* 0000024E cmp cx,0xf1 */ 0x81, 0xF9, 0xF1, 0x00, - /* 00000252 jz 0x256 */ 0x74, 0x02, - /* 00000254 jmp short 0x22b */ 0xEB, 0xD5, - /* 00000256 push cs */ 0x0E, - /* 00000257 pop ds */ 0x1F, - /* 00000258 mov si,0x100 */ 0xBE, 0x00, 0x01, - /* 0000025B mov cx,0x100 */ 0xB9, 0x00, 0x01, - /* 0000025E cld */ 0xFC, - /* 0000025F rep movsb */ 0xF3, 0xA4, - /* 00000261 pop cx */ 0x59, - /* 00000262 pop si */ 0x5E, - /* 00000263 pop ds */ 0x1F, - /* 00000264 pop di */ 0x5F, - /* 00000265 pop es */ 0x07, - /* 00000266 jmp word 0x34c */ 0xE9, 0xE3, 0x00, - /* 00000269 push dx */ 0x52, - /* 0000026A push ax */ 0x50, - /* 0000026B cmp bx,0x40f1 */ 0x81, 0xFB, 0xF1, 0x40, - /* 0000026F jz 0x273 */ 0x74, 0x02, - /* 00000271 jmp short 0x22b */ 0xEB, 0xB8, - /* 00000273 mov dx,0x3c0 */ 0xBA, 0xC0, 0x03, - /* 00000276 mov al,0x20 */ 0xB0, 0x20, - /* 00000278 out dx,al */ 0xEE, - /* 00000279 push dx */ 0x52, - /* 0000027A push ax */ 0x50, - /* 0000027B mov dx,0x1ce */ 0xBA, 0xCE, 0x01, - /* 0000027E mov ax,0x4 */ 0xB8, 0x04, 0x00, - /* 00000281 out dx,ax */ 0xEF, - /* 00000282 mov dx,0x1d0 */ 0xBA, 0xD0, 0x01, - /* 00000285 mov ax,0x0 */ 0xB8, 0x00, 0x00, - /* 00000288 out dx,ax */ 0xEF, - /* 00000289 pop ax */ 0x58, - /* 0000028A pop dx */ 0x5A, - /* 0000028B push dx */ 0x52, - /* 0000028C push ax */ 0x50, - /* 0000028D mov dx,0x1ce */ 0xBA, 0xCE, 0x01, - /* 00000290 mov ax,0x5 */ 0xB8, 0x05, 0x00, - /* 00000293 out dx,ax */ 0xEF, - /* 00000294 mov dx,0x1d0 */ 0xBA, 0xD0, 0x01, - /* 00000297 mov ax,0x0 */ 0xB8, 0x00, 0x00, - /* 0000029A out dx,ax */ 0xEF, - /* 0000029B pop ax */ 0x58, - /* 0000029C pop dx */ 0x5A, - /* 0000029D push dx */ 0x52, - /* 0000029E push ax */ 0x50, - /* 0000029F mov dx,0x1ce */ 0xBA, 0xCE, 0x01, - /* 000002A2 mov ax,0x8 */ 0xB8, 0x08, 0x00, - /* 000002A5 out dx,ax */ 0xEF, - /* 000002A6 mov dx,0x1d0 */ 0xBA, 0xD0, 0x01, - /* 000002A9 mov ax,0x0 */ 0xB8, 0x00, 0x00, - /* 000002AC out dx,ax */ 0xEF, - /* 000002AD pop ax */ 0x58, - /* 000002AE pop dx */ 0x5A, - /* 000002AF push dx */ 0x52, - /* 000002B0 push ax */ 0x50, - /* 000002B1 mov dx,0x1ce */ 0xBA, 0xCE, 0x01, - /* 000002B4 mov ax,0x9 */ 0xB8, 0x09, 0x00, - /* 000002B7 out dx,ax */ 0xEF, - /* 000002B8 mov dx,0x1d0 */ 0xBA, 0xD0, 0x01, - /* 000002BB mov ax,0x0 */ 0xB8, 0x00, 0x00, - /* 000002BE out dx,ax */ 0xEF, - /* 000002BF pop ax */ 0x58, - /* 000002C0 pop dx */ 0x5A, - /* 000002C1 push dx */ 0x52, - /* 000002C2 push ax */ 0x50, - /* 000002C3 mov dx,0x1ce */ 0xBA, 0xCE, 0x01, - /* 000002C6 mov ax,0x3 */ 0xB8, 0x03, 0x00, - /* 000002C9 out dx,ax */ 0xEF, - /* 000002CA mov dx,0x1d0 */ 0xBA, 0xD0, 0x01, - /* 000002CD mov ax,0x20 */ 0xB8, 0x20, 0x00, - /* 000002D0 out dx,ax */ 0xEF, - /* 000002D1 pop ax */ 0x58, - /* 000002D2 pop dx */ 0x5A, - /* 000002D3 push dx */ 0x52, - /* 000002D4 push ax */ 0x50, - /* 000002D5 mov dx,0x1ce */ 0xBA, 0xCE, 0x01, - /* 000002D8 mov ax,0x1 */ 0xB8, 0x01, 0x00, - /* 000002DB out dx,ax */ 0xEF, - /* 000002DC mov dx,0x1d0 */ 0xBA, 0xD0, 0x01, - /* 000002DF mov ax,0x400 */ 0xB8, 0x00, 0x04, - /* 000002E2 out dx,ax */ 0xEF, - /* 000002E3 pop ax */ 0x58, - /* 000002E4 pop dx */ 0x5A, - /* 000002E5 push dx */ 0x52, - /* 000002E6 push ax */ 0x50, - /* 000002E7 mov dx,0x1ce */ 0xBA, 0xCE, 0x01, - /* 000002EA mov ax,0x6 */ 0xB8, 0x06, 0x00, - /* 000002ED out dx,ax */ 0xEF, - /* 000002EE mov dx,0x1d0 */ 0xBA, 0xD0, 0x01, - /* 000002F1 mov ax,0x400 */ 0xB8, 0x00, 0x04, - /* 000002F4 out dx,ax */ 0xEF, - /* 000002F5 pop ax */ 0x58, - /* 000002F6 pop dx */ 0x5A, - /* 000002F7 push dx */ 0x52, - /* 000002F8 push ax */ 0x50, - /* 000002F9 mov dx,0x1ce */ 0xBA, 0xCE, 0x01, - /* 000002FC mov ax,0x2 */ 0xB8, 0x02, 0x00, - /* 000002FF out dx,ax */ 0xEF, - /* 00000300 mov dx,0x1d0 */ 0xBA, 0xD0, 0x01, - /* 00000303 mov ax,0x300 */ 0xB8, 0x00, 0x03, - /* 00000306 out dx,ax */ 0xEF, - /* 00000307 pop ax */ 0x58, - /* 00000308 pop dx */ 0x5A, - /* 00000309 push dx */ 0x52, - /* 0000030A push ax */ 0x50, - /* 0000030B mov dx,0x1ce */ 0xBA, 0xCE, 0x01, - /* 0000030E mov ax,0x7 */ 0xB8, 0x07, 0x00, - /* 00000311 out dx,ax */ 0xEF, - /* 00000312 mov dx,0x1d0 */ 0xBA, 0xD0, 0x01, - /* 00000315 mov ax,0x300 */ 0xB8, 0x00, 0x03, - /* 00000318 out dx,ax */ 0xEF, - /* 00000319 pop ax */ 0x58, - /* 0000031A pop dx */ 0x5A, - /* 0000031B push dx */ 0x52, - /* 0000031C push ax */ 0x50, - /* 0000031D mov dx,0x1ce */ 0xBA, 0xCE, 0x01, - /* 00000320 mov ax,0x4 */ 0xB8, 0x04, 0x00, - /* 00000323 out dx,ax */ 0xEF, - /* 00000324 mov dx,0x1d0 */ 0xBA, 0xD0, 0x01, - /* 00000327 mov ax,0x41 */ 0xB8, 0x41, 0x00, - /* 0000032A out dx,ax */ 0xEF, - /* 0000032B pop ax */ 0x58, - /* 0000032C pop dx */ 0x5A, - /* 0000032D pop ax */ 0x58, - /* 0000032E pop dx */ 0x5A, - /* 0000032F jmp short 0x34c */ 0xEB, 0x1B, - /* 00000331 mov bx,0x40f1 */ 0xBB, 0xF1, 0x40, - /* 00000334 jmp short 0x34c */ 0xEB, 0x16, - /* 00000336 jmp short 0x350 */ 0xEB, 0x18, - /* 00000338 jmp short 0x350 */ 0xEB, 0x16, - /* 0000033A cmp al,0x3 */ 0x3C, 0x03, - /* 0000033C jz 0x345 */ 0x74, 0x07, - /* 0000033E cmp al,0x12 */ 0x3C, 0x12, - /* 00000340 jz 0x349 */ 0x74, 0x07, - /* 00000342 jmp word 0x22b */ 0xE9, 0xE6, 0xFE, - /* 00000345 mov al,0x30 */ 0xB0, 0x30, - /* 00000347 jmp short 0x34b */ 0xEB, 0x02, - /* 00000349 mov al,0x20 */ 0xB0, 0x20, - /* 0000034B iretw */ 0xCF, - /* 0000034C mov ax,0x4f */ 0xB8, 0x4F, 0x00, - /* 0000034F iretw */ 0xCF, - /* 00000350 mov ax,0x14f */ 0xB8, 0x4F, 0x01, - /* 00000353 iretw */ 0xCF, +STATIC CONST UINT8 mVbeShim[] = { + /* 00000000 nop */ 0x90, + /* 00000001 nop */ 0x90, + /* 00000002 nop */ 0x90, + /* 00000003 nop */ 0x90, + /* 00000004 nop */ 0x90, + /* 00000005 nop */ 0x90, + /* 00000006 nop */ 0x90, + /* 00000007 nop */ 0x90, + /* 00000008 nop */ 0x90, + /* 00000009 nop */ 0x90, + /* 0000000A nop */ 0x90, + /* 0000000B nop */ 0x90, + /* 0000000C nop */ 0x90, + /* 0000000D nop */ 0x90, + /* 0000000E nop */ 0x90, + /* 0000000F nop */ 0x90, + /* 00000010 nop */ 0x90, + /* 00000011 nop */ 0x90, + /* 00000012 nop */ 0x90, + /* 00000013 nop */ 0x90, + /* 00000014 nop */ 0x90, + /* 00000015 nop */ 0x90, + /* 00000016 nop */ 0x90, + /* 00000017 nop */ 0x90, + /* 00000018 nop */ 0x90, + /* 00000019 nop */ 0x90, + /* 0000001A nop */ 0x90, + /* 0000001B nop */ 0x90, + /* 0000001C nop */ 0x90, + /* 0000001D nop */ 0x90, + /* 0000001E nop */ 0x90, + /* 0000001F nop */ 0x90, + /* 00000020 nop */ 0x90, + /* 00000021 nop */ 0x90, + /* 00000022 nop */ 0x90, + /* 00000023 nop */ 0x90, + /* 00000024 nop */ 0x90, + /* 00000025 nop */ 0x90, + /* 00000026 nop */ 0x90, + /* 00000027 nop */ 0x90, + /* 00000028 nop */ 0x90, + /* 00000029 nop */ 0x90, + /* 0000002A nop */ 0x90, + /* 0000002B nop */ 0x90, + /* 0000002C nop */ 0x90, + /* 0000002D nop */ 0x90, + /* 0000002E nop */ 0x90, + /* 0000002F nop */ 0x90, + /* 00000030 nop */ 0x90, + /* 00000031 nop */ 0x90, + /* 00000032 nop */ 0x90, + /* 00000033 nop */ 0x90, + /* 00000034 nop */ 0x90, + /* 00000035 nop */ 0x90, + /* 00000036 nop */ 0x90, + /* 00000037 nop */ 0x90, + /* 00000038 nop */ 0x90, + /* 00000039 nop */ 0x90, + /* 0000003A nop */ 0x90, + /* 0000003B nop */ 0x90, + /* 0000003C nop */ 0x90, + /* 0000003D nop */ 0x90, + /* 0000003E nop */ 0x90, + /* 0000003F nop */ 0x90, + /* 00000040 nop */ 0x90, + /* 00000041 nop */ 0x90, + /* 00000042 nop */ 0x90, + /* 00000043 nop */ 0x90, + /* 00000044 nop */ 0x90, + /* 00000045 nop */ 0x90, + /* 00000046 nop */ 0x90, + /* 00000047 nop */ 0x90, + /* 00000048 nop */ 0x90, + /* 00000049 nop */ 0x90, + /* 0000004A nop */ 0x90, + /* 0000004B nop */ 0x90, + /* 0000004C nop */ 0x90, + /* 0000004D nop */ 0x90, + /* 0000004E nop */ 0x90, + /* 0000004F nop */ 0x90, + /* 00000050 nop */ 0x90, + /* 00000051 nop */ 0x90, + /* 00000052 nop */ 0x90, + /* 00000053 nop */ 0x90, + /* 00000054 nop */ 0x90, + /* 00000055 nop */ 0x90, + /* 00000056 nop */ 0x90, + /* 00000057 nop */ 0x90, + /* 00000058 nop */ 0x90, + /* 00000059 nop */ 0x90, + /* 0000005A nop */ 0x90, + /* 0000005B nop */ 0x90, + /* 0000005C nop */ 0x90, + /* 0000005D nop */ 0x90, + /* 0000005E nop */ 0x90, + /* 0000005F nop */ 0x90, + /* 00000060 nop */ 0x90, + /* 00000061 nop */ 0x90, + /* 00000062 nop */ 0x90, + /* 00000063 nop */ 0x90, + /* 00000064 nop */ 0x90, + /* 00000065 nop */ 0x90, + /* 00000066 nop */ 0x90, + /* 00000067 nop */ 0x90, + /* 00000068 nop */ 0x90, + /* 00000069 nop */ 0x90, + /* 0000006A nop */ 0x90, + /* 0000006B nop */ 0x90, + /* 0000006C nop */ 0x90, + /* 0000006D nop */ 0x90, + /* 0000006E nop */ 0x90, + /* 0000006F nop */ 0x90, + /* 00000070 nop */ 0x90, + /* 00000071 nop */ 0x90, + /* 00000072 nop */ 0x90, + /* 00000073 nop */ 0x90, + /* 00000074 nop */ 0x90, + /* 00000075 nop */ 0x90, + /* 00000076 nop */ 0x90, + /* 00000077 nop */ 0x90, + /* 00000078 nop */ 0x90, + /* 00000079 nop */ 0x90, + /* 0000007A nop */ 0x90, + /* 0000007B nop */ 0x90, + /* 0000007C nop */ 0x90, + /* 0000007D nop */ 0x90, + /* 0000007E nop */ 0x90, + /* 0000007F nop */ 0x90, + /* 00000080 nop */ 0x90, + /* 00000081 nop */ 0x90, + /* 00000082 nop */ 0x90, + /* 00000083 nop */ 0x90, + /* 00000084 nop */ 0x90, + /* 00000085 nop */ 0x90, + /* 00000086 nop */ 0x90, + /* 00000087 nop */ 0x90, + /* 00000088 nop */ 0x90, + /* 00000089 nop */ 0x90, + /* 0000008A nop */ 0x90, + /* 0000008B nop */ 0x90, + /* 0000008C nop */ 0x90, + /* 0000008D nop */ 0x90, + /* 0000008E nop */ 0x90, + /* 0000008F nop */ 0x90, + /* 00000090 nop */ 0x90, + /* 00000091 nop */ 0x90, + /* 00000092 nop */ 0x90, + /* 00000093 nop */ 0x90, + /* 00000094 nop */ 0x90, + /* 00000095 nop */ 0x90, + /* 00000096 nop */ 0x90, + /* 00000097 nop */ 0x90, + /* 00000098 nop */ 0x90, + /* 00000099 nop */ 0x90, + /* 0000009A nop */ 0x90, + /* 0000009B nop */ 0x90, + /* 0000009C nop */ 0x90, + /* 0000009D nop */ 0x90, + /* 0000009E nop */ 0x90, + /* 0000009F nop */ 0x90, + /* 000000A0 nop */ 0x90, + /* 000000A1 nop */ 0x90, + /* 000000A2 nop */ 0x90, + /* 000000A3 nop */ 0x90, + /* 000000A4 nop */ 0x90, + /* 000000A5 nop */ 0x90, + /* 000000A6 nop */ 0x90, + /* 000000A7 nop */ 0x90, + /* 000000A8 nop */ 0x90, + /* 000000A9 nop */ 0x90, + /* 000000AA nop */ 0x90, + /* 000000AB nop */ 0x90, + /* 000000AC nop */ 0x90, + /* 000000AD nop */ 0x90, + /* 000000AE nop */ 0x90, + /* 000000AF nop */ 0x90, + /* 000000B0 nop */ 0x90, + /* 000000B1 nop */ 0x90, + /* 000000B2 nop */ 0x90, + /* 000000B3 nop */ 0x90, + /* 000000B4 nop */ 0x90, + /* 000000B5 nop */ 0x90, + /* 000000B6 nop */ 0x90, + /* 000000B7 nop */ 0x90, + /* 000000B8 nop */ 0x90, + /* 000000B9 nop */ 0x90, + /* 000000BA nop */ 0x90, + /* 000000BB nop */ 0x90, + /* 000000BC nop */ 0x90, + /* 000000BD nop */ 0x90, + /* 000000BE nop */ 0x90, + /* 000000BF nop */ 0x90, + /* 000000C0 nop */ 0x90, + /* 000000C1 nop */ 0x90, + /* 000000C2 nop */ 0x90, + /* 000000C3 nop */ 0x90, + /* 000000C4 nop */ 0x90, + /* 000000C5 nop */ 0x90, + /* 000000C6 nop */ 0x90, + /* 000000C7 nop */ 0x90, + /* 000000C8 nop */ 0x90, + /* 000000C9 nop */ 0x90, + /* 000000CA nop */ 0x90, + /* 000000CB nop */ 0x90, + /* 000000CC nop */ 0x90, + /* 000000CD nop */ 0x90, + /* 000000CE nop */ 0x90, + /* 000000CF nop */ 0x90, + /* 000000D0 nop */ 0x90, + /* 000000D1 nop */ 0x90, + /* 000000D2 nop */ 0x90, + /* 000000D3 nop */ 0x90, + /* 000000D4 nop */ 0x90, + /* 000000D5 nop */ 0x90, + /* 000000D6 nop */ 0x90, + /* 000000D7 nop */ 0x90, + /* 000000D8 nop */ 0x90, + /* 000000D9 nop */ 0x90, + /* 000000DA nop */ 0x90, + /* 000000DB nop */ 0x90, + /* 000000DC nop */ 0x90, + /* 000000DD nop */ 0x90, + /* 000000DE nop */ 0x90, + /* 000000DF nop */ 0x90, + /* 000000E0 nop */ 0x90, + /* 000000E1 nop */ 0x90, + /* 000000E2 nop */ 0x90, + /* 000000E3 nop */ 0x90, + /* 000000E4 nop */ 0x90, + /* 000000E5 nop */ 0x90, + /* 000000E6 nop */ 0x90, + /* 000000E7 nop */ 0x90, + /* 000000E8 nop */ 0x90, + /* 000000E9 nop */ 0x90, + /* 000000EA nop */ 0x90, + /* 000000EB nop */ 0x90, + /* 000000EC nop */ 0x90, + /* 000000ED nop */ 0x90, + /* 000000EE nop */ 0x90, + /* 000000EF nop */ 0x90, + /* 000000F0 nop */ 0x90, + /* 000000F1 nop */ 0x90, + /* 000000F2 nop */ 0x90, + /* 000000F3 nop */ 0x90, + /* 000000F4 nop */ 0x90, + /* 000000F5 nop */ 0x90, + /* 000000F6 nop */ 0x90, + /* 000000F7 nop */ 0x90, + /* 000000F8 nop */ 0x90, + /* 000000F9 nop */ 0x90, + /* 000000FA nop */ 0x90, + /* 000000FB nop */ 0x90, + /* 000000FC nop */ 0x90, + /* 000000FD nop */ 0x90, + /* 000000FE nop */ 0x90, + /* 000000FF nop */ 0x90, + /* 00000100 nop */ 0x90, + /* 00000101 nop */ 0x90, + /* 00000102 nop */ 0x90, + /* 00000103 nop */ 0x90, + /* 00000104 nop */ 0x90, + /* 00000105 nop */ 0x90, + /* 00000106 nop */ 0x90, + /* 00000107 nop */ 0x90, + /* 00000108 nop */ 0x90, + /* 00000109 nop */ 0x90, + /* 0000010A nop */ 0x90, + /* 0000010B nop */ 0x90, + /* 0000010C nop */ 0x90, + /* 0000010D nop */ 0x90, + /* 0000010E nop */ 0x90, + /* 0000010F nop */ 0x90, + /* 00000110 nop */ 0x90, + /* 00000111 nop */ 0x90, + /* 00000112 nop */ 0x90, + /* 00000113 nop */ 0x90, + /* 00000114 nop */ 0x90, + /* 00000115 nop */ 0x90, + /* 00000116 nop */ 0x90, + /* 00000117 nop */ 0x90, + /* 00000118 nop */ 0x90, + /* 00000119 nop */ 0x90, + /* 0000011A nop */ 0x90, + /* 0000011B nop */ 0x90, + /* 0000011C nop */ 0x90, + /* 0000011D nop */ 0x90, + /* 0000011E nop */ 0x90, + /* 0000011F nop */ 0x90, + /* 00000120 nop */ 0x90, + /* 00000121 nop */ 0x90, + /* 00000122 nop */ 0x90, + /* 00000123 nop */ 0x90, + /* 00000124 nop */ 0x90, + /* 00000125 nop */ 0x90, + /* 00000126 nop */ 0x90, + /* 00000127 nop */ 0x90, + /* 00000128 nop */ 0x90, + /* 00000129 nop */ 0x90, + /* 0000012A nop */ 0x90, + /* 0000012B nop */ 0x90, + /* 0000012C nop */ 0x90, + /* 0000012D nop */ 0x90, + /* 0000012E nop */ 0x90, + /* 0000012F nop */ 0x90, + /* 00000130 nop */ 0x90, + /* 00000131 nop */ 0x90, + /* 00000132 nop */ 0x90, + /* 00000133 nop */ 0x90, + /* 00000134 nop */ 0x90, + /* 00000135 nop */ 0x90, + /* 00000136 nop */ 0x90, + /* 00000137 nop */ 0x90, + /* 00000138 nop */ 0x90, + /* 00000139 nop */ 0x90, + /* 0000013A nop */ 0x90, + /* 0000013B nop */ 0x90, + /* 0000013C nop */ 0x90, + /* 0000013D nop */ 0x90, + /* 0000013E nop */ 0x90, + /* 0000013F nop */ 0x90, + /* 00000140 nop */ 0x90, + /* 00000141 nop */ 0x90, + /* 00000142 nop */ 0x90, + /* 00000143 nop */ 0x90, + /* 00000144 nop */ 0x90, + /* 00000145 nop */ 0x90, + /* 00000146 nop */ 0x90, + /* 00000147 nop */ 0x90, + /* 00000148 nop */ 0x90, + /* 00000149 nop */ 0x90, + /* 0000014A nop */ 0x90, + /* 0000014B nop */ 0x90, + /* 0000014C nop */ 0x90, + /* 0000014D nop */ 0x90, + /* 0000014E nop */ 0x90, + /* 0000014F nop */ 0x90, + /* 00000150 nop */ 0x90, + /* 00000151 nop */ 0x90, + /* 00000152 nop */ 0x90, + /* 00000153 nop */ 0x90, + /* 00000154 nop */ 0x90, + /* 00000155 nop */ 0x90, + /* 00000156 nop */ 0x90, + /* 00000157 nop */ 0x90, + /* 00000158 nop */ 0x90, + /* 00000159 nop */ 0x90, + /* 0000015A nop */ 0x90, + /* 0000015B nop */ 0x90, + /* 0000015C nop */ 0x90, + /* 0000015D nop */ 0x90, + /* 0000015E nop */ 0x90, + /* 0000015F nop */ 0x90, + /* 00000160 nop */ 0x90, + /* 00000161 nop */ 0x90, + /* 00000162 nop */ 0x90, + /* 00000163 nop */ 0x90, + /* 00000164 nop */ 0x90, + /* 00000165 nop */ 0x90, + /* 00000166 nop */ 0x90, + /* 00000167 nop */ 0x90, + /* 00000168 nop */ 0x90, + /* 00000169 nop */ 0x90, + /* 0000016A nop */ 0x90, + /* 0000016B nop */ 0x90, + /* 0000016C nop */ 0x90, + /* 0000016D nop */ 0x90, + /* 0000016E nop */ 0x90, + /* 0000016F nop */ 0x90, + /* 00000170 nop */ 0x90, + /* 00000171 nop */ 0x90, + /* 00000172 nop */ 0x90, + /* 00000173 nop */ 0x90, + /* 00000174 nop */ 0x90, + /* 00000175 nop */ 0x90, + /* 00000176 nop */ 0x90, + /* 00000177 nop */ 0x90, + /* 00000178 nop */ 0x90, + /* 00000179 nop */ 0x90, + /* 0000017A nop */ 0x90, + /* 0000017B nop */ 0x90, + /* 0000017C nop */ 0x90, + /* 0000017D nop */ 0x90, + /* 0000017E nop */ 0x90, + /* 0000017F nop */ 0x90, + /* 00000180 nop */ 0x90, + /* 00000181 nop */ 0x90, + /* 00000182 nop */ 0x90, + /* 00000183 nop */ 0x90, + /* 00000184 nop */ 0x90, + /* 00000185 nop */ 0x90, + /* 00000186 nop */ 0x90, + /* 00000187 nop */ 0x90, + /* 00000188 nop */ 0x90, + /* 00000189 nop */ 0x90, + /* 0000018A nop */ 0x90, + /* 0000018B nop */ 0x90, + /* 0000018C nop */ 0x90, + /* 0000018D nop */ 0x90, + /* 0000018E nop */ 0x90, + /* 0000018F nop */ 0x90, + /* 00000190 nop */ 0x90, + /* 00000191 nop */ 0x90, + /* 00000192 nop */ 0x90, + /* 00000193 nop */ 0x90, + /* 00000194 nop */ 0x90, + /* 00000195 nop */ 0x90, + /* 00000196 nop */ 0x90, + /* 00000197 nop */ 0x90, + /* 00000198 nop */ 0x90, + /* 00000199 nop */ 0x90, + /* 0000019A nop */ 0x90, + /* 0000019B nop */ 0x90, + /* 0000019C nop */ 0x90, + /* 0000019D nop */ 0x90, + /* 0000019E nop */ 0x90, + /* 0000019F nop */ 0x90, + /* 000001A0 nop */ 0x90, + /* 000001A1 nop */ 0x90, + /* 000001A2 nop */ 0x90, + /* 000001A3 nop */ 0x90, + /* 000001A4 nop */ 0x90, + /* 000001A5 nop */ 0x90, + /* 000001A6 nop */ 0x90, + /* 000001A7 nop */ 0x90, + /* 000001A8 nop */ 0x90, + /* 000001A9 nop */ 0x90, + /* 000001AA nop */ 0x90, + /* 000001AB nop */ 0x90, + /* 000001AC nop */ 0x90, + /* 000001AD nop */ 0x90, + /* 000001AE nop */ 0x90, + /* 000001AF nop */ 0x90, + /* 000001B0 nop */ 0x90, + /* 000001B1 nop */ 0x90, + /* 000001B2 nop */ 0x90, + /* 000001B3 nop */ 0x90, + /* 000001B4 nop */ 0x90, + /* 000001B5 nop */ 0x90, + /* 000001B6 nop */ 0x90, + /* 000001B7 nop */ 0x90, + /* 000001B8 nop */ 0x90, + /* 000001B9 nop */ 0x90, + /* 000001BA nop */ 0x90, + /* 000001BB nop */ 0x90, + /* 000001BC nop */ 0x90, + /* 000001BD nop */ 0x90, + /* 000001BE nop */ 0x90, + /* 000001BF nop */ 0x90, + /* 000001C0 nop */ 0x90, + /* 000001C1 nop */ 0x90, + /* 000001C2 nop */ 0x90, + /* 000001C3 nop */ 0x90, + /* 000001C4 nop */ 0x90, + /* 000001C5 nop */ 0x90, + /* 000001C6 nop */ 0x90, + /* 000001C7 nop */ 0x90, + /* 000001C8 nop */ 0x90, + /* 000001C9 nop */ 0x90, + /* 000001CA nop */ 0x90, + /* 000001CB nop */ 0x90, + /* 000001CC nop */ 0x90, + /* 000001CD nop */ 0x90, + /* 000001CE nop */ 0x90, + /* 000001CF nop */ 0x90, + /* 000001D0 nop */ 0x90, + /* 000001D1 nop */ 0x90, + /* 000001D2 nop */ 0x90, + /* 000001D3 nop */ 0x90, + /* 000001D4 nop */ 0x90, + /* 000001D5 nop */ 0x90, + /* 000001D6 nop */ 0x90, + /* 000001D7 nop */ 0x90, + /* 000001D8 nop */ 0x90, + /* 000001D9 nop */ 0x90, + /* 000001DA nop */ 0x90, + /* 000001DB nop */ 0x90, + /* 000001DC nop */ 0x90, + /* 000001DD nop */ 0x90, + /* 000001DE nop */ 0x90, + /* 000001DF nop */ 0x90, + /* 000001E0 nop */ 0x90, + /* 000001E1 nop */ 0x90, + /* 000001E2 nop */ 0x90, + /* 000001E3 nop */ 0x90, + /* 000001E4 nop */ 0x90, + /* 000001E5 nop */ 0x90, + /* 000001E6 nop */ 0x90, + /* 000001E7 nop */ 0x90, + /* 000001E8 nop */ 0x90, + /* 000001E9 nop */ 0x90, + /* 000001EA nop */ 0x90, + /* 000001EB nop */ 0x90, + /* 000001EC nop */ 0x90, + /* 000001ED nop */ 0x90, + /* 000001EE nop */ 0x90, + /* 000001EF nop */ 0x90, + /* 000001F0 nop */ 0x90, + /* 000001F1 nop */ 0x90, + /* 000001F2 nop */ 0x90, + /* 000001F3 nop */ 0x90, + /* 000001F4 nop */ 0x90, + /* 000001F5 nop */ 0x90, + /* 000001F6 nop */ 0x90, + /* 000001F7 nop */ 0x90, + /* 000001F8 nop */ 0x90, + /* 000001F9 nop */ 0x90, + /* 000001FA nop */ 0x90, + /* 000001FB nop */ 0x90, + /* 000001FC nop */ 0x90, + /* 000001FD nop */ 0x90, + /* 000001FE nop */ 0x90, + /* 000001FF nop */ 0x90, + /* 00000200 cmp ax,0x4f00 */ 0x3D,0x00, 0x4F, + /* 00000203 jz 0x22d */ 0x74,0x28, + /* 00000205 cmp ax,0x4f01 */ 0x3D,0x01, 0x4F, + /* 00000208 jz 0x245 */ 0x74,0x3B, + /* 0000020A cmp ax,0x4f02 */ 0x3D,0x02, 0x4F, + /* 0000020D jz 0x269 */ 0x74,0x5A, + /* 0000020F cmp ax,0x4f03 */ 0x3D,0x03, 0x4F, + /* 00000212 jz word 0x331 */ 0x0F,0x84, 0x1B,0x01, + /* 00000216 cmp ax,0x4f10 */ 0x3D,0x10, 0x4F, + /* 00000219 jz word 0x336 */ 0x0F,0x84, 0x19,0x01, + /* 0000021D cmp ax,0x4f15 */ 0x3D,0x15, 0x4F, + /* 00000220 jz word 0x338 */ 0x0F,0x84, 0x14,0x01, + /* 00000224 cmp ah,0x0 */ 0x80,0xFC, 0x00, + /* 00000227 jz word 0x33a */ 0x0F,0x84, 0x0F,0x01, + /* 0000022B jmp short 0x22b */ 0xEB,0xFE, + /* 0000022D push es */ 0x06, + /* 0000022E push di */ 0x57, + /* 0000022F push ds */ 0x1E, + /* 00000230 push si */ 0x56, + /* 00000231 push cx */ 0x51, + /* 00000232 push cs */ 0x0E, + /* 00000233 pop ds */ 0x1F, + /* 00000234 mov si,0x0 */ 0xBE,0x00, 0x00, + /* 00000237 mov cx,0x100 */ 0xB9,0x00, 0x01, + /* 0000023A cld */ 0xFC, + /* 0000023B rep movsb */ 0xF3,0xA4, + /* 0000023D pop cx */ 0x59, + /* 0000023E pop si */ 0x5E, + /* 0000023F pop ds */ 0x1F, + /* 00000240 pop di */ 0x5F, + /* 00000241 pop es */ 0x07, + /* 00000242 jmp word 0x34c */ 0xE9,0x07, 0x01, + /* 00000245 push es */ 0x06, + /* 00000246 push di */ 0x57, + /* 00000247 push ds */ 0x1E, + /* 00000248 push si */ 0x56, + /* 00000249 push cx */ 0x51, + /* 0000024A and cx,0xbfff */ 0x81,0xE1, 0xFF,0xBF, + /* 0000024E cmp cx,0xf1 */ 0x81,0xF9, 0xF1,0x00, + /* 00000252 jz 0x256 */ 0x74,0x02, + /* 00000254 jmp short 0x22b */ 0xEB,0xD5, + /* 00000256 push cs */ 0x0E, + /* 00000257 pop ds */ 0x1F, + /* 00000258 mov si,0x100 */ 0xBE,0x00, 0x01, + /* 0000025B mov cx,0x100 */ 0xB9,0x00, 0x01, + /* 0000025E cld */ 0xFC, + /* 0000025F rep movsb */ 0xF3,0xA4, + /* 00000261 pop cx */ 0x59, + /* 00000262 pop si */ 0x5E, + /* 00000263 pop ds */ 0x1F, + /* 00000264 pop di */ 0x5F, + /* 00000265 pop es */ 0x07, + /* 00000266 jmp word 0x34c */ 0xE9,0xE3, 0x00, + /* 00000269 push dx */ 0x52, + /* 0000026A push ax */ 0x50, + /* 0000026B cmp bx,0x40f1 */ 0x81,0xFB, 0xF1,0x40, + /* 0000026F jz 0x273 */ 0x74,0x02, + /* 00000271 jmp short 0x22b */ 0xEB,0xB8, + /* 00000273 mov dx,0x3c0 */ 0xBA,0xC0, 0x03, + /* 00000276 mov al,0x20 */ 0xB0,0x20, + /* 00000278 out dx,al */ 0xEE, + /* 00000279 push dx */ 0x52, + /* 0000027A push ax */ 0x50, + /* 0000027B mov dx,0x1ce */ 0xBA,0xCE, 0x01, + /* 0000027E mov ax,0x4 */ 0xB8,0x04, 0x00, + /* 00000281 out dx,ax */ 0xEF, + /* 00000282 mov dx,0x1d0 */ 0xBA,0xD0, 0x01, + /* 00000285 mov ax,0x0 */ 0xB8,0x00, 0x00, + /* 00000288 out dx,ax */ 0xEF, + /* 00000289 pop ax */ 0x58, + /* 0000028A pop dx */ 0x5A, + /* 0000028B push dx */ 0x52, + /* 0000028C push ax */ 0x50, + /* 0000028D mov dx,0x1ce */ 0xBA,0xCE, 0x01, + /* 00000290 mov ax,0x5 */ 0xB8,0x05, 0x00, + /* 00000293 out dx,ax */ 0xEF, + /* 00000294 mov dx,0x1d0 */ 0xBA,0xD0, 0x01, + /* 00000297 mov ax,0x0 */ 0xB8,0x00, 0x00, + /* 0000029A out dx,ax */ 0xEF, + /* 0000029B pop ax */ 0x58, + /* 0000029C pop dx */ 0x5A, + /* 0000029D push dx */ 0x52, + /* 0000029E push ax */ 0x50, + /* 0000029F mov dx,0x1ce */ 0xBA,0xCE, 0x01, + /* 000002A2 mov ax,0x8 */ 0xB8,0x08, 0x00, + /* 000002A5 out dx,ax */ 0xEF, + /* 000002A6 mov dx,0x1d0 */ 0xBA,0xD0, 0x01, + /* 000002A9 mov ax,0x0 */ 0xB8,0x00, 0x00, + /* 000002AC out dx,ax */ 0xEF, + /* 000002AD pop ax */ 0x58, + /* 000002AE pop dx */ 0x5A, + /* 000002AF push dx */ 0x52, + /* 000002B0 push ax */ 0x50, + /* 000002B1 mov dx,0x1ce */ 0xBA,0xCE, 0x01, + /* 000002B4 mov ax,0x9 */ 0xB8,0x09, 0x00, + /* 000002B7 out dx,ax */ 0xEF, + /* 000002B8 mov dx,0x1d0 */ 0xBA,0xD0, 0x01, + /* 000002BB mov ax,0x0 */ 0xB8,0x00, 0x00, + /* 000002BE out dx,ax */ 0xEF, + /* 000002BF pop ax */ 0x58, + /* 000002C0 pop dx */ 0x5A, + /* 000002C1 push dx */ 0x52, + /* 000002C2 push ax */ 0x50, + /* 000002C3 mov dx,0x1ce */ 0xBA,0xCE, 0x01, + /* 000002C6 mov ax,0x3 */ 0xB8,0x03, 0x00, + /* 000002C9 out dx,ax */ 0xEF, + /* 000002CA mov dx,0x1d0 */ 0xBA,0xD0, 0x01, + /* 000002CD mov ax,0x20 */ 0xB8,0x20, 0x00, + /* 000002D0 out dx,ax */ 0xEF, + /* 000002D1 pop ax */ 0x58, + /* 000002D2 pop dx */ 0x5A, + /* 000002D3 push dx */ 0x52, + /* 000002D4 push ax */ 0x50, + /* 000002D5 mov dx,0x1ce */ 0xBA,0xCE, 0x01, + /* 000002D8 mov ax,0x1 */ 0xB8,0x01, 0x00, + /* 000002DB out dx,ax */ 0xEF, + /* 000002DC mov dx,0x1d0 */ 0xBA,0xD0, 0x01, + /* 000002DF mov ax,0x400 */ 0xB8,0x00, 0x04, + /* 000002E2 out dx,ax */ 0xEF, + /* 000002E3 pop ax */ 0x58, + /* 000002E4 pop dx */ 0x5A, + /* 000002E5 push dx */ 0x52, + /* 000002E6 push ax */ 0x50, + /* 000002E7 mov dx,0x1ce */ 0xBA,0xCE, 0x01, + /* 000002EA mov ax,0x6 */ 0xB8,0x06, 0x00, + /* 000002ED out dx,ax */ 0xEF, + /* 000002EE mov dx,0x1d0 */ 0xBA,0xD0, 0x01, + /* 000002F1 mov ax,0x400 */ 0xB8,0x00, 0x04, + /* 000002F4 out dx,ax */ 0xEF, + /* 000002F5 pop ax */ 0x58, + /* 000002F6 pop dx */ 0x5A, + /* 000002F7 push dx */ 0x52, + /* 000002F8 push ax */ 0x50, + /* 000002F9 mov dx,0x1ce */ 0xBA,0xCE, 0x01, + /* 000002FC mov ax,0x2 */ 0xB8,0x02, 0x00, + /* 000002FF out dx,ax */ 0xEF, + /* 00000300 mov dx,0x1d0 */ 0xBA,0xD0, 0x01, + /* 00000303 mov ax,0x300 */ 0xB8,0x00, 0x03, + /* 00000306 out dx,ax */ 0xEF, + /* 00000307 pop ax */ 0x58, + /* 00000308 pop dx */ 0x5A, + /* 00000309 push dx */ 0x52, + /* 0000030A push ax */ 0x50, + /* 0000030B mov dx,0x1ce */ 0xBA,0xCE, 0x01, + /* 0000030E mov ax,0x7 */ 0xB8,0x07, 0x00, + /* 00000311 out dx,ax */ 0xEF, + /* 00000312 mov dx,0x1d0 */ 0xBA,0xD0, 0x01, + /* 00000315 mov ax,0x300 */ 0xB8,0x00, 0x03, + /* 00000318 out dx,ax */ 0xEF, + /* 00000319 pop ax */ 0x58, + /* 0000031A pop dx */ 0x5A, + /* 0000031B push dx */ 0x52, + /* 0000031C push ax */ 0x50, + /* 0000031D mov dx,0x1ce */ 0xBA,0xCE, 0x01, + /* 00000320 mov ax,0x4 */ 0xB8,0x04, 0x00, + /* 00000323 out dx,ax */ 0xEF, + /* 00000324 mov dx,0x1d0 */ 0xBA,0xD0, 0x01, + /* 00000327 mov ax,0x41 */ 0xB8,0x41, 0x00, + /* 0000032A out dx,ax */ 0xEF, + /* 0000032B pop ax */ 0x58, + /* 0000032C pop dx */ 0x5A, + /* 0000032D pop ax */ 0x58, + /* 0000032E pop dx */ 0x5A, + /* 0000032F jmp short 0x34c */ 0xEB,0x1B, + /* 00000331 mov bx,0x40f1 */ 0xBB,0xF1, 0x40, + /* 00000334 jmp short 0x34c */ 0xEB,0x16, + /* 00000336 jmp short 0x350 */ 0xEB,0x18, + /* 00000338 jmp short 0x350 */ 0xEB,0x16, + /* 0000033A cmp al,0x3 */ 0x3C,0x03, + /* 0000033C jz 0x345 */ 0x74,0x07, + /* 0000033E cmp al,0x12 */ 0x3C,0x12, + /* 00000340 jz 0x349 */ 0x74,0x07, + /* 00000342 jmp word 0x22b */ 0xE9,0xE6, 0xFE, + /* 00000345 mov al,0x30 */ 0xB0,0x30, + /* 00000347 jmp short 0x34b */ 0xEB,0x02, + /* 00000349 mov al,0x20 */ 0xB0,0x20, + /* 0000034B iretw */ 0xCF, + /* 0000034C mov ax,0x4f */ 0xB8,0x4F, 0x00, + /* 0000034F iretw */ 0xCF, + /* 00000350 mov ax,0x14f */ 0xB8,0x4F, 0x01, + /* 00000353 iretw */ 0xCF, }; #endif -- cgit v1.2.3