X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/d8d001a6664b88b66524989589fcd809de6d3a92..28c176b668c841a3b7fb093faccf0efa39257603:/lunaix-os/hal/acpi/parser/madt_parser.c diff --git a/lunaix-os/hal/acpi/parser/madt_parser.c b/lunaix-os/hal/acpi/parser/madt_parser.c index 8456b57..c0b059d 100644 --- a/lunaix-os/hal/acpi/parser/madt_parser.c +++ b/lunaix-os/hal/acpi/parser/madt_parser.c @@ -7,25 +7,25 @@ madt_parse(acpi_madt_t* madt, acpi_context* toc) toc->madt.apic_addr = madt->apic_addr; // FUTURE: make madt.{apic,ioapic} as array or linked list. - uint8_t* ics_start = (uint8_t*)((uintptr_t)madt + sizeof(acpi_madt_t)); - uintptr_t ics_end = (uintptr_t)madt + madt->header.length; + ptr_t ics_start = (ptr_t)madt + sizeof(acpi_madt_t); + ptr_t ics_end = (ptr_t)madt + madt->header.length; // Cosidering only one IOAPIC present (max 24 pins) - // FIXME: use hash table instead - toc->madt.irq_exception = (acpi_intso_t*)vcalloc(24, sizeof(acpi_intso_t*)); + toc->madt.irq_exception = + (acpi_intso_t**)vcalloc(24, sizeof(acpi_intso_t*)); size_t so_idx = 0; while (ics_start < ics_end) { - acpi_ics_hdr_t* entry = (acpi_ics_hdr_t*)ics_start; + acpi_ics_hdr_t* entry = __acpi_ics_hdr(ics_start); switch (entry->type) { case ACPI_MADT_LAPIC: - toc->madt.apic = (acpi_apic_t*)entry; + toc->madt.apic = __acpi_apic(entry); break; case ACPI_MADT_IOAPIC: - toc->madt.ioapic = (acpi_ioapic_t*)entry; + toc->madt.ioapic = __acpi_ioapic(entry); break; case ACPI_MADT_INTSO: { - acpi_intso_t* intso_tbl = (acpi_intso_t*)entry; + acpi_intso_t* intso_tbl = __acpi_intso(entry); toc->madt.irq_exception[intso_tbl->source] = intso_tbl; break; }