Major changes to how SimObjects are created and initialized. Almost all
[gem5.git] / src / dev / platform.cc
index ed021e3b673e414bd1bb04e5e1648b56a56c5f29..c8922432b89830baac3b98d0bfcfb000b9bfa07b 100644 (file)
@@ -29,8 +29,8 @@
  *          Nathan Binkert
  */
 
+#include "base/misc.hh"
 #include "dev/platform.hh"
-#include "sim/builder.hh"
 #include "sim/sim_exit.hh"
 
 using namespace std;
@@ -61,7 +61,20 @@ Addr
 Platform::pciToDma(Addr pciAddr) const
 {
    panic("No PCI dma support in platform.");
+   M5_DUMMY_RETURN
 }
 
-DEFINE_SIM_OBJECT_CLASS_NAME("Platform", Platform)
+void
+Platform::registerPciDevice(uint8_t bus, uint8_t dev, uint8_t func, uint8_t intr)
+{
+    uint32_t bdf = bus << 16 | dev << 8 | func << 0;
+    if (pciDevices.find(bdf) != pciDevices.end())
+        fatal("Two PCI devices have same bus:device:function\n");
+
+    if (intLines.test(intr))
+        fatal("Two PCI devices have same interrupt line: %d\n", intr);
 
+    pciDevices.insert(bdf);
+
+    intLines.set(intr);
+}