diff --git a/src/system/kernel/arch/x86/Jamfile b/src/system/kernel/arch/x86/Jamfile index beb468bc13..13d766c395 100644 --- a/src/system/kernel/arch/x86/Jamfile +++ b/src/system/kernel/arch/x86/Jamfile @@ -55,9 +55,6 @@ if $(TARGET_ARCH) = x86_64 { syscalls_asm.S thread.cpp - ioapic.cpp - irq_routing_table.cpp - # paging x86_physical_page_mapper_large_memory.cpp @@ -90,6 +87,8 @@ local archGenericSources = arch_vm.cpp arch_vm_translation_map.cpp apic.cpp + ioapic.cpp + irq_routing_table.cpp msi.cpp pic.cpp diff --git a/src/system/kernel/arch/x86/arch_int.cpp b/src/system/kernel/arch/x86/arch_int.cpp index c1340f1060..415fc25bad 100644 --- a/src/system/kernel/arch/x86/arch_int.cpp +++ b/src/system/kernel/arch/x86/arch_int.cpp @@ -391,10 +391,7 @@ arch_int_are_interrupts_enabled(void) status_t arch_int_init_io(kernel_args* args) { - // TODO x86_64 -#ifndef __x86_64__ ioapic_init(args); -#endif msi_init(); return B_OK; } diff --git a/src/system/kernel/arch/x86/arch_vm.cpp b/src/system/kernel/arch/x86/arch_vm.cpp index f5948e13a2..0aed76adb7 100644 --- a/src/system/kernel/arch/x86/arch_vm.cpp +++ b/src/system/kernel/arch/x86/arch_vm.cpp @@ -656,7 +656,6 @@ arch_vm_init_post_area(kernel_args *args) return B_NO_MEMORY; } - // TODO x86_64 #ifndef __x86_64__ return bios_init(); #else diff --git a/src/system/kernel/arch/x86/ioapic.cpp b/src/system/kernel/arch/x86/ioapic.cpp index 6d40b1645b..28d5ba871b 100644 --- a/src/system/kernel/arch/x86/ioapic.cpp +++ b/src/system/kernel/arch/x86/ioapic.cpp @@ -117,8 +117,8 @@ static int32 sSourceOverrides[ISA_INTERRUPT_COUNT]; static void print_ioapic(struct ioapic& ioapic) { - dprintf("io-apic %u has range %u-%u, %u entries, version 0x%08lx, " - "apic-id %u\n", ioapic.number, ioapic.global_interrupt_base, + dprintf("io-apic %u has range %u-%u, %u entries, version 0x%08" B_PRIx32 + ", apic-id %u\n", ioapic.number, ioapic.global_interrupt_base, ioapic.global_interrupt_last, ioapic.max_redirection_entry + 1, ioapic.version, ioapic.apic_id); } @@ -385,7 +385,7 @@ ioapic_initialize_ioapic(struct ioapic& ioapic, uint8 targetAPIC) static int32 ioapic_source_override_handler(void* data) { - int32 vector = (int32)data; + int32 vector = (addr_t)data; bool levelTriggered = ioapic_is_level_triggered_interrupt(vector); return int_io_interrupt_handler(vector, levelTriggered); } @@ -404,9 +404,10 @@ acpi_enumerate_ioapics(acpi_table_madt* madt) case ACPI_MADT_TYPE_IO_APIC: { acpi_madt_io_apic* info = (acpi_madt_io_apic*)apicEntry; - dprintf("found io-apic with address 0x%08lx, global " - "interrupt base %lu, apic-id %u\n", (uint32)info->Address, - (uint32)info->GlobalIrqBase, info->Id); + dprintf("found io-apic with address 0x%08" B_PRIx32 ", global " + "interrupt base %" B_PRIu32 ", apic-id %u\n", + (uint32)info->Address, (uint32)info->GlobalIrqBase, + info->Id); struct ioapic* ioapic = (struct ioapic*)malloc(sizeof(struct ioapic)); @@ -423,8 +424,8 @@ acpi_enumerate_ioapics(acpi_table_madt* madt) ioapic->registers = NULL; ioapic->next = NULL; - dprintf("mapping io-apic %u at physical address %p\n", - ioapic->number, (void*)info->Address); + dprintf("mapping io-apic %u at physical address %#" B_PRIx32 + "\n", ioapic->number, (uint32)info->Address); status_t status = ioapic_map_ioapic(*ioapic, info->Address); if (status != B_OK) { free(ioapic); @@ -446,8 +447,9 @@ acpi_enumerate_ioapics(acpi_table_madt* madt) { acpi_madt_nmi_source* info = (acpi_madt_nmi_source*)apicEntry; - dprintf("found nmi source global irq %lu, flags 0x%04x\n", - (uint32)info->GlobalIrq, (uint16)info->IntiFlags); + dprintf("found nmi source global irq %" B_PRIu32 ", flags " + "0x%04x\n", (uint32)info->GlobalIrq, + (uint16)info->IntiFlags); struct ioapic* ioapic = find_ioapic(info->GlobalIrq); if (ioapic == NULL) { @@ -517,8 +519,8 @@ acpi_configure_source_overrides(acpi_table_madt* madt) acpi_madt_interrupt_override* info = (acpi_madt_interrupt_override*)apicEntry; dprintf("found interrupt override for bus %u, source irq %u, " - "global irq %lu, flags 0x%08lx\n", info->Bus, - info->SourceIrq, (uint32)info->GlobalIrq, + "global irq %" B_PRIu32 ", flags 0x%08" B_PRIx32 "\n", + info->Bus, info->SourceIrq, (uint32)info->GlobalIrq, (uint32)info->IntiFlags); if (info->SourceIrq >= ISA_INTERRUPT_COUNT) { @@ -545,8 +547,9 @@ acpi_configure_source_overrides(acpi_table_madt* madt) { acpi_madt_nmi_source* info = (acpi_madt_nmi_source*)apicEntry; - dprintf("found nmi source global irq %lu, flags 0x%04x\n", - (uint32)info->GlobalIrq, (uint16)info->IntiFlags); + dprintf("found nmi source global irq %" B_PRIu32 ", flags " + "0x%04x\n", (uint32)info->GlobalIrq, + (uint16)info->IntiFlags); struct ioapic* ioapic = find_ioapic(info->GlobalIrq); if (ioapic == NULL) diff --git a/src/system/kernel/arch/x86/irq_routing_table.cpp b/src/system/kernel/arch/x86/irq_routing_table.cpp index 48d386d161..c3637a36b6 100644 --- a/src/system/kernel/arch/x86/irq_routing_table.cpp +++ b/src/system/kernel/arch/x86/irq_routing_table.cpp @@ -66,14 +66,15 @@ print_irq_descriptor(const irq_descriptor& descriptor) static void print_irq_routing_entry(const irq_routing_entry& entry) { - dprintf("address 0x%04llx; pin %u;", entry.device_address, entry.pin); + dprintf("address 0x%04" B_PRIx64 "; pin %u;", entry.device_address, + entry.pin); if (entry.source_index != 0) - dprintf(" GSI %lu;", entry.source_index); + dprintf(" GSI %" B_PRIu32 ";", entry.source_index); else - dprintf(" source %p %lu;", entry.source, entry.source_index); + dprintf(" source %p %" B_PRIu32 ";", entry.source, entry.source_index); - dprintf(" pci %u:%u pin %u func mask %lx; bios irq: %u; gsi %u;" + dprintf(" pci %u:%u pin %u func mask %" B_PRIx32 "; bios irq: %u; gsi %u;" " config 0x%02x\n", entry.pci_bus, entry.pci_device, entry.pin + 1, entry.pci_function_mask, entry.bios_irq, entry.irq, entry.polarity | entry.trigger_mode); @@ -830,8 +831,8 @@ enable_irq_routing(acpi_module_info* acpi, IRQRoutingTable& routingTable) status = update_pci_info_for_entry(pci, irqEntry); if (status != B_OK) { - dprintf("failed to update interrupt_line for PCI %u:%u mask %lx\n", - irqEntry.pci_bus, irqEntry.pci_device, + dprintf("failed to update interrupt_line for PCI %u:%u mask %" + B_PRIx32 "\n", irqEntry.pci_bus, irqEntry.pci_device, irqEntry.pci_function_mask); } } diff --git a/src/system/kernel/arch/x86/msi.cpp b/src/system/kernel/arch/x86/msi.cpp index 62bfb84482..67b24225cc 100644 --- a/src/system/kernel/arch/x86/msi.cpp +++ b/src/system/kernel/arch/x86/msi.cpp @@ -17,10 +17,6 @@ static bool sMSISupported = false; void msi_init() { -#ifdef __x86_64__ - // TODO x86_64. - return; -#endif if (!apic_available()) { dprintf("disabling msi due to missing apic\n"); return;