Subversion Repositories shark

Rev

Rev 422 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
422 giacomo 1
#ifndef __ASM_MPSPEC_DEF_H
2
#define __ASM_MPSPEC_DEF_H
3
 
4
/*
5
 * Structure definitions for SMP machines following the
6
 * Intel Multiprocessing Specification 1.1 and 1.4.
7
 */
8
 
9
/*
10
 * This tag identifies where the SMP configuration
11
 * information is.
12
 */
13
 
14
#define SMP_MAGIC_IDENT (('_'<<24)|('P'<<16)|('M'<<8)|'_')
15
 
16
#define MAX_MPC_ENTRY 1024
17
 
18
struct intel_mp_floating
19
{
20
        char mpf_signature[4];          /* "_MP_"                       */
21
        unsigned long mpf_physptr;      /* Configuration table address  */
22
        unsigned char mpf_length;       /* Our length (paragraphs)      */
23
        unsigned char mpf_specification;/* Specification version        */
24
        unsigned char mpf_checksum;     /* Checksum (makes sum 0)       */
25
        unsigned char mpf_feature1;     /* Standard or configuration ?  */
26
        unsigned char mpf_feature2;     /* Bit7 set for IMCR|PIC        */
27
        unsigned char mpf_feature3;     /* Unused (0)                   */
28
        unsigned char mpf_feature4;     /* Unused (0)                   */
29
        unsigned char mpf_feature5;     /* Unused (0)                   */
30
};
31
 
32
struct mp_config_table
33
{
34
        char mpc_signature[4];
35
#define MPC_SIGNATURE "PCMP"
36
        unsigned short mpc_length;      /* Size of table */
37
        char  mpc_spec;                 /* 0x01 */
38
        char  mpc_checksum;
39
        char  mpc_oem[8];
40
        char  mpc_productid[12];
41
        unsigned long mpc_oemptr;       /* 0 if not present */
42
        unsigned short mpc_oemsize;     /* 0 if not present */
43
        unsigned short mpc_oemcount;
44
        unsigned long mpc_lapic;        /* APIC address */
45
        unsigned long reserved;
46
};
47
 
48
/* Followed by entries */
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  /* Used by IBM NUMA-Q to describe node locality */
56
 
57
struct mpc_config_processor
58
{
59
        unsigned char mpc_type;
60
        unsigned char mpc_apicid;       /* Local APIC number */
61
        unsigned char mpc_apicver;      /* Its versions */
62
        unsigned char mpc_cpuflag;
63
#define CPU_ENABLED             1       /* Processor is available */
64
#define CPU_BOOTPROCESSOR       2       /* Processor is the BP */
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;  /* CPUID feature value */
70
        unsigned long mpc_reserved[2];
71
};
72
 
73
struct mpc_config_bus
74
{
75
        unsigned char mpc_type;
76
        unsigned char mpc_busid;
77
        unsigned char mpc_bustype[6] __attribute((packed));
78
};
79
 
80
/* List of Bus Type string values, Intel MP Spec. */
81
#define BUSTYPE_EISA    "EISA"
82
#define BUSTYPE_ISA     "ISA"
83
#define BUSTYPE_INTERN  "INTERN"        /* Internal BUS */
84
#define BUSTYPE_MCA     "MCA"
85
#define BUSTYPE_VL      "VL"            /* Local bus */
86
#define BUSTYPE_PCI     "PCI"
87
#define BUSTYPE_PCMCIA  "PCMCIA"
88
#define BUSTYPE_CBUS    "CBUS"
89
#define BUSTYPE_CBUSII  "CBUSII"
90
#define BUSTYPE_FUTURE  "FUTURE"
91
#define BUSTYPE_MBI     "MBI"
92
#define BUSTYPE_MBII    "MBII"
93
#define BUSTYPE_MPI     "MPI"
94
#define BUSTYPE_MPSA    "MPSA"
95
#define BUSTYPE_NUBUS   "NUBUS"
96
#define BUSTYPE_TC      "TC"
97
#define BUSTYPE_VME     "VME"
98
#define BUSTYPE_XPRESS  "XPRESS"
99
#define BUSTYPE_NEC98   "NEC98"
100
 
101
struct mpc_config_ioapic
102
{
103
        unsigned char mpc_type;
104
        unsigned char mpc_apicid;
105
        unsigned char mpc_apicver;
106
        unsigned char mpc_flags;
107
#define MPC_APIC_USABLE         0x01
108
        unsigned long mpc_apicaddr;
109
};
110
 
111
struct mpc_config_intsrc
112
{
113
        unsigned char mpc_type;
114
        unsigned char mpc_irqtype;
115
        unsigned short mpc_irqflag;
116
        unsigned char mpc_srcbus;
117
        unsigned char mpc_srcbusirq;
118
        unsigned char mpc_dstapic;
119
        unsigned char mpc_dstirq;
120
};
121
 
122
enum mp_irq_source_types {
123
        mp_INT = 0,
124
        mp_NMI = 1,
125
        mp_SMI = 2,
126
        mp_ExtINT = 3
127
};
128
 
129
#define MP_IRQDIR_DEFAULT       0
130
#define MP_IRQDIR_HIGH          1
131
#define MP_IRQDIR_LOW           3
132
 
133
 
134
struct mpc_config_lintsrc
135
{
136
        unsigned char mpc_type;
137
        unsigned char mpc_irqtype;
138
        unsigned short mpc_irqflag;
139
        unsigned char mpc_srcbusid;
140
        unsigned char mpc_srcbusirq;
141
        unsigned char mpc_destapic;    
142
#define MP_APIC_ALL     0xFF
143
        unsigned char mpc_destapiclint;
144
};
145
 
146
struct mp_config_oemtable
147
{
148
        char oem_signature[4];
149
#define MPC_OEM_SIGNATURE "_OEM"
150
        unsigned short oem_length;      /* Size of table */
151
        char  oem_rev;                  /* 0x01 */
152
        char  oem_checksum;
153
        char  mpc_oem[8];
154
};
155
 
156
struct mpc_config_translation
157
{
158
        unsigned char mpc_type;
159
        unsigned char trans_len;
160
        unsigned char trans_type;
161
        unsigned char trans_quad;
162
        unsigned char trans_global;
163
        unsigned char trans_local;
164
        unsigned short trans_reserved;
165
};
166
 
167
/*
168
 *      Default configurations
169
 *
170
 *      1       2 CPU ISA 82489DX
171
 *      2       2 CPU EISA 82489DX neither IRQ 0 timer nor IRQ 13 DMA chaining
172
 *      3       2 CPU EISA 82489DX
173
 *      4       2 CPU MCA 82489DX
174
 *      5       2 CPU ISA+PCI
175
 *      6       2 CPU EISA+PCI
176
 *      7       2 CPU MCA+PCI
177
 */
178
 
179
enum mp_bustype {
180
        MP_BUS_ISA = 1,
181
        MP_BUS_EISA,
182
        MP_BUS_PCI,
183
        MP_BUS_MCA,
184
        MP_BUS_NEC98
185
};
186
#endif
187