Win64 (MS_WIN64), Linux64 (__LP64__), Monterey (64-bit AIX) (_LP64) */
/* FIXME: maybe the limit should be 40000 / sizeof(void*) ? */
#define USE_RECURSION_LIMIT 7500
-#else
-#if defined(__GNUC__) && defined(WITH_THREAD) && defined(__FreeBSD__)
+#elif defined(__FreeBSD__)
+/* FreeBSD/amd64 and /sparc64 require even smaller limits */
+#if defined(__amd64__)
+#define USE_RECURSION_LIMIT 6000
+#elif defined(__sparc64__)
+#define USE_RECURSION_LIMIT 3000
+#elif defined(__GNUC__) && defined(WITH_THREAD)
/* the pthreads library on FreeBSD has a fixed 1MB stack size for the
* initial (or "primary") thread, which is insufficient for the default
* recursion limit. gcc 3.x at the default optimisation