Specifications

Design Discussion
9
Table 2 EfiCompatibility Protocols
Protocol Description
Legacy BIOS Protocoll The primary protocol of the CSM. This protocol is platform and
hardware neutral.
Legacy BIOS Platform
Protocol
Provides the information that makes this platform unique compared
to another platform using the same chipset. This protocol is platform
specific.
Legacy Region Protocol Manages the hardware that allows the region from physical address
0xC0000 to 0xFFFFF to be made read only or read-write. It can
optionally manage the hardware that prevents a write in the above
region propagating to any aliased memory regions This protocol is
chipset specific.
Legacy 8259 Protocol Manages the hardware controlling the 8259 PIC in 32-bit protected
mode and in 16-bit real mode. It keeps track of the interrupt masks
and edge/level programming for both modes. This protocol is
platform and chipset neutral.
Legacy Interrupt Protocol Manages the hardware for assigning IRQs to PCI. EFI is polled rather
than interrupt driven. This protocol is chipset specific.
Each of the above protocols is described in more detail in the following sections. See
EfiCompatibility Code in Code Definitions for the definitions of these protocols.
2.4.2.1 Legacy BIOS Protocol
LegacyBios Module
The LegacyBios module constitutes the CSM skeleton. The other CSM modules are
support modules. The LegacyBios initialization code consists of the following elements:
Code to initialize itself and to load the Compatibility16 code
Code to determine the boot device
Code to load other EfiCompatibility drivers
Code to load the thunk and reverse thunk code
Code to interface with Compatibility16 functions
Code to load and invoke traditional OpROMs, including code to find
baseboard traditional OpROMs and to load them
Code to load a traditional OS
The BDS code, as part of its normal functions, binds a device with a traditional OpROM,
but it uses the LegacyBios code to dispatch and initialize the traditional OpROM. The BDS
code also generates the various boot device paths, but it uses the LegacyBios code to
boot to a traditional OS. The LegacyBios code that is used to boot a traditional OS
performs the following actions:
Extracts EFI data into standard EfiCompatibility structures
Updates standard BDS, EBDA, and CMOS locations
Updates hardware with traditional resources (IRQs)
The LegacyBios code parses the data hub or invokes EFI APIs to gather data that is
required by Compatibility16 and translates it into a series of standard Compatibility16
data structures. That data is used to update standard traditional data values in the BDA,