X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fmem%2Fruby%2Fcommon%2FAddress.hh;h=d47ff9ac5d9e69f503a0a7b1ac9e3a46733c978f;hb=16ac48e6a419b75e6a9e86fab9cd2fd62ef9a574;hp=38fc047e119e2670edce4575cc2f101dc9698206;hpb=6bf7153104637c18133fa36c02ca6a4a9b015799;p=gem5.git diff --git a/src/mem/ruby/common/Address.hh b/src/mem/ruby/common/Address.hh index 38fc047e1..d47ff9ac5 100644 --- a/src/mem/ruby/common/Address.hh +++ b/src/mem/ruby/common/Address.hh @@ -31,13 +31,12 @@ #include #include +#include #include "base/hashmap.hh" -#include "mem/ruby/common/Global.hh" -#include "mem/ruby/system/MachineID.hh" -#include "mem/ruby/system/NodeID.hh" +#include "mem/ruby/common/TypeDefines.hh" -const int ADDRESS_WIDTH = 64; // address width in bytes +const uint32_t ADDRESS_WIDTH = 64; // address width in bytes class Address; typedef Address PhysAddress; @@ -61,21 +60,18 @@ class Address void setAddress(physical_address_t address) { m_address = address; } physical_address_t getAddress() const {return m_address;} // selects bits inclusive - physical_address_t bitSelect(int small, int big) const; - physical_address_t bitRemove(int small, int big) const; - physical_address_t maskLowOrderBits(int number) const; - physical_address_t maskHighOrderBits(int number) const; - physical_address_t shiftLowOrderBits(int number) const; + physical_address_t bitSelect(unsigned int small, unsigned int big) const; + physical_address_t bitRemove(unsigned int small, unsigned int big) const; + physical_address_t maskLowOrderBits(unsigned int number) const; + physical_address_t maskHighOrderBits(unsigned int number) const; + physical_address_t shiftLowOrderBits(unsigned int number) const; physical_address_t getLineAddress() const; physical_address_t getOffset() const; void makeLineAddress(); void makeNextStrideAddress(int stride); - int getBankSetNum() const; - int getBankSetDist() const; - - Index memoryModuleIndex() const; + int64 memoryModuleIndex() const; void print(std::ostream& out) const; void output(std::ostream& out) const; @@ -129,10 +125,10 @@ operator!=(const Address& obj1, const Address& obj2) // rips bits inclusive inline physical_address_t -Address::bitSelect(int small, int big) const +Address::bitSelect(unsigned int small, unsigned int big) const { physical_address_t mask; - assert((unsigned)big >= (unsigned)small); + assert(big >= small); if (big >= ADDRESS_WIDTH - 1) { return (m_address >> small); @@ -146,10 +142,10 @@ Address::bitSelect(int small, int big) const // removes bits inclusive inline physical_address_t -Address::bitRemove(int small, int big) const +Address::bitRemove(unsigned int small, unsigned int big) const { physical_address_t mask; - assert((unsigned)big >= (unsigned)small); + assert(big >= small); if (small >= ADDRESS_WIDTH - 1) { return m_address; @@ -172,7 +168,7 @@ Address::bitRemove(int small, int big) const } inline physical_address_t -Address::maskLowOrderBits(int number) const +Address::maskLowOrderBits(unsigned int number) const { physical_address_t mask; @@ -185,7 +181,7 @@ Address::maskLowOrderBits(int number) const } inline physical_address_t -Address::maskHighOrderBits(int number) const +Address::maskHighOrderBits(unsigned int number) const { physical_address_t mask; @@ -198,13 +194,14 @@ Address::maskHighOrderBits(int number) const } inline physical_address_t -Address::shiftLowOrderBits(int number) const +Address::shiftLowOrderBits(unsigned int number) const { return (m_address >> number); } -class Address; -namespace __hash_namespace { +Address next_stride_address(const Address& addr, int stride); + +__hash_namespace_begin template <> struct hash
{ size_t @@ -213,7 +210,7 @@ template <> struct hash
return (size_t)s.getAddress(); } }; -} // namespace __hash_namespace +__hash_namespace_end namespace std { template <> struct equal_to