about summary refs log tree commit diff
path: root/sysdeps/unix/sysv/linux/sh/clone.S
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2003-02-08 02:34:27 +0000
committerUlrich Drepper <drepper@redhat.com>2003-02-08 02:34:27 +0000
commit2a051a7d1af290fee89e8b0a5ba8e5a86f325a25 (patch)
tree8f07fb2a508532e8675705d6c956506c3cece73e /sysdeps/unix/sysv/linux/sh/clone.S
parentd9c734e9cdab99931ddbbbc6de30a109be1483e6 (diff)
downloadglibc-2a051a7d1af290fee89e8b0a5ba8e5a86f325a25.tar.gz
glibc-2a051a7d1af290fee89e8b0a5ba8e5a86f325a25.tar.xz
glibc-2a051a7d1af290fee89e8b0a5ba8e5a86f325a25.zip
Update.
2003-02-07  Kaz Kojima  <kkojima@rr.iij4u.or.jp>

	* elf/tls-macros.h: Add non-PIC TLS macros and fix clobber list
	for SH.
	* sysdeps/unix/sysv/linux/sh/brk.c: Add SYSCALL_INST_PAD
	after the trapa instruction.
	* sysdeps/unix/sysv/linux/sh/clone.S (__clone): Add additional
	parameters.
	* sysdeps/unix/sysv/linux/sh/sh4/sysdep.h: New file.
	(NEED_SYSCALL_INST_PAD): Define.
	* sysdeps/unix/sysv/linux/sh/sys/user.h (start_thread): Undef to
	avoid to use definition for the kernel.
	* sysdeps/unix/sysv/linux/sh/sysdep.h (SYSCALL_ERROR_HANDLER):
	Save and restore the frame pointer.
	(SYSCALL_INST_PAD): Define.
	(INLINE_SYSCALL): Make use of INTERNAL_SYSCALL.
	(INTERNAL_SYSCALL): Make use of ERR parameter. Add SYSCALL_INST_PAD
	after trapa instruction.
	(INTERNAL_SYSCALL_DECL, INTERNAL_SYSCALL_ERRNO,
	INTERNAL_SYSCALL_ERROR_P): Adjust accordingly.
Diffstat (limited to 'sysdeps/unix/sysv/linux/sh/clone.S')
-rw-r--r--sysdeps/unix/sysv/linux/sh/clone.S8
1 files changed, 6 insertions, 2 deletions
diff --git a/sysdeps/unix/sysv/linux/sh/clone.S b/sysdeps/unix/sysv/linux/sh/clone.S
index a6ddcc5336..713b0f9c3b 100644
--- a/sysdeps/unix/sysv/linux/sh/clone.S
+++ b/sysdeps/unix/sysv/linux/sh/clone.S
@@ -23,7 +23,8 @@
 #define _ERRNO_H	1
 #include <bits/errno.h>
 
-/* int clone(int (*fn)(void *arg), void *child_stack, int flags, void *arg); */
+/* int clone(int (*fn)(void *arg), void *child_stack, int flags, void *arg,
+	     pid_t *ptid, void *tls, pid_t *ctid); */
 
         .text
 ENTRY(__clone)
@@ -43,8 +44,11 @@ ENTRY(__clone)
 
 	/* do the system call */
 	mov	r6, r4
+	mov.l	@r15, r6
+	mov.l	@(8,r15), r7
+	mov.l	@(4,r15), r0
 	mov	#+SYS_ify(clone), r3
-	trapa	#0x12
+	trapa	#0x15
 	mov     r0, r1
 	mov	#-12, r2
 	shad	r2, r1