Specifications

Code Definitions
111
3.3 Compatibility16 Code
Compatibility16 Code
The runtime Compatibility16 code (traditional 16-bit runtime code) is loaded as a binary
file during the installation of
EFI_LEGACY_BIOS_PROTOCOL.
EFI_LEGACY_BIOS_PLATFORM_PROTOCOL.GetSystemRom() is invoked, which
finds the appropriate binary file. The GUID referring to this binary is IBV specific and
may be specific for an OEM supported by the IBV.
GUID
IBV or OEM specific
Legacy BIOS Interface
3.3.2.1 Compatibility16 Table
EFI_COMPATIBILITY16_TABLE
Summary
There is a table located within the traditional BIOS in either the 0xF000:xxxx or
0xE000:xxxx physical address range. It is located on a 16-byte boundary and provides
the physical address of the entry point for the Compatibility16 functions. These functions
provide the platform-specific information that is required by the generic EfiCompatibility
code. The functions are invoked via thunking by using
EFI_LEGACY_BIOS_PROTOCOL.FarCall86()
with the 32-bit physical entry point
defined below.
Prototype
typedef struct {
UINT32 Signature;
UINT8 TableChecksum;
UINT8 TableLength;
UINT8 EfiMajorRevision;
UINT8 EfiMinorRevision;
UINT8 TableMajorRevision;
UINT8 TableMinorRevision;
UINT16 Reserved;
UINT16 Compatibility16CallSegment;
UINT16 Compatibility16CallOffset;
UINT16 PnPInstallationCheckSegment;