First run at migrating from PIC to IOAPIC. Includes mptable parsing, moving pci to...
authorPaul Pearce <pearce@eecs.berkeley.edu>
Thu, 23 Jul 2009 04:33:13 +0000 (21:33 -0700)
committerPaul Pearce <pearce@eecs.berkeley.edu>
Thu, 23 Jul 2009 04:33:13 +0000 (21:33 -0700)
commit872b707a49e46a12f7589dc66862d95e47ec42f2
tree212d7c734e658d5d7dc6817896a2d3132c378e97
parent5b467f07c38653103d8f8b330dfef6b1603e894a
First run at migrating from PIC to IOAPIC. Includes mptable parsing, moving pci to its own file, and reworking the init order.

1) Moved PCI out of the NIC driver and into its own file. Created structures that map from irq->pci device, and pci device->irq
2) Created mptables.c, which parses the mptables and creates a ton of structures that allows us to locate an ioapic interupt line
   based on pci device, so we can ...
3) Added a function in apic.c that allows us to route an irq to a specific lapic, based on the info from the mptables and pci bus
4) Changed the init order to setup the nic after smp boot. This is needed since we want to route interupts to a core
   that wasn't yet booted (in the old init order).

Note: PIT functionality is not yet known. Also the ioapic_route_irq() relies on a few constants that need to be expanded into structs.
12 files changed:
include/arch/apic.h
include/mptables.h [new file with mode: 0644]
include/pci.h [new file with mode: 0644]
include/rl8168.h
kern/src/Makefrag
kern/src/apic.c
kern/src/init.c
kern/src/mptables.c [new file with mode: 0644]
kern/src/pci.c [new file with mode: 0644]
kern/src/rl8168.c
kern/src/trap.c
user/parlib/src/newlib_backend.c