]> pd.if.org Git - zos/blobdiff - smp.h
rudimentary smp detection
[zos] / smp.h
diff --git a/smp.h b/smp.h
new file mode 100644 (file)
index 0000000..6760345
--- /dev/null
+++ b/smp.h
@@ -0,0 +1,58 @@
+#ifndef SMP_H_
+#define SMP_H_ 1
+
+#include <stdint.h>
+
+void init_smp(void);
+
+struct mpfp {
+       uint32_t signature;
+       uint32_t mpconfigptr;
+       uint8_t length;
+       uint8_t version;
+       uint8_t checksum;
+       uint8_t features1;
+       uint8_t features2;
+       uint8_t features3;
+       uint8_t features4;
+       uint8_t features5;
+};
+
+struct mpconfig {
+       uint32_t signature;
+       uint16_t tablelength;
+       uint8_t revision;
+       uint8_t checksum;
+       char    oemid[8];
+       char    productid[12];
+       uint32_t oemtableptr;
+       uint16_t oemtablesize;
+       uint16_t entrycount;
+       uint32_t localapicaddr;
+       uint16_t extendedtablen;
+       uint8_t extendedchecksum;
+       uint8_t reserved;
+};
+
+struct processorentry {
+       uint8_t etype;
+       uint8_t apicid;
+       uint8_t apicversion;
+       uint8_t enabled:1;
+       uint8_t bootstrap:1;
+       uint8_t unused:6;
+       uint32_t signature;
+       uint32_t features;
+       char    unused2[8];
+};
+
+struct ioapic {
+       uint8_t etype;
+       uint8_t id;
+       uint8_t ioapicversion;
+       uint8_t enabled:1;
+       uint8_t unused:7;
+       uint32_t address;
+};
+
+#endif