	See ICU Ticket #8657, comment 11.

diff -ur icu-4.8.1.orig/source/layout/LESwaps.h icu-4.8.1/source/layout/LESwaps.h
--- icu-4.8.1.orig/source/layout/LESwaps.h	2011-07-19 23:19:34.000000000 +0200
+++ icu-4.8.1/source/layout/LESwaps.h	2011-08-31 15:08:59.000000000 +0200
@@ -56,7 +56,9 @@
      */
     static le_uint16 swapWord(le_uint16 value)
     {
-#if (defined(U_IS_BIG_ENDIAN) && U_IS_BIG_ENDIAN) || (defined(BYTE_ORDER) && defined(BIG_ENDIAN)) || defined(__BIG_ENDIAN__)
+#if (defined(U_IS_BIG_ENDIAN) && U_IS_BIG_ENDIAN) || \
+    (defined(BYTE_ORDER) && defined(BIG_ENDIAN) && (BYTE_ORDER == BIG_ENDIAN)) || \
+    defined(__BIG_ENDIAN__)
         // Fastpath when we know that the platform is big-endian.
         return value;
 #else
@@ -78,7 +80,9 @@
      */
     static le_uint32 swapLong(le_uint32 value)
     {
-#if (defined(U_IS_BIG_ENDIAN) && U_IS_BIG_ENDIAN) || (defined(BYTE_ORDER) && defined(BIG_ENDIAN)) || defined(__BIG_ENDIAN__)
+#if (defined(U_IS_BIG_ENDIAN) && U_IS_BIG_ENDIAN) || \
+    (defined(BYTE_ORDER) && defined(BIG_ENDIAN) && (BYTE_ORDER == BIG_ENDIAN)) || \
+    defined(__BIG_ENDIAN__)
         // Fastpath when we know that the platform is big-endian.
         return value;
 #else
