Palacios Public Git Repository

To checkout Palacios execute

  git clone http://v3vee.org/palacios/palacios.web/palacios.git
This will give you the master branch. You probably want the devel branch or one of the release branches. To switch to the devel branch, simply execute
  cd palacios
  git checkout --track -b devel origin/devel
The other branches are similar.


HVM configuration logic (create mptables, acpi tables, etc, based on ROS config)
[palacios.git] / bios / seabios / src / mptable.h
1 #ifndef __MPTABLE_H
2 #define __MPTABLE_H
3
4 #include "types.h" // u32
5
6 #define MPTABLE_SIGNATURE 0x5f504d5f  // "_MP_"
7
8 struct mptable_floating_s {
9     u32 signature;
10     u32 physaddr;
11     u8 length;
12     u8 spec_rev;
13     u8 checksum;
14     u8 feature1;
15     u8 feature2;
16     u8 reserved[3];
17 };
18
19 #define MPCONFIG_SIGNATURE 0x504d4350  // "PCMP"
20
21 struct mptable_config_s {
22     u32 signature;
23     u16 length;
24     u8 spec;
25     u8 checksum;
26     char oemid[8];
27     char productid[12];
28     u32 oemptr;
29     u16 oemsize;
30     u16 entrycount;
31     u32 lapic;
32     u16 exttable_length;
33     u8 exttable_checksum;
34     u8 reserved;
35 } PACKED;
36
37 #define MPT_TYPE_CPU 0
38 #define MPT_TYPE_BUS 1
39 #define MPT_TYPE_IOAPIC 2
40 #define MPT_TYPE_INTSRC 3
41 #define MPT_TYPE_LOCAL_INT 4
42
43 struct mpt_cpu {
44     u8 type;
45     u8 apicid;
46     u8 apicver;
47     u8 cpuflag;
48     u32 cpusignature;
49     u32 featureflag;
50     u32 reserved[2];
51 } PACKED;
52
53 struct mpt_bus {
54     u8 type;
55     u8 busid;
56     char bustype[6];
57 } PACKED;
58
59 struct mpt_ioapic {
60     u8 type;
61     u8 apicid;
62     u8 apicver;
63     u8 flags;
64     u32 apicaddr;
65 } PACKED;
66
67 struct mpt_intsrc {
68     u8 type;
69     u8 irqtype;
70     u16 irqflag;
71     u8 srcbus;
72     u8 srcbusirq;
73     u8 dstapic;
74     u8 dstirq;
75 } PACKED;
76
77 // mptable.c
78 void mptable_init(void);
79
80 #endif // mptable.h