- GC_find_limit_openbsd is only needed for uthreads

Index: os_dep.c
--- os_dep.c.orig
+++ os_dep.c
@@ -514,23 +514,22 @@ GC_INNER char * GC_get_maps(void)
   static struct sigaction old_segv_act;
   STATIC JMP_BUF GC_jmp_buf_openbsd;
 
-# ifdef THREADS
+  STATIC void GC_fault_handler_openbsd(int sig GC_ATTR_UNUSED)
+  {
+     LONGJMP(GC_jmp_buf_openbsd, 1);
+  }
+
+# ifdef GC_OPENBSD_UTHREADS
 #   include <sys/syscall.h>
     EXTERN_C_BEGIN
     extern sigset_t __syscall(quad_t, ...);
     EXTERN_C_END
-# endif
 
   /* Don't use GC_find_limit() because siglongjmp() outside of the      */
   /* signal handler by-passes our userland pthreads lib, leaving        */
   /* SIGSEGV and SIGPROF masked.  Instead, use this custom one that     */
   /* works-around the issues.                                           */
 
-  STATIC void GC_fault_handler_openbsd(int sig GC_ATTR_UNUSED)
-  {
-     LONGJMP(GC_jmp_buf_openbsd, 1);
-  }
-
   /* Return the first non-addressable location > p or bound.    */
   /* Requires the allocation lock.                              */
   STATIC ptr_t GC_find_limit_openbsd(ptr_t p, ptr_t bound)
@@ -573,6 +572,7 @@ GC_INNER char * GC_get_maps(void)
     sigaction(SIGSEGV, &old_segv_act, 0);
     return(result);
   }
+# endif
 
   /* Return first addressable location > p or bound.    */
   /* Requires the allocation lock.                      */
@@ -2004,7 +2004,11 @@ void GC_register_data_segments(void)
     ABORT_ARG2("Wrong DATASTART/END pair",
                ": %p .. %p", (void *)region_start, (void *)DATAEND);
   for (;;) {
+# ifdef GC_OPENBSD_UTHREADS
     ptr_t region_end = GC_find_limit_openbsd(region_start, DATAEND);
+# else
+    ptr_t region_end = GC_find_limit_with_bound(region_start, TRUE, DATAEND);
+# endif
 
     GC_add_roots_inner(region_start, region_end, FALSE);
     if ((word)region_end >= (word)DATAEND)
