diff options
author | Ali Saidi <saidi@eecs.umich.edu> | 2006-06-17 19:06:28 -0400 |
---|---|---|
committer | Ali Saidi <saidi@eecs.umich.edu> | 2006-06-17 19:06:28 -0400 |
commit | 8dfc475a9d91eb17da5191e018c3991a3ff99c5a (patch) | |
tree | 9dbb509d7bb3d9f143e73717c0736ace28dec439 | |
parent | e5d20ad48e6811090f67961efb9cf615a6371bb3 (diff) | |
download | gem5-8dfc475a9d91eb17da5191e018c3991a3ff99c5a.tar.xz |
add mac os x fast byte swap code
--HG--
extra : convert_revision : 591e5adbf86feb894fceea982b9303da70a41955
-rw-r--r-- | src/sim/byteswap.hh | 10 |
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); |