projects
/
gem5.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Made sure the constructor for insts use ExtMachInst rather than MachInst, since other...
[gem5.git]
/
src
/
sim
/
byteswap.hh
diff --git
a/src/sim/byteswap.hh
b/src/sim/byteswap.hh
index 03bfad954c99a2a1eda1a585ab45cf6334f7d257..7648b8fcd23ffec32515541a1fc056ca4cf99e76 100644
(file)
--- a/
src/sim/byteswap.hh
+++ b/
src/sim/byteswap.hh
@@
-26,6
+26,8
@@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* Authors: Gabe Black
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* Authors: Gabe Black
+ * Ali Saidi
+ * Nathan Binkert
*/
//The purpose of this file is to provide endainness conversion utility
*/
//The purpose of this file is to provide endainness conversion utility
@@
-35,6
+37,7
@@
#ifndef __SIM_BYTE_SWAP_HH__
#define __SIM_BYTE_SWAP_HH__
#ifndef __SIM_BYTE_SWAP_HH__
#define __SIM_BYTE_SWAP_HH__
+#include "base/misc.hh"
#include "sim/host.hh"
// This lets us figure out what the byte order of the host system is
#include "sim/host.hh"
// This lets us figure out what the byte order of the host system is
@@
-48,6
+51,10
@@
#include <machine/endian.h>
#endif
#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
//These functions actually perform the swapping for parameters
//of various bit lengths
static inline uint64_t
@@
-55,6
+62,8
@@
swap_byte64(uint64_t x)
{
#if defined(linux)
return bswap_64(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 |
#else
return (uint64_t)((((uint64_t)(x) & 0xff) << 56) |
((uint64_t)(x) & 0xff00ULL) << 40 |
@@
-72,6
+81,8
@@
swap_byte32(uint32_t x)
{
#if defined(linux)
return bswap_32(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 |
#else
return (uint32_t)(((uint32_t)(x) & 0xff) << 24 |
((uint32_t)(x) & 0xff00) << 8 | ((uint32_t)(x) & 0xff0000) >> 8 |
@@
-84,6
+95,8
@@
swap_byte16(uint16_t x)
{
#if defined(linux)
return bswap_16(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);
#else
return (uint16_t)(((uint16_t)(x) & 0xff) << 8 |
((uint16_t)(x) & 0xff00) >> 8);