summaryrefslogtreecommitdiffstats
path: root/src/include/endian.h
diff options
context:
space:
mode:
authorTerry J. Opie <opiet@us.ibm.com>2012-04-03 11:50:17 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2012-04-09 13:08:22 -0500
commit7f2d373de881c982783db83e97e9e73a8fd09b74 (patch)
tree8ce2056269107e3a9f943d6b266729cf97560888 /src/include/endian.h
parent19d999f032c812f211496b5f8d9e5172ba1998a9 (diff)
downloadtalos-hostboot-7f2d373de881c982783db83e97e9e73a8fd09b74.tar.gz
talos-hostboot-7f2d373de881c982783db83e97e9e73a8fd09b74.zip
Byte swapping functions in endian.h
Change-Id: I6015d0f59a8191f456cb4ece524fe4e6ec67dc07 RTC: 39734 Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/828 Tested-by: Jenkins Server Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com> Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/include/endian.h')
-rw-r--r--src/include/endian.h38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/include/endian.h b/src/include/endian.h
index 27248d892..5b6cb06d2 100644
--- a/src/include/endian.h
+++ b/src/include/endian.h
@@ -28,4 +28,42 @@
#define __BYTE_ORDER __BIG_ENDIAN
+#define __swap16(x) \
+ ((((x) & 0xFF00) >> 8) | \
+ (((x) & 0x00FF) << 8))
+
+#if __BYTE_ORDER == __BIG_ENDIAN
+// Big Endian system
+#define htobe16(x) (x)
+#define htole16(x) __swap16(x)
+#define be16toh(x) (x)
+#define le16toh(x) __swap16(x)
+
+#define htobe32(x) (x)
+#define htole32(x) __builtin_bswap32(x)
+#define be32toh(x) (x)
+#define le32toh(x) __builtin_bswap32(x)
+
+#define htobe64(x) (x)
+#define htole64(x) __builtin_bswap64(x)
+#define be64toh(x) (x)
+#define le64toh(x) __builtin_bswap64(x)
+#else
+// Little Endian system
+#define htobe16(x) __swap16(x)
+#define htole16(x) (x)
+#define be16toh(x) __swap16(x)
+#define le16toh(x) (x)
+
+#define htobe32(x) __builtin_bswap32(x)
+#define htole32(x) (x)
+#define be32toh(x) __builtin_bswap32(x)
+#define le32toh(x) (x)
+
+#define htobe64(x) __builtin_bswap64(x)
+#define htole64(x) (x)
+#define be64toh(x) __builtin_bswap64(x)
+#define le64toh(x) (x)
+#endif
+
#endif
OpenPOWER on IntegriCloud