Specifications

14
2.4.2.5 Legacy Interrupt Protocol
The Legacy Interrupt Protocol manages the programming of PCI interrupts. The table
below lists the functions that are included in the Legacy Interrupt Protocol. See
EFI_LEGACY_INTERRUPT_PROTOCOL in Code Definitions for the definitions of these
functions.
Table 7 Functions in Legacy Interrupt Protocol
Functions Description
GetNumberPirqs() Returns the number of PIRQs that the chipset supports.
GetLocation() Returns the PCI bus location of the chipset. The $PIR table requires
this information.
ReadPirq() Reads the current PIRQ contents for the indicated PIRQ.
WritePirq() Writes the current PIRQ contents for the indicated PIRQ.
Compatibility16
The Compatibility16 code is a stripped-down version of a traditional BIOS that removes
the POST and BIOS Setup code. This stripped-down BIOS consists of the following:
Runtime code
INT18 code
INT19 code
A small piece of new code to handle the interface between EfiCompatibility
code and Compatibility16 code
The design goal is to have the Compatibility16 code be universal for each class of
platforms. Examples are desktop, server, and mobile platforms. This goal implies that
the Compatibility16 code is chipset and platform neutral. It controls hardware through
traditional hardware interfaces and leaves the chipset programming to EFI and/or
EfiCompatibility. This design goal maximizes reusability and minimizes code bugs.
2.4.3.1 Communication between EfiCompatibility and Compatibility16
The communication between EfiCompatibility modules and Compatibility16 occurs using
the following three mechanisms:
Compatability16 Table
Compatability16 Functions
Compatability16 Function Data Structures
The following sections discuss these mechanisms in more detail. See
Compatibility16
Code in Code Definitions for definitions of these functions and structures.