#include <x86/limits.h>\r
\r
#define __POINTER_BIT 64\r
+\r
+#if defined(__GNUC__)\r
+#define __LONG_BIT 64\r
+/** minimum value for an object of type long int **/\r
+#define __LONG_MIN (-9223372036854775807L - 1L) // -(2^63 - 1)\r
+\r
+/** maximum value for an object of type long int **/\r
+#define __LONG_MAX +9223372036854775807L // 2^63 - 1\r
+\r
+/** maximum value for an object of type unsigned long int **/\r
+#define __ULONG_MAX 0xFFFFFFFFFFFFFFFFUL // 2^64 - 1\r
+#else\r
+#define __LONG_BIT 32\r
+/** minimum value for an object of type long int **/\r
+#define __LONG_MIN (-2147483647L - 1L) // -(2^31 - 1)\r
+\r
+/** maximum value for an object of type long int **/\r
+#define __LONG_MAX +2147483647L // 2^31 - 1\r
+\r
+/** maximum value for an object of type unsigned long int **/\r
+#define __ULONG_MAX 0xffffffff // 2^32 - 1\r
+#endif\r