git://scm.lunaixsky.com
/
lunaix-os.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
refactor: isrm to centeralize interrupt/irq resources management.
[lunaix-os.git]
/
lunaix-os
/
hal
/
acpi
/
acpi.c
diff --git
a/lunaix-os/hal/acpi/acpi.c
b/lunaix-os/hal/acpi/acpi.c
index 55c27aea4994876ef99d7232e16f94bb45e8a709..3f8a25f3bf987182856cf5eed1bf4ec7b9c99fab 100644
(file)
--- a/
lunaix-os/hal/acpi/acpi.c
+++ b/
lunaix-os/hal/acpi/acpi.c
@@
-36,7
+36,8
@@
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++) {
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:
madt_parse((acpi_madt_t*)sdthdr, ctx);
switch (sdthdr->signature) {
case ACPI_MADT_SIG:
madt_parse((acpi_madt_t*)sdthdr, ctx);
@@
-75,6
+76,16
@@
acpi_rsdp_validate(acpi_rsdp_t* rsdp)
return sum == 0;
}
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*
#define VIRTUAL_BOX_PROBLEM
acpi_rsdp_t*