changeset d1bb88080be4 in /z/repo/m5 details: http://repo.m5sim.org/m5?cmd=changeset;node=d1bb88080be4 description: ruby: cleaned up access permission enum
diffstat: src/mem/protocol/MESI_CMP_directory-L2cache.sm | 2 +- src/mem/protocol/RubySlicc_Exports.sm | 20 +++++++++++++------- src/mem/ruby/slicc_interface/AbstractCacheEntry.cc | 3 +-- src/mem/ruby/system/PerfectCacheMemory.hh | 2 +- 4 files changed, 16 insertions(+), 11 deletions(-) diffs (68 lines): diff -r bba14984f2ce -r d1bb88080be4 src/mem/protocol/MESI_CMP_directory-L2cache.sm --- a/src/mem/protocol/MESI_CMP_directory-L2cache.sm Wed Feb 23 16:41:26 2011 -0800 +++ b/src/mem/protocol/MESI_CMP_directory-L2cache.sm Wed Feb 23 16:41:58 2011 -0800 @@ -219,7 +219,7 @@ } else if (state == State:M) { cache_entry.changePermission(AccessPermission:Read_Write); } else if (state == State:MT) { - cache_entry.changePermission(AccessPermission:Stale); + cache_entry.changePermission(AccessPermission:Invalid); } else { cache_entry.changePermission(AccessPermission:Busy); } diff -r bba14984f2ce -r d1bb88080be4 src/mem/protocol/RubySlicc_Exports.sm --- a/src/mem/protocol/RubySlicc_Exports.sm Wed Feb 23 16:41:26 2011 -0800 +++ b/src/mem/protocol/RubySlicc_Exports.sm Wed Feb 23 16:41:58 2011 -0800 @@ -47,14 +47,20 @@ // Declarations of external types that are common to all protocols // AccessPermission +// The following five states define the access permission of all memory blocks. +// These permissions have multiple uses. They coordinate locking and +// synchronization primitives, as well as enable functional accesses. +// One should not need to add any additional permission values and it is very +// risky to do so. enumeration(AccessPermission, desc="...", default="AccessPermission_NotPresent") { - Busy, desc="No Read or Write"; - Read_Only, desc="Read Only"; - Read_Write, desc="Read/Write"; - Invalid, desc="Invalid"; - NotPresent, desc="NotPresent"; - ReadUpgradingToWrite, desc="Read only, but trying to get Read/Write"; - Stale, desc="local L1 has a modified copy, assume L2 copy is stale data"; + // Valid data + Read_Only, desc="block is Read Only (modulo functional writes)"; + Read_Write, desc="block is Read/Write"; + + // Invalid data + Invalid, desc="block is in an Invalid base state"; + NotPresent, desc="block is NotPresent"; + Busy, desc="block is in a transient state, currently invalid"; } // TesterStatus diff -r bba14984f2ce -r d1bb88080be4 src/mem/ruby/slicc_interface/AbstractCacheEntry.cc --- a/src/mem/ruby/slicc_interface/AbstractCacheEntry.cc Wed Feb 23 16:41:26 2011 -0800 +++ b/src/mem/ruby/slicc_interface/AbstractCacheEntry.cc Wed Feb 23 16:41:58 2011 -0800 @@ -50,8 +50,7 @@ { m_Permission = new_perm; if ((new_perm == AccessPermission_Invalid) || - (new_perm == AccessPermission_NotPresent) || - (new_perm == AccessPermission_Stale)) { + (new_perm == AccessPermission_NotPresent)) { m_locked = -1; } } diff -r bba14984f2ce -r d1bb88080be4 src/mem/ruby/system/PerfectCacheMemory.hh --- a/src/mem/ruby/system/PerfectCacheMemory.hh Wed Feb 23 16:41:26 2011 -0800 +++ b/src/mem/ruby/system/PerfectCacheMemory.hh Wed Feb 23 16:41:58 2011 -0800 @@ -149,7 +149,7 @@ PerfectCacheMemory<ENTRY>::allocate(const Address& address) { PerfectCacheLineState<ENTRY> line_state; - line_state.m_permission = AccessPermission_Busy; + line_state.m_permission = AccessPermission_Invalid; line_state.m_entry = ENTRY(); m_map[line_address(address)] = line_state; } _______________________________________________ m5-dev mailing list m5-dev@m5sim.org http://m5sim.org/mailman/listinfo/m5-dev