about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/thread/i386/__unmapself.s9
-rw-r--r--src/thread/pthread_create.c2
-rw-r--r--src/thread/x86_64/__unmapself.s13
3 files changed, 2 insertions, 22 deletions
diff --git a/src/thread/i386/__unmapself.s b/src/thread/i386/__unmapself.s
index 5c674966..bcf6e7fe 100644
--- a/src/thread/i386/__unmapself.s
+++ b/src/thread/i386/__unmapself.s
@@ -2,15 +2,6 @@
 .global __unmapself
 .type   __unmapself,%function
 __unmapself:
-	call 1f
-	.long -1
-	.long -1
-1:	popl %ecx
-	xorl %ebx,%ebx
-	xorl %edx,%edx
-	movl $8,%esi
-	movl $175,%eax
-	int $128
 	movl $91,%eax
 	movl 4(%esp),%ebx
 	movl 8(%esp),%ecx
diff --git a/src/thread/pthread_create.c b/src/thread/pthread_create.c
index 7c436957..c73c5211 100644
--- a/src/thread/pthread_create.c
+++ b/src/thread/pthread_create.c
@@ -25,6 +25,8 @@ void __pthread_unwind_next(struct __ptcb *cb)
 		}
 	}
 
+	syscall4(__NR_sigprocmask, SIG_BLOCK, (long)(uint64_t[1]){-1}, 0, 8);
+
 	if (!a_fetch_add(&libc.threads_minus_1, -1))
 		exit(0);
 
diff --git a/src/thread/x86_64/__unmapself.s b/src/thread/x86_64/__unmapself.s
index 59092eaa..d36257d0 100644
--- a/src/thread/x86_64/__unmapself.s
+++ b/src/thread/x86_64/__unmapself.s
@@ -3,19 +3,6 @@
 .global __unmapself
 .type   __unmapself,%function
 __unmapself:
-	call 1f         /* glibc ABI compat */
-	.long -1
-	.long -1
-1:      push %rsi       /* save arg2 for munmap */
-	push %rdx       /* save arg3 for munmap */
-	mov %rdi,%rsi   /* rt_sigprocmask() args: move arg1 to rsi */
-	xor %rdi,%rdi
-	xor %rdx,%rdx
-	movq $8,%r10
-	movl $14,%eax   /* __NR_rt_sigprocmask */
-	syscall         /* call rt_sigprocmask(0,arg1,0,8) */
-	pop %rsi        /* munmap() args: reload from stack */
-	pop %rdi
 	movl $11,%eax   /* __NR_munmap */
 	syscall         /* munmap(arg2,arg3) */
 	xor %rdi,%rdi   /* exit() args: always return success */