X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/a362b4b2c4abbf2da6ec14cb44a8685a81107f6a..HEAD:/lunaix-os/includes/hal/acpi/madt.h diff --git a/lunaix-os/includes/hal/acpi/madt.h b/lunaix-os/includes/hal/acpi/madt.h index 1dd0bca..c12ab28 100644 --- a/lunaix-os/includes/hal/acpi/madt.h +++ b/lunaix-os/includes/hal/acpi/madt.h @@ -13,9 +13,10 @@ */ typedef struct { - uint8_t type; - uint8_t length; + u8_t type; + u8_t length; } ACPI_TABLE_PACKED acpi_ics_hdr_t; +#define __acpi_ics_hdr(acpi_ptr) ((acpi_ics_hdr_t*)__ptr(acpi_ptr)) /** * @brief ACPI Processor Local APIC Structure (PLAS) @@ -26,10 +27,11 @@ typedef struct typedef struct { acpi_ics_hdr_t header; - uint8_t processor_id; - uint8_t apic_id; + u8_t processor_id; + u8_t apic_id; u32_t flags; } ACPI_TABLE_PACKED acpi_apic_t; +#define __acpi_apic(acpi_ptr) ((acpi_apic_t*)__ptr(acpi_ptr)) /** * @brief ACPI IO APIC Structure (IOAS) @@ -41,13 +43,14 @@ typedef struct typedef struct { acpi_ics_hdr_t header; - uint8_t ioapic_id; - uint8_t reserved; + u8_t ioapic_id; + u8_t reserved; u32_t ioapic_addr; // The global system interrupt offset for this IOAPIC. (Kind of IRQ offset // for a slave IOAPIC) u32_t gis_offset; } ACPI_TABLE_PACKED acpi_ioapic_t; +#define __acpi_ioapic(acpi_ptr) ((acpi_ioapic_t*)__ptr(acpi_ptr)) /** * @brief ACPI Interrupt Source Override (INTSO) @@ -61,26 +64,28 @@ typedef struct typedef struct { acpi_ics_hdr_t header; - uint8_t bus; + u8_t bus; // source, which is the original IRQ back in the era of IBM PC/AT, the 8259 // PIC - uint8_t source; + u8_t source; // global system interrupt. The override of source in APIC mode u32_t gsi; - uint16_t flags; + u16_t flags; } ACPI_TABLE_PACKED acpi_intso_t; +#define __acpi_intso(acpi_ptr) ((acpi_intso_t*)__ptr(acpi_ptr)) typedef struct { acpi_sdthdr_t header; - void* apic_addr; + u32_t apic_addr; u32_t flags; // Here is a bunch of packed ICS reside here back-to-back. } ACPI_TABLE_PACKED acpi_madt_t; +#define __acpi_madt(acpi_ptr) ((acpi_madt_t*)__ptr(acpi_ptr)) typedef struct { - void* apic_addr; + u32_t apic_addr; acpi_apic_t* apic; acpi_ioapic_t* ioapic; acpi_intso_t** irq_exception;