wingo pushed a commit to branch wip-whippet
in repository guile.

commit 08296e60226259b26ec7f384eb05b2841eb52c8d
Author: Andy Wingo <wi...@pobox.com>
AuthorDate: Wed Jun 25 09:15:00 2025 +0200

    Remove last vestiges of ia64 support
    
    * configure.ac:
    * libguile/continuations-internal.h (struct scm_continuation):
    * libguile/continuations.c (capture_auxiliary_stack)
    (restore_auxiliary_stack, scm_i_make_continuation, copy_stack_and_call):
    * libguile/gen-scmconfig.c (main):
    * libguile/threads.h (struct scm_thread): Remove support for aux stacks.
---
 configure.ac                      |  4 ---
 libguile/continuations-internal.h |  4 ---
 libguile/continuations.c          | 53 ---------------------------------------
 libguile/gen-scmconfig.c          |  6 +----
 libguile/gen-scmconfig.h.in       |  1 -
 libguile/threads.h                |  5 ----
 6 files changed, 1 insertion(+), 72 deletions(-)

diff --git a/configure.ac b/configure.ac
index 3a31f0f0f..012695c70 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1109,10 +1109,6 @@ main (int argc, char **argv)
 WHIPPET_PKG_COLLECTOR(bdw)
 WHIPPET_PKG
 
