devices should increment pkt.time instead of assiging to it
authorAli Saidi <saidi@eecs.umich.edu>
Fri, 28 Apr 2006 19:38:43 +0000 (15:38 -0400)
committerAli Saidi <saidi@eecs.umich.edu>
Fri, 28 Apr 2006 19:38:43 +0000 (15:38 -0400)
--HG--
extra : convert_revision : b4ca3c7fc13bf0856eb2a800a11d5611b473ec3e

12 files changed:
dev/alpha_console.cc
dev/ide_ctrl.cc
dev/io_device.cc
dev/io_device.hh
dev/isa_fake.cc
dev/ns_gige.cc
dev/pciconfigall.cc
dev/sinic.cc
dev/tsunami_cchip.cc
dev/tsunami_io.cc
dev/tsunami_pchip.cc
dev/uart8250.cc

index e05337bfacce494e39c22a89970fac65ef79a595..2e46f7be13fd14be760ccdc788172c51edc6222e 100644 (file)
@@ -99,7 +99,7 @@ AlphaConsole::read(Packet &pkt)
     assert(pkt.result == Unknown);
     assert(pkt.addr >= pioAddr && pkt.addr < pioAddr + pioSize);
 
-    pkt.time = curTick + pioDelay;
+    pkt.time += pioDelay;
     Addr daddr = pkt.addr - pioAddr;
 
     pkt.allocate();
@@ -191,7 +191,7 @@ AlphaConsole::read(Packet &pkt)
 Tick
 AlphaConsole::write(Packet &pkt)
 {
-    pkt.time = curTick + pioDelay;
+    pkt.time += pioDelay;
 
     assert(pkt.result == Unknown);
     assert(pkt.addr >= pioAddr && pkt.addr < pioAddr + pioSize);
index 638be9c3df49e63d3743df6cd0a070c9caaf5301..abdbe5d0a6284530b8d8e27a3ac47341d760ef0b 100644 (file)
@@ -430,7 +430,7 @@ IdeController::read(Packet &pkt)
     IdeRegType reg_type;
     int disk;
 
-    pkt.time = curTick + pioDelay;
+    pkt.time += pioDelay;
     pkt.allocate();
     if (pkt.size != 1 && pkt.size != 2 && pkt.size !=4)
          panic("Bad IDE read size: %d\n", pkt.size);
@@ -518,7 +518,7 @@ IdeController::write(Packet &pkt)
     int disk;
     uint8_t oldVal, newVal;
 
-    pkt.time = curTick + pioDelay;
+    pkt.time += pioDelay;
 
     parseAddr(pkt.addr, offset, channel, reg_type);
 
index 42b3c382f1b4c813347b0af1cef24f173336543e..24f33d84d8b1c3f42dbd2483e22a9a4389c74197 100644 (file)
@@ -116,7 +116,13 @@ DmaPort::recvTiming(Packet &pkt)
         DmaReqState *state;
         state = (DmaReqState*)pkt.senderState;
         state->completionEvent->schedule(pkt.time - pkt.req->getTime());
+        delete pkt.req;
+        delete &pkt;
+    }  else {
+        delete pkt.req;
+        delete &pkt;
     }
+
     return Success;
 }
 
