*/
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)
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)
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)
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;
-} __attribute__((packed)) acpi_madt_toc_t;
+} ACPI_TABLE_PACKED acpi_madt_toc_t;
#endif /* __LUNAIX_ACPI_MADT_H */