From: Richard Henderson Date: Mon, 30 Jun 2003 23:21:49 +0000 (+0000) Subject: * sysdeps/unix/sysv/linux/alpha/clone.S: Load child_tid properly. X-Git-Tag: upstream/2.30~10627^2~1338 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4feb1bb5b668fc555123c8d5f875c8cec706fee2;p=external%2Fglibc.git * sysdeps/unix/sysv/linux/alpha/clone.S: Load child_tid properly. --- diff --git a/sysdeps/unix/sysv/linux/alpha/clone.S b/sysdeps/unix/sysv/linux/alpha/clone.S index a0aa771..daa804c 100644 --- a/sysdeps/unix/sysv/linux/alpha/clone.S +++ b/sysdeps/unix/sysv/linux/alpha/clone.S @@ -24,9 +24,13 @@ #define _ERRNO_H 1 #include -/* int clone(int (*fn)(void *arg), void *child_stack, int flags, void *arg, - pid_t *tid, void *tls); - */ +/* int clone(int (*fn)(void *arg), void *child_stack, int flags, + void *arg, pid_t *ptid, void *tls, pid_t *ctid); + + Note that everything past ARG is technically optional, based + on FLAGS, and that CTID is arg 7, and thus is on the stack. + However, since a load from top-of-stack better be legal always, + we don't bother checking FLAGS. */ .text ENTRY(__clone) @@ -51,11 +55,13 @@ ENTRY(__clone) stq a0,0(a1) stq a3,8(a1) - /* Shift the flags, tid and tls arguments into place; the + /* The syscall is of the form clone(flags, usp, ptid, ctid, tls). + Shift the flags, ptid, ctid, tls arguments into place; the child_stack argument is already correct. */ mov a2,a0 mov a4,a2 - mov a5,a3 + ldq a3,0(sp) + mov a5,a4 /* Do the system call. */ ldiq v0,__NR_clone