#ifndef __ASM_MPSPEC_H#define __ASM_MPSPEC_H/* * Structure definitions for SMP machines following the * Intel Multiprocessing Specification 1.1 and 1.4. *//* * This tag identifies where the SMP configuration * information is. */#define SMP_MAGIC_IDENT (('_'<<24)|('P'<<16)|('M'<<8)|'_')/* * a maximum of 16 APICs with the current APIC ID architecture. * xAPICs can have up to 256. SAPICs have 16 ID bits. */#ifdef CONFIG_X86_CLUSTERED_APIC#define MAX_APICS 256#else#define MAX_APICS 16#endif#define MAX_MPC_ENTRY 1024structintel_mp_floating{charmpf_signature[4];/* "_MP_" */unsignedlongmpf_physptr;/* Configuration table address */unsignedcharmpf_length;/* Our length (paragraphs) */unsignedcharmpf_specification;/* Specification version */unsignedcharmpf_checksum;/* Checksum (makes sum 0) */unsignedcharmpf_feature1;/* Standard or configuration ? */unsignedcharmpf_feature2;/* Bit7 set for IMCR|PIC */unsignedcharmpf_feature3;/* Unused (0) */unsignedcharmpf_feature4;/* Unused (0) */unsignedcharmpf_feature5;/* Unused (0) */};structmp_config_table{charmpc_signature[4];#define MPC_SIGNATURE "PCMP"unsignedshortmpc_length;/* Size of table */charmpc_spec;/* 0x01 */charmpc_checksum;charmpc_oem[8];charmpc_productid[12];unsignedlongmpc_oemptr;/* 0 if not present */unsignedshortmpc_oemsize;/* 0 if not present */unsignedshortmpc_oemcount;unsignedlongmpc_lapic;/* APIC address */unsignedlongreserved;};/* Followed by entries */#define MP_PROCESSOR 0#define MP_BUS 1#define MP_IOAPIC 2#define MP_INTSRC 3#define MP_LINTSRC 4#define MP_TRANSLATION 192 /* Used by IBM NUMA-Q to describe node locality */structmpc_config_processor{unsignedcharmpc_type;unsignedcharmpc_apicid;/* Local APIC number */unsignedcharmpc_apicver;/* Its versions */unsignedcharmpc_cpuflag;#define CPU_ENABLED 1 /* Processor is available */#define CPU_BOOTPROCESSOR 2 /* Processor is the BP */unsignedlongmpc_cpufeature;#define CPU_STEPPING_MASK 0x0F#define CPU_MODEL_MASK 0xF0#define CPU_FAMILY_MASK 0xF00unsignedlongmpc_featureflag;/* CPUID feature value */unsignedlongmpc_reserved[2];};structmpc_config_bus{unsignedcharmpc_type;unsignedcharmpc_busid;unsignedcharmpc_bustype[6]__attribute((packed));};/* List of Bus Type string values, Intel MP Spec. */#define BUSTYPE_EISA "EISA"#define BUSTYPE_ISA "ISA"#define BUSTYPE_INTERN "INTERN" /* Internal BUS */#define BUSTYPE_MCA "MCA"#define BUSTYPE_VL "VL" /* Local bus */#define BUSTYPE_PCI "PCI"#define BUSTYPE_PCMCIA "PCMCIA"#define BUSTYPE_CBUS "CBUS"#define BUSTYPE_CBUSII "CBUSII"#define BUSTYPE_FUTURE "FUTURE"#define BUSTYPE_MBI "MBI"#define BUSTYPE_MBII "MBII"#define BUSTYPE_MPI "MPI"#define BUSTYPE_MPSA "MPSA"#define BUSTYPE_NUBUS "NUBUS"#define BUSTYPE_TC "TC"#define BUSTYPE_VME "VME"#define BUSTYPE_XPRESS "XPRESS"structmpc_config_ioapic{unsignedcharmpc_type;unsignedcharmpc_apicid;unsignedcharmpc_apicver;unsignedcharmpc_flags;#define MPC_APIC_USABLE 0x01unsignedlongmpc_apicaddr;};structmpc_config_intsrc{unsignedcharmpc_type;unsignedcharmpc_irqtype;unsignedshortmpc_irqflag;unsignedcharmpc_srcbus;unsignedcharmpc_srcbusirq;unsignedcharmpc_dstapic;unsignedcharmpc_dstirq;};enummp_irq_source_types{mp_INT=0,mp_NMI=1,mp_SMI=2,mp_ExtINT=3};#define MP_IRQDIR_DEFAULT 0#define MP_IRQDIR_HIGH 1#define MP_IRQDIR_LOW 3structmpc_config_lintsrc