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
14
15#define SMP_MAGIC_IDENT (('_'<<24)|('P'<<16)|('M'<<8)|'_')
16
17#define MAX_MPC_ENTRY 1024
18#define MAX_APICS 256
19
20struct 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};
33
34struct 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};
49
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
56
57struct 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};
72
73struct mpc_config_bus
74{
75 unsigned char mpc_type;
76 unsigned char mpc_busid;
77 unsigned char mpc_bustype[6];
78};
79
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"
98
99struct 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};
108
109struct 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};
119
120enum mp_irq_source_types {
121 mp_INT = 0,
122 mp_NMI = 1,
123 mp_SMI = 2,
124 mp_ExtINT = 3
125};
126
127#define MP_IRQDIR_DEFAULT 0
128#define MP_IRQDIR_HIGH 1
129#define MP_IRQDIR_LOW 3
130
131struct 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};
142
143struct 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};
152
153struct 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};
163
164enum mp_bustype {
165 MP_BUS_ISA = 1,
166 MP_BUS_EISA,
167 MP_BUS_PCI,
168 MP_BUS_MCA,
169};
170#endif
171
172