]> git.proxmox.com Git - mirror_edk2.git/commit
OvmfPkg IA32: add support for loading X64 images
authorArd Biesheuvel <ard.biesheuvel@linaro.org>
Wed, 26 Feb 2020 19:43:43 +0000 (20:43 +0100)
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Wed, 4 Mar 2020 09:26:45 +0000 (09:26 +0000)
commitd55cfdc51f93b6622c3780d4cc2ba2769c154a15
treec953daedf7f7a0923521b14747b3fc94afb7a820
parentd8dd54f071cfd60a2dcf5426764a89cd91213420
OvmfPkg IA32: add support for loading X64 images

This is the UEFI counterpart to my Linux series which generalizes
mixed mode support into a feature that requires very little internal
knowledge about the architecture specifics of booting Linux on the
part of the bootloader or firmware.

Instead, we add a .compat PE/COFF header containing an array of
PE_COMPAT nodes containing <machine type, entrypoint> tuples that
describe alternate entrypoints into the image for different native
machine types, e.g., IA-32 in a 64-bit image so it can be booted
from IA-32 firmware.

This patch implements the PE/COFF emulator protocol to take this new
section into account, so that such images can simply be loaded via
LoadImage/StartImage, e.g., straight from the shell.

This feature is based on the EDK2 specific PE/COFF emulator protocol
that was introduced in commit 57df17fe26cd ("MdeModulePkg/DxeCore:
invoke the emulator protocol for foreign images", 2019-04-14).

Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=2564
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Acked-by: Laszlo Ersek <lersek@redhat.com>
OvmfPkg/CompatImageLoaderDxe/CompatImageLoaderDxe.c [new file with mode: 0644]
OvmfPkg/CompatImageLoaderDxe/CompatImageLoaderDxe.inf [new file with mode: 0644]
OvmfPkg/OvmfPkgIa32.dsc
OvmfPkg/OvmfPkgIa32.fdf