diff --git a/include/x86/mp.h b/include/x86/mp.h new file mode 100644 index 0000000..7d31065 --- /dev/null +++ b/include/x86/mp.h @@ -0,0 +1,53 @@ +#include + +#define MP_SIGNATURE (uint32_t) 0x5F504D5F + +struct mp_floating_pointer +{ + /** + * @brief The ASCII string "_MP_" indicates the presence of the pointer structure. + * + */ + uint32_t signature; + + /** + * @brief The physical address of the MP configuration table. All zeroes if + * the table does not exist. + * + */ + uint32_t physical_addr; + + /** + * @brief The length of the floating pointer structure in 16-byte units. + * Should contain the value '0x01'. + * + */ + uint8_t length; + + /** + * @brief The version number of the MP specification supported. + * + */ + uint8_t spec_rev; + + /** + * @brief A checksum of the pointer structure. + * + */ + uint8_t checksum; + + /** + * @brief When zero, the configuration table is present. Otherwise, the + * value indicates a default configuration. + * + */ + uint8_t config_type; + + uint8_t undef : 7; + + /** + * @brief + * + */ + uint8_t imcrp : 1; +} __attribute__ ((packed)); \ No newline at end of file