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 #include -#if SCM_HAVE_AUXILIARY_STACK -#include -#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;