diff --git a/py/mpconfig.h b/py/mpconfig.h
index 5065e36828fcc5dcb8a7bbcbfed77ab77566c2ae..2d9288f32b6792cec0b914b0f363270cabaad389 100644
--- a/py/mpconfig.h
+++ b/py/mpconfig.h
@@ -711,7 +711,16 @@ typedef double mp_float_t;
   #elif defined(__BIG_ENDIAN__) || defined(__BIG_ENDIAN) || defined (_BIG_ENDIAN)
     #define MP_ENDIANNESS_LITTLE (0)
   #else
-    #error endianness not defined and cannot detect it
+    #include <endian.h>
+      #if defined(__BYTE_ORDER)
+        #if __BYTE_ORDER == __LITTLE_ENDIAN
+          #define MP_ENDIANNESS_LITTLE (1)
+        #else
+          #define MP_ENDIANNESS_LITTLE (0)
+        #endif
+      #else
+        #error endianness not defined and cannot detect it
+      #endif
   #endif
   #define MP_ENDIANNESS_BIG (!MP_ENDIANNESS_LITTLE)
 #endif