projects
/
gem5.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
stats: forgot an include for the mysql stuff
[gem5.git]
/
src
/
base
/
bitfield.hh
diff --git
a/src/base/bitfield.hh
b/src/base/bitfield.hh
index 79dbcc86c45889dcc5332c58ba21856cd7a734a5..664093fa27fc96145ce16448afadf3264c7c3eee 100644
(file)
--- a/
src/base/bitfield.hh
+++ b/
src/base/bitfield.hh
@@
-58,6
+58,17
@@
bits(T val, int first, int last)
return (val >> last) & mask(nbits);
}
return (val >> last) & mask(nbits);
}
+/**
+ * Extract the bit from this position from 'val' and right justify it.
+ */
+template <class T>
+inline
+T
+bits(T val, int bit)
+{
+ return bits(val, bit, bit);
+}
+
/**
* Mask off the given bits in place like bits() but without shifting.
* msb = 63, lsb = 0
/**
* Mask off the given bits in place like bits() but without shifting.
* msb = 63, lsb = 0
@@
-96,8
+107,20
@@
inline
T
insertBits(T val, int first, int last, B bit_val)
{
T
insertBits(T val, int first, int last, B bit_val)
{
+ T t_bit_val = bit_val;
T bmask = mask(first - last + 1) << last;
T bmask = mask(first - last + 1) << last;
- return ((bit_val << last) & bmask) | (val & ~bmask);
+ return ((t_bit_val << last) & bmask) | (val & ~bmask);
+}
+
+/**
+ * Overloaded for access to only one bit in value
+ */
+template <class T, class B>
+inline
+T
+insertBits(T val, int bit, B bit_val)
+{
+ return insertBits(val, bit, bit, bit_val);
}
/**
}
/**
@@
-112,6
+135,14
@@
replaceBits(T& val, int first, int last, B bit_val)
val = insertBits(val, first, last, bit_val);
}
val = insertBits(val, first, last, bit_val);
}
+/** Overloaded function to allow to access only 1 bit*/
+template <class T, class B>
+inline
+void
+replaceBits(T& val, int bit, B bit_val)
+{
+ val = insertBits(val, bit, bit, bit_val);
+}
/**
* Returns the bit position of the MSB that is set in the input
*/
/**
* Returns the bit position of the MSB that is set in the input
*/
@@
-130,6
+161,4
@@
findMsbSet(uint64_t val) {
return msb;
}
return msb;
}
-
-
#endif // __BASE_BITFIELD_HH__
#endif // __BASE_BITFIELD_HH__