There is no need to replicate bits<Addr>' functionality.
As a side effect, ADDRESS_WIDTH is no longer used and was removed
Change-Id: Ia5679f3976c81f779665d82cb758850092f2a293
Signed-off-by: Daniel R. Carvalho <odanrc@yahoo.com.br>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/21085
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Anthony Gutierrez <anthony.gutierrez@amd.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>
Tested-by: kokoro <noreply+kokoro@google.com>
bitSelect(Addr addr, unsigned int small, unsigned int big)
{
assert(big >= small);
-
- if (big >= ADDRESS_WIDTH - 1) {
- return (addr >> small);
- } else {
- Addr mask = ~((Addr)~0 << (big + 1));
- // FIXME - this is slow to manipulate a 64-bit number using 32-bits
- Addr partial = (addr & mask);
- return (partial >> small);
- }
+ return bits<Addr>(addr, big, small);
}
Addr
#include "base/types.hh"
-const uint32_t ADDRESS_WIDTH = 64; // address width in bytes
-
// selects bits inclusive
Addr bitSelect(Addr addr, unsigned int small, unsigned int big);
Addr maskLowOrderBits(Addr addr, unsigned int number);