]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Formerly unix/sysv/sco3.2.4/__waitpid.S.~2~
authorRoland McGrath <roland@gnu.org>
Fri, 21 May 1993 18:24:40 +0000 (18:24 +0000)
committerRoland McGrath <roland@gnu.org>
Fri, 21 May 1993 18:24:40 +0000 (18:24 +0000)
sysdeps/unix/sysv/sco3.2.4/waitpid.S

index 73e0888f0f130859775be9c24999b67d5225ef6f..be6c19b03e8f02ca6dbc5bf03099a7b05bd075c4 100644 (file)
@@ -18,5 +18,17 @@ Cambridge, MA 02139, USA.  */
 
 #include <sysdep.h>
 
-SYSCALL__ (waitpid, 3)
-       ret
+ENTRY (__waitpid)
+       /* The `waitpid' system call is distinguished from plain
+          `wait' by setting lots of bits in the processor flags.  */
+       pushfl                  /* Push the flags word.  */
+       popl %eax               /* Pop it into the accumulator.  */
+       orl $0x8c4, %eax        /* Set lots of bits.  */
+       pushl $eax              /* Push the new flags word.  */
+       popfl                   /* Pop it into the flags.  */
+       DO_CALL (wait, 2)
+       movl 4(%esp), scratch   /* Put status pointer in scratch register.  */
+       testl scratch, scratch  /* Is it non-nil?  */
+       je null
+       movl r1, (scratch)      /* Yes; store the status there.  */
+null:  ret