diff --git a/sys/amd64/amd64/io_apic.c b/sys/amd64/amd64/io_apic.c deleted file mode 100644 index aa4ee4bdff28..000000000000 --- a/sys/amd64/amd64/io_apic.c +++ /dev/null @@ -1,914 +0,0 @@ -/*- - * Copyright (c) 2003 John Baldwin - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the author nor the names of any co-contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#include -__FBSDID("$FreeBSD$"); - -#include "opt_isa.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include -#include - -#include -#include -#include -#include -#include -#include - -#define IOAPIC_ISA_INTS 16 -#define IOAPIC_MEM_REGION 32 -#define IOAPIC_REDTBL_LO(i) (IOAPIC_REDTBL + (i) * 2) -#define IOAPIC_REDTBL_HI(i) (IOAPIC_REDTBL_LO(i) + 1) - -#define IRQ_EXTINT (NUM_IO_INTS + 1) -#define IRQ_NMI (NUM_IO_INTS + 2) -#define IRQ_SMI (NUM_IO_INTS + 3) -#define IRQ_DISABLED (NUM_IO_INTS + 4) - -static MALLOC_DEFINE(M_IOAPIC, "io_apic", "I/O APIC structures"); - -/* - * I/O APIC interrupt source driver. Each pin is assigned an IRQ cookie - * as laid out in the ACPI System Interrupt number model where each I/O - * APIC has a contiguous chunk of the System Interrupt address space. - * We assume that IRQs 1 - 15 behave like ISA IRQs and that all other - * IRQs behave as PCI IRQs by default. We also assume that the pin for - * IRQ 0 is actually an ExtINT pin. The apic enumerators override the - * configuration of individual pins as indicated by their tables. - * - * Documentation for the I/O APIC: "82093AA I/O Advanced Programmable - * Interrupt Controller (IOAPIC)", May 1996, Intel Corp. - * ftp://download.intel.com/design/chipsets/datashts/29056601.pdf - */ - -struct ioapic_intsrc { - struct intsrc io_intsrc; - u_int io_irq; - u_int io_intpin:8; - u_int io_vector:8; - u_int io_cpu:8; - u_int io_activehi:1; - u_int io_edgetrigger:1; - u_int io_masked:1; - int io_bus:4; - uint32_t io_lowreg; -}; - -struct ioapic { - struct pic io_pic; - u_int io_id:8; /* logical ID */ - u_int io_apic_id:4; - u_int io_intbase:8; /* System Interrupt base */ - u_int io_numintr:8; - volatile ioapic_t *io_addr; /* XXX: should use bus_space */ - vm_paddr_t io_paddr; - STAILQ_ENTRY(ioapic) io_next; - struct ioapic_intsrc io_pins[0]; -}; - -static u_int ioapic_read(volatile ioapic_t *apic, int reg); -static void ioapic_write(volatile ioapic_t *apic, int reg, u_int val); -static const char *ioapic_bus_string(int bus_type); -static void ioapic_print_irq(struct ioapic_intsrc *intpin); -static void ioapic_enable_source(struct intsrc *isrc); -static void ioapic_disable_source(struct intsrc *isrc, int eoi); -static void ioapic_eoi_source(struct intsrc *isrc); -static void ioapic_enable_intr(struct intsrc *isrc); -static void ioapic_disable_intr(struct intsrc *isrc); -static int ioapic_vector(struct intsrc *isrc); -static int ioapic_source_pending(struct intsrc *isrc); -static int ioapic_config_intr(struct intsrc *isrc, enum intr_trigger trig, - enum intr_polarity pol); -static void ioapic_resume(struct pic *pic); -static int ioapic_assign_cpu(struct intsrc *isrc, u_int apic_id); -static void ioapic_program_intpin(struct ioapic_intsrc *intpin); - -static STAILQ_HEAD(,ioapic) ioapic_list = STAILQ_HEAD_INITIALIZER(ioapic_list); -struct pic ioapic_template = { ioapic_enable_source, ioapic_disable_source, - ioapic_eoi_source, ioapic_enable_intr, - ioapic_disable_intr, ioapic_vector, - ioapic_source_pending, NULL, ioapic_resume, - ioapic_config_intr, ioapic_assign_cpu }; - -static int next_ioapic_base; -static u_int next_id; - -SYSCTL_NODE(_hw, OID_AUTO, apic, CTLFLAG_RD, 0, "APIC options"); -static int enable_extint; -SYSCTL_INT(_hw_apic, OID_AUTO, enable_extint, CTLFLAG_RDTUN, &enable_extint, 0, - "Enable the ExtINT pin in the first I/O APIC"); -TUNABLE_INT("hw.apic.enable_extint", &enable_extint); - -static __inline void -_ioapic_eoi_source(struct intsrc *isrc) -{ - lapic_eoi(); -} - -static u_int -ioapic_read(volatile ioapic_t *apic, int reg) -{ - - mtx_assert(&icu_lock, MA_OWNED); - apic->ioregsel = reg; - return (apic->iowin); -} - -static void -ioapic_write(volatile ioapic_t *apic, int reg, u_int val) -{ - - mtx_assert(&icu_lock, MA_OWNED); - apic->ioregsel = reg; - apic->iowin = val; -} - -static const char * -ioapic_bus_string(int bus_type) -{ - - switch (bus_type) { - case APIC_BUS_ISA: - return ("ISA"); - case APIC_BUS_EISA: - return ("EISA"); - case APIC_BUS_PCI: - return ("PCI"); - default: - return ("unknown"); - } -} - -static void -ioapic_print_irq(struct ioapic_intsrc *intpin) -{ - - switch (intpin->io_irq) { - case IRQ_DISABLED: - printf("disabled"); - break; - case IRQ_EXTINT: - printf("ExtINT"); - break; - case IRQ_NMI: - printf("NMI"); - break; - case IRQ_SMI: - printf("SMI"); - break; - default: - printf("%s IRQ %u", ioapic_bus_string(intpin->io_bus), - intpin->io_irq); - } -} - -static void -ioapic_enable_source(struct intsrc *isrc) -{ - struct ioapic_intsrc *intpin = (struct ioapic_intsrc *)isrc; - struct ioapic *io = (struct ioapic *)isrc->is_pic; - uint32_t flags; - - mtx_lock_spin(&icu_lock); - if (intpin->io_masked) { - flags = intpin->io_lowreg & ~IOART_INTMASK; - ioapic_write(io->io_addr, IOAPIC_REDTBL_LO(intpin->io_intpin), - flags); - intpin->io_masked = 0; - } - mtx_unlock_spin(&icu_lock); -} - -static void -ioapic_disable_source(struct intsrc *isrc, int eoi) -{ - struct ioapic_intsrc *intpin = (struct ioapic_intsrc *)isrc; - struct ioapic *io = (struct ioapic *)isrc->is_pic; - uint32_t flags; - - mtx_lock_spin(&icu_lock); - if (!intpin->io_masked && !intpin->io_edgetrigger) { - flags = intpin->io_lowreg | IOART_INTMSET; - ioapic_write(io->io_addr, IOAPIC_REDTBL_LO(intpin->io_intpin), - flags); - intpin->io_masked = 1; - } - - if (eoi == PIC_EOI) - _ioapic_eoi_source(isrc); - - mtx_unlock_spin(&icu_lock); -} - -static void -ioapic_eoi_source(struct intsrc *isrc) -{ - - _ioapic_eoi_source(isrc); -} - -/* - * Completely program an intpin based on the data in its interrupt source - * structure. - */ -static void -ioapic_program_intpin(struct ioapic_intsrc *intpin) -{ - struct ioapic *io = (struct ioapic *)intpin->io_intsrc.is_pic; - uint32_t low, high, value; - - /* - * If a pin is completely invalid or if it is valid but hasn't - * been enabled yet, just ensure that the pin is masked. - */ - mtx_assert(&icu_lock, MA_OWNED); - if (intpin->io_irq == IRQ_DISABLED || (intpin->io_irq < NUM_IO_INTS && - intpin->io_vector == 0)) { - low = ioapic_read(io->io_addr, - IOAPIC_REDTBL_LO(intpin->io_intpin)); - if ((low & IOART_INTMASK) == IOART_INTMCLR) - ioapic_write(io->io_addr, - IOAPIC_REDTBL_LO(intpin->io_intpin), - low | IOART_INTMSET); - return; - } - - /* Set the destination. */ - low = IOART_DESTPHY; - high = intpin->io_cpu << APIC_ID_SHIFT; - - /* Program the rest of the low word. */ - if (intpin->io_edgetrigger) - low |= IOART_TRGREDG; - else - low |= IOART_TRGRLVL; - if (intpin->io_activehi) - low |= IOART_INTAHI; - else - low |= IOART_INTALO; - if (intpin->io_masked) - low |= IOART_INTMSET; - switch (intpin->io_irq) { - case IRQ_EXTINT: - KASSERT(intpin->io_edgetrigger, - ("ExtINT not edge triggered")); - low |= IOART_DELEXINT; - break; - case IRQ_NMI: - KASSERT(intpin->io_edgetrigger, - ("NMI not edge triggered")); - low |= IOART_DELNMI; - break; - case IRQ_SMI: - KASSERT(intpin->io_edgetrigger, - ("SMI not edge triggered")); - low |= IOART_DELSMI; - break; - default: - KASSERT(intpin->io_vector != 0, ("No vector for IRQ %u", - intpin->io_irq)); - low |= IOART_DELFIXED | intpin->io_vector; - } - - /* Write the values to the APIC. */ - intpin->io_lowreg = low; - ioapic_write(io->io_addr, IOAPIC_REDTBL_LO(intpin->io_intpin), low); - value = ioapic_read(io->io_addr, IOAPIC_REDTBL_HI(intpin->io_intpin)); - value &= ~IOART_DEST; - value |= high; - ioapic_write(io->io_addr, IOAPIC_REDTBL_HI(intpin->io_intpin), value); -} - -static int -ioapic_assign_cpu(struct intsrc *isrc, u_int apic_id) -{ - struct ioapic_intsrc *intpin = (struct ioapic_intsrc *)isrc; - struct ioapic *io = (struct ioapic *)isrc->is_pic; - u_int old_vector, new_vector; - u_int old_id; - - /* - * keep 1st core as the destination for NMI - */ - if (intpin->io_irq == IRQ_NMI) - apic_id = 0; - - /* - * Set us up to free the old irq. - */ - old_vector = intpin->io_vector; - old_id = intpin->io_cpu; - if (old_vector && apic_id == old_id) - return (0); - - /* - * Allocate an APIC vector for this interrupt pin. Once - * we have a vector we program the interrupt pin. - */ - new_vector = apic_alloc_vector(apic_id, intpin->io_irq); - if (new_vector == 0) - return (ENOSPC); - - /* - * Mask the old intpin if it is enabled while it is migrated. - * - * At least some level-triggered interrupts seem to need the - * extra DELAY() to avoid being stuck in a non-EOI'd state. - */ - mtx_lock_spin(&icu_lock); - if (!intpin->io_masked) { - ioapic_write(io->io_addr, IOAPIC_REDTBL_LO(intpin->io_intpin), - intpin->io_lowreg | IOART_INTMSET); - DELAY(100); - } - - intpin->io_cpu = apic_id; - intpin->io_vector = new_vector; - if (isrc->is_handlers > 0) - apic_enable_vector(intpin->io_cpu, intpin->io_vector); - if (bootverbose) { - printf("ioapic%u: routing intpin %u (", io->io_id, - intpin->io_intpin); - ioapic_print_irq(intpin); - printf(") to lapic %u vector %u\n", intpin->io_cpu, - intpin->io_vector); - } - ioapic_program_intpin(intpin); - mtx_unlock_spin(&icu_lock); - - /* - * Free the old vector after the new one is established. This is done - * to prevent races where we could miss an interrupt. - */ - if (old_vector) { - if (isrc->is_handlers > 0) - apic_disable_vector(old_id, old_vector); - apic_free_vector(old_id, old_vector, intpin->io_irq); - } - return (0); -} - -static void -ioapic_enable_intr(struct intsrc *isrc) -{ - struct ioapic_intsrc *intpin = (struct ioapic_intsrc *)isrc; - - if (intpin->io_vector == 0) - if (ioapic_assign_cpu(isrc, intr_next_cpu()) != 0) - panic("Couldn't find an APIC vector for IRQ %d", - intpin->io_irq); - apic_enable_vector(intpin->io_cpu, intpin->io_vector); -} - - -static void -ioapic_disable_intr(struct intsrc *isrc) -{ - struct ioapic_intsrc *intpin = (struct ioapic_intsrc *)isrc; - u_int vector; - - if (intpin->io_vector != 0) { - /* Mask this interrupt pin and free its APIC vector. */ - vector = intpin->io_vector; - apic_disable_vector(intpin->io_cpu, vector); - mtx_lock_spin(&icu_lock); - intpin->io_masked = 1; - intpin->io_vector = 0; - ioapic_program_intpin(intpin); - mtx_unlock_spin(&icu_lock); - apic_free_vector(intpin->io_cpu, vector, intpin->io_irq); - } -} - -static int -ioapic_vector(struct intsrc *isrc) -{ - struct ioapic_intsrc *pin; - - pin = (struct ioapic_intsrc *)isrc; - return (pin->io_irq); -} - -static int -ioapic_source_pending(struct intsrc *isrc) -{ - struct ioapic_intsrc *intpin = (struct ioapic_intsrc *)isrc; - - if (intpin->io_vector == 0) - return 0; - return (lapic_intr_pending(intpin->io_vector)); -} - -static int -ioapic_config_intr(struct intsrc *isrc, enum intr_trigger trig, - enum intr_polarity pol) -{ - struct ioapic_intsrc *intpin = (struct ioapic_intsrc *)isrc; - struct ioapic *io = (struct ioapic *)isrc->is_pic; - int changed; - - KASSERT(!(trig == INTR_TRIGGER_CONFORM || pol == INTR_POLARITY_CONFORM), - ("%s: Conforming trigger or polarity\n", __func__)); - - /* - * EISA interrupts always use active high polarity, so don't allow - * them to be set to active low. - * - * XXX: Should we write to the ELCR if the trigger mode changes for - * an EISA IRQ or an ISA IRQ with the ELCR present? - */ - mtx_lock_spin(&icu_lock); - if (intpin->io_bus == APIC_BUS_EISA) - pol = INTR_POLARITY_HIGH; - changed = 0; - if (intpin->io_edgetrigger != (trig == INTR_TRIGGER_EDGE)) { - if (bootverbose) - printf("ioapic%u: Changing trigger for pin %u to %s\n", - io->io_id, intpin->io_intpin, - trig == INTR_TRIGGER_EDGE ? "edge" : "level"); - intpin->io_edgetrigger = (trig == INTR_TRIGGER_EDGE); - changed++; - } - if (intpin->io_activehi != (pol == INTR_POLARITY_HIGH)) { - if (bootverbose) - printf("ioapic%u: Changing polarity for pin %u to %s\n", - io->io_id, intpin->io_intpin, - pol == INTR_POLARITY_HIGH ? "high" : "low"); - intpin->io_activehi = (pol == INTR_POLARITY_HIGH); - changed++; - } - if (changed) - ioapic_program_intpin(intpin); - mtx_unlock_spin(&icu_lock); - return (0); -} - -static void -ioapic_resume(struct pic *pic) -{ - struct ioapic *io = (struct ioapic *)pic; - int i; - - mtx_lock_spin(&icu_lock); - for (i = 0; i < io->io_numintr; i++) - ioapic_program_intpin(&io->io_pins[i]); - mtx_unlock_spin(&icu_lock); -} - -/* - * Create a plain I/O APIC object. - */ -void * -ioapic_create(vm_paddr_t addr, int32_t apic_id, int intbase) -{ - struct ioapic *io; - struct ioapic_intsrc *intpin; - volatile ioapic_t *apic; - u_int numintr, i; - uint32_t value; - - /* Map the register window so we can access the device. */ - apic = pmap_mapdev(addr, IOAPIC_MEM_REGION); - mtx_lock_spin(&icu_lock); - value = ioapic_read(apic, IOAPIC_VER); - mtx_unlock_spin(&icu_lock); - - /* If it's version register doesn't seem to work, punt. */ - if (value == 0xffffffff) { - pmap_unmapdev((vm_offset_t)apic, IOAPIC_MEM_REGION); - return (NULL); - } - - /* Determine the number of vectors and set the APIC ID. */ - numintr = ((value & IOART_VER_MAXREDIR) >> MAXREDIRSHIFT) + 1; - io = malloc(sizeof(struct ioapic) + - numintr * sizeof(struct ioapic_intsrc), M_IOAPIC, M_WAITOK); - io->io_pic = ioapic_template; - mtx_lock_spin(&icu_lock); - io->io_id = next_id++; - io->io_apic_id = ioapic_read(apic, IOAPIC_ID) >> APIC_ID_SHIFT; - if (apic_id != -1 && io->io_apic_id != apic_id) { - ioapic_write(apic, IOAPIC_ID, apic_id << APIC_ID_SHIFT); - mtx_unlock_spin(&icu_lock); - io->io_apic_id = apic_id; - printf("ioapic%u: Changing APIC ID to %d\n", io->io_id, - apic_id); - } else - mtx_unlock_spin(&icu_lock); - if (intbase == -1) { - intbase = next_ioapic_base; - printf("ioapic%u: Assuming intbase of %d\n", io->io_id, - intbase); - } else if (intbase != next_ioapic_base && bootverbose) - printf("ioapic%u: WARNING: intbase %d != expected base %d\n", - io->io_id, intbase, next_ioapic_base); - io->io_intbase = intbase; - next_ioapic_base = intbase + numintr; - io->io_numintr = numintr; - io->io_addr = apic; - io->io_paddr = addr; - - /* - * Initialize pins. Start off with interrupts disabled. Default - * to active-hi and edge-triggered for ISA interrupts and active-lo - * and level-triggered for all others. - */ - bzero(io->io_pins, sizeof(struct ioapic_intsrc) * numintr); - mtx_lock_spin(&icu_lock); - for (i = 0, intpin = io->io_pins; i < numintr; i++, intpin++) { - intpin->io_intsrc.is_pic = (struct pic *)io; - intpin->io_intpin = i; - intpin->io_irq = intbase + i; - - /* - * Assume that pin 0 on the first I/O APIC is an ExtINT pin. - * Assume that pins 1-15 are ISA interrupts and that all - * other pins are PCI interrupts. - */ - if (intpin->io_irq == 0) - ioapic_set_extint(io, i); - else if (intpin->io_irq < IOAPIC_ISA_INTS) { - intpin->io_bus = APIC_BUS_ISA; - intpin->io_activehi = 1; - intpin->io_edgetrigger = 1; - intpin->io_masked = 1; - } else { - intpin->io_bus = APIC_BUS_PCI; - intpin->io_activehi = 0; - intpin->io_edgetrigger = 0; - intpin->io_masked = 1; - } - - /* - * Route interrupts to the BSP by default. Interrupts may - * be routed to other CPUs later after they are enabled. - */ - intpin->io_cpu = PCPU_GET(apic_id); - value = ioapic_read(apic, IOAPIC_REDTBL_LO(i)); - ioapic_write(apic, IOAPIC_REDTBL_LO(i), value | IOART_INTMSET); - } - mtx_unlock_spin(&icu_lock); - - return (io); -} - -int -ioapic_get_vector(void *cookie, u_int pin) -{ - struct ioapic *io; - - io = (struct ioapic *)cookie; - if (pin >= io->io_numintr) - return (-1); - return (io->io_pins[pin].io_irq); -} - -int -ioapic_disable_pin(void *cookie, u_int pin) -{ - struct ioapic *io; - - io = (struct ioapic *)cookie; - if (pin >= io->io_numintr) - return (EINVAL); - if (io->io_pins[pin].io_irq == IRQ_DISABLED) - return (EINVAL); - io->io_pins[pin].io_irq = IRQ_DISABLED; - if (bootverbose) - printf("ioapic%u: intpin %d disabled\n", io->io_id, pin); - return (0); -} - -int -ioapic_remap_vector(void *cookie, u_int pin, int vector) -{ - struct ioapic *io; - - io = (struct ioapic *)cookie; - if (pin >= io->io_numintr || vector < 0) - return (EINVAL); - if (io->io_pins[pin].io_irq >= NUM_IO_INTS) - return (EINVAL); - io->io_pins[pin].io_irq = vector; - if (bootverbose) - printf("ioapic%u: Routing IRQ %d -> intpin %d\n", io->io_id, - vector, pin); - return (0); -} - -int -ioapic_set_bus(void *cookie, u_int pin, int bus_type) -{ - struct ioapic *io; - - if (bus_type < 0 || bus_type > APIC_BUS_MAX) - return (EINVAL); - io = (struct ioapic *)cookie; - if (pin >= io->io_numintr) - return (EINVAL); - if (io->io_pins[pin].io_irq >= NUM_IO_INTS) - return (EINVAL); - if (io->io_pins[pin].io_bus == bus_type) - return (0); - io->io_pins[pin].io_bus = bus_type; - if (bootverbose) - printf("ioapic%u: intpin %d bus %s\n", io->io_id, pin, - ioapic_bus_string(bus_type)); - return (0); -} - -int -ioapic_set_nmi(void *cookie, u_int pin) -{ - struct ioapic *io; - - io = (struct ioapic *)cookie; - if (pin >= io->io_numintr) - return (EINVAL); - if (io->io_pins[pin].io_irq == IRQ_NMI) - return (0); - if (io->io_pins[pin].io_irq >= NUM_IO_INTS) - return (EINVAL); - io->io_pins[pin].io_bus = APIC_BUS_UNKNOWN; - io->io_pins[pin].io_irq = IRQ_NMI; - io->io_pins[pin].io_masked = 0; - io->io_pins[pin].io_edgetrigger = 1; - io->io_pins[pin].io_activehi = 1; - if (bootverbose) - printf("ioapic%u: Routing NMI -> intpin %d\n", - io->io_id, pin); - return (0); -} - -int -ioapic_set_smi(void *cookie, u_int pin) -{ - struct ioapic *io; - - io = (struct ioapic *)cookie; - if (pin >= io->io_numintr) - return (EINVAL); - if (io->io_pins[pin].io_irq == IRQ_SMI) - return (0); - if (io->io_pins[pin].io_irq >= NUM_IO_INTS) - return (EINVAL); - io->io_pins[pin].io_bus = APIC_BUS_UNKNOWN; - io->io_pins[pin].io_irq = IRQ_SMI; - io->io_pins[pin].io_masked = 0; - io->io_pins[pin].io_edgetrigger = 1; - io->io_pins[pin].io_activehi = 1; - if (bootverbose) - printf("ioapic%u: Routing SMI -> intpin %d\n", - io->io_id, pin); - return (0); -} - -int -ioapic_set_extint(void *cookie, u_int pin) -{ - struct ioapic *io; - - io = (struct ioapic *)cookie; - if (pin >= io->io_numintr) - return (EINVAL); - if (io->io_pins[pin].io_irq == IRQ_EXTINT) - return (0); - if (io->io_pins[pin].io_irq >= NUM_IO_INTS) - return (EINVAL); - io->io_pins[pin].io_bus = APIC_BUS_UNKNOWN; - io->io_pins[pin].io_irq = IRQ_EXTINT; - if (enable_extint) - io->io_pins[pin].io_masked = 0; - else - io->io_pins[pin].io_masked = 1; - io->io_pins[pin].io_edgetrigger = 1; - io->io_pins[pin].io_activehi = 1; - if (bootverbose) - printf("ioapic%u: Routing external 8259A's -> intpin %d\n", - io->io_id, pin); - return (0); -} - -int -ioapic_set_polarity(void *cookie, u_int pin, enum intr_polarity pol) -{ - struct ioapic *io; - int activehi; - - io = (struct ioapic *)cookie; - if (pin >= io->io_numintr || pol == INTR_POLARITY_CONFORM) - return (EINVAL); - if (io->io_pins[pin].io_irq >= NUM_IO_INTS) - return (EINVAL); - activehi = (pol == INTR_POLARITY_HIGH); - if (io->io_pins[pin].io_activehi == activehi) - return (0); - io->io_pins[pin].io_activehi = activehi; - if (bootverbose) - printf("ioapic%u: intpin %d polarity: %s\n", io->io_id, pin, - pol == INTR_POLARITY_HIGH ? "high" : "low"); - return (0); -} - -int -ioapic_set_triggermode(void *cookie, u_int pin, enum intr_trigger trigger) -{ - struct ioapic *io; - int edgetrigger; - - io = (struct ioapic *)cookie; - if (pin >= io->io_numintr || trigger == INTR_TRIGGER_CONFORM) - return (EINVAL); - if (io->io_pins[pin].io_irq >= NUM_IO_INTS) - return (EINVAL); - edgetrigger = (trigger == INTR_TRIGGER_EDGE); - if (io->io_pins[pin].io_edgetrigger == edgetrigger) - return (0); - io->io_pins[pin].io_edgetrigger = edgetrigger; - if (bootverbose) - printf("ioapic%u: intpin %d trigger: %s\n", io->io_id, pin, - trigger == INTR_TRIGGER_EDGE ? "edge" : "level"); - return (0); -} - -/* - * Register a complete I/O APIC object with the interrupt subsystem. - */ -void -ioapic_register(void *cookie) -{ - struct ioapic_intsrc *pin; - struct ioapic *io; - volatile ioapic_t *apic; - uint32_t flags; - int i; - - io = (struct ioapic *)cookie; - apic = io->io_addr; - mtx_lock_spin(&icu_lock); - flags = ioapic_read(apic, IOAPIC_VER) & IOART_VER_VERSION; - STAILQ_INSERT_TAIL(&ioapic_list, io, io_next); - mtx_unlock_spin(&icu_lock); - printf("ioapic%u irqs %u-%u on motherboard\n", - io->io_id, flags >> 4, flags & 0xf, io->io_intbase, - io->io_intbase + io->io_numintr - 1); - - /* Register valid pins as interrupt sources. */ - intr_register_pic(&io->io_pic); - for (i = 0, pin = io->io_pins; i < io->io_numintr; i++, pin++) - if (pin->io_irq < NUM_IO_INTS) - intr_register_source(&pin->io_intsrc); -} - -/* A simple new-bus driver to consume PCI I/O APIC devices. */ -static int -ioapic_pci_probe(device_t dev) -{ - - if (pci_get_class(dev) == PCIC_BASEPERIPH && - pci_get_subclass(dev) == PCIS_BASEPERIPH_PIC) { - switch (pci_get_progif(dev)) { - case PCIP_BASEPERIPH_PIC_IO_APIC: - device_set_desc(dev, "IO APIC"); - break; - case PCIP_BASEPERIPH_PIC_IOX_APIC: - device_set_desc(dev, "IO(x) APIC"); - break; - default: - return (ENXIO); - } - device_quiet(dev); - return (-10000); - } - return (ENXIO); -} - -static int -ioapic_pci_attach(device_t dev) -{ - - return (0); -} - -static device_method_t ioapic_pci_methods[] = { - /* Device interface */ - DEVMETHOD(device_probe, ioapic_pci_probe), - DEVMETHOD(device_attach, ioapic_pci_attach), - - { 0, 0 } -}; - -DEFINE_CLASS_0(ioapic, ioapic_pci_driver, ioapic_pci_methods, 0); - -static devclass_t ioapic_devclass; -DRIVER_MODULE(ioapic, pci, ioapic_pci_driver, ioapic_devclass, 0, 0); - -/* - * A new-bus driver to consume the memory resources associated with - * the APICs in the system. On some systems ACPI or PnPBIOS system - * resource devices may already claim these resources. To keep from - * breaking those devices, we attach ourself to the nexus device after - * legacy0 and acpi0 and ignore any allocation failures. - */ -static void -apic_identify(driver_t *driver, device_t parent) -{ - - /* - * Add at order 12. acpi0 is probed at order 10 and legacy0 - * is probed at order 11. - */ - if (lapic_paddr != 0) - BUS_ADD_CHILD(parent, 12, "apic", 0); -} - -static int -apic_probe(device_t dev) -{ - - device_set_desc(dev, "APIC resources"); - device_quiet(dev); - return (0); -} - -static void -apic_add_resource(device_t dev, int rid, vm_paddr_t base, size_t length) -{ - int error; - - error = bus_set_resource(dev, SYS_RES_MEMORY, rid, base, length); - if (error) - panic("apic_add_resource: resource %d failed set with %d", rid, - error); - bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid, 0); -} - -static int -apic_attach(device_t dev) -{ - struct ioapic *io; - int i; - - /* Reserve the local APIC. */ - apic_add_resource(dev, 0, lapic_paddr, sizeof(lapic_t)); - i = 1; - STAILQ_FOREACH(io, &ioapic_list, io_next) { - apic_add_resource(dev, i, io->io_paddr, IOAPIC_MEM_REGION); - i++; - } - return (0); -} - -static device_method_t apic_methods[] = { - /* Device interface */ - DEVMETHOD(device_identify, apic_identify), - DEVMETHOD(device_probe, apic_probe), - DEVMETHOD(device_attach, apic_attach), - - { 0, 0 } -}; - -DEFINE_CLASS_0(apic, apic_driver, apic_methods, 0); - -static devclass_t apic_devclass; -DRIVER_MODULE(apic, nexus, apic_driver, apic_devclass, 0, 0); diff --git a/sys/conf/files.amd64 b/sys/conf/files.amd64 index c0d5d7082d8d..87daee40744b 100644 --- a/sys/conf/files.amd64 +++ b/sys/conf/files.amd64 @@ -1,308 +1,308 @@ # This file tells config what files go into building a kernel, # files marked standard are always included. # # $FreeBSD$ # # The long compile-with and dependency lines are required because of # limitations in config: backslash-newline doesn't work in strings, and # dependency lines other than the first are silently ignored. # # linux32_genassym.o optional compat_linux32 \ dependency "$S/amd64/linux32/linux32_genassym.c" \ compile-with "${CC} ${CFLAGS:N-fno-common} -c ${.IMPSRC}" \ no-obj no-implicit-rule \ clean "linux32_genassym.o" # linux32_assym.h optional compat_linux32 \ dependency "$S/kern/genassym.sh linux32_genassym.o" \ compile-with "sh $S/kern/genassym.sh linux32_genassym.o > ${.TARGET}" \ no-obj no-implicit-rule before-depend \ clean "linux32_assym.h" # ia32_genassym.o standard \ dependency "$S/compat/ia32/ia32_genassym.c" \ compile-with "${CC} ${CFLAGS:N-fno-common} -c ${.IMPSRC}" \ no-obj no-implicit-rule \ clean "ia32_genassym.o" # ia32_assym.h standard \ dependency "$S/kern/genassym.sh ia32_genassym.o" \ compile-with "env NM='${NM}' sh $S/kern/genassym.sh ia32_genassym.o > ${.TARGET}" \ no-obj no-implicit-rule before-depend \ clean "ia32_assym.h" # font.h optional sc_dflt_font \ compile-with "uudecode < /usr/share/syscons/fonts/${SC_DFLT_FONT}-8x16.fnt && file2c 'static u_char dflt_font_16[16*256] = {' '};' < ${SC_DFLT_FONT}-8x16 > font.h && uudecode < /usr/share/syscons/fonts/${SC_DFLT_FONT}-8x14.fnt && file2c 'static u_char dflt_font_14[14*256] = {' '};' < ${SC_DFLT_FONT}-8x14 >> font.h && uudecode < /usr/share/syscons/fonts/${SC_DFLT_FONT}-8x8.fnt && file2c 'static u_char dflt_font_8[8*256] = {' '};' < ${SC_DFLT_FONT}-8x8 >> font.h" \ no-obj no-implicit-rule before-depend \ clean "font.h ${SC_DFLT_FONT}-8x14 ${SC_DFLT_FONT}-8x16 ${SC_DFLT_FONT}-8x8" # atkbdmap.h optional atkbd_dflt_keymap \ compile-with "/usr/sbin/kbdcontrol -L ${ATKBD_DFLT_KEYMAP} | sed -e 's/^static keymap_t.* = /static keymap_t key_map = /' -e 's/^static accentmap_t.* = /static accentmap_t accent_map = /' > atkbdmap.h" \ no-obj no-implicit-rule before-depend \ clean "atkbdmap.h" # ukbdmap.h optional ukbd_dflt_keymap \ compile-with "/usr/sbin/kbdcontrol -L ${UKBD_DFLT_KEYMAP} | sed -e 's/^static keymap_t.* = /static keymap_t key_map = /' -e 's/^static accentmap_t.* = /static accentmap_t accent_map = /' > ukbdmap.h" \ no-obj no-implicit-rule before-depend \ clean "ukbdmap.h" # nvenetlib.o optional nve pci \ dependency "$S/contrib/dev/nve/amd64/nvenetlib.o.bz2.uu" \ compile-with "uudecode $S/contrib/dev/nve/amd64/nvenetlib.o.bz2.uu ; bzip2 -df nvenetlib.o.bz2" \ no-implicit-rule # os+%DIKED-nve.h optional nve pci \ dependency "$S/contrib/dev/nve/os.h" \ compile-with "sed -e 's/^.*#include.*phy\.h.*$$//' $S/contrib/dev/nve/os.h > os+%DIKED-nve.h" \ no-implicit-rule no-obj before-depend \ clean "os+%DIKED-nve.h" # hptmvraid.o optional hptmv \ dependency "$S/dev/hptmv/amd64-elf.raid.o.uu" \ compile-with "uudecode < $S/dev/hptmv/amd64-elf.raid.o.uu" \ no-implicit-rule hptrr_lib.o optional hptrr \ dependency "$S/dev/hptrr/amd64-elf.hptrr_lib.o.uu" \ compile-with "uudecode < $S/dev/hptrr/amd64-elf.hptrr_lib.o.uu" \ no-implicit-rule # amd64/acpica/OsdEnvironment.c optional acpi amd64/acpica/acpi_machdep.c optional acpi amd64/acpica/acpi_switch.S optional acpi acpi_wakecode.h optional acpi \ dependency "$S/amd64/acpica/acpi_wakecode.S assym.s" \ compile-with "${MAKE} -f $S/amd64/acpica/Makefile ${.TARGET} MAKESRCPATH=$S/amd64/acpica" \ no-obj no-implicit-rule before-depend \ clean "acpi_wakecode.h acpi_wakecode.o acpi_wakecode.bin" # acpi_wakedata.h optional acpi \ dependency "$S/amd64/acpica/acpi_wakecode.S assym.s" \ compile-with "${MAKE} -f $S/amd64/acpica/Makefile ${.TARGET} MAKESRCPATH=$S/amd64/acpica" \ no-obj no-implicit-rule before-depend \ clean "acpi_wakedata.h acpi_wakecode.o acpi_wakecode.bin" # amd64/acpica/acpi_wakeup.c optional acpi amd64/acpica/madt.c optional acpi amd64/amd64/amd64_mem.c optional mem #amd64/amd64/apic_vector.S standard amd64/amd64/atomic.c standard amd64/amd64/autoconf.c standard amd64/amd64/bios.c standard amd64/amd64/bpf_jit_machdep.c optional bpf_jitter amd64/amd64/busdma_machdep.c standard amd64/amd64/cpu_switch.S standard amd64/amd64/db_disasm.c optional ddb amd64/amd64/db_interface.c optional ddb amd64/amd64/db_trace.c optional ddb amd64/amd64/dump_machdep.c standard amd64/amd64/elf_machdep.c standard amd64/amd64/exception.S standard amd64/amd64/fpu.c standard amd64/amd64/gdb_machdep.c optional gdb amd64/amd64/identcpu.c standard amd64/amd64/in_cksum.c optional inet amd64/amd64/initcpu.c standard amd64/amd64/intr_machdep.c standard amd64/amd64/io.c optional io -amd64/amd64/io_apic.c standard amd64/amd64/legacy.c standard -x86/x86/local_apic.c standard amd64/amd64/locore.S standard no-obj amd64/amd64/machdep.c standard amd64/amd64/mca.c standard amd64/amd64/mem.c optional mem amd64/amd64/minidump_machdep.c standard amd64/amd64/mp_machdep.c optional smp amd64/amd64/mp_watchdog.c optional mp_watchdog smp amd64/amd64/mpboot.S optional smp amd64/amd64/mptable.c optional mptable amd64/amd64/mptable_pci.c optional mptable pci amd64/amd64/msi.c optional pci amd64/amd64/nexus.c standard amd64/amd64/pmap.c standard amd64/amd64/prof_machdep.c optional profiling-routine amd64/amd64/sigtramp.S standard amd64/amd64/stack_machdep.c optional ddb | stack amd64/amd64/support.S standard amd64/amd64/sys_machdep.c standard amd64/amd64/trap.c standard amd64/amd64/tsc.c standard amd64/amd64/uio_machdep.c standard amd64/amd64/uma_machdep.c standard amd64/amd64/vm_machdep.c standard amd64/pci/pci_bus.c optional pci amd64/pci/pci_cfgreg.c optional pci crypto/blowfish/bf_enc.c optional crypto | ipsec crypto/des/des_enc.c optional crypto | ipsec | netsmb crypto/via/padlock.c optional padlock crypto/via/padlock_cipher.c optional padlock crypto/via/padlock_hash.c optional padlock dev/acpica/acpi_if.m standard dev/acpi_support/acpi_wmi_if.m standard dev/agp/agp_amd64.c optional agp dev/agp/agp_i810.c optional agp dev/agp/agp_intel.c optional agp dev/agp/agp_via.c optional agp dev/amdsbwd/amdsbwd.c optional amdsbwd dev/amdtemp/amdtemp.c optional amdtemp dev/arcmsr/arcmsr.c optional arcmsr pci dev/asmc/asmc.c optional asmc isa dev/atkbdc/atkbd.c optional atkbd atkbdc dev/atkbdc/atkbd_atkbdc.c optional atkbd atkbdc dev/atkbdc/atkbdc.c optional atkbdc dev/atkbdc/atkbdc_isa.c optional atkbdc isa dev/atkbdc/atkbdc_subr.c optional atkbdc dev/atkbdc/psm.c optional psm atkbdc dev/coretemp/coretemp.c optional coretemp dev/cpuctl/cpuctl.c optional cpuctl dev/dpms/dpms.c optional dpms # There are no systems with isa slots, so all ed isa entries should go.. dev/ed/if_ed_3c503.c optional ed isa ed_3c503 dev/ed/if_ed_isa.c optional ed isa dev/ed/if_ed_wd80x3.c optional ed isa dev/ed/if_ed_hpp.c optional ed isa ed_hpp dev/ed/if_ed_sic.c optional ed isa ed_sic dev/fb/fb.c optional fb | vga dev/fb/s3_pci.c optional s3pci dev/fb/vesa.c optional vga vesa dev/fb/vga.c optional vga dev/ichwd/ichwd.c optional ichwd dev/if_ndis/if_ndis.c optional ndis dev/if_ndis/if_ndis_pccard.c optional ndis pccard dev/if_ndis/if_ndis_pci.c optional ndis cardbus | ndis pci dev/if_ndis/if_ndis_usb.c optional ndis usb dev/io/iodev.c optional io dev/ipmi/ipmi.c optional ipmi dev/ipmi/ipmi_acpi.c optional ipmi acpi dev/ipmi/ipmi_isa.c optional ipmi isa dev/ipmi/ipmi_kcs.c optional ipmi dev/ipmi/ipmi_smic.c optional ipmi dev/ipmi/ipmi_smbus.c optional ipmi smbus dev/ipmi/ipmi_smbios.c optional ipmi dev/ipmi/ipmi_ssif.c optional ipmi smbus dev/ipmi/ipmi_pci.c optional ipmi pci dev/ipmi/ipmi_linux.c optional ipmi compat_linux32 dev/fdc/fdc.c optional fdc dev/fdc/fdc_acpi.c optional fdc dev/fdc/fdc_isa.c optional fdc isa dev/fdc/fdc_pccard.c optional fdc pccard dev/hptmv/entry.c optional hptmv dev/hptmv/mv.c optional hptmv dev/hptmv/gui_lib.c optional hptmv dev/hptmv/hptproc.c optional hptmv dev/hptmv/ioctl.c optional hptmv dev/hptrr/hptrr_os_bsd.c optional hptrr dev/hptrr/hptrr_osm_bsd.c optional hptrr dev/hptrr/hptrr_config.c optional hptrr dev/hwpmc/hwpmc_amd.c optional hwpmc dev/hwpmc/hwpmc_intel.c optional hwpmc dev/hwpmc/hwpmc_core.c optional hwpmc dev/hwpmc/hwpmc_uncore.c optional hwpmc dev/hwpmc/hwpmc_piv.c optional hwpmc dev/hwpmc/hwpmc_tsc.c optional hwpmc dev/hwpmc/hwpmc_x86.c optional hwpmc dev/kbd/kbd.c optional atkbd | sc | ukbd dev/lindev/full.c optional lindev dev/lindev/lindev.c optional lindev dev/mem/memutil.c optional mem dev/nfe/if_nfe.c optional nfe pci dev/nve/if_nve.c optional nve pci dev/nvram/nvram.c optional nvram isa dev/sio/sio.c optional sio dev/sio/sio_isa.c optional sio isa dev/sio/sio_pccard.c optional sio pccard dev/sio/sio_pci.c optional sio pci dev/sio/sio_puc.c optional sio puc dev/speaker/spkr.c optional speaker dev/syscons/apm/apm_saver.c optional apm_saver apm dev/syscons/scterm-teken.c optional sc dev/syscons/scvesactl.c optional sc vga vesa dev/syscons/scvgarndr.c optional sc vga dev/syscons/scvtb.c optional sc dev/uart/uart_cpu_amd64.c optional uart dev/wpi/if_wpi.c optional wpi isa/syscons_isa.c optional sc isa/vga_isa.c optional vga kern/link_elf_obj.c standard # # IA32 binary support # #amd64/ia32/ia32_exception.S optional compat_freebsd32 amd64/ia32/ia32_reg.c optional compat_freebsd32 amd64/ia32/ia32_signal.c optional compat_freebsd32 amd64/ia32/ia32_sigtramp.S optional compat_freebsd32 amd64/ia32/ia32_syscall.c optional compat_freebsd32 amd64/ia32/ia32_misc.c optional compat_freebsd32 compat/freebsd32/freebsd32_ioctl.c optional compat_freebsd32 compat/freebsd32/freebsd32_misc.c optional compat_freebsd32 compat/freebsd32/freebsd32_syscalls.c optional compat_freebsd32 compat/freebsd32/freebsd32_sysent.c optional compat_freebsd32 compat/ia32/ia32_sysvec.c optional compat_freebsd32 compat/linprocfs/linprocfs.c optional linprocfs compat/linsysfs/linsysfs.c optional linsysfs kern/imgact_elf32.c optional compat_freebsd32 # # Linux/i386 binary support # amd64/linux32/linux32_dummy.c optional compat_linux32 amd64/linux32/linux32_locore.s optional compat_linux32 \ dependency "linux32_assym.h" amd64/linux32/linux32_machdep.c optional compat_linux32 amd64/linux32/linux32_support.s optional compat_linux32 \ dependency "linux32_assym.h" amd64/linux32/linux32_sysent.c optional compat_linux32 amd64/linux32/linux32_sysvec.c optional compat_linux32 compat/linux/linux_emul.c optional compat_linux32 compat/linux/linux_file.c optional compat_linux32 compat/linux/linux_futex.c optional compat_linux32 compat/linux/linux_getcwd.c optional compat_linux32 compat/linux/linux_ioctl.c optional compat_linux32 compat/linux/linux_ipc.c optional compat_linux32 compat/linux/linux_mib.c optional compat_linux32 compat/linux/linux_misc.c optional compat_linux32 compat/linux/linux_signal.c optional compat_linux32 compat/linux/linux_socket.c optional compat_linux32 compat/linux/linux_stats.c optional compat_linux32 compat/linux/linux_sysctl.c optional compat_linux32 compat/linux/linux_time.c optional compat_linux32 compat/linux/linux_uid16.c optional compat_linux32 compat/linux/linux_util.c optional compat_linux32 dev/amr/amr_linux.c optional compat_linux32 amr dev/mfi/mfi_linux.c optional compat_linux32 mfi # # Windows NDIS driver support # compat/ndis/kern_ndis.c optional ndisapi pci compat/ndis/kern_windrv.c optional ndisapi pci compat/ndis/subr_hal.c optional ndisapi pci compat/ndis/subr_ndis.c optional ndisapi pci compat/ndis/subr_ntoskrnl.c optional ndisapi pci compat/ndis/subr_pe.c optional ndisapi pci compat/ndis/subr_usbd.c optional ndisapi pci compat/ndis/winx64_wrap.S optional ndisapi pci # libkern/memmove.c standard libkern/memset.c standard # # x86 real mode BIOS emulator, required by atkbdc/dpms/vesa # compat/x86bios/x86bios.c optional x86bios | atkbd | dpms | vesa contrib/x86emu/x86emu.c optional x86bios | atkbd | dpms | vesa # # x86 shared code between IA32, AMD64 and PC98 architectures # x86/bios/smbios.c optional smbios x86/bios/vpd.c optional vpd x86/cpufreq/powernow.c optional cpufreq x86/cpufreq/est.c optional cpufreq x86/cpufreq/hwpstate.c optional cpufreq x86/cpufreq/p4tcc.c optional cpufreq x86/isa/atpic.c optional atpic isa x86/isa/atrtc.c standard x86/isa/clock.c standard x86/isa/elcr.c standard x86/isa/isa.c standard x86/isa/isa_dma.c standard x86/isa/nmi.c standard x86/isa/orm.c optional isa +x86/x86/io_apic.c standard +x86/x86/local_apic.c standard diff --git a/sys/conf/files.i386 b/sys/conf/files.i386 index 6b1307142932..c3f215b569f7 100644 --- a/sys/conf/files.i386 +++ b/sys/conf/files.i386 @@ -1,392 +1,392 @@ # This file tells config what files go into building a kernel, # files marked standard are always included. # # $FreeBSD$ # # The long compile-with and dependency lines are required because of # limitations in config: backslash-newline doesn't work in strings, and # dependency lines other than the first are silently ignored. # linux_genassym.o optional compat_linux \ dependency "$S/i386/linux/linux_genassym.c" \ compile-with "${CC} ${CFLAGS:N-fno-common} -c ${.IMPSRC}" \ no-obj no-implicit-rule \ clean "linux_genassym.o" # linux_assym.h optional compat_linux \ dependency "$S/kern/genassym.sh linux_genassym.o" \ compile-with "sh $S/kern/genassym.sh linux_genassym.o > ${.TARGET}" \ no-obj no-implicit-rule before-depend \ clean "linux_assym.h" # svr4_genassym.o optional compat_svr4 \ dependency "$S/i386/svr4/svr4_genassym.c" \ compile-with "${CC} ${CFLAGS:N-fno-common} -c ${.IMPSRC}" \ no-obj no-implicit-rule \ clean "svr4_genassym.o" # svr4_assym.h optional compat_svr4 \ dependency "$S/kern/genassym.sh svr4_genassym.o" \ compile-with "sh $S/kern/genassym.sh svr4_genassym.o > ${.TARGET}" \ no-obj no-implicit-rule before-depend \ clean "svr4_assym.h" # font.h optional sc_dflt_font \ compile-with "uudecode < /usr/share/syscons/fonts/${SC_DFLT_FONT}-8x16.fnt && file2c 'static u_char dflt_font_16[16*256] = {' '};' < ${SC_DFLT_FONT}-8x16 > font.h && uudecode < /usr/share/syscons/fonts/${SC_DFLT_FONT}-8x14.fnt && file2c 'static u_char dflt_font_14[14*256] = {' '};' < ${SC_DFLT_FONT}-8x14 >> font.h && uudecode < /usr/share/syscons/fonts/${SC_DFLT_FONT}-8x8.fnt && file2c 'static u_char dflt_font_8[8*256] = {' '};' < ${SC_DFLT_FONT}-8x8 >> font.h" \ no-obj no-implicit-rule before-depend \ clean "font.h ${SC_DFLT_FONT}-8x14 ${SC_DFLT_FONT}-8x16 ${SC_DFLT_FONT}-8x8" # atkbdmap.h optional atkbd_dflt_keymap \ compile-with "/usr/sbin/kbdcontrol -L ${ATKBD_DFLT_KEYMAP} | sed -e 's/^static keymap_t.* = /static keymap_t key_map = /' -e 's/^static accentmap_t.* = /static accentmap_t accent_map = /' > atkbdmap.h" \ no-obj no-implicit-rule before-depend \ clean "atkbdmap.h" # ukbdmap.h optional ukbd_dflt_keymap \ compile-with "/usr/sbin/kbdcontrol -L ${UKBD_DFLT_KEYMAP} | sed -e 's/^static keymap_t.* = /static keymap_t key_map = /' -e 's/^static accentmap_t.* = /static accentmap_t accent_map = /' > ukbdmap.h" \ no-obj no-implicit-rule before-depend \ clean "ukbdmap.h" # nvenetlib.o optional nve pci \ dependency "$S/contrib/dev/nve/i386/nvenetlib.o.bz2.uu" \ compile-with "uudecode $S/contrib/dev/nve/i386/nvenetlib.o.bz2.uu ; bzip2 -df nvenetlib.o.bz2" \ no-implicit-rule # os+%DIKED-nve.h optional nve pci \ dependency "$S/contrib/dev/nve/os.h" \ compile-with "sed -e 's/^.*#include.*phy\.h.*$$//' $S/contrib/dev/nve/os.h > os+%DIKED-nve.h" \ no-implicit-rule no-obj before-depend \ clean "os+%DIKED-nve.h" # hptmvraid.o optional hptmv \ dependency "$S/dev/hptmv/i386-elf.raid.o.uu" \ compile-with "uudecode < $S/dev/hptmv/i386-elf.raid.o.uu" \ no-implicit-rule # hptrr_lib.o optional hptrr \ dependency "$S/dev/hptrr/i386-elf.hptrr_lib.o.uu" \ compile-with "uudecode < $S/dev/hptrr/i386-elf.hptrr_lib.o.uu" \ no-implicit-rule # compat/linprocfs/linprocfs.c optional linprocfs compat/linsysfs/linsysfs.c optional linsysfs compat/linux/linux_emul.c optional compat_linux compat/linux/linux_file.c optional compat_linux compat/linux/linux_futex.c optional compat_linux compat/linux/linux_getcwd.c optional compat_linux compat/linux/linux_ioctl.c optional compat_linux compat/linux/linux_ipc.c optional compat_linux compat/linux/linux_mib.c optional compat_linux compat/linux/linux_misc.c optional compat_linux compat/linux/linux_signal.c optional compat_linux compat/linux/linux_socket.c optional compat_linux compat/linux/linux_stats.c optional compat_linux compat/linux/linux_sysctl.c optional compat_linux compat/linux/linux_time.c optional compat_linux compat/linux/linux_uid16.c optional compat_linux compat/linux/linux_util.c optional compat_linux compat/ndis/kern_ndis.c optional ndisapi pci compat/ndis/kern_windrv.c optional ndisapi pci compat/ndis/subr_hal.c optional ndisapi pci compat/ndis/subr_ndis.c optional ndisapi pci compat/ndis/subr_ntoskrnl.c optional ndisapi pci compat/ndis/subr_pe.c optional ndisapi pci compat/ndis/subr_usbd.c optional ndisapi pci compat/ndis/winx32_wrap.S optional ndisapi pci compat/svr4/imgact_svr4.c optional compat_svr4 compat/svr4/svr4_fcntl.c optional compat_svr4 compat/svr4/svr4_filio.c optional compat_svr4 compat/svr4/svr4_ioctl.c optional compat_svr4 compat/svr4/svr4_ipc.c optional compat_svr4 compat/svr4/svr4_misc.c optional compat_svr4 compat/svr4/svr4_resource.c optional compat_svr4 compat/svr4/svr4_signal.c optional compat_svr4 compat/svr4/svr4_socket.c optional compat_svr4 compat/svr4/svr4_sockio.c optional compat_svr4 compat/svr4/svr4_stat.c optional compat_svr4 compat/svr4/svr4_stream.c optional compat_svr4 compat/svr4/svr4_syscallnames.c optional compat_svr4 compat/svr4/svr4_sysent.c optional compat_svr4 compat/svr4/svr4_sysvec.c optional compat_svr4 compat/svr4/svr4_termios.c optional compat_svr4 bf_enc.o optional crypto | ipsec \ dependency "$S/crypto/blowfish/arch/i386/bf_enc.S $S/crypto/blowfish/arch/i386/bf_enc_586.S $S/crypto/blowfish/arch/i386/bf_enc_686.S" \ compile-with "${CC} -c -I$S/crypto/blowfish/arch/i386 ${ASM_CFLAGS} ${WERROR} ${.IMPSRC}" \ no-implicit-rule crypto/des/arch/i386/des_enc.S optional crypto | ipsec | netsmb crypto/via/padlock.c optional padlock crypto/via/padlock_cipher.c optional padlock crypto/via/padlock_hash.c optional padlock dev/advansys/adv_isa.c optional adv isa dev/agp/agp_ali.c optional agp dev/agp/agp_amd.c optional agp dev/agp/agp_amd64.c optional agp dev/agp/agp_ati.c optional agp dev/agp/agp_i810.c optional agp dev/agp/agp_intel.c optional agp dev/agp/agp_nvidia.c optional agp dev/agp/agp_sis.c optional agp dev/agp/agp_via.c optional agp dev/aic/aic_isa.c optional aic isa dev/amdsbwd/amdsbwd.c optional amdsbwd dev/amdtemp/amdtemp.c optional amdtemp dev/arcmsr/arcmsr.c optional arcmsr pci dev/asmc/asmc.c optional asmc isa dev/atkbdc/atkbd.c optional atkbd atkbdc dev/atkbdc/atkbd_atkbdc.c optional atkbd atkbdc dev/atkbdc/atkbdc.c optional atkbdc dev/atkbdc/atkbdc_isa.c optional atkbdc isa dev/atkbdc/atkbdc_subr.c optional atkbdc dev/atkbdc/psm.c optional psm atkbdc dev/ce/ceddk.c optional ce dev/ce/if_ce.c optional ce dev/ce/tau32-ddk.c optional ce dev/cm/if_cm_isa.c optional cm isa dev/coretemp/coretemp.c optional coretemp dev/cp/cpddk.c optional cp dev/cp/if_cp.c optional cp dev/cpuctl/cpuctl.c optional cpuctl dev/ctau/ctau.c optional ctau dev/ctau/ctddk.c optional ctau dev/ctau/if_ct.c optional ctau dev/cx/csigma.c optional cx dev/cx/cxddk.c optional cx dev/cx/if_cx.c optional cx dev/dpms/dpms.c optional dpms dev/ed/if_ed_3c503.c optional ed isa ed_3c503 dev/ed/if_ed_isa.c optional ed isa dev/ed/if_ed_wd80x3.c optional ed isa dev/ed/if_ed_hpp.c optional ed isa ed_hpp dev/ed/if_ed_sic.c optional ed isa ed_sic dev/fb/fb.c optional fb | vga dev/fb/s3_pci.c optional s3pci dev/fb/vesa.c optional vga vesa dev/fb/vga.c optional vga dev/fdc/fdc.c optional fdc dev/fdc/fdc_acpi.c optional fdc dev/fdc/fdc_isa.c optional fdc isa dev/fdc/fdc_pccard.c optional fdc pccard dev/fe/if_fe_isa.c optional fe isa dev/glxsb/glxsb.c optional glxsb dev/glxsb/glxsb_hash.c optional glxsb dev/hptmv/entry.c optional hptmv dev/hptmv/mv.c optional hptmv dev/hptmv/gui_lib.c optional hptmv dev/hptmv/hptproc.c optional hptmv dev/hptmv/ioctl.c optional hptmv dev/hptrr/hptrr_os_bsd.c optional hptrr dev/hptrr/hptrr_osm_bsd.c optional hptrr dev/hptrr/hptrr_config.c optional hptrr dev/hwpmc/hwpmc_amd.c optional hwpmc dev/hwpmc/hwpmc_intel.c optional hwpmc dev/hwpmc/hwpmc_core.c optional hwpmc dev/hwpmc/hwpmc_uncore.c optional hwpmc dev/hwpmc/hwpmc_pentium.c optional hwpmc dev/hwpmc/hwpmc_piv.c optional hwpmc dev/hwpmc/hwpmc_ppro.c optional hwpmc dev/hwpmc/hwpmc_tsc.c optional hwpmc dev/hwpmc/hwpmc_x86.c optional hwpmc dev/ichwd/ichwd.c optional ichwd dev/if_ndis/if_ndis.c optional ndis dev/if_ndis/if_ndis_pccard.c optional ndis pccard dev/if_ndis/if_ndis_pci.c optional ndis cardbus | ndis pci dev/if_ndis/if_ndis_usb.c optional ndis usb dev/io/iodev.c optional io dev/ipmi/ipmi.c optional ipmi dev/ipmi/ipmi_acpi.c optional ipmi acpi dev/ipmi/ipmi_isa.c optional ipmi isa dev/ipmi/ipmi_kcs.c optional ipmi dev/ipmi/ipmi_smic.c optional ipmi dev/ipmi/ipmi_smbus.c optional ipmi smbus dev/ipmi/ipmi_smbios.c optional ipmi dev/ipmi/ipmi_ssif.c optional ipmi smbus dev/ipmi/ipmi_pci.c optional ipmi pci dev/ipmi/ipmi_linux.c optional ipmi compat_linux dev/kbd/kbd.c optional atkbd | sc | ukbd dev/le/if_le_isa.c optional le isa dev/lindev/full.c optional lindev dev/lindev/lindev.c optional lindev dev/mem/memutil.c optional mem dev/mse/mse.c optional mse dev/mse/mse_isa.c optional mse isa dev/nfe/if_nfe.c optional nfe pci dev/nve/if_nve.c optional nve pci dev/nvram/nvram.c optional nvram isa dev/pcf/pcf_isa.c optional pcf dev/random/nehemiah.c optional random dev/sbni/if_sbni.c optional sbni dev/sbni/if_sbni_isa.c optional sbni isa dev/sbni/if_sbni_pci.c optional sbni pci dev/sio/sio.c optional sio dev/sio/sio_isa.c optional sio isa dev/sio/sio_pccard.c optional sio pccard dev/sio/sio_pci.c optional sio pci dev/sio/sio_puc.c optional sio puc dev/speaker/spkr.c optional speaker dev/syscons/apm/apm_saver.c optional apm_saver apm dev/syscons/scterm-teken.c optional sc dev/syscons/scvesactl.c optional sc vga vesa dev/syscons/scvgarndr.c optional sc vga dev/syscons/scvtb.c optional sc dev/uart/uart_cpu_i386.c optional uart dev/acpica/acpi_if.m standard dev/acpi_support/acpi_wmi_if.m standard dev/wpi/if_wpi.c optional wpi i386/acpica/OsdEnvironment.c optional acpi i386/acpica/acpi_machdep.c optional acpi i386/acpica/acpi_wakeup.c optional acpi acpi_wakecode.h optional acpi \ dependency "$S/i386/acpica/acpi_wakecode.S assym.s" \ compile-with "${MAKE} -f $S/i386/acpica/Makefile MAKESRCPATH=$S/i386/acpica" \ no-obj no-implicit-rule before-depend \ clean "acpi_wakecode.h acpi_wakecode.o acpi_wakecode.bin" # i386/acpica/madt.c optional acpi apic i386/bios/apm.c optional apm i386/bios/mca_machdep.c optional mca i386/bios/smapi.c optional smapi i386/bios/smapi_bios.S optional smapi #i386/i386/apic_vector.s optional apic i386/i386/atomic.c standard \ compile-with "${CC} -c ${CFLAGS} ${DEFINED_PROF:S/^$/-fomit-frame-pointer/} ${.IMPSRC}" i386/i386/autoconf.c standard i386/i386/bios.c optional native i386/i386/bioscall.s optional native i386/i386/bpf_jit_machdep.c optional bpf_jitter i386/i386/busdma_machdep.c standard i386/i386/db_disasm.c optional ddb i386/i386/db_interface.c optional ddb i386/i386/db_trace.c optional ddb i386/i386/dump_machdep.c standard i386/i386/elan-mmcr.c optional cpu_elan | cpu_soekris i386/i386/elf_machdep.c standard i386/i386/exception.s optional native i386/xen/exception.s optional xen i386/i386/gdb_machdep.c optional gdb i386/i386/geode.c optional cpu_geode i386/i386/i686_mem.c optional mem i386/i386/identcpu.c standard i386/i386/in_cksum.c optional inet i386/i386/initcpu.c standard i386/i386/intr_machdep.c standard i386/i386/io.c optional io -i386/i386/io_apic.c optional apic i386/i386/k6_mem.c optional mem i386/i386/legacy.c optional native -x86/x86/local_apic.c optional apic i386/i386/locore.s optional native no-obj i386/xen/locore.s optional xen no-obj i386/i386/longrun.c optional cpu_enable_longrun i386/i386/machdep.c standard i386/xen/xen_machdep.c optional xen i386/i386/mca.c standard i386/i386/mem.c optional mem i386/i386/minidump_machdep.c standard i386/i386/mp_clock.c optional smp i386/i386/mp_machdep.c optional native smp i386/xen/mp_machdep.c optional xen smp i386/i386/mp_watchdog.c optional mp_watchdog smp i386/i386/mpboot.s optional smp native i386/i386/mptable.c optional apic native i386/xen/mptable.c optional apic xen i386/i386/mptable_pci.c optional apic pci i386/i386/msi.c optional apic pci i386/i386/nexus.c standard i386/i386/perfmon.c optional perfmon i386/i386/pmap.c optional native i386/xen/pmap.c optional xen i386/i386/ptrace_machdep.c standard i386/i386/stack_machdep.c optional ddb | stack i386/i386/support.s standard i386/i386/swtch.s standard i386/i386/sys_machdep.c standard i386/i386/trap.c standard i386/i386/tsc.c standard i386/i386/uio_machdep.c standard i386/i386/vm86.c standard i386/i386/vm_machdep.c standard i386/ibcs2/ibcs2_errno.c optional ibcs2 i386/ibcs2/ibcs2_fcntl.c optional ibcs2 i386/ibcs2/ibcs2_ioctl.c optional ibcs2 i386/ibcs2/ibcs2_ipc.c optional ibcs2 i386/ibcs2/ibcs2_isc.c optional ibcs2 i386/ibcs2/ibcs2_isc_sysent.c optional ibcs2 i386/ibcs2/ibcs2_misc.c optional ibcs2 i386/ibcs2/ibcs2_msg.c optional ibcs2 i386/ibcs2/ibcs2_other.c optional ibcs2 i386/ibcs2/ibcs2_signal.c optional ibcs2 i386/ibcs2/ibcs2_socksys.c optional ibcs2 i386/ibcs2/ibcs2_stat.c optional ibcs2 i386/ibcs2/ibcs2_sysent.c optional ibcs2 i386/ibcs2/ibcs2_sysi86.c optional ibcs2 i386/ibcs2/ibcs2_sysvec.c optional ibcs2 i386/ibcs2/ibcs2_util.c optional ibcs2 i386/ibcs2/ibcs2_xenix.c optional ibcs2 i386/ibcs2/ibcs2_xenix_sysent.c optional ibcs2 i386/ibcs2/imgact_coff.c optional ibcs2 i386/xen/clock.c optional xen i386/xen/xen_clock_util.c optional xen i386/xen/xen_rtc.c optional xen i386/isa/elink.c optional ep | ie i386/isa/npx.c optional npx i386/isa/pmtimer.c optional pmtimer i386/isa/prof_machdep.c optional profiling-routine i386/isa/spic.c optional spic i386/linux/imgact_linux.c optional compat_linux i386/linux/linux_dummy.c optional compat_linux i386/linux/linux_locore.s optional compat_linux \ dependency "linux_assym.h" i386/linux/linux_machdep.c optional compat_linux i386/linux/linux_ptrace.c optional compat_linux i386/linux/linux_support.s optional compat_linux \ dependency "linux_assym.h" i386/linux/linux_sysent.c optional compat_linux i386/linux/linux_sysvec.c optional compat_linux i386/pci/pci_bus.c optional pci i386/pci/pci_cfgreg.c optional pci i386/pci/pci_pir.c optional pci i386/svr4/svr4_locore.s optional compat_svr4 \ dependency "svr4_assym.h" \ warning "COMPAT_SVR4 is broken and should be avoided" i386/svr4/svr4_machdep.c optional compat_svr4 # isa/syscons_isa.c optional sc isa/vga_isa.c optional vga kern/imgact_aout.c optional compat_aout kern/imgact_gzip.c optional gzip libkern/divdi3.c standard libkern/ffsl.c standard libkern/flsl.c standard libkern/memmove.c standard libkern/memset.c standard libkern/moddi3.c standard libkern/qdivrem.c standard libkern/ucmpdi2.c standard libkern/udivdi3.c standard libkern/umoddi3.c standard i386/xbox/xbox.c optional xbox i386/xbox/xboxfb.c optional xboxfb dev/fb/boot_font.c optional xboxfb i386/xbox/pic16l.s optional xbox # # x86 real mode BIOS emulator, required by atkbdc/dpms/vesa # compat/x86bios/x86bios.c optional x86bios | atkbd | dpms | vesa contrib/x86emu/x86emu.c optional x86bios | atkbd | dpms | vesa # # x86 shared code between IA32, AMD64 and PC98 architectures # x86/bios/smbios.c optional smbios x86/bios/vpd.c optional vpd x86/cpufreq/est.c optional cpufreq x86/cpufreq/hwpstate.c optional cpufreq x86/cpufreq/p4tcc.c optional cpufreq x86/cpufreq/powernow.c optional cpufreq x86/cpufreq/smist.c optional cpufreq x86/isa/atpic.c optional atpic x86/isa/atrtc.c optional atpic x86/isa/clock.c optional native x86/isa/elcr.c standard x86/isa/isa.c optional isa x86/isa/isa_dma.c optional isa x86/isa/nmi.c standard x86/isa/orm.c optional isa +x86/x86/io_apic.c optional apic +x86/x86/local_apic.c optional apic diff --git a/sys/conf/files.pc98 b/sys/conf/files.pc98 index b60b29411b4a..d8482dbb16c5 100644 --- a/sys/conf/files.pc98 +++ b/sys/conf/files.pc98 @@ -1,260 +1,260 @@ # This file tells config what files go into building a kernel, # files marked standard are always included. # # modified for PC-9801/PC-9821 # # $FreeBSD$ # # The long compile-with and dependency lines are required because of # limitations in config: backslash-newline doesn't work in strings, and # dependency lines other than the first are silently ignored. # linux_genassym.o optional compat_linux \ dependency "$S/i386/linux/linux_genassym.c" \ compile-with "${CC} ${CFLAGS:N-fno-common} -c ${.IMPSRC}" \ no-obj no-implicit-rule \ clean "linux_genassym.o" # linux_assym.h optional compat_linux \ dependency "$S/kern/genassym.sh linux_genassym.o" \ compile-with "sh $S/kern/genassym.sh linux_genassym.o > ${.TARGET}" \ no-obj no-implicit-rule before-depend \ clean "linux_assym.h" # svr4_genassym.o optional compat_svr4 \ dependency "$S/i386/svr4/svr4_genassym.c" \ compile-with "${CC} ${CFLAGS:N-fno-common} -c ${.IMPSRC}" \ no-obj no-implicit-rule \ clean "svr4_genassym.o" # svr4_assym.h optional compat_svr4 \ dependency "$S/kern/genassym.sh svr4_genassym.o" \ compile-with "sh $S/kern/genassym.sh svr4_genassym.o > ${.TARGET}" \ no-obj no-implicit-rule before-depend \ clean "svr4_assym.h" # ukbdmap.h optional ukbd_dflt_keymap \ compile-with "/usr/sbin/kbdcontrol -L ${UKBD_DFLT_KEYMAP} | sed -e 's/^static keymap_t.* = /static keymap_t key_map = /' -e 's/^static accentmap_t.* = /static accentmap_t accent_map = /' > ukbdmap.h" \ no-obj no-implicit-rule before-depend \ clean "ukbdmap.h" # compat/linprocfs/linprocfs.c optional linprocfs compat/linsysfs/linsysfs.c optional linsysfs compat/linux/linux_emul.c optional compat_linux compat/linux/linux_file.c optional compat_linux compat/linux/linux_futex.c optional compat_linux compat/linux/linux_getcwd.c optional compat_linux compat/linux/linux_ioctl.c optional compat_linux compat/linux/linux_ipc.c optional compat_linux compat/linux/linux_mib.c optional compat_linux compat/linux/linux_misc.c optional compat_linux compat/linux/linux_signal.c optional compat_linux compat/linux/linux_socket.c optional compat_linux compat/linux/linux_stats.c optional compat_linux compat/linux/linux_sysctl.c optional compat_linux compat/linux/linux_time.c optional compat_linux compat/linux/linux_uid16.c optional compat_linux compat/linux/linux_util.c optional compat_linux compat/svr4/imgact_svr4.c optional compat_svr4 compat/svr4/svr4_fcntl.c optional compat_svr4 compat/svr4/svr4_filio.c optional compat_svr4 compat/svr4/svr4_ioctl.c optional compat_svr4 compat/svr4/svr4_ipc.c optional compat_svr4 compat/svr4/svr4_misc.c optional compat_svr4 compat/svr4/svr4_resource.c optional compat_svr4 compat/svr4/svr4_signal.c optional compat_svr4 compat/svr4/svr4_socket.c optional compat_svr4 compat/svr4/svr4_sockio.c optional compat_svr4 compat/svr4/svr4_stat.c optional compat_svr4 compat/svr4/svr4_stream.c optional compat_svr4 compat/svr4/svr4_syscallnames.c optional compat_svr4 compat/svr4/svr4_sysent.c optional compat_svr4 compat/svr4/svr4_sysvec.c optional compat_svr4 compat/svr4/svr4_termios.c optional compat_svr4 bf_enc.o optional crypto | ipsec \ dependency "$S/crypto/blowfish/arch/i386/bf_enc.S $S/crypto/blowfish/arch/i386/bf_enc_586.S $S/crypto/blowfish/arch/i386/bf_enc_686.S" \ compile-with "${CC} -c -I$S/crypto/blowfish/arch/i386 ${ASM_CFLAGS} ${WERROR} ${.IMPSRC}" \ no-implicit-rule crypto/des/arch/i386/des_enc.S optional crypto | ipsec | netsmb dev/agp/agp_ali.c optional agp dev/agp/agp_amd.c optional agp dev/agp/agp_i810.c optional agp dev/agp/agp_intel.c optional agp dev/agp/agp_nvidia.c optional agp dev/agp/agp_sis.c optional agp dev/agp/agp_via.c optional agp dev/aic/aic_cbus.c optional aic isa dev/ce/ceddk.c optional ce dev/ce/if_ce.c optional ce dev/ce/tau32-ddk.c optional ce dev/cp/cpddk.c optional cp dev/cp/if_cp.c optional cp dev/ct/bshw_machdep.c optional ct dev/ct/ct.c optional ct dev/ct/ct_isa.c optional ct isa dev/ed/if_ed_cbus.c optional ed isa dev/ed/if_ed_wd80x3.c optional ed isa dev/fb/fb.c optional fb | gdc dev/fe/if_fe_cbus.c optional fe isa dev/hwpmc/hwpmc_amd.c optional hwpmc dev/hwpmc/hwpmc_intel.c optional hwpmc dev/hwpmc/hwpmc_core.c optional hwpmc dev/hwpmc/hwpmc_uncore.c optional hwpmc dev/hwpmc/hwpmc_pentium.c optional hwpmc dev/hwpmc/hwpmc_piv.c optional hwpmc dev/hwpmc/hwpmc_ppro.c optional hwpmc dev/hwpmc/hwpmc_tsc.c optional hwpmc dev/hwpmc/hwpmc_x86.c optional hwpmc dev/io/iodev.c optional io dev/kbd/kbd.c optional pckbd | sc | ukbd dev/le/if_le_cbus.c optional le isa dev/lindev/full.c optional lindev dev/lindev/lindev.c optional lindev dev/mem/memutil.c optional mem dev/mse/mse.c optional mse dev/mse/mse_cbus.c optional mse isa dev/sbni/if_sbni.c optional sbni dev/sbni/if_sbni_pci.c optional sbni pci dev/sio/sio_pccard.c optional sio pccard dev/sio/sio_pci.c optional sio pci dev/sio/sio_puc.c optional sio puc dev/snc/dp83932.c optional snc dev/snc/dp83932subr.c optional snc dev/snc/if_snc.c optional snc dev/snc/if_snc_cbus.c optional snc isa dev/snc/if_snc_pccard.c optional snc pccard dev/speaker/spkr.c optional speaker dev/syscons/apm/apm_saver.c optional apm_saver apm dev/uart/uart_cpu_pc98.c optional uart i386/bios/apm.c optional apm #i386/i386/apic_vector.s optional apic i386/i386/atomic.c standard \ compile-with "${CC} -c ${CFLAGS} ${DEFINED_PROF:S/^$/-fomit-frame-pointer/} ${.IMPSRC}" i386/i386/autoconf.c standard i386/i386/bios.c standard i386/i386/bioscall.s standard i386/i386/bpf_jit_machdep.c optional bpf_jitter i386/i386/busdma_machdep.c standard i386/i386/db_disasm.c optional ddb i386/i386/db_interface.c optional ddb i386/i386/db_trace.c optional ddb i386/i386/dump_machdep.c standard i386/i386/elf_machdep.c standard i386/i386/exception.s standard i386/i386/gdb_machdep.c optional gdb i386/i386/i686_mem.c optional mem i386/i386/identcpu.c standard i386/i386/in_cksum.c optional inet i386/i386/initcpu.c standard i386/i386/intr_machdep.c standard i386/i386/io.c optional io -i386/i386/io_apic.c optional apic i386/i386/k6_mem.c optional mem i386/i386/legacy.c standard -x86/x86/local_apic.c optional apic i386/i386/locore.s standard no-obj i386/i386/mca.c standard i386/i386/mem.c optional mem i386/i386/minidump_machdep.c standard i386/i386/mp_clock.c optional smp i386/i386/mp_machdep.c optional smp i386/i386/mp_watchdog.c optional mp_watchdog smp i386/i386/mpboot.s optional smp i386/i386/mptable.c optional apic i386/i386/mptable_pci.c optional apic pci i386/i386/msi.c optional apic pci i386/i386/nexus.c standard i386/i386/perfmon.c optional perfmon i386/i386/pmap.c standard i386/i386/ptrace_machdep.c standard i386/i386/stack_machdep.c optional ddb | stack i386/i386/support.s standard i386/i386/swtch.s standard i386/i386/sys_machdep.c standard i386/i386/trap.c standard i386/i386/tsc.c standard i386/i386/uio_machdep.c standard i386/i386/vm86.c standard i386/i386/vm_machdep.c standard i386/ibcs2/ibcs2_errno.c optional ibcs2 i386/ibcs2/ibcs2_fcntl.c optional ibcs2 i386/ibcs2/ibcs2_ioctl.c optional ibcs2 i386/ibcs2/ibcs2_ipc.c optional ibcs2 i386/ibcs2/ibcs2_isc.c optional ibcs2 i386/ibcs2/ibcs2_isc_sysent.c optional ibcs2 i386/ibcs2/ibcs2_misc.c optional ibcs2 i386/ibcs2/ibcs2_msg.c optional ibcs2 i386/ibcs2/ibcs2_other.c optional ibcs2 i386/ibcs2/ibcs2_signal.c optional ibcs2 i386/ibcs2/ibcs2_socksys.c optional ibcs2 i386/ibcs2/ibcs2_stat.c optional ibcs2 i386/ibcs2/ibcs2_sysent.c optional ibcs2 i386/ibcs2/ibcs2_sysi86.c optional ibcs2 i386/ibcs2/ibcs2_sysvec.c optional ibcs2 i386/ibcs2/ibcs2_util.c optional ibcs2 i386/ibcs2/ibcs2_xenix.c optional ibcs2 i386/ibcs2/ibcs2_xenix_sysent.c optional ibcs2 i386/ibcs2/imgact_coff.c optional ibcs2 i386/isa/elink.c optional ep | ie i386/isa/npx.c optional npx i386/isa/pmtimer.c optional pmtimer i386/isa/prof_machdep.c optional profiling-routine i386/linux/imgact_linux.c optional compat_linux i386/linux/linux_dummy.c optional compat_linux i386/linux/linux_locore.s optional compat_linux \ dependency "linux_assym.h" i386/linux/linux_machdep.c optional compat_linux i386/linux/linux_ptrace.c optional compat_linux i386/linux/linux_support.s optional compat_linux \ dependency "linux_assym.h" i386/linux/linux_sysent.c optional compat_linux i386/linux/linux_sysvec.c optional compat_linux i386/pci/pci_bus.c optional pci i386/pci/pci_cfgreg.c optional pci i386/pci/pci_pir.c optional pci i386/svr4/svr4_locore.s optional compat_svr4 \ dependency "svr4_assym.h" \ warning "COMPAT_SVR4 is broken and should be avoided" i386/svr4/svr4_machdep.c optional compat_svr4 # kern/imgact_aout.c optional compat_aout kern/imgact_gzip.c optional gzip libkern/divdi3.c standard libkern/ffsl.c standard libkern/flsl.c standard libkern/memmove.c standard libkern/memset.c standard libkern/moddi3.c standard libkern/qdivrem.c standard libkern/ucmpdi2.c standard libkern/udivdi3.c standard libkern/umoddi3.c standard pc98/apm/apm_bioscall.S optional apm pc98/cbus/cbus_dma.c optional isa pc98/cbus/clock.c standard pc98/cbus/fdc.c optional fdc pc98/cbus/fdc_cbus.c optional fdc isa pc98/cbus/gdc.c optional gdc pc98/cbus/nmi.c standard pc98/cbus/olpt.c optional olpt pc98/cbus/pckbd.c optional pckbd pc98/cbus/pcrtc.c optional atpic pc98/cbus/pmc.c optional pmc pc98/cbus/scgdcrndr.c optional sc gdc pc98/cbus/scterm-sck.c optional sc pc98/cbus/scvtb.c optional sc pc98/cbus/sio.c optional sio pc98/cbus/sio_cbus.c optional sio isa pc98/cbus/syscons_cbus.c optional sc pc98/pc98/busio.s standard pc98/pc98/busiosubr.c standard pc98/pc98/canbepm.c optional canbepm pc98/pc98/canbus.c optional canbus pc98/pc98/canbus_if.m optional canbus pc98/pc98/machdep.c standard pc98/pc98/pc98_machdep.c standard # # x86 shared code between IA32, AMD64 and PC98 architectures # x86/isa/atpic.c optional atpic x86/isa/isa.c optional isa +x86/x86/io_apic.c optional apic +x86/x86/local_apic.c optional apic diff --git a/sys/i386/i386/io_apic.c b/sys/x86/x86/io_apic.c similarity index 100% rename from sys/i386/i386/io_apic.c rename to sys/x86/x86/io_apic.c