ARM: Fix one of the timers used in the VExpress EMM platform.
[gem5.git] / src / dev / simple_disk.cc
index e29bfa72687485ac21ea7b12b451208b4c8cacc8..26e8239bb561e7d0388ca5a20cae0d0b546eaabd 100644 (file)
 
 #include "base/misc.hh"
 #include "base/trace.hh"
+#include "debug/SimpleDisk.hh"
+#include "debug/SimpleDiskData.hh"
 #include "dev/disk_image.hh"
 #include "dev/simple_disk.hh"
-#include "mem/port.hh"
-#include "sim/builder.hh"
+#include "mem/port_proxy.hh"
 #include "sim/system.hh"
 
 using namespace std;
 
-SimpleDisk::SimpleDisk(const string &name, System *sys, DiskImage *img)
-    : SimObject(name), system(sys), image(img)
+SimpleDisk::SimpleDisk(const Params *p)
+    : SimObject(p), system(p->system), image(p->disk)
 {}
 
 SimpleDisk::~SimpleDisk()
@@ -69,12 +70,12 @@ SimpleDisk::read(Addr addr, baddr_t block, int count) const
     for (int i = 0, j = 0; i < count; i += SectorSize, j++)
         image->read(data + i, block + j);
 
-    system->functionalPort.writeBlob(addr, data, count);
+    system->physProxy.writeBlob(addr, data, count);
 
     DPRINTF(SimpleDisk, "read  block=%#x len=%d\n", (uint64_t)block, count);
     DDUMP(SimpleDiskData, data, count);
 
-    delete data;
+    delete [] data;
 }
 
 void
@@ -91,23 +92,8 @@ SimpleDisk::write(Addr addr, baddr_t block, int count)
 #endif
 }
 
-BEGIN_DECLARE_SIM_OBJECT_PARAMS(SimpleDisk)
-
-    SimObjectParam<System *> system;
-    SimObjectParam<DiskImage *> disk;
-
-END_DECLARE_SIM_OBJECT_PARAMS(SimpleDisk)
-
-BEGIN_INIT_SIM_OBJECT_PARAMS(SimpleDisk)
-
-    INIT_PARAM(system, "System pointer"),
-    INIT_PARAM(disk, "Disk Image")
-
-END_INIT_SIM_OBJECT_PARAMS(SimpleDisk)
-
-CREATE_SIM_OBJECT(SimpleDisk)
+SimpleDisk *
+SimpleDiskParams::create()
 {
-    return new SimpleDisk(getInstanceName(), system, disk);
+    return new SimpleDisk(this);
 }
-
-REGISTER_SIM_OBJECT("SimpleDisk", SimpleDisk)