Enable -Werror for romcc
[coreboot.git] / util / mptable / mptable.c
index 6d5c565170752fcdd588e69a946c4d8e9def9478..ce775dd71277540bf9f7e7a85d2178d5e45ef7b9 100644 (file)
@@ -296,37 +296,22 @@ int       grope = 0;
 int    verbose = 0;
 int    noisy = 0;
 /* preamble to the mptable. This is fixed for all coreboots */
+
 char *preamble[] = {
 "#include <console/console.h>",
 "#include <arch/smp/mpspec.h>",
+"#include <arch/ioapic.h>",
 "#include <device/pci.h>",
 "#include <string.h>",
 "#include <stdint.h>",
 "",
-"void *smp_write_config_table(void *v)",
+"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);",
 "",
@@ -335,12 +320,10 @@ char *preamble[] = {
 };
 
 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_debug(\"Wrote the mp table end at: %p - %p\\n\",",
+"      printk(BIOS_DEBUG, \"Wrote the mp table end at: %p - %p\\n\",",
 "              mc, smp_next_mpe_entry(mc));",
 "      return smp_next_mpe_entry(mc);",
 "}",
@@ -355,39 +338,8 @@ char *postamble[] = {
 };
 
 char *ioapic_code[] = {
-"      smp_write_ioapic(mc, 2, 0x20, 0xfec00000);",
-"      {",
-"              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);",
-"                      }",
-"                }",
-"      }",
+"      smp_write_ioapic(mc, 2, 0x20, IO_APIC_ADDR);",
+"      /* TODO: If you have multiple IOAPICs, add them here. */",
 0
 };
 static void
@@ -404,7 +356,7 @@ write_code(char **code)
        printf("%s\n", *code++);
 }
 /*
- * 
+ *
  */
 int
 main( int argc, char *argv[] )
@@ -415,7 +367,7 @@ main( int argc, char *argv[] )
     int                defaultConfig;
 
     /* announce ourselves */
-    
+
     if (verbose) puts( SEP_LINE2 );
 
     printf( "/* generated by MPTable, version %d.%d.%d*/\n", VMAJOR, VMINOR, VDELTA );
@@ -427,7 +379,7 @@ main( int argc, char *argv[] )
     for(argc--, argv++; argc; argc--, argv++){
       if ( strcmp( argv[0], "-dmesg") == 0 ) {
        dmesg = 1;
-      } else 
+      } else
        if ( strcmp( argv[0], "-help") == 0 )
          {
            usage();
@@ -648,7 +600,7 @@ apic_probe( vm_offset_t* paddr, int* where )
 
 
 /*
- * 
+ *
  */
 static void
 MPFloatingPointer( vm_offset_t paddr, int where, mpfps_t* mpfps )
@@ -719,7 +671,7 @@ MPFloatingPointer( vm_offset_t paddr, int where, mpfps_t* mpfps )
 
 
 /*
- * 
+ *
  */
 static void
 MPConfigDefault( int featureByte )
@@ -776,7 +728,7 @@ MPConfigDefault( int featureByte )
 
 
 /*
- * 
+ *
  */
 static void
 MPConfigTableHeader( uint32_t pap )
@@ -966,7 +918,7 @@ MPConfigTableHeader( uint32_t pap )
 
 
 /*
- * 
+ *
  */
 static int
 readType( void )
@@ -984,7 +936,7 @@ readType( void )
 
 
 /*
- * 
+ *
  */
 static void
 seekEntry( vm_offset_t addr )
@@ -995,7 +947,7 @@ seekEntry( vm_offset_t addr )
 
 
 /*
- * 
+ *
  */
 static void
 readEntry( void* entry, int size )
@@ -1034,7 +986,7 @@ processorEntry( void )
 
 
 /*
- * 
+ *
  */
 static int
 lookupBusType( char* name )
@@ -1103,13 +1055,13 @@ ioApicEntry( void )
     apics[ entry.apicID ] = entry.apicID;
 
     // the numbering and setup of ioapics is so irrational
-    // that for now we will punt. 
+    // that for now we will punt.
 #if 0
     if (entry.apicFlags & IOAPICENTRY_FLAG_EN)
       printf("\tsmp_write_ioapic(mc, 0x%x, 0x%x, 0x%x);\n",
             entry.apicID, entry.apicVersion, entry.apicAddress);
 #endif
-    
+
 }
 
 
@@ -1144,11 +1096,11 @@ intEntry( void )
 
     printf( "\t %5d", (int)entry.srcBusID );
     if ( busses[ (int)entry.srcBusID ] == PCI )
-       printf( "\t%2d:%c", 
+       printf( "\t%2d:%c",
                ((int)entry.srcBusIRQ >> 2) & 0x1f,
                ((int)entry.srcBusIRQ & 0x03) + 'A' );
     else
-       printf( "\t 0x%x:0x%x(0x%x)", 
+       printf( "\t 0x%x:0x%x(0x%x)",
                                (int)entry.srcBusIRQ>>2,
                                (int)entry.srcBusIRQ & 3,
                                (int)entry.srcBusIRQ );
@@ -1163,7 +1115,7 @@ intEntry( void )
           (int)entry.srcBusIRQ,
           (int)entry.dstApicID ,
           (int)entry.dstApicINT );
-          
+
 }
 
 static void
@@ -1186,7 +1138,7 @@ lintEntry( void )
 
     printf( "\t %5d", (int)entry.srcBusID );
     if ( busses[ (int)entry.srcBusID ] == PCI )
-       printf( "\t%2d:%c", 
+       printf( "\t%2d:%c",
                ((int)entry.srcBusIRQ >> 2) & 0x1f,
                ((int)entry.srcBusIRQ & 0x03) + 'A' );
     else
@@ -1194,14 +1146,14 @@ lintEntry( 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 ],
           (int)entry.srcBusID,
           (int)entry.srcBusIRQ,
           (int)entry.dstApicINT );
-          
+
 }
 
 
@@ -1304,7 +1256,7 @@ doOptionList( void )
 
 
 /*
- * 
+ *
  */
 static void
 pnstr( uint8_t* s, int c )