mirror of https://github.com/acidanthera/audk.git
87 lines
2.3 KiB
C
87 lines
2.3 KiB
C
|
/** @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
|