#ifndef SMP_H_ #define SMP_H_ 1 #include 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