@@ -203,7 +209,7 @@ DmaPort::sendDma(Packet *pkt)
    if (state == Timing) {
        if (sendTiming(pkt) == Failure)
            transmitList.push_back(&packet);
-   } else if (state == Atomic) {*/
+    } else if (state == Atomic) {*/
        sendAtomic(*pkt);
        if (pkt->senderState) {
            DmaReqState *state = (DmaReqState*)pkt->senderState;
index bc0160c46ab69cc7abb401d9aac9a81f27be170a..1f4ef4b6ee980e7555274d82bf2e0d4a596db17e 100644 (file)
@@ -167,7 +167,7 @@ class DmaPort : public Port
         friend class DmaPort;
     };
 
-    void sendDma(Packet &pkt);
+    void sendDma(Packet *pkt);
 
   public:
     DmaPort(DmaDevice *dev, Platform *p);
index 8060d1a7cfeaef9c0b1df778eba1e5671664467a..2f392a41af3233d3bf97293b84b13a3a7ed32969 100644 (file)
@@ -54,7 +54,7 @@ IsaFake::read(Packet &pkt)
     assert(pkt.result == Unknown);
     assert(pkt.addr >= pioAddr && pkt.addr < pioAddr + pioSize);
 
-    pkt.time = curTick + pioDelay;
+    pkt.time += pioDelay;
 
     DPRINTF(Tsunami, "read  va=%#x size=%d\n", pkt.addr, pkt.size);
 
@@ -80,7 +80,7 @@ IsaFake::read(Packet &pkt)
 Tick
 IsaFake::write(Packet &pkt)
 {
-    pkt.time = curTick + pioDelay;
+    pkt.time += pioDelay;
     DPRINTF(Tsunami, "write - va=%#x size=%d \n", pkt.addr, pkt.size);
     pkt.result = Success;
     return pioDelay;
index 02c9bbca4ae0bb65c5b981c2183617cdde0861ac..a2e224ed040831f45aed5643205a83b1ae9d0755 100644 (file)
@@ -493,7 +493,7 @@ NSGigE::read(Packet &pkt)
 {
     assert(ioEnable);
 
-    pkt.time = curTick + pioDelay;
+    pkt.time += pioDelay;
     pkt.allocate();
 
     //The mask is to give you only the offset into the device register file
@@ -729,7 +729,7 @@ NSGigE::write(Packet &pkt)
     DPRINTF(EthernetPIO, "write da=%#x pa=%#x size=%d\n",
             daddr, pkt.addr, pkt.size);
 
-    pkt.time = curTick + pioDelay;
+    pkt.time += pioDelay;
 
     if (daddr > LAST && daddr <=  RESERVED) {
         panic("Accessing reserved register");
index c3597c486abdb61c7ccd84337401472ce848f54e..dfb1d48f6d7446576584e6790f09e283d01bff3a 100644 (file)
@@ -99,7 +99,7 @@ PciConfigAll::read(Packet &pkt)
     int func = (daddr >> 8) & 0x7;
     int reg = daddr & 0xFF;
 
-    pkt.time = curTick + pioDelay;
+    pkt.time += pioDelay;
     pkt.allocate();
 
     DPRINTF(PciConfigAll, "read  va=%#x da=%#x size=%d\n", pkt.addr, daddr,
@@ -134,7 +134,7 @@ PciConfigAll::read(Packet &pkt)
 Tick
 PciConfigAll::write(Packet &pkt)
 {
-    pkt.time = curTick + pioDelay;
+    pkt.time += pioDelay;
 
     assert(pkt.result == Unknown);
     assert(pkt.addr >= pioAddr && pkt.addr < pioAddr + pioSize);
index b91ef83b014ebe5e4c722612eee302b5b41f7134..b5b6c6cf551db9516a255e05f9ae4f2590677d48 100644 (file)
@@ -321,7 +321,7 @@ Device::read(Packet &pkt)
     Addr index = daddr >> Regs::VirtualShift;
     Addr raddr = daddr & Regs::VirtualMask;
 
-    pkt.time = curTick + pioDelay;
+    pkt.time += pioDelay;
     pkt.allocate();
 
     if (!regValid(raddr))
@@ -408,7 +408,7 @@ Device::write(Packet &pkt)
     Addr index = daddr >> Regs::VirtualShift;
     Addr raddr = daddr & Regs::VirtualMask;
 
-    pkt.time = curTick + pioDelay;
+    pkt.time += pioDelay;
 
     if (!regValid(raddr))
         panic("invalid register: cpu=%d, da=%#x pa=%#x size=%d",
index f35c34138e655e19a541a02302bb053abf107029..7b9032f6e5357071605189f6432de24b9e6b3f3b 100644 (file)
@@ -76,7 +76,7 @@ TsunamiCChip::read(Packet &pkt)
     assert(pkt.result == Unknown);
     assert(pkt.addr >= pioAddr && pkt.addr < pioAddr + pioSize);
 
-    pkt.time = curTick + pioDelay;
+    pkt.time += pioDelay;
     Addr regnum = (pkt.addr - pioAddr) >> 6;
     Addr daddr = (pkt.addr - pioAddr);
 
@@ -182,7 +182,7 @@ TsunamiCChip::read(Packet &pkt)
 Tick
 TsunamiCChip::write(Packet &pkt)
 {
-    pkt.time = curTick + pioDelay;
+    pkt.time += pioDelay;
 
 
     assert(pkt.addr >= pioAddr && pkt.addr < pioAddr + pioSize);
index ed526bdde152a06295cd432b8feb6941227a4387..0efcc10288e828c8ecce375a83ce883246620a3e 100644 (file)
@@ -441,7 +441,7 @@ TsunamiIO::read(Packet &pkt)
     assert(pkt.result == Unknown);
     assert(pkt.addr >= pioAddr && pkt.addr < pioAddr + pioSize);
 
-    pkt.time = curTick + pioDelay;
+    pkt.time += pioDelay;
     Addr daddr = pkt.addr - pioAddr;
 
     DPRINTF(Tsunami, "io read  va=%#x size=%d IOPorrt=%#x\n", pkt.addr,
@@ -505,7 +505,7 @@ TsunamiIO::read(Packet &pkt)
 Tick
 TsunamiIO::write(Packet &pkt)
 {
-    pkt.time = curTick + pioDelay;
+    pkt.time += pioDelay;
 
     assert(pkt.result == Unknown);
     assert(pkt.addr >= pioAddr && pkt.addr < pioAddr + pioSize);
index 05b480cb8100dec1ac32949aca76b66e6fef96f9..1323a0548330b630323cfb9cd8ea9ab785eb1534 100644 (file)
@@ -71,7 +71,7 @@ TsunamiPChip::read(Packet &pkt)
     assert(pkt.addr >= pioAddr && pkt.addr < pioAddr + pioSize);
 
 
-    pkt.time = curTick + pioDelay;
+    pkt.time += pioDelay;
     pkt.allocate();
     Addr daddr = (pkt.addr - pioAddr) >> 6;;
     assert(pkt.size == sizeof(uint64_t));
@@ -151,7 +151,7 @@ TsunamiPChip::read(Packet &pkt)
 Tick
 TsunamiPChip::write(Packet &pkt)
 {
-    pkt.time = curTick + pioDelay;
+    pkt.time += pioDelay;
 
     assert(pkt.result == Unknown);
     assert(pkt.addr >= pioAddr && pkt.addr < pioAddr + pioSize);
index 84885456f51b607110e31dc049cdaa849c3e8bd1..15752c7350e451afec73d7a3e526393f3aa689ad 100644 (file)
@@ -114,7 +114,7 @@ Uart8250::read(Packet &pkt)
     assert(pkt.addr >= pioAddr && pkt.addr < pioAddr + pioSize);
     assert(pkt.size == 1);
 
-    pkt.time = curTick + pioDelay;
+    pkt.time += pioDelay;
     Addr daddr = pkt.addr - pioAddr;
     pkt.allocate();
 
@@ -198,7 +198,7 @@ Uart8250::write(Packet &pkt)
     assert(pkt.addr >= pioAddr && pkt.addr < pioAddr + pioSize);
     assert(pkt.size == 1);
 
-    pkt.time = curTick + pioDelay;
+    pkt.time += pioDelay;
     Addr daddr = pkt.addr - pioAddr;
 
     DPRINTF(Uart, " write register %#x value %#x\n", daddr, pkt.get<uint8_t>());