Module driver:x86ioapic - Generic Intel x86 IO-APIC driver
Generic Intel x86 IO-APIC driver. This driver provides support for an 82093AA/82806AA compatible IO-APIC, as typically used in Intel multiprocessor PCs.
Requires:
Used: driver:x86mp
Index
-
Channel type
CT.IOAPIC- IO-APIC channel-type-
Variable
in?- Commands in -
Variable
out!- Responses out -
Variable
return?- Used to close the connection to, and shut-down, the IO-APIC
-
Variable
-
Group
IOAPIC.BASEREG- IO-APIC base registers-
Constant
IOAPIC.BASEREG.IOREGSEL- Register selector (low 8 bits) -
Constant
IOAPIC.BASEREG.IOWIN- I/O window (32 bits)
-
Constant
-
Group
IOAPIC.REG- IO-APIC registers-
Constant
IOAPIC.REG.ARB- IO-APIC arbitration ID -
Constant
IOAPIC.REG.ID- IO-APIC identification -
Constant
IOAPIC.REG.RTBL.SIZE- Two registers per redirection table entry -
Constant
IOAPIC.REG.RTBL0- IO-APIC first redirection table entry (low order) -
Constant
IOAPIC.REG.RTBL1- IO-APIC first redirection table entry (high order) -
Constant
IOAPIC.REG.VER- IO-APIC version
-
Constant
-
Group
IOAPIC.RTBL- IO-APIC redirection table bits (two 32-bit halves)-
Constant
IOAPIC.RTBL0.DELIVS- Delivery status (r/o) -
Constant
IOAPIC.RTBL0.DELMOD.EXTINT- Deliver pretend 8259A-compatible interrupt -
Constant
IOAPIC.RTBL0.DELMOD.FIXED- Fixed interrupt delivery -
Constant
IOAPIC.RTBL0.DELMOD.INIT- Deliver INIT signal to processors -
Constant
IOAPIC.RTBL0.DELMOD.LOWPRI- Deliver to core executing at lowest priority -
Constant
IOAPIC.RTBL0.DELMOD.MASK- Delivery mode mask -
Constant
IOAPIC.RTBL0.DELMOD.NMI- Deliver NMI -
Constant
IOAPIC.RTBL0.DELMOD.SMI- Deliver SMI -
Constant
IOAPIC.RTBL0.DESTMOD.LCL- Destination mode logical, else physical -
Constant
IOAPIC.RTBL0.MASKED- Interrupt is masked in IO-APIC -
Constant
IOAPIC.RTBL0.PINPOL- Input pin polarity, set active high, else low -
Constant
IOAPIC.RTBL0.RIRR- Remote IRR (level triggered only, r/o) -
Constant
IOAPIC.RTBL0.TRIG.LVL- Level, else edge, trigger mode -
Constant
IOAPIC.RTBL0.VECTOR.MASK- Delivery vector mask -
Constant
IOAPIC.RTBL1.DEST- Destination field -
Constant
IOAPIC.RTBL1.DEST.SHIFT- How much to shift to get destination out
-
Constant
-
Group
IOAPIC.VER- Known IO-APIC version bits-
Constant
IOAPIC.VER.82093AA- Intel 82093AA IO-APIC device -
Constant
IOAPIC.VER.82806AA- Intel 82806AA PCI-64 hub
-
Constant
-
Protocol
P.IOAPIC.IN- IO-APIC input protocol-
Tag
get.ioapic.id- Reads the IO-APIC ID -
Tag
get.ioapic.numredir- Get number of redirection entries -
Tag
get.ioapic.version- Reads the IO-APIC version -
Tag
init- Initialise IO-APIC -
Tag
read.entry- Read interrupt table entry -
Tag
write.entry- Write interrupt table entry
-
Tag
-
Protocol
P.IOAPIC.OUT- IO-APIC output protocol-
Tag
int.entry- Interrupt table entry -
Tag
ioapic.id- IO-APIC ID result -
Tag
ioapic.version- IO-APIC version result -
Tag
result- Generic result
-
Tag
-
Process
x86ioapic.driver- x86 multiprocessor IO-APIC driver
Declarations
x86ioapic.inc:25Group IOAPIC.BASEREG
IO-APIC base registers.
x86ioapic.inc:26Constant IOAPIC.BASEREG.IOREGSEL
VAL INT32 IOAPIC.BASEREG.IOREGSEL
Register selector (low 8 bits).
x86ioapic.inc:27Constant IOAPIC.BASEREG.IOWIN
VAL INT32 IOAPIC.BASEREG.IOWIN
I/O window (32 bits).
x86ioapic.inc:30Group IOAPIC.REG
IO-APIC registers.
x86ioapic.inc:31Constant IOAPIC.REG.ID
VAL BYTE IOAPIC.REG.ID
IO-APIC identification.
x86ioapic.inc:32Constant IOAPIC.REG.VER
VAL BYTE IOAPIC.REG.VER
IO-APIC version.
x86ioapic.inc:33Constant IOAPIC.REG.ARB
VAL BYTE IOAPIC.REG.ARB
IO-APIC arbitration ID.
x86ioapic.inc:34Constant IOAPIC.REG.RTBL0
VAL BYTE IOAPIC.REG.RTBL0
IO-APIC first redirection table entry (low order).
x86ioapic.inc:35Constant IOAPIC.REG.RTBL1
VAL BYTE IOAPIC.REG.RTBL1
IO-APIC first redirection table entry (high order).
x86ioapic.inc:36Constant IOAPIC.REG.RTBL.SIZE
VAL BYTE IOAPIC.REG.RTBL.SIZE
Two registers per redirection table entry.
x86ioapic.inc:39Group IOAPIC.VER
Known IO-APIC version bits.
x86ioapic.inc:40Constant IOAPIC.VER.82093AA
VAL BYTE IOAPIC.VER.82093AA
Intel 82093AA IO-APIC device.
x86ioapic.inc:41Constant IOAPIC.VER.82806AA
VAL BYTE IOAPIC.VER.82806AA
Intel 82806AA PCI-64 hub.
x86ioapic.inc:44Group IOAPIC.RTBL
IO-APIC redirection table bits (two 32-bit halves).
x86ioapic.inc:45Constant IOAPIC.RTBL1.DEST
VAL INT32 IOAPIC.RTBL1.DEST
Destination field. In physical mode (0), bits 24:27
x86ioapic.inc:48Constant IOAPIC.RTBL1.DEST.SHIFT
VAL INT IOAPIC.RTBL1.DEST.SHIFT
How much to shift to get destination out.
x86ioapic.inc:49Constant IOAPIC.RTBL0.MASKED
VAL INT32 IOAPIC.RTBL0.MASKED
Interrupt is masked in IO-APIC.
x86ioapic.inc:50Constant IOAPIC.RTBL0.TRIG.LVL
VAL INT32 IOAPIC.RTBL0.TRIG.LVL
Level, else edge, trigger mode.
x86ioapic.inc:51Constant IOAPIC.RTBL0.RIRR
VAL INT32 IOAPIC.RTBL0.RIRR
Remote IRR (level triggered only, r/o).
x86ioapic.inc:52Constant IOAPIC.RTBL0.PINPOL
VAL INT32 IOAPIC.RTBL0.PINPOL
Input pin polarity, set active high, else low.
x86ioapic.inc:53Constant IOAPIC.RTBL0.DELIVS
VAL INT32 IOAPIC.RTBL0.DELIVS
Delivery status (r/o).
x86ioapic.inc:54Constant IOAPIC.RTBL0.DESTMOD.LCL
VAL INT32 IOAPIC.RTBL0.DESTMOD.LCL
Destination mode logical, else physical.
x86ioapic.inc:55Constant IOAPIC.RTBL0.DELMOD.MASK
VAL INT32 IOAPIC.RTBL0.DELMOD.MASK
Delivery mode mask.
x86ioapic.inc:56Constant IOAPIC.RTBL0.DELMOD.FIXED
VAL INT32 IOAPIC.RTBL0.DELMOD.FIXED
Fixed interrupt delivery.
x86ioapic.inc:57Constant IOAPIC.RTBL0.DELMOD.LOWPRI
VAL INT32 IOAPIC.RTBL0.DELMOD.LOWPRI
Deliver to core executing at lowest priority.
x86ioapic.inc:58Constant IOAPIC.RTBL0.DELMOD.SMI
VAL INT32 IOAPIC.RTBL0.DELMOD.SMI
Deliver SMI.
x86ioapic.inc:59Constant IOAPIC.RTBL0.DELMOD.NMI
VAL INT32 IOAPIC.RTBL0.DELMOD.NMI
Deliver NMI.
x86ioapic.inc:60Constant IOAPIC.RTBL0.DELMOD.INIT
VAL INT32 IOAPIC.RTBL0.DELMOD.INIT
Deliver INIT signal to processors.
x86ioapic.inc:61Constant IOAPIC.RTBL0.DELMOD.EXTINT
VAL INT32 IOAPIC.RTBL0.DELMOD.EXTINT
Deliver pretend 8259A-compatible interrupt.
x86ioapic.inc:62Constant IOAPIC.RTBL0.VECTOR.MASK
VAL INT32 IOAPIC.RTBL0.VECTOR.MASK
Delivery vector mask.
x86ioapic.inc:67Protocol P.IOAPIC.IN
PROTOCOL P.IOAPIC.IN
IO-APIC input protocol.
x86ioapic.inc:71Tag init
init; INT32
Initialise IO-APIC.
Parameters:
INT32 |
addr |
Physical address of the IO-APIC (32 bytes). |
x86ioapic.inc:72Tag get.ioapic.id
get.ioapic.id
Reads the IO-APIC ID.
x86ioapic.inc:73Tag get.ioapic.version
get.ioapic.version
Reads the IO-APIC version.
x86ioapic.inc:74Tag get.ioapic.numredir
get.ioapic.numredir
Get number of redirection entries.
x86ioapic.inc:75Tag read.entry
read.entry; INT
Read interrupt table entry.
x86ioapic.inc:76Tag write.entry
write.entry; INT; INT64
Write interrupt table entry.
x86ioapic.inc:80Protocol P.IOAPIC.OUT
PROTOCOL P.IOAPIC.OUT
IO-APIC output protocol.
x86ioapic.inc:84Tag result
result; INT
Generic result.
Parameters:
INT |
val |
Return value or error |
x86ioapic.inc:85Tag ioapic.id
ioapic.id; BYTE
IO-APIC ID result.
x86ioapic.inc:86Tag ioapic.version
ioapic.version; BYTE
IO-APIC version result.
x86ioapic.inc:87Tag int.entry
int.entry; INT64
Interrupt table entry.
x86ioapic.inc:91Channel type CT.IOAPIC
RECURSIVE CHAN TYPE CT.IOAPIC
IO-APIC channel-type
x86ioapic.inc:93Variable in?
CHAN P.IOAPIC.IN
Commands in.
x86ioapic.inc:94Variable out!
CHAN P.IOAPIC.OUT
Responses out.
x86ioapic.inc:95Variable return?
CHAN CT.IOAPIC!
Used to close the connection to, and shut-down, the IO-APIC.
x86ioapic.occ:64Process x86ioapic.driver
PROC x86ioapic.driver (CT.DRIVER? link, SHARED LOG! log, VAL []BYTE options)
x86 multiprocessor IO-APIC driver.
This provides support for a standard 82093AA compatible IO-APIC, used primarily for interrupt routing.
Parameters:
CT.DRIVER? |
link |
Connection to parent driver (server). |
SHARED LOG! |
log |
System log channels. |
VAL []BYTE |
options |
Driver options. |