X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/d8d001a6664b88b66524989589fcd809de6d3a92..40941f94f7c8522f65f9ebc425a300d40412bc16:/lunaix-os/hal/acpi/acpi.c diff --git a/lunaix-os/hal/acpi/acpi.c b/lunaix-os/hal/acpi/acpi.c index 55c27ae..67f5ade 100644 --- a/lunaix-os/hal/acpi/acpi.c +++ b/lunaix-os/hal/acpi/acpi.c @@ -36,16 +36,20 @@ acpi_init(multiboot_info_t* mb_info) size_t entry_n = (rsdt->header.length - sizeof(acpi_sdthdr_t)) >> 2; for (size_t i = 0; i < entry_n; i++) { - acpi_sdthdr_t* sdthdr = ((acpi_apic_t**)&(rsdt->entry))[i]; + acpi_sdthdr_t* sdthdr = + (acpi_sdthdr_t*)((acpi_apic_t**)&(rsdt->entry))[i]; switch (sdthdr->signature) { case ACPI_MADT_SIG: + kprintf(KINFO "MADT: %p\n", sdthdr); madt_parse((acpi_madt_t*)sdthdr, ctx); break; case ACPI_FADT_SIG: // FADT just a plain structure, no need to parse. + kprintf(KINFO "FADT: %p\n", sdthdr); ctx->fadt = *(acpi_fadt_t*)sdthdr; break; case ACPI_MCFG_SIG: + kprintf(KINFO "MCFG: %p\n", sdthdr); mcfg_parse(sdthdr, ctx); break; default: @@ -75,6 +79,16 @@ acpi_rsdp_validate(acpi_rsdp_t* rsdp) return sum == 0; } +uint8_t +acpi_gistranslate(uint8_t old_irq) +{ + if (old_irq >= 24) { + return old_irq; + } + acpi_intso_t* int_override = ctx->madt.irq_exception[old_irq]; + return int_override ? (uint8_t)int_override->gsi : old_irq; +} + #define VIRTUAL_BOX_PROBLEM acpi_rsdp_t*