dev: Add a VirtIO console device model
[gem5.git] / src / dev / pciconfigall.cc
index 884fab7ac98fcabf7bc9c9169b448627da19d995..b0da01f0ba963edabfde8464ad5504f4ab8c736c 100644 (file)
@@ -34,6 +34,7 @@
  */
 
 #include "base/trace.hh"
+#include "debug/PciConfigAll.hh"
 #include "dev/pciconfigall.hh"
 #include "dev/pcireg.h"
 #include "dev/platform.hh"
 #include "params/PciConfigAll.hh"
 #include "sim/system.hh"
 
-using namespace std;
-
-PciConfigAll::PciConfigAll(Params *p)
-    : PioDevice(p)
+PciConfigAll::PciConfigAll(const Params *p)
+    : BasicPioDevice(p, p->size)
 {
-    pioAddr = p->platform->calcConfigAddr(params()->bus,0,0);
+    // the pio_addr Python parameter is ignored, and overridden by
+    // this caluclated value
+    pioAddr = p->platform->calcPciConfigAddr(params()->bus,0,0);
 }
 
 
@@ -74,38 +75,23 @@ PciConfigAll::read(PacketPtr pkt)
         panic("invalid access size(?) for PCI configspace!\n");
     }
     pkt->makeAtomicResponse();
-    return params()->pio_delay;
+    return pioDelay;
 }
 
 Tick
 PciConfigAll::write(PacketPtr pkt)
 {
-    panic("Attempting to write to config space on non-existant device\n");
+    panic("Attempting to write to config space on non-existent device\n");
     M5_DUMMY_RETURN
 }
 
 
-void
-PciConfigAll::addressRanges(AddrRangeList &range_list)
-{
-    range_list.clear();
-    range_list.push_back(RangeSize(pioAddr, params()->size));
-}
-
-
 #ifndef DOXYGEN_SHOULD_SKIP_THIS
 
 PciConfigAll *
 PciConfigAllParams::create()
 {
-    PciConfigAll::Params *p = new PciConfigAll::Params;
-    p->pio_delay = pio_latency;
-    p->platform = platform;
-    p->system = system;
-    p->bus = bus;
-    p->size = size;
-
-    return new PciConfigAll(p);
+    return new PciConfigAll(this);
 }
 
 #endif // DOXYGEN_SHOULD_SKIP_THIS