Anonymous user
IOAPIC: Difference between revisions
Fixed one link, marked others as dead; grammar/typo fixes.
[unchecked revision] | [unchecked revision] |
mNo edit summary |
(Fixed one link, marked others as dead; grammar/typo fixes.) |
||
Line 2:
== Detecting I/O APIC ==
In order to detect the existence of an I/O APIC (or multiple ones), the Intel Multi-Processor or [[RSDP|ACPI]] tables (specifically, the [[MADT]]) must be parsed. In the MP tables, configuration tables with the entry identification of 0x02 are for I/O APICs. Parsing will tell how many (if any) I/O APICs exist, what are their APIC ID, base MMIO address and first IRQ (or GSI - Global System Interrupt). For more information
== Programming the I/O APIC ==
Each I/O APIC has a set of 2 or 3 (depending on version) 32-bit registers and up to many 64-bit registers (one per IRQ). The 64-bit registers have actually to be accessed as two 32-bit reads/writes. All registers are memory indexed. It means that you actually have only two 32-bit registers in memory, called IOREGSEL and IOREGWIN. You put the register index in IOREGSEL, and then you can read/write in IOREGWIN. The first three registers contain general
=== IOAPICID ===
This register has index 0 (you write 0 to IOREGSEL and then read from IOREGWIN). It's a Read
=== IOAPICVER ===
Line 268:
== External Links ==
=== MP Tables ===
* [https://web.archive.org/web/20121002210153/http://download.intel.com/design/
=== I/O APIC ===
* [http://download.intel.com/design/chipsets/datashts/29056601.pdf Intel 82093AA I/O APIC] (dead link)
* [http://download.intel.com/design/processor/manuals/253668.pdf Intel SDM 3A (see ch. 9.9)] (dead link)
[[de:I/O Advanced Programmable Interrupt Controller]]
|