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