Specifications

20
2.5.1.4 Traditional Installation
The traditional BIOS driver is used to abstract the traditional BIOS for EFI. BDS installing
the traditional code causes the Legacy BIOS Protocol initialization code to do the
following actions:
Find the Legacy Region Protocol.
Find the Legacy Interrupt Protocol.
Find the Legacy BIOS Platform Protocol.
Find the Legacy 8259 Protocol.
Allocate the first 4 KB for interrupt vectors and BDA from traditional
memory.
Allocate 0x800000x9FFFF for EfiCompatibility usage and for the EBDA.
Allocate memory for thunk and reverse thunk code.
Initialize thunk code.
Initialize the traditional memory map.
Allocate PMM memory between 1 MB and 16 MB.
Initialize the BDA and EBDA.
Locate the firmware volume from which this code was loaded and searches
that firmware volume for the Compatibility16 code.
Determine the size of the Compatibility16 code and from the size calculates
the starting address of the Compatibility16 code.
Make the final destination of the Compatibility16 code read-write and then
shadows the Compatibility16 code to the final destination.
Search for and validate the
EFI_COMPATIBILITY16_TABLE, saves the
Compatibility16 entry point, and updates internal data structures.
Using the Compatibility16 table function entry point, thunk into the
Compatibility16 bit code and request it to perform the function
Compatibility16InitializeYourself(). The traditional memory
map is passed in as a parameter.
EFI_COMPATIBILITY16_TABLE is read to get the Plug and Play
installation check address. The internal data structures are updated.
The Compatibility16 code is then set to read only.
Install the Legacy BIOS Protocol.
The Legacy BIOS Protocol returns back to BDS.
16-Bit Traditional Code
The 16-bit traditional code consists of traditional OpROMs and Compatibility16 code. The
Compatibility16 code roughly consists of traditional BIOS minus POST and BIOS Setup.
It is assembled separately from the EFI code and is linked as a binary module just like
an EFI OpROM would be.
See Compatibility16 in CSM Architecture for details on the new Compatibility16 code that
is used to interface between the EfiCompatibility portion and the Compatibility16 portion
of the traditional BIOS.