Specifications

Design Discussion
13
2.4.2.4 Legacy 8259 Protocol
The Legacy 8259 Protocol controls the programming of the 8259 PIC in both the EFI (32-
bit protected) environment and legacy (16-bit real-mode) environment. The table below
lists the functions that are included in the Legacy 8259 Protocol. See
EFI_LEGACY_8259_PROTOCOL in Code Definitions for the definitions of these
functions.
Table 6 Functions in Legacy 8259 Protocol
Functions Description
SetVectorBase() Sets the vector base for the 8259 PIC. In the EFI environment, the
base is set to 0x1A0 (INT68) for master and 0x1C0 (INT70) for
slave PIC. In the legacy environment, the base is set to 0x20
(INT08) for master and 0x1C0 (INT70) for slave PIC. The different
master PIC address for EFI prevents the overlaying of interrupts
and processor exceptions.
GetMask() Gets the current settings of the master and slave interrupt mask
and/or the edge/level register programming. The caller can specify
EFI and/or legacy environment.
SetMask() Sets the current settings of the master and slave interrupt mask
and/or the edge/level register programming. The caller can specify
EFI and/or legacy environment.
SetMode() Sets the current mode (EFI or legacy) and settings of the master
and slave interrupt mask and/or the edge/level register
programming. This function should not be invoked multiple times in
the same mode. Use the
SetMask()
function instead.
GetVector() Translates an IRQ into an INT. For example, IRQ0 is INT68 for the
EFI environment and INT08 for the legacy environment.
EnableIrq() Enables an interrupt in the EFI environment. Non-CSM drivers
normally use this function.
DisableIrq() Disables an interrupt in the EFI environment. Non-CSM drivers
normally use this function.
GetInterruptLine() Returns the IRQ assigned to the specified PCI device.
EndOfInterrupt() Generates an End of Interrupt (EOI) command for the specified
IRQ.