mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-07-03 16:20:39 +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:
parent
4b2924730e
commit
08296e6022
6 changed files with 1 additions and 72 deletions
|
@ -1109,10 +1109,6 @@ main (int argc, char **argv)
|
||||||
WHIPPET_PKG_COLLECTOR(bdw)
|
WHIPPET_PKG_COLLECTOR(bdw)
|
||||||
WHIPPET_PKG
|
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)
|
AC_CHECK_SIZEOF(float)
|
||||||
if test "$ac_cv_sizeof_float" -le "$ac_cv_sizeof_long"; then
|
if test "$ac_cv_sizeof_float" -le "$ac_cv_sizeof_long"; then
|
||||||
AC_DEFINE([SCM_SINGLES], 1,
|
AC_DEFINE([SCM_SINGLES], 1,
|
||||||
|
|
|
@ -40,10 +40,6 @@ struct scm_continuation
|
||||||
{
|
{
|
||||||
scm_t_bits tag;
|
scm_t_bits tag;
|
||||||
jmp_buf jmpbuf;
|
jmp_buf jmpbuf;
|
||||||
#if SCM_HAVE_AUXILIARY_STACK
|
|
||||||
void *auxiliary_stack;
|
|
||||||
unsigned long auxiliary_stack_size;
|
|
||||||
#endif
|
|
||||||
SCM root; /* continuation root identifier. */
|
SCM root; /* continuation root identifier. */
|
||||||
struct scm_vm_cont *vm_cont; /* vm's stack and regs */
|
struct scm_vm_cont *vm_cont; /* vm's stack and regs */
|
||||||
|
|
||||||
|
|
|
@ -28,10 +28,6 @@
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
#if SCM_HAVE_AUXILIARY_STACK
|
|
||||||
#include <ucontext.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "async.h"
|
#include "async.h"
|
||||||
#include "backtrace.h"
|
#include "backtrace.h"
|
||||||
#include "boolean.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 */
|
# define SCM_FLUSH_REGISTER_WINDOWS /* empty */
|
||||||
#endif
|
#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
|
||||||
scm_i_make_continuation (scm_thread *thread, struct scm_vm_cont *vm_cont)
|
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;
|
continuation->tag = scm_tc16_continuation;
|
||||||
memcpy (continuation->jmpbuf, thread->vm.registers, sizeof (jmp_buf));
|
memcpy (continuation->jmpbuf, thread->vm.registers, sizeof (jmp_buf));
|
||||||
pin_conservative_roots (thread, continuation->jmpbuf, sizeof (jmp_buf));
|
pin_conservative_roots (thread, continuation->jmpbuf, sizeof (jmp_buf));
|
||||||
capture_auxiliary_stack (thread, continuation);
|
|
||||||
continuation->root = thread->continuation_root;
|
continuation->root = thread->continuation_root;
|
||||||
continuation->vm_cont = vm_cont;
|
continuation->vm_cont = vm_cont;
|
||||||
SCM_STACKITEM * src = thread->continuation_base;
|
SCM_STACKITEM * src = thread->continuation_base;
|
||||||
|
@ -301,7 +249,6 @@ copy_stack_and_call (struct scm_continuation *continuation,
|
||||||
|
|
||||||
memcpy (dst, continuation->stack,
|
memcpy (dst, continuation->stack,
|
||||||
sizeof (SCM_STACKITEM) * continuation->num_stack_items);
|
sizeof (SCM_STACKITEM) * continuation->num_stack_items);
|
||||||
restore_auxiliary_stack (thread, continuation);
|
|
||||||
|
|
||||||
scm_dynstack_wind (&thread->dynstack, joint);
|
scm_dynstack_wind (&thread->dynstack, joint);
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright 2003-2013, 2018, 2020-2022
|
/* Copyright 2003-2013, 2018, 2020-2022, 2025
|
||||||
Free Software Foundation, Inc.
|
Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of Guile.
|
This file is part of Guile.
|
||||||
|
@ -359,10 +359,6 @@ main (int argc, char *argv[])
|
||||||
pf ("#define SCM_ICONVEH_ESCAPE_SEQUENCE %d\n",
|
pf ("#define SCM_ICONVEH_ESCAPE_SEQUENCE %d\n",
|
||||||
SCM_I_GSC_ICONVEH_ESCAPE_SEQUENCE);
|
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 ("\n");
|
||||||
pf ("/* Define to 1 to use mini GMP. */\n");
|
pf ("/* Define to 1 to use mini GMP. */\n");
|
||||||
#if SCM_I_GSC_ENABLE_MINI_GMP == 1
|
#if SCM_I_GSC_ENABLE_MINI_GMP == 1
|
||||||
|
|
|
@ -19,7 +19,6 @@
|
||||||
#define SCM_I_GSC_ICONVEH_ERROR @SCM_I_GSC_ICONVEH_ERROR@
|
#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_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_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@
|
#define SCM_I_GSC_ENABLE_MINI_GMP @SCM_I_GSC_ENABLE_MINI_GMP@
|
||||||
/*
|
/*
|
||||||
Local Variables:
|
Local Variables:
|
||||||
|
|
|
@ -100,11 +100,6 @@ struct scm_thread {
|
||||||
/* Stack base. Used when checking for C stack overflow. */
|
/* Stack base. Used when checking for C stack overflow. */
|
||||||
SCM_STACKITEM *base;
|
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
|
/* For joinable threads, a cond to wait on joining, and a lock to
|
||||||
protect the results. #f if not joinable. */
|
protect the results. #f if not joinable. */
|
||||||
SCM join_cond;
|
SCM join_cond;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue