source: mainline/arch/ia32/include/acpi/madt.h@ 10a2e22

lfn serial ticket/834-toolchain-update topic/msim-upgrade topic/simplify-dev-export
Last change on this file since 10a2e22 was 85bfdcc8, checked in by Jakub Jermar <jakub@…>, 20 years ago

Begin ACPI support.
ACPI support will be necessary for initialization of SMP systems with SMT (HyperThreading).

  • Property mode set to 100644
File size: 3.5 KB
Line 
1/*
2 * Copyright (C) 2005 Jakub Jermar
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * - Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * - Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 * - The name of the author may not be used to endorse or promote products
15 * derived from this software without specific prior written permission.
16 *
17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */
28
29#ifndef __MADT_H__
30#define __MADT_H__
31
32#include <arch/acpi/acpi.h>
33
34/* Multiple APIC Description Table */
35struct acpi_madt {
36 struct acpi_sdt_header header;
37 __u32 l_apic_address;
38 __u32 flags;
39 __u8 apic_strucure[];
40} __attribute__ ((packed));
41
42#define MADT_L_APIC 0
43#define MADT_IO_APIC 1
44#define MADT_INTR_SRC_OVRD 2
45#define MADT_NMI_SRC 3
46#define MADT_L_APIC_NMI 4
47#define MADT_L_APIC_ADDR_OVRD 5
48#define MADT_IO_SAPIC 6
49#define MADT_L_SAPIC 7
50#define MADT_PLATFORM_INTR_SRC 8
51#define MADT_RESERVED_SKIP_BEGIN 9
52#define MADT_RESERVED_SKIP_END 127
53#define MADT_RESERVED_OEM_BEGIN 128
54#define MADT_RESERVED_OEM_END 255
55
56struct madt_l_apic {
57 __u8 type;
58 __u8 length;
59 __u8 acpi_id;
60 __u8 apic_id;
61 __u32 flags;
62} __attribute__ ((packed));
63
64struct madt_io_apic {
65 __u8 type;
66 __u8 length;
67 __u8 io_apic_id;
68 __u8 reserved;
69 __u32 io_apic_address;
70 __u32 global_intr_base;
71} __attribute__ ((packed));
72
73struct madt_intr_src_ovrd {
74 __u8 type;
75 __u8 length;
76 __u8 bus;
77 __u8 source;
78 __u32 global_intr;
79 __u16 flags;
80} __attribute__ ((packed));
81
82struct madt_nmi_src {
83 __u8 type;
84 __u8 length;
85 __u16 flags;
86 __u32 global_intr;
87} __attribute__ ((packed));
88
89struct madt_l_apic_nmi {
90 __u8 type;
91 __u8 length;
92 __u8 acpi_id;
93 __u16 flags;
94 __u8 l_apic_lint;
95} __attribute__ ((packed));
96
97struct madt_l_apic_addr_ovrd {
98 __u8 type;
99 __u8 length;
100 __u16 reserved;
101 __u64 l_apic_address;
102} __attribute__ ((packed));
103
104struct madt_io_sapic {
105 __u8 type;
106 __u8 length;
107 __u8 io_apic_id;
108 __u8 reserved;
109 __u32 global_intr_base;
110 __u64 io_apic_address;
111} __attribute__ ((packed));
112
113struct madt_l_sapic {
114 __u8 type;
115 __u8 length;
116 __u8 acpi_id;
117 __u8 sapic_id;
118 __u8 sapic_eid;
119 __u8 reserved[3];
120 __u32 flags;
121 __u32 acpi_processor_uid_value;
122 __u8 acpi_processor_uid_str[1];
123} __attribute__ ((packed));
124
125struct madt_platform_intr_src {
126 __u8 type;
127 __u8 length;
128 __u16 flags;
129 __u8 intr_type;
130 __u8 processor_id;
131 __u8 processor_eid;
132 __u8 io_sapic_vector;
133 __u32 global_intr;
134 __u32 platform_intr_src_flags;
135} __attribute__ ((packed));
136
137extern struct acpi_madt *acpi_madt;
138
139#endif /* __MADT_H__ */
Note: See TracBrowser for help on using the repository browser.