summaryrefslogtreecommitdiff
path: root/src/mem/packet.hh
diff options
context:
space:
mode:
authorRon Dreslinski <rdreslin@umich.edu>2006-10-10 02:36:04 -0400
committerRon Dreslinski <rdreslin@umich.edu>2006-10-10 02:36:04 -0400
commitfe8b912c03bc461375334a688d655aab2992d51e (patch)
treee4a3b601e9e99317559ad75e9946ee4665fa7ddb /src/mem/packet.hh
parente5b13138b1e045bb43a443882221b39d820553df (diff)
parent3fa5e4b6b8c402558caecb2a93ed0be38700e1bc (diff)
downloadgem5-fe8b912c03bc461375334a688d655aab2992d51e.tar.xz
Merge zizzer:/z/m5/Bitkeeper/newmem
into zazzer.eecs.umich.edu:/z/rdreslin/m5bk/newmemcleanest --HG-- extra : convert_revision : 87f83c4edf6ea51adc767d98265d1e74c0fbb46f
Diffstat (limited to 'src/mem/packet.hh')
-rw-r--r--src/mem/packet.hh15
1 files changed, 9 insertions, 6 deletions
diff --git a/src/mem/packet.hh b/src/mem/packet.hh
index 4d57aee75..7ec061710 100644
--- a/src/mem/packet.hh
+++ b/src/mem/packet.hh
@@ -58,6 +58,8 @@ typedef std::list<PacketPtr> PacketList;
#define NO_ALLOCATE 1 << 5
#define SNOOP_COMMIT 1 << 6
+//for now. @todo fix later
+#define NUM_MEM_CMDS 1 << 11
/**
* A Packet is used to encapsulate a transfer between two objects in
* the memory system (e.g., the L1 and L2 cache). (In contrast, a
@@ -173,13 +175,10 @@ class Packet
NeedsResponse = 1 << 6,
IsSWPrefetch = 1 << 7,
IsHWPrefetch = 1 << 8,
- HasData = 1 << 9
+ IsUpgrade = 1 << 9,
+ HasData = 1 << 10
};
-//For statistics we need max number of commands, hard code it at
-//20 for now. @todo fix later
-#define NUM_MEM_CMDS 1 << 10
-
public:
/** List of all commands associated with a packet. */
enum Command
@@ -199,7 +198,7 @@ class Packet
| NeedsResponse | HasData,
InvalidateReq = IsInvalidate | IsRequest,
WriteInvalidateReq = IsWrite | IsInvalidate | IsRequest | HasData,
- UpgradeReq = IsInvalidate | IsRequest,
+ UpgradeReq = IsInvalidate | IsRequest | IsUpgrade,
ReadExReq = IsRead | IsInvalidate | IsRequest | NeedsResponse,
ReadExResp = IsRead | IsInvalidate | IsResponse
| NeedsResponse | HasData
@@ -326,6 +325,10 @@ class Packet
int icmd = (int)cmd;
icmd &= ~(IsRequest);
icmd |= IsResponse;
+ if (isRead())
+ icmd |= HasData;
+ if (isWrite())
+ icmd &= ~HasData;
cmd = (Command)icmd;
dest = src;
srcValid = false;