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

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.