summaryrefslogtreecommitdiff
path: root/src/mem/packet.hh
diff options
context:
space:
mode:
authorGabe Black <gblack@eecs.umich.edu>2007-08-26 21:45:40 -0700
committerGabe Black <gblack@eecs.umich.edu>2007-08-26 21:45:40 -0700
commit7227ab5f223eb5f4d3ce80ea16bff5f87c3300b6 (patch)
tree3f6c407eccafc56c85a6077fd05f4e98f7e6f034 /src/mem/packet.hh
parent8d1c7a83d7c052ba312a21ff6c6b8967b1e4b5f4 (diff)
downloadgem5-7227ab5f223eb5f4d3ce80ea16bff5f87c3300b6.tar.xz
Merge with head
--HG-- extra : convert_revision : cc73b9aaf73e9dacf52f3350fa591e67ca4ccee6
Diffstat (limited to 'src/mem/packet.hh')
-rw-r--r--src/mem/packet.hh6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/mem/packet.hh b/src/mem/packet.hh
index 2b650a51e..9c366f9fc 100644
--- a/src/mem/packet.hh
+++ b/src/mem/packet.hh
@@ -332,10 +332,11 @@ class Packet : public FastAlloc
// Network error conditions... encapsulate them as methods since
// their encoding keeps changing (from result field to command
// field, etc.)
- void setNacked() { origCmd = cmd; cmd = MemCmd::NetworkNackError; }
- void setBadAddress() { origCmd = cmd; cmd = MemCmd::BadAddressError; }
+ void setNacked() { assert(isResponse()); cmd = MemCmd::NetworkNackError; }
+ void setBadAddress() { assert(isResponse()); cmd = MemCmd::BadAddressError; }
bool wasNacked() { return cmd == MemCmd::NetworkNackError; }
bool hadBadAddress() { return cmd == MemCmd::BadAddressError; }
+ void copyError(Packet *pkt) { assert(pkt->isError()); cmd = pkt->cmd; }
bool nic_pkt() { panic("Unimplemented"); M5_DUMMY_RETURN }
@@ -431,6 +432,7 @@ class Packet : public FastAlloc
{
assert(needsResponse());
assert(isRequest());
+ origCmd = cmd;
cmd = cmd.responseCommand();
dest = src;
destValid = srcValid;