]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
(_hurd_setup_sighandler): Copy TS to SCP all at once.
authorRoland McGrath <roland@gnu.org>
Wed, 3 Aug 1994 01:38:43 +0000 (01:38 +0000)
committerRoland McGrath <roland@gnu.org>
Wed, 3 Aug 1994 01:38:43 +0000 (01:38 +0000)
sysdeps/mach/hurd/mips/trampoline.c

index 559d8e8146689597ade3162b4523b391f5901016..4fc9fda31df0b4fb25bd492f5e12376144078c5c 100644 (file)
@@ -48,6 +48,8 @@ _hurd_setup_sighandler (int flags,
     {
       sigsp = sigaltstack->ss_sp + sigaltstack->ss_size;
       sigaltstack->ss_flags |= SA_ONSTACK;
+      /* XXX need to set up base of new stack for
+        per-thread variables, cthreads.  */
     }
   else
     sigsp = (char *) ts->r29;
@@ -61,24 +63,9 @@ _hurd_setup_sighandler (int flags,
 
   scp->sc_onstack = sigaltstack->ss_flags & SA_ONSTACK ? 1 : 0;
 
-  scp->sc_gpr[2] = ts->r2;
-  scp->sc_gpr[16] = ts->r16;
-  scp->sc_gpr[17] = ts->r17;
-  scp->sc_gpr[18] = ts->r18;
-  scp->sc_gpr[19] = ts->r19;
-  scp->sc_gpr[20] = ts->r20;
-  scp->sc_gpr[21] = ts->r21;
-  scp->sc_gpr[22] = ts->r22;
-  scp->sc_gpr[23] = ts->r23;
-  scp->sc_gpr[28] = ts->r28;
-  scp->sc_gpr[31] = ts->r31;
-  
-  scp->sc_mdlo = ts->mdlo;
-  scp->sc_mdhi = ts->mdhi;
-
-  scp->sc_pc = ts->pc;
-  scp->sc_sp = ts->r29;
-  scp->sc_fp = ts->r30;
+  /* struct sigcontext is laid out so that starting at sc_gpr
+     mimics a struct mips_thread_state.  */
+  memcpy (scp->sc_gpr, &ts, sizeof ts);
 
   /* Modify the thread state to call `trampoline' on the new stack.  */