IoApic.h revision 4fd606d1f5abe38e1f42c38de1d2e895166bd0f4
2N/A/** @file
2N/A I/O APIC Register Definitions from 82093AA I/O Advanced Programmable Interrupt
2N/A Controller (IOAPIC), 1996.
2N/A
2N/A Copyright (c) 2011, Intel Corporation. All rights reserved.<BR>
2N/A This program and the accompanying materials
2N/A are licensed and made available under the terms and conditions of the BSD License
2N/A which accompanies this distribution. The full text of the license may be found at
2N/A http://opensource.org/licenses/bsd-license.php
2N/A
2N/A THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
2N/A WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
2N/A
2N/A**/
2N/A
2N/A#ifndef __IO_APIC_H__
2N/A#define __IO_APIC_H__
2N/A
2N/A///
2N/A/// I/O APIC Register Offsets
2N/A///
2N/A#define IOAPIC_INDEX_OFFSET 0x00
2N/A#define IOAPIC_DATA_OFFSET 0x10
2N/A
2N/A///
2N/A/// I/O APIC Indirect Register Indexes
2N/A///
2N/A#define IO_APIC_IDENTIFICATION_REGISTER_INDEX 0x00
2N/A#define IO_APIC_VERSION_REGISTER_INDEX 0x01
2N/A#define IO_APIC_REDIRECTION_TABLE_ENTRY_INDEX 0x10
2N/A
2N/A///
2N/A/// I/O APIC Interrupt Deliver Modes
2N/A///
2N/A#define IO_APIC_DELIVERY_MODE_FIXED 0
2N/A#define IO_APIC_DELIVERY_MODE_LOWEST_PRIORITY 1
2N/A#define IO_APIC_DELIVERY_MODE_SMI 2
2N/A#define IO_APIC_DELIVERY_MODE_NMI 4
2N/A#define IO_APIC_DELIVERY_MODE_INIT 5
2N/A#define IO_APIC_DELIVERY_MODE_EXTINT 7
2N/A
2N/A#pragma pack(1)
2N/A
2N/Atypedef union {
2N/A struct {
2N/A UINT32 Reserved0:24;
2N/A UINT32 Identification:4;
2N/A UINT32 Reserved1:4;
2N/A } Bits;
2N/A 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