PcAtChipsetPkg: Clean up source files
[mirror_edk2.git] / PcAtChipsetPkg / Include / Register / IoApic.h
1 /** @file
2 I/O APIC Register Definitions from 82093AA I/O Advanced Programmable Interrupt
3 Controller (IOAPIC), 1996.
4
5 Copyright (c) 2011 - 2018, Intel Corporation. All rights reserved.<BR>
6 This program and the accompanying materials
7 are licensed and made available under the terms and conditions of the BSD License
8 which accompanies this distribution. The full text of the license may be found at
9 http://opensource.org/licenses/bsd-license.php
10
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
13
14 **/
15
16 #ifndef __IO_APIC_H__
17 #define __IO_APIC_H__
18
19 ///
20 /// I/O APIC Register Offsets
21 ///
22 #define IOAPIC_INDEX_OFFSET 0x00
23 #define IOAPIC_DATA_OFFSET 0x10
24
25 ///
26 /// I/O APIC Indirect Register Indexes
27 ///
28 #define IO_APIC_IDENTIFICATION_REGISTER_INDEX 0x00
29 #define IO_APIC_VERSION_REGISTER_INDEX 0x01
30 #define IO_APIC_REDIRECTION_TABLE_ENTRY_INDEX 0x10
31
32 ///
33 /// I/O APIC Interrupt Deliver Modes
34 ///
35 #define IO_APIC_DELIVERY_MODE_FIXED 0
36 #define IO_APIC_DELIVERY_MODE_LOWEST_PRIORITY 1
37 #define IO_APIC_DELIVERY_MODE_SMI 2
38 #define IO_APIC_DELIVERY_MODE_NMI 4
39 #define IO_APIC_DELIVERY_MODE_INIT 5
40 #define IO_APIC_DELIVERY_MODE_EXTINT 7
41
42 #pragma pack(1)
43
44 typedef union {
45 struct {
46 UINT32 Reserved0:24;
47 UINT32 Identification:4;
48 UINT32 Reserved1:4;
49 } Bits;
50 UINT32 Uint32;
51 } IO_APIC_IDENTIFICATION_REGISTER;
52
53 typedef union {
54 struct {
55 UINT32 Version:8;
56 UINT32 Reserved0:8;
57 UINT32 MaximumRedirectionEntry:8;
58 UINT32 Reserved1:8;
59 } Bits;
60 UINT32 Uint32;
61 } IO_APIC_VERSION_REGISTER;
62
63 typedef union {
64 struct {
65 UINT32 Vector: 8;
66 UINT32 DeliveryMode: 3;
67 UINT32 DestinationMode: 1;
68 UINT32 DeliveryStatus: 1;
69 UINT32 Polarity: 1;
70 UINT32 RemoteIRR: 1;
71 UINT32 TriggerMode: 1;
72 UINT32 Mask: 1;
73 UINT32 Reserved0: 15;
74 UINT32 Reserved1: 24;
75 UINT32 DestinationID: 8;
76 } Bits;
77 struct {
78 UINT32 Low;
79 UINT32 High;
80 } Uint32;
81 UINT64 Uint64;
82 } IO_APIC_REDIRECTION_TABLE_ENTRY;
83
84 #pragma pack()
85
86 #endif