-# Machines with an auxiliary stack (ia64) are not supported.
-SCM_I_GSC_HAVE_AUXILIARY_STACK=0
-AC_SUBST([SCM_I_GSC_HAVE_AUXILIARY_STACK])
-
 AC_CHECK_SIZEOF(float)
 if test "$ac_cv_sizeof_float" -le "$ac_cv_sizeof_long"; then
     AC_DEFINE([SCM_SINGLES], 1,
diff --git a/libguile/continuations-internal.h 
b/libguile/continuations-internal.h
index d16b664e9..998d3483f 100644
--- a/libguile/continuations-internal.h
+++ b/libguile/continuations-internal.h
@@ -40,10 +40,6 @@ struct scm_continuation
 {
   scm_t_bits tag;
   jmp_buf jmpbuf;
-#if SCM_HAVE_AUXILIARY_STACK
-  void *auxiliary_stack;
-  unsigned long auxiliary_stack_size;
-#endif
   SCM root;                 /* continuation root identifier.  */
   struct scm_vm_cont *vm_cont; /* vm's stack and regs */
 
diff --git a/libguile/continuations.c b/libguile/continuations.c
index cce06b3a4..d6ba396e2 100644
--- a/libguile/continuations.c
+++ b/libguile/continuations.c
@@ -28,10 +28,6 @@
 #include <string.h>
 #include <stdio.h>
 
-#if SCM_HAVE_AUXILIARY_STACK
-#include <ucontext.h>
-#endif
-
 #include "async.h"
 #include "backtrace.h"
 #include "boolean.h"
@@ -146,53 +142,6 @@ pin_conservative_roots (scm_thread *thread, void *base, 
size_t size)
 # define SCM_FLUSH_REGISTER_WINDOWS /* empty */
 #endif
 
-static void
-capture_auxiliary_stack (scm_thread *thread, struct scm_continuation 
*continuation)
-{
-#if SCM_HAVE_AUXILIARY_STACK
-# if !defined __ia64 || !defined __ia64__
-# error missing auxiliary stack implementation for architecture
-# endif
-  char *top;
-  ucontext_t ctx;
-
-  if (getcontext (&ctx) != 0)
-    abort ();
-
-#if defined __hpux
-  __uc_get_ar_bsp (ctx, (uint64_t *) &top);
-#elif defined linux
-  top = (char *) ctx.uc_mcontext.sc_ar_bsp;
-#elif defined __FreeBSD__
-  top = (char *)(ctx.uc_mcontext.mc_special.bspstore
-                 + ctx->uc_mcontext.mc_special.ndirty);
-#else
-#error missing auxiliary stack implementation for ia64 on this OS
-#endif
-
-  continuation->auxiliary_stack_size =
-    top - (char *) thread->auxiliary_stack_base;
-  continuation->auxiliary_stack =
-    scm_allocate_sloppy (SCM_I_CURRENT_THREAD,
-                         continuation->auxiliary_stack_size);
-  memcpy (continuation->auxiliary_stack, thread->auxiliary_stack_base,
-          continuation->auxiliary_stack_size);
-
-  pin_conservative_roots (thread,
-                          continuation->auxiliary_stack,
-                          continuation->auxiliary_stack_size);
-#endif /* SCM_HAVE_AUXILIARY_STACK */
-}
-
-static void
-restore_auxiliary_stack (scm_thread *thread, struct scm_continuation 
*continuation)
-{
-#if SCM_HAVE_AUXILIARY_STACK
-  memcpy (thread->auxiliary_stack_base, continuation->auxiliary_stack,
-          continuation->auxiliary_stack_size);
-#endif
-}
-
 SCM 
 scm_i_make_continuation (scm_thread *thread, struct scm_vm_cont *vm_cont)
 {
@@ -205,7 +154,6 @@ scm_i_make_continuation (scm_thread *thread, struct 
scm_vm_cont *vm_cont)
   continuation->tag = scm_tc16_continuation;
   memcpy (continuation->jmpbuf, thread->vm.registers, sizeof (jmp_buf));
   pin_conservative_roots (thread, continuation->jmpbuf, sizeof (jmp_buf));
-  capture_auxiliary_stack (thread, continuation);
   continuation->root = thread->continuation_root;
   continuation->vm_cont = vm_cont;
   SCM_STACKITEM * src = thread->continuation_base;
@@ -301,7 +249,6 @@ copy_stack_and_call (struct scm_continuation *continuation,
 
   memcpy (dst, continuation->stack,
          sizeof (SCM_STACKITEM) * continuation->num_stack_items);
-  restore_auxiliary_stack (thread, continuation);
 
   scm_dynstack_wind (&thread->dynstack, joint);
 
diff --git a/libguile/gen-scmconfig.c b/libguile/gen-scmconfig.c
index 4525455b6..4559dd125 100644
--- a/libguile/gen-scmconfig.c
+++ b/libguile/gen-scmconfig.c
@@ -1,4 +1,4 @@
-/* Copyright 2003-2013, 2018, 2020-2022
+/* Copyright 2003-2013, 2018, 2020-2022, 2025
      Free Software Foundation, Inc.
 
    This file is part of Guile.
@@ -359,10 +359,6 @@ main (int argc, char *argv[])
   pf ("#define SCM_ICONVEH_ESCAPE_SEQUENCE %d\n",
       SCM_I_GSC_ICONVEH_ESCAPE_SEQUENCE);  
 
-  pf ("\n");
-  pf ("/* Define to 1 if there is an auxiliary stack, as in ia64.  */\n");
-  pf ("#define SCM_HAVE_AUXILIARY_STACK %d\n", SCM_I_GSC_HAVE_AUXILIARY_STACK);
-
   pf ("\n");
   pf ("/* Define to 1 to use mini GMP.  */\n");
 #if SCM_I_GSC_ENABLE_MINI_GMP == 1
diff --git a/libguile/gen-scmconfig.h.in b/libguile/gen-scmconfig.h.in
index 5b688b338..49f854094 100644
--- a/libguile/gen-scmconfig.h.in
+++ b/libguile/gen-scmconfig.h.in
@@ -19,7 +19,6 @@
 #define SCM_I_GSC_ICONVEH_ERROR @SCM_I_GSC_ICONVEH_ERROR@
 #define SCM_I_GSC_ICONVEH_QUESTION_MARK @SCM_I_GSC_ICONVEH_QUESTION_MARK@
 #define SCM_I_GSC_ICONVEH_ESCAPE_SEQUENCE @SCM_I_GSC_ICONVEH_ESCAPE_SEQUENCE@
-#define SCM_I_GSC_HAVE_AUXILIARY_STACK @SCM_I_GSC_HAVE_AUXILIARY_STACK@
 #define SCM_I_GSC_ENABLE_MINI_GMP @SCM_I_GSC_ENABLE_MINI_GMP@
 /*
   Local Variables:
diff --git a/libguile/threads.h b/libguile/threads.h
index 286a91713..9892b7c01 100644
--- a/libguile/threads.h
+++ b/libguile/threads.h
@@ -100,11 +100,6 @@ struct scm_thread {
   /* Stack base.  Used when checking for C stack overflow.  */
   SCM_STACKITEM *base;
 
-#if SCM_HAVE_AUXILIARY_STACK
-  /* Auxiliary stack base. */
-  SCM_STACKITEM *auxiliary_stack_base;
-#endif
-
   /* For joinable threads, a cond to wait on joining, and a lock to
      protect the results.  #f if not joinable.  */
   SCM join_cond;

Reply via email to