| /** @file | |
| I/O APIC Register Definitions from 82093AA I/O Advanced Programmable Interrupt | |
| Controller (IOAPIC), 1996. | |
| Copyright (c) 2011, Intel Corporation. All rights reserved.<BR> | |
| This program and the accompanying materials | |
| are licensed and made available under the terms and conditions of the BSD License | |
| which accompanies this distribution. The full text of the license may be found at | |
| http://opensource.org/licenses/bsd-license.php | |
| THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, | |
| WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. | |
| **/ | |
| #ifndef __IO_APIC_H__ | |
| #define __IO_APIC_H__ | |
| /// | |
| /// I/O APIC Register Offsets | |
| /// | |
| #define IOAPIC_INDEX_OFFSET 0x00 | |
| #define IOAPIC_DATA_OFFSET 0x10 | |
| /// | |
| /// I/O APIC Indirect Register Indexes | |
| /// | |
| #define IO_APIC_IDENTIFICATION_REGISTER_INDEX 0x00 | |
| #define IO_APIC_VERSION_REGISTER_INDEX 0x01 | |
| #define IO_APIC_REDIRECTION_TABLE_ENTRY_INDEX 0x10 | |
| /// | |
| /// I/O APIC Interrupt Deliver Modes | |
| /// | |
| #define IO_APIC_DELIVERY_MODE_FIXED 0 | |
| #define IO_APIC_DELIVERY_MODE_LOWEST_PRIORITY 1 | |
| #define IO_APIC_DELIVERY_MODE_SMI 2 | |
| #define IO_APIC_DELIVERY_MODE_NMI 4 | |
| #define IO_APIC_DELIVERY_MODE_INIT 5 | |
| #define IO_APIC_DELIVERY_MODE_EXTINT 7 | |
| #pragma pack(1) | |
| typedef union { | |
| struct { | |
| UINT32 Reserved0:24; | |
| UINT32 Identification:4; | |
| UINT32 Reserved1:4; | |
| } Bits; | |
| UINT32 Uint32; | |
| } IO_APIC_IDENTIFICATION_REGISTER; | |
| typedef union { | |
| struct { | |
| UINT32 Version:8; | |
| UINT32 Reserved0:8; | |
| UINT32 MaximumRedirectionEntry:8; | |
| UINT32 Reserved1:8; | |
| } Bits; | |
| UINT32 Uint32; | |
| } IO_APIC_VERSION_REGISTER; | |
| typedef union { | |
| struct { | |
| UINT32 Vector: 8; | |
| UINT32 DeliveryMode: 3; | |
| UINT32 DestinationMode: 1; | |
| UINT32 DeliveryStatus: 1; | |
| UINT32 Polarity: 1; | |
| UINT32 RemoteIRR: 1; | |
| UINT32 TriggerMode: 1; | |
| UINT32 Mask: 1; | |
| UINT32 Reserved0: 15; | |
| UINT32 Reserved1: 24; | |
| UINT32 DestinationID: 8; | |
| } Bits; | |
| struct { | |
| UINT32 Low; | |
| UINT32 High; | |
| } Uint32; | |
| UINT64 Uint64; | |
| } IO_APIC_REDIRECTION_TABLE_ENTRY; | |
| #pragma pack() | |
| #endif |