1 /****************************************************************************
2 ****************************************************************************
3 ***
4 *** This header was automatically generated from a Linux kernel header
5 *** of the same name, to make information necessary for userspace to
6 *** call into the kernel available to libc. It contains only constants,
7 *** structures, and macros generated from the original header, and thus,
8 *** contains no copyrightable information.
9 ***
10 ****************************************************************************
11 ****************************************************************************/
12 #ifndef __ASM_MPSPEC_DEF_H
13 #define __ASM_MPSPEC_DEF_H
15 #define SMP_MAGIC_IDENT (('_'<<24)|('P'<<16)|('M'<<8)|'_')
17 #define MAX_MPC_ENTRY 1024
18 #define MAX_APICS 256
20 struct intel_mp_floating
21 {
22 char mpf_signature[4];
23 unsigned long mpf_physptr;
24 unsigned char mpf_length;
25 unsigned char mpf_specification;
26 unsigned char mpf_checksum;
27 unsigned char mpf_feature1;
28 unsigned char mpf_feature2;
29 unsigned char mpf_feature3;
30 unsigned char mpf_feature4;
31 unsigned char mpf_feature5;
32 };
34 struct mp_config_table
35 {
36 char mpc_signature[4];
37 #define MPC_SIGNATURE "PCMP"
38 unsigned short mpc_length;
39 char mpc_spec;
40 char mpc_checksum;
41 char mpc_oem[8];
42 char mpc_productid[12];
43 unsigned long mpc_oemptr;
44 unsigned short mpc_oemsize;
45 unsigned short mpc_oemcount;
46 unsigned long mpc_lapic;
47 unsigned long reserved;
48 };
50 #define MP_PROCESSOR 0
51 #define MP_BUS 1
52 #define MP_IOAPIC 2
53 #define MP_INTSRC 3
54 #define MP_LINTSRC 4
55 #define MP_TRANSLATION 192
57 struct mpc_config_processor
58 {
59 unsigned char mpc_type;
60 unsigned char mpc_apicid;
61 unsigned char mpc_apicver;
62 unsigned char mpc_cpuflag;
63 #define CPU_ENABLED 1
64 #define CPU_BOOTPROCESSOR 2
65 unsigned long mpc_cpufeature;
66 #define CPU_STEPPING_MASK 0x0F
67 #define CPU_MODEL_MASK 0xF0
68 #define CPU_FAMILY_MASK 0xF00
69 unsigned long mpc_featureflag;
70 unsigned long mpc_reserved[2];
71 };
73 struct mpc_config_bus
74 {
75 unsigned char mpc_type;
76 unsigned char mpc_busid;
77 unsigned char mpc_bustype[6];
78 };
80 #define BUSTYPE_EISA "EISA"
81 #define BUSTYPE_ISA "ISA"
82 #define BUSTYPE_INTERN "INTERN"
83 #define BUSTYPE_MCA "MCA"
84 #define BUSTYPE_VL "VL"
85 #define BUSTYPE_PCI "PCI"
86 #define BUSTYPE_PCMCIA "PCMCIA"
87 #define BUSTYPE_CBUS "CBUS"
88 #define BUSTYPE_CBUSII "CBUSII"
89 #define BUSTYPE_FUTURE "FUTURE"
90 #define BUSTYPE_MBI "MBI"
91 #define BUSTYPE_MBII "MBII"
92 #define BUSTYPE_MPI "MPI"
93 #define BUSTYPE_MPSA "MPSA"
94 #define BUSTYPE_NUBUS "NUBUS"
95 #define BUSTYPE_TC "TC"
96 #define BUSTYPE_VME "VME"
97 #define BUSTYPE_XPRESS "XPRESS"
99 struct mpc_config_ioapic
100 {
101 unsigned char mpc_type;
102 unsigned char mpc_apicid;
103 unsigned char mpc_apicver;
104 unsigned char mpc_flags;
105 #define MPC_APIC_USABLE 0x01
106 unsigned long mpc_apicaddr;
107 };
109 struct mpc_config_intsrc
110 {
111 unsigned char mpc_type;
112 unsigned char mpc_irqtype;
113 unsigned short mpc_irqflag;
114 unsigned char mpc_srcbus;
115 unsigned char mpc_srcbusirq;
116 unsigned char mpc_dstapic;
117 unsigned char mpc_dstirq;
118 };
120 enum mp_irq_source_types {
121 mp_INT = 0,
122 mp_NMI = 1,
123 mp_SMI = 2,
124 mp_ExtINT = 3
125 };
127 #define MP_IRQDIR_DEFAULT 0
128 #define MP_IRQDIR_HIGH 1
129 #define MP_IRQDIR_LOW 3
131 struct mpc_config_lintsrc
132 {
133 unsigned char mpc_type;
134 unsigned char mpc_irqtype;
135 unsigned short mpc_irqflag;
136 unsigned char mpc_srcbusid;
137 unsigned char mpc_srcbusirq;
138 unsigned char mpc_destapic;
139 #define MP_APIC_ALL 0xFF
140 unsigned char mpc_destapiclint;
141 };
143 struct mp_config_oemtable
144 {
145 char oem_signature[4];
146 #define MPC_OEM_SIGNATURE "_OEM"
147 unsigned short oem_length;
148 char oem_rev;
149 char oem_checksum;
150 char mpc_oem[8];
151 };
153 struct mpc_config_translation
154 {
155 unsigned char mpc_type;
156 unsigned char trans_len;
157 unsigned char trans_type;
158 unsigned char trans_quad;
159 unsigned char trans_global;
160 unsigned char trans_local;
161 unsigned short trans_reserved;
162 };
164 enum mp_bustype {
165 MP_BUS_ISA = 1,
166 MP_BUS_EISA,
167 MP_BUS_PCI,
168 MP_BUS_MCA,
169 };
170 #endif