#ifdef __linux__
# include <endian.h>
# include <byteswap.h>
-#elif defined(__MACH__) || defined(__FreeBSD__)
+#elif defined(__MACH__)
# include <machine/endian.h>
typedef unsigned long ulong;
#endif
#include <linux/types.h>
#include <asm/byteorder.h>
-#if __SIZEOF_LONG__ == 8
-# define __WORDSIZE 64
-#elif __SIZEOF_LONG__ == 4
-# define __WORDSIZE 32
+/* Types for `void *' pointers. */
+#if __WORDSIZE == 64
+typedef unsigned long int uintptr_t;
#else
-/*
- * Assume 32-bit for now - only newer toolchains support this feature and
- * this is only required for sandbox support at present.
- */
-#define __WORDSIZE 32
+typedef unsigned int uintptr_t;
#endif
-/* Type for `void *' pointers. */
-typedef unsigned long int uintptr_t;
-
-#endif /* USE_HOSTCC */
+#endif
/* compiler options */
#define uninitialized_var(x) x = x