X86: Make the real time clock actually keep track of time.
[gem5.git] / src / dev / isa_fake.cc
index 8e11e607bf6e2e9385df31d46a93330392cc4dab..af3ca3b0f84b6ddf12a647e9a22d1fd630823e70 100644 (file)
@@ -55,18 +55,18 @@ IsaFake::IsaFake(Params *p)
 Tick
 IsaFake::read(PacketPtr pkt)
 {
-    assert(pkt->result == Packet::Unknown);
 
+    pkt->makeAtomicResponse();
     if (params()->warn_access != "")
         warn("Device %s accessed by read to address %#x size=%d\n",
                 name(), pkt->getAddr(), pkt->getSize());
     if (params()->ret_bad_addr) {
-        DPRINTF(Tsunami, "read to bad address va=%#x size=%d\n",
+        DPRINTF(IsaFake, "read to bad address va=%#x size=%d\n",
                 pkt->getAddr(), pkt->getSize());
-        pkt->result = Packet::BadAddress;
+        pkt->setBadAddress();
     } else {
         assert(pkt->getAddr() >= pioAddr && pkt->getAddr() < pioAddr + pioSize);
-        DPRINTF(Tsunami, "read  va=%#x size=%d\n",
+        DPRINTF(IsaFake, "read  va=%#x size=%d\n",
                 pkt->getAddr(), pkt->getSize());
         switch (pkt->getSize()) {
           case sizeof(uint64_t):
@@ -84,7 +84,6 @@ IsaFake::read(PacketPtr pkt)
           default:
             panic("invalid access size!\n");
         }
-        pkt->result = Packet::Success;
     }
     return pioDelay;
 }
@@ -92,6 +91,7 @@ IsaFake::read(PacketPtr pkt)
 Tick
 IsaFake::write(PacketPtr pkt)
 {
+    pkt->makeAtomicResponse();
     if (params()->warn_access != "") {
         uint64_t data;
         switch (pkt->getSize()) {
@@ -114,11 +114,11 @@ IsaFake::write(PacketPtr pkt)
                 name(), pkt->getAddr(), pkt->getSize(), data);
     }
     if (params()->ret_bad_addr) {
-        DPRINTF(Tsunami, "write to bad address va=%#x size=%d \n",
+        DPRINTF(IsaFake, "write to bad address va=%#x size=%d \n",
                 pkt->getAddr(), pkt->getSize());
-        pkt->result = Packet::BadAddress;
+        pkt->setBadAddress();
     } else {
-        DPRINTF(Tsunami, "write - va=%#x size=%d \n",
+        DPRINTF(IsaFake, "write - va=%#x size=%d \n",
                 pkt->getAddr(), pkt->getSize());
 
         if (params()->update_data) {
@@ -139,7 +139,6 @@ IsaFake::write(PacketPtr pkt)
                 panic("invalid access size!\n");
             }
         }
-        pkt->result = Packet::Success;
     }
     return pioDelay;
 }