Specifications

8
Several pieces of code make up the CSM, as listed in the table below.
Table 1 Components of CSM
Component Description
EfiCompatibility 32-bit code that interfaces with EFI EfiCompatibility is comprised of
several EFI drivers. These drivers fall into the following four
categories:
Drivers that are platform and hardware neutral. They
provide the foundation of the CSM and do not change from
platform to platform.
Drivers that are platform and chipset neutral They control
traditional hardware such as the 8259 PIC.
Drivers that are chipset dependant. They control chipset
hardware that changes from platform to platform. An
example is the code to perform PCI IRQ steering.
Drivers that are platform specific.
Compatibility16 Stripped-down, traditional IBV, 16-bit real-mode code consisting
mainly of the traditional software INT runtime support.
CompatibilitySmm Optional code in SMM to perform traditional functions that are not
taken over by the EFI SMM.
Thunk and Reverse Thunk Thunk code is used to switch from EfiCompatibility (32-bit) to
Compatibility16 or traditional OpROMs (16-bit). Reverse thunk code
is used to switch from Compatibility16 code or traditional OpROMs
(16-bit) to EfiCompatibility (32-bit).
Outside the CSM, but still part of a traditional system, are the traditional 16-bit real-
mode OpROMs.
The CSM operates in two distinct environments:
Booting a traditional or non-EFI-aware OS.
Loading an EFI-aware OS a device that is controlled by a traditional OpROM.
The first operation, booting a traditional or non-EFI-aware OS, is the traditional
environment.
It is expected that traditional OpROMs will be around long after traditional OSs have
been replaced by EFI-aware OSs. The code that is required to load an EFI-aware OS is a
subset of the code that is required to boot a traditional (non-EFI-aware) OS. The
Framework architecture reflects this split to allow removing unneeded code in the future.
See Steps in CSM Driver Interactions for additional details on how the various CSM
components interconnect with each other and how external drivers interconnect with the
CSM.
EfiCompatibility
The EfiCompatibility consists of the protocols listed in the table below. This
EfiCompatibility code is written in C and exists in the EFI environment.