X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/05b7549a0f980efa33265a091a5174a78851ce05..28c176b668c841a3b7fb093faccf0efa39257603:/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 ca75d08..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; -} __attribute__((packed)) acpi_ics_hdr_t; + 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; - uint32_t flags; -} __attribute__((packed)) acpi_apic_t; + 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,12 +43,14 @@ typedef struct typedef struct { acpi_ics_hdr_t header; - uint8_t ioapic_id; - uint8_t reserved; - uint32_t ioapic_addr; - // The global system interrupt offset for this IOAPIC. (Kind of IRQ offset for a slave IOAPIC) - uint32_t gis_offset; -} __attribute__((packed)) acpi_ioapic_t; + 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) @@ -60,29 +64,31 @@ 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 - uint32_t gsi; - uint16_t flags; -} __attribute__((packed)) acpi_intso_t; + u32_t gsi; + 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; - uint32_t flags; + u32_t apic_addr; + u32_t flags; // Here is a bunch of packed ICS reside here back-to-back. -} __attribute__((packed)) acpi_madt_t; +} 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; -} acpi_madt_toc_t; +} ACPI_TABLE_PACKED acpi_madt_toc_t; #endif /* __LUNAIX_ACPI_MADT_H */