ソースを参照

Add in clone and make the assembler PIC/msep-data friendly.

David McCullough 22 年 前
コミット
c21b7e64b8
1 ファイル変更16 行追加6 行削除
  1. 16 6
      libc/sysdeps/linux/m68k/clone.S

+ 16 - 6
libc/sysdeps/linux/m68k/clone.S

@@ -9,9 +9,12 @@
 #include <sys/syscall.h>
 
 /* int _clone(int (*fn)(void *arg), void *child_stack, int flags, void *arg); */
- 
+
 .text
 .align 4
+.type	clone,@function
+.globl	clone;
+clone:
 .type	__clone,@function
 .globl	__clone;
 __clone:
@@ -20,11 +23,11 @@ __clone:
 	movel   4(%sp), %d1             /* no NULL function pointers */
 	movel	%d1, %a0
 	tstl    %d1
-	jeq     syscall_error
+	beq.w   syscall_error
 	movel   8(%sp), %d1             /* no NULL stack pointers */
 	movel	%d1, %a1
 	tstl    %d1
-	jeq     syscall_error
+	beq.w   syscall_error
 
 	/* Allocate space and copy the argument onto the new stack.  */
 	movel   16(%sp), -(%a1)
@@ -49,8 +52,8 @@ __clone:
 #endif
 
 	tstl    %d0
-	jmi     syscall_error
-	jeq     thread_start
+	bmi.w   syscall_error
+	beq.w   thread_start
 
 	rts
 
@@ -58,7 +61,7 @@ syscall_error:
 	negl	%d0
 	movel	%d0, %sp@-
 	lea		__errno_location-.-8, %a0
-	jsr		0(%pc, %a0)
+	jsr		%pc@(%a0)
 	movel	%d0, %a0
 	movel	%sp@+, %a0@
 	moveq	#-1, %d0
@@ -73,3 +76,10 @@ thread_start:
 	trap	#0
 	/*jsr    exit*/
 
+#if defined(HAVE_ELF)
+	.weak clone
+	clone = __clone
+#else
+	.set clone,__clone
+#endif
+