53 lines
1.0 KiB
C
53 lines
1.0 KiB
C
#include <stdint.h>
|
|
|
|
#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)); |