{
struct mp_config_table *mc;
int isa_bus;
-
+
mc = (void *)(((char *)v) + SMP_FLOATING_TABLE_LEN);
mptable_init(mc, LAPIC_ADDR);
smp_write_processors(mc);
}
mptable_add_isa_interrupts(mc, isa_bus, apicid_sb600, 0);
+#define PCI_INT(bus, dev, fn, pin) \
+ smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, (bus), (((dev)<<2)|(fn)), apicid_sb600, (pin))
+
+ /* usb */
+ PCI_INT(0x0, 0x13, 0x0, 0x10);
+ PCI_INT(0x0, 0x13, 0x1, 0x11);
+ PCI_INT(0x0, 0x13, 0x2, 0x12);
+ PCI_INT(0x0, 0x13, 0x3, 0x13);
+
+ /* sata */
+ PCI_INT(0x0, 0x12, 0x1, 0x16);
+
+ /* SMBus/ACPI */
+ PCI_INT(0x0, 0x14, 0x0, 0x10);
+ /* IDE */
+ PCI_INT(0x0, 0x14, 0x1, 0x11);
+ /* HDA */
+ PCI_INT(0x0, 0x14, 0x2, 0x12);
+ /* LPC */
+ PCI_INT(0x0, 0x14, 0x3, 0x13);
+
+ /* GFX ? */
+ PCI_INT(bus_rs690[1], 0x5, 0x0, 0x12);
+ PCI_INT(bus_rs690[1], 0x5, 0x1, 0x13);
+
+ /* PCIe slots */
+ PCI_INT(0x2, 0x00, 0x00, 0x10);
+ PCI_INT(0x2, 0x00, 0x01, 0x11);
+ PCI_INT(0x2, 0x00, 0x02, 0x12);
+ PCI_INT(0x2, 0x00, 0x03, 0x13);
+
+ /* PCIe slots */
+ PCI_INT(0x3, 0x00, 0x00, 0x11);
+ PCI_INT(0x3, 0x00, 0x01, 0x12);
+ PCI_INT(0x3, 0x00, 0x02, 0x13);
+ PCI_INT(0x3, 0x00, 0x03, 0x10);
+
+ /* PCIe slots */
+ PCI_INT(0x4, 0x00, 0x00, 0x12);
+ PCI_INT(0x4, 0x00, 0x01, 0x13);
+ PCI_INT(0x4, 0x00, 0x02, 0x10);
+ PCI_INT(0x4, 0x00, 0x03, 0x11);
+
+ /* PCIe slots */
+ PCI_INT(0x5, 0x00, 0x00, 0x13);
+ PCI_INT(0x5, 0x00, 0x01, 0x10);
+ PCI_INT(0x5, 0x00, 0x02, 0x11);
+ PCI_INT(0x5, 0x00, 0x03, 0x12);
+
+ /* onboard NIC ? */
+ PCI_INT(bus_sb600[1], 0x7, 0x0, 0x13);
+ PCI_INT(bus_sb600[1], 0x7, 0x1, 0x10);
+ PCI_INT(bus_sb600[1], 0x7, 0x2, 0x11);
+ PCI_INT(bus_sb600[1], 0x7, 0x3, 0x12);
+
/* I/O Ints: Type Polarity Trigger Bus ID IRQ APIC ID PIN# */
mptable_lintsrc(mc, isa_bus);
unsigned long write_smp_table(unsigned long addr)
{
void *v;
- v = smp_write_floating_table(addr, 1);
+ v = smp_write_floating_table(addr, 0);
return (unsigned long)smp_write_config_table(v);
}