summaryrefslogtreecommitdiff
path: root/src/sim/byteswap.hh
diff options
context:
space:
mode:
authorAli Saidi <saidi@eecs.umich.edu>2006-06-17 19:06:28 -0400
committerAli Saidi <saidi@eecs.umich.edu>2006-06-17 19:06:28 -0400
commit8dfc475a9d91eb17da5191e018c3991a3ff99c5a (patch)
tree9dbb509d7bb3d9f143e73717c0736ace28dec439 /src/sim/byteswap.hh
parente5d20ad48e6811090f67961efb9cf615a6371bb3 (diff)
downloadgem5-8dfc475a9d91eb17da5191e018c3991a3ff99c5a.tar.xz
add mac os x fast byte swap code
--HG-- extra : convert_revision : 591e5adbf86feb894fceea982b9303da70a41955
Diffstat (limited to 'src/sim/byteswap.hh')
-rw-r--r--src/sim/byteswap.hh10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/sim/byteswap.hh b/src/sim/byteswap.hh
index c78c77364..c1d846aa8 100644
--- a/src/sim/byteswap.hh
+++ b/src/sim/byteswap.hh
@@ -49,6 +49,10 @@
#include <machine/endian.h>
#endif
+#if defined(__APPLE__)
+#include <libkern/OSByteOrder.h>
+#endif
+
//These functions actually perform the swapping for parameters
//of various bit lengths
static inline uint64_t
@@ -56,6 +60,8 @@ swap_byte64(uint64_t x)
{
#if defined(linux)
return bswap_64(x);
+#elif defined(__APPLE__)
+ return OSSwapInt64(x);
#else
return (uint64_t)((((uint64_t)(x) & 0xff) << 56) |
((uint64_t)(x) & 0xff00ULL) << 40 |
@@ -73,6 +79,8 @@ swap_byte32(uint32_t x)
{
#if defined(linux)
return bswap_32(x);
+#elif defined(__APPLE__)
+ return OSSwapInt32(x);
#else
return (uint32_t)(((uint32_t)(x) & 0xff) << 24 |
((uint32_t)(x) & 0xff00) << 8 | ((uint32_t)(x) & 0xff0000) >> 8 |
@@ -85,6 +93,8 @@ swap_byte16(uint16_t x)
{
#if defined(linux)
return bswap_16(x);
+#elif defined(__APPLE__)
+ return OSSwapInt16(x);
#else
return (uint16_t)(((uint16_t)(x) & 0xff) << 8 |
((uint16_t)(x) & 0xff00) >> 8);