Kernel/x86 - Moved MP Table parsing into its own file
[tpg/acess2.git] / KernelLand / Kernel / arch / x86 / include / mptable.h
1 /*
2  * Acess2 Kernel (x86 Port)
3  * - By John Hodge (thePowersGang)
4  *
5  * include/mptable.h
6  * - MPTable definitions
7  */
8
9 #define MPPTR_IDENT     ('_'|('M'<<8)|('P'<<16)|('_'<<24))
10 #define MPTABLE_IDENT   ('P'|('C'<<8)|('M'<<16)|('P'<<24))
11
12 typedef struct sMPInfo {
13         Uint32  Sig;    // '_MP_'
14         Uint32  MPConfig;
15         Uint8   Length;
16         Uint8   Version;
17         Uint8   Checksum;
18         Uint8   Features[5];    // 2-4 are unused
19 } tMPInfo;
20
21 typedef union uMPTable_Ent {
22         Uint8   Type;
23         struct {
24                 Uint8   Type;
25                 Uint8   APICID;
26                 Uint8   APICVer;
27                 Uint8   CPUFlags;       // bit 0: Enabled, bit 1: Boot Processor
28                 Uint32  CPUSignature;   // Stepping, Model, Family
29                 Uint32  FeatureFlags;
30                 Uint32  Reserved[2];
31         } __attribute__((packed))       Proc;   // 0x00
32         struct {
33                 Uint8   Type;
34                 Uint8   ID;
35                 char    TypeString[6];
36         } __attribute__((packed))       Bus;    // 0x01
37         struct {
38                 Uint8   Type;
39                 Uint8   ID;
40                 Uint8   Version;
41                 Uint8   Flags;  // bit 0: Enabled
42                 Uint32  Addr;
43         } __attribute__((packed))       IOAPIC; // 0x02
44         struct {
45                 Uint8   Type;
46                 Uint8   IntType;
47                 Uint16  Flags;  // 0,1: Polarity, 2,3: Trigger Mode
48                 Uint8   SourceBusID;
49                 Uint8   SourceBusIRQ;
50                 Uint8   DestAPICID;
51                 Uint8   DestAPICIRQ;
52         } __attribute__((packed))       IOInt;
53         struct {
54                 Uint8   Type;
55                 Uint8   IntType;
56                 Uint16  Flags;  // 0,1: Polarity, 2,3: Trigger Mode
57                 Uint8   SourceBusID;
58                 Uint8   SourceBusIRQ;
59                 Uint8   DestLocalAPICID;
60                 Uint8   DestLocalAPICIRQ;
61         } __attribute__((packed))       LocalInt;
62 } __attribute__((packed)) tMPTable_Ent;
63
64 typedef struct sMPTable {
65         Uint32  Sig;
66         Uint16  BaseTableLength;
67         Uint8   SpecRev;
68         Uint8   Checksum;
69         
70         char    OemID[8];
71         char    ProductID[12];
72         
73         Uint32  OEMTablePtr;
74         Uint16  OEMTableSize;
75         Uint16  EntryCount;
76         
77         Uint32  LocalAPICMemMap;        //!< Address used to access the local APIC
78         Uint16  ExtendedTableLen;
79         Uint8   ExtendedTableChecksum;
80         Uint8   Reserved;
81         
82         tMPTable_Ent    Entries[];
83 } tMPTable;

UCC git Repository :: git.ucc.asn.au