sparc: Fix 32-bit makecontext arg passing.
authorDavid S. Miller <davem@davemloft.net>
Sat, 20 Feb 2010 21:43:09 +0000 (13:43 -0800)
committerDavid S. Miller <davem@davemloft.net>
Sat, 20 Feb 2010 21:48:07 +0000 (13:48 -0800)
test-makecontext3 fails because we fill in the argument
stack slots past the 5th using the wrong index.

ChangeLog
sysdeps/unix/sysv/linux/sparc/sparc32/makecontext.c

index 8b91c5f..ac36832 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -6,6 +6,10 @@
        * sysdeps/sparc/sparc64/memchr.S: Use unsigned branch on greater to
        test end of buffer.
 
+       * sysdeps/unix/sysv/linux/sparc/sparc32/makecontext.c
+       (__makecontext): Adjust arg counter properly when copying arg
+       stack slots.
+
 2009-02-20  Joseph Myers  <joseph@codesourcery.com>
 
        * sysdeps/sparc/sparc64/dl-machine.h (elf_machine_runtime_setup):
index 9b48dad..bcf63db 100644 (file)
@@ -77,7 +77,7 @@ __makecontext (ucontext_t *ucp, void (*func) (void), int argc, ...)
       if (i < 6)
        ucp->uc_mcontext.gregs[REG_O0 + i] = arg;
       else
-       sp[i + 23] = arg;
+       sp[i + 23 - 6] = arg;
     }
 
   va_end (ap);