summaryrefslogtreecommitdiff
path: root/src/mem/packet.cc
diff options
context:
space:
mode:
authorDavid Hashe <david.hashe@amd.com>2015-07-20 09:15:18 -0500
committerDavid Hashe <david.hashe@amd.com>2015-07-20 09:15:18 -0500
commit6511ab4654f91252de568857fbe15d2c8bce00d4 (patch)
tree0b833327672937ac46387c3989b16633cb721f9d /src/mem/packet.cc
parent7e9562013b1592c5cc402c43ee1d21025f375a71 (diff)
downloadgem5-6511ab4654f91252de568857fbe15d2c8bce00d4.tar.xz
mem: add request types for acquire and release
Add support for acquire and release requests. These synchronization operations are commonly supported by several modern instruction sets.
Diffstat (limited to 'src/mem/packet.cc')
-rw-r--r--src/mem/packet.cc10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/mem/packet.cc b/src/mem/packet.cc
index 7fe152f7d..bda5ff24f 100644
--- a/src/mem/packet.cc
+++ b/src/mem/packet.cc
@@ -12,7 +12,7 @@
* modified or unmodified, in source code or in binary form.
*
* Copyright (c) 2006 The Regents of The University of Michigan
- * Copyright (c) 2010 Advanced Micro Devices, Inc.
+ * Copyright (c) 2010,2015 Advanced Micro Devices, Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -165,6 +165,14 @@ MemCmd::commandInfo[] =
MessageResp, "MessageReq" },
/* IntResp -- for interrupts */
{ SET2(IsWrite, IsResponse), InvalidCmd, "MessageResp" },
+ /* ReleaseReq -- for release synchronization */
+ { SET3(IsRelease, IsRequest, NeedsResponse), ReleaseResp, "ReleaseReq" },
+ /* ReleaseResp -- for release synchronization */
+ { SET2(IsRelease, IsResponse), InvalidCmd, "ReleaseResp" },
+ /* AcquireReq -- for release synchronization */
+ { SET3(IsAcquire, IsRequest, NeedsResponse), AcquireResp, "AcquireReq" },
+ /* AcquireResp -- for release synchronization */
+ { SET3(IsAcquire, IsResponse, NeedsResponse), InvalidCmd, "AcquireResp" },
/* InvalidDestError -- packet dest field invalid */
{ SET2(IsResponse, IsError), InvalidCmd, "InvalidDestError" },
/* BadAddressError -- memory address invalid */