[parisc-linux-cvs] glibc patch for clone syscall
John Marvin
jsm@udlkern.fc.hp.com
Fri, 9 Feb 2001 06:46:23 -0700 (MST)
Here's a patch I committed to fix the clone system call entry point stub
in glibc.
John
--- clone.S.old Mon Jan 29 05:38:05 2001
+++ clone.S Fri Feb 9 05:45:55 2001
@@ -33,18 +33,18 @@ ENTRY(__clone)
/* FIXME: I have no idea how profiling works on hppa. */
/* Sanity check arguments. */
- comib,<> 0,%arg0,.Lerror /* no NULL function pointers */
- ldi EINVAL,%ret0
- comib,<> 0,%arg1,.Lerror /* no NULL stack pointers */
+ comib,= 0,%arg0,.Lerror /* no NULL function pointers */
+ ldi -EINVAL,%ret0
+ comib,= 0,%arg1,.Lerror /* no NULL stack pointers */
nop
/* Save the fn ptr and arg on the new stack. */
- stwm %arg3,64(%arg1)
+ stwm %arg0,64(%arg1)
stw %arg3,-60(%arg1)
/* Do the system call */
copy %arg2,%arg0
- ble 0x100(%sr7,%r0)
+ ble 0x100(%sr2,%r0)
ldi __NR_clone,%r20
ldi -4096,%r1
@@ -60,12 +60,12 @@ ENTRY(__clone)
/* Something bad happened -- no child created */
.Lerror:
b __syscall_error
- nop
+ sub %r0,%ret0,%arg0
thread_start:
/* Load up the arguments. */
ldw -60(%sp),%arg0
- ldwm -64(%sp),%r22
+ ldw -64(%sp),%r22
/* Call the user's function */
bl $$dyncall,%r31