summaryrefslogblamecommitdiff
path: root/lang/guile/files/extra-patch-ia64
blob: 651ca73fe1c1f268b707b9f4ac7dbcdd3ab4d082 (plain) (tree)































































































                                                                              
--- libguile/continuations.c.orig	Sat Dec  7 14:41:31 2002
+++ libguile/continuations.c	Sun Oct 19 21:44:01 2003
@@ -114,16 +114,6 @@
   return 1;
 }
 
-#ifdef __ia64__
-struct rv
-{
-  long retval;
-  long first_return;
-};
-extern struct rv getcontext (ucontext_t *);
-extern int setcontext (ucontext_t *);
-#endif /* __ia64__ */
-
 /* this may return more than once: the first time with the escape
    procedure, then subsequently with the value to be passed to the
    continuation.  */
@@ -136,9 +126,6 @@
   scm_t_contregs *rootcont = SCM_CONTREGS (scm_rootcont);
   long stack_size;
   SCM_STACKITEM * src;
-#ifdef __ia64__
-  struct rv rv;
-#endif
 
   SCM_ENTER_A_SECTION;
   SCM_FLUSH_REGISTER_WINDOWS;
@@ -163,17 +150,15 @@
   memcpy (continuation->stack, src, sizeof (SCM_STACKITEM) * stack_size);
 
 #ifdef __ia64__
-  rv = getcontext (&continuation->ctx);
-  if (rv.first_return)
+  continuation->backing_store = NULL;
+  getcontext(&continuation->ctx);
+  if (continuation->backing_store == NULL)
     {
       continuation->backing_store_size = 
-        continuation->ctx.uc_mcontext.sc_ar_bsp - 
-        __libc_ia64_register_backing_store_base;
-      continuation->backing_store = NULL;
+        continuation->ctx.uc_mcontext.mc_special.bspstore - (4UL << 61);
       continuation->backing_store = 
         scm_must_malloc (continuation->backing_store_size, FUNC_NAME);
-      memcpy (continuation->backing_store, 
-              (void *) __libc_ia64_register_backing_store_base, 
+      memcpy (continuation->backing_store, (void *)(4UL << 61), 
               continuation->backing_store_size);
       *first = 1;
       return cont;
@@ -236,8 +221,7 @@
 
   continuation->throw_value = val;
 #ifdef __ia64__
-  memcpy ((void *) __libc_ia64_register_backing_store_base,
-          continuation->backing_store,
+  memcpy ((void *)(4UL << 61), continuation->backing_store,
           continuation->backing_store_size);
   setcontext (&continuation->ctx);
 #else
--- libguile/gc.c.orig	Sun Apr 20 11:16:59 2003
+++ libguile/gc.c	Sun Oct 19 21:44:01 2003
@@ -1041,8 +1041,8 @@
     scm_mark_locations ((SCM_STACKITEM *) &ctx.uc_mcontext,           \
       ((size_t) (sizeof (SCM_STACKITEM) - 1 + sizeof ctx.uc_mcontext) \
        / sizeof (SCM_STACKITEM)));                                    \
-    bot = (SCM_STACKITEM *) __libc_ia64_register_backing_store_base;  \
-    top = (SCM_STACKITEM *) ctx.uc_mcontext.sc_ar_bsp;                \
+    bot = (SCM_STACKITEM *) (4UL << 61);			      \
+    top = (SCM_STACKITEM *) ctx.uc_mcontext.mc_special.bspstore;      \
     scm_mark_locations (bot, top - bot); } while (0)
 #else
 # define SCM_MARK_BACKING_STORE()
--- libguile/init.c.orig	Sat Dec  7 14:41:32 2002
+++ libguile/init.c	Sun Oct 19 21:44:01 2003
@@ -188,6 +188,7 @@
   {
     scm_t_contregs *contregs = scm_must_malloc (sizeof (scm_t_contregs),
 					      "continuation");
+    memset(contregs, 0, sizeof(*contregs));
     contregs->num_stack_items = 0;
     contregs->seq = 0;
     SCM_NEWSMOB (scm_rootcont, scm_tc16_continuation, contregs);
--- libguile/root.c.orig	Sat Dec  7 14:41:32 2002
+++ libguile/root.c	Sun Oct 19 21:44:01 2003
@@ -253,7 +253,7 @@
     {
       scm_t_contregs *contregs = scm_must_malloc (sizeof (scm_t_contregs),
 						"inferior root continuation");
-
+      memset(contregs, 0, sizeof(*contregs));
       contregs->num_stack_items = 0;
       contregs->dynenv = SCM_EOL;
       contregs->base = stack_start;