1 2/* 3 * Copyright (c) 1999-2008 Mark D. Hill and David A. Wood 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions are 8 * met: redistributions of source code must retain the above copyright --- 40 unchanged lines hidden (view full) --- 49#include "mem/protocol/CacheRequestType.hh" 50#include "mem/protocol/AccessType.hh" 51#include "mem/protocol/MachineType.hh" 52#include "mem/protocol/Directory_State.hh" 53#include "mem/protocol/L1Cache_State.hh" 54#include "mem/protocol/MessageSizeType.hh" 55#include "mem/ruby/network/Network.hh" 56#include "mem/protocol/PrefetchBit.hh" |
57#include "mem/ruby/system/System.hh" |
58 59#include "mem/ruby/slicc_interface/RubySlicc_ComponentMapping.hh" 60 61class Set; 62class NetDest; 63 64extern inline int random(int n) 65{ 66 return random() % n; 67} 68 69extern inline bool multicast_retry() 70{ |
71 if (RubySystem::getRandomization()) { |
72 return (random() & 0x1); 73 } else { 74 return true; 75 } 76} 77 78extern inline int cache_state_to_int(L1Cache_State state) 79{ --- 27 unchanged lines hidden (view full) --- 107 return (int) addr.getLineAddress(); 108} 109 110extern inline int MessageSizeTypeToInt(MessageSizeType size_type) 111{ 112 return MessageSizeType_to_int(size_type); 113} 114 |
115/* |
116extern inline int numberOfNodes() 117{ 118 return RubyConfig::numberOfChips(); 119} |
120*/ 121/* |
122extern inline int numberOfL1CachePerChip() 123{ |
124 return RubyConfig::getNumberOfCachesPerLevelPerChip(1,0); |
125} |
126*/ |
127 128extern inline bool long_enough_ago(Time event) 129{ 130 return ((get_time() - event) > 200); 131} 132 133extern inline int getAddThenMod(int addend1, int addend2, int modulus) 134{ --- 13 unchanged lines hidden (view full) --- 148extern inline Time getTimeMinusTime(Time t1, Time t2) 149{ 150 ASSERT(t1 >= t2); 151 return t1 - t2; 152} 153 154extern inline Time getPreviousDelayedCycles(Time t1, Time t2) 155{ |
156 if (RubySystem::getRandomization()) { // when randomizing delayed |
157 return 0; 158 } else { 159 return getTimeMinusTime(t1, t2); 160 } 161} 162 163extern inline void WARN_ERROR_TIME(Time time) 164{ 165 WARN_EXPR(time); 166} 167 168// Return type for time_to_int is "Time" and not "int" so we get a 64-bit integer 169extern inline Time time_to_int(Time time) 170{ 171 return time; 172} 173 |
174/* |
175extern inline bool getFilteringEnabled() 176{ |
177 return RubyConfig::getFilteringEnabled(); |
178} 179 |
180 |
181extern inline int getRetryThreshold() 182{ |
183 return RubyConfig::getRetryThreshold(); |
184} 185 186extern inline int getFixedTimeoutLatency() 187{ |
188 return RubyConfig::getFixedTimeoutLatency(); |
189} 190 191extern inline int N_tokens() 192{ 193 // return N+1 to handle clean writeback |
194 return RubyConfig::getProcsPerChip() + 1; |
195 // return 1; 196} 197 198extern inline bool distributedPersistentEnabled() 199{ |
200 return RubyConfig::getDistributedPersistentEnabled(); |
201} 202 203extern inline bool getDynamicTimeoutEnabled() 204{ |
205 return RubyConfig::getDynamicTimeoutEnabled(); |
206} |
207*/ |
208// Appends an offset to an address 209extern inline Address setOffset(Address addr, int offset) 210{ 211 Address result = addr; 212 result.setOffset(offset); 213 return result; 214} 215 216// Makes an address into a line address 217extern inline Address makeLineAddress(Address addr) 218{ 219 Address result = addr; 220 result.makeLineAddress(); 221 return result; 222} 223 224#endif //SLICC_UTIL_H |