"",
"static void *smp_write_config_table(void *v)",
"{",
-" static const char sig[4] = \"PCMP\";",
-" static const char oem[8] = \"LNXI \";",
-" static const char productid[12] = \"P4DPE \";",
" struct mp_config_table *mc;",
"",
" mc = (void *)(((char *)v) + SMP_FLOATING_TABLE_LEN);",
-" memset(mc, 0, sizeof(*mc));",
"",
-" memcpy(mc->mpc_signature, sig, sizeof(sig));",
-" mc->mpc_length = sizeof(*mc); /* initially just the header */",
-" mc->mpc_spec = 0x04;",
-" mc->mpc_checksum = 0; /* not yet computed */",
-" memcpy(mc->mpc_oem, oem, sizeof(oem));",
-" memcpy(mc->mpc_productid, productid, sizeof(productid));",
-" mc->mpc_oemptr = 0;",
-" mc->mpc_oemsize = 0;",
-" mc->mpc_entry_count = 0; /* No entries yet... */",
-" mc->mpc_lapic = LAPIC_ADDR;",
-" mc->mpe_length = 0;",
-" mc->mpe_checksum = 0;",
-" mc->reserved = 0;",
+" mptable_init(mc, \"TODO \", LAPIC_ADDR);",
"",
" smp_write_processors(mc);",
"",
};
char *postamble[] = {
-" /* There is no extension information... */",
-"",
-" /* Compute the checksums */",
+" /* Compute the checksums. */",
" mc->mpe_checksum = smp_compute_checksum(smp_next_mpc_entry(mc), mc->mpe_length);",
" mc->mpc_checksum = smp_compute_checksum(mc, mc->mpc_length);",
" printk(BIOS_DEBUG, \"Wrote the mp table end at: %p - %p\\n\",",
char *ioapic_code[] = {
" smp_write_ioapic(mc, 2, 0x20, IO_APIC_ADDR);",
-" {",
-" device_t dev;",
-" struct resource *res;",
-" dev = dev_find_slot(1, PCI_DEVFN(0x1e,0));",
-" if (dev) {",
-" res = find_resource(dev, PCI_BASE_ADDRESS_0);",
-" if (res) {",
-" smp_write_ioapic(mc, 3, 0x20, res->base);",
-" }",
-" }",
-" dev = dev_find_slot(1, PCI_DEVFN(0x1c,0));",
-" if (dev) {",
-" res = find_resource(dev, PCI_BASE_ADDRESS_0);",
-" if (res) {",
-" smp_write_ioapic(mc, 4, 0x20, res->base);",
-" }",
-" }",
-" dev = dev_find_slot(4, PCI_DEVFN(0x1e,0));",
-" if (dev) {",
-" res = find_resource(dev, PCI_BASE_ADDRESS_0);",
-" if (res) {",
-" smp_write_ioapic(mc, 5, 0x20, res->base);",
-" }",
-" }",
-" dev = dev_find_slot(4, PCI_DEVFN(0x1c,0));",
-" if (dev) {",
-" res = find_resource(dev, PCI_BASE_ADDRESS_0);",
-" if (res) {",
-" smp_write_ioapic(mc, 8, 0x20, res->base);",
-" }",
-" }",
-" }",
+" /* TODO: If you have multiple IOAPICs, add them here. */",
0
};
static void
printf( "\t %6d", (int)entry.dstApicID );
printf( "\t %3d\n", (int)entry.dstApicINT );
}
- printf("\tsmp_write_intsrc(mc, %s, %s|%s, 0x%x, 0x%x, MP_APIC_ALL, 0x%x);\n",
+ printf("\tsmp_write_lintsrc(mc, %s, %s|%s, 0x%x, 0x%x, MP_APIC_ALL, 0x%x);\n",
intTypes[ (int)entry.intType ],
triggerMode[ ((int)entry.intFlags >> 2) & 0x03 ] ,
polarityMode[ (int)entry.intFlags & 0x03 ],