1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-07-03 08:10:31 +02:00

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.
This commit is contained in:
Andy Wingo 2025-06-25 09:15:00 +02:00
parent 4b2924730e
commit 08296e6022
6 changed files with 1 additions and 72 deletions

View file

@ -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,

View file

@ -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 */

View file

@ -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);

View file

@ -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

View file

@ -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:

View file

@ -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;