arm: Remove the 'magic MSI register' in the GIC (PL390)
[gem5.git] / src / dev / platform.cc
index ed021e3b673e414bd1bb04e5e1648b56a56c5f29..c6078078682f9b20c13b81ffd5d2b2b93c401f29 100644 (file)
  *          Nathan Binkert
  */
 
+#include "base/misc.hh"
+#include "config/the_isa.hh"
 #include "dev/platform.hh"
-#include "sim/builder.hh"
 #include "sim/sim_exit.hh"
 
 using namespace std;
-using namespace TheISA;
 
-Platform::Platform(const string &name, IntrControl *intctrl)
-    : SimObject(name), intrctrl(intctrl)
+Platform::Platform(const Params *p)
+    : SimObject(p), intrctrl(p->intrctrl)
 {
 }
 
@@ -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);
+}