about summary refs log tree commit diff
path: root/nptl/sysdeps/unix
diff options
context:
space:
mode:
Diffstat (limited to 'nptl/sysdeps/unix')
-rw-r--r--nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevelsem.S22
1 files changed, 22 insertions, 0 deletions
diff --git a/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevelsem.S b/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevelsem.S
index bfec6fa155..dd7d34e30f 100644
--- a/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevelsem.S
+++ b/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevelsem.S
@@ -80,9 +80,15 @@ __new_sem_wait:
 4:
 #endif
 	addl	$_GLOBAL_OFFSET_TABLE_, %ebx
+#if USE___THREAD
 	movl	%gs:0, %edx
 	subl	errno@gottpoff(%ebx), %edx
 	movl	%eax, (%edx)
+#else
+	movl	%eax, %edx
+	call	__errno_location@plt
+	movl	%edx, (%eax)
+#endif
 	orl	$-1, %eax
 	popl	%esi
 	popl	%ebx
@@ -121,9 +127,14 @@ __new_sem_trywait:
 3:
 #endif
 	addl	$_GLOBAL_OFFSET_TABLE_, %ecx
+#if USE___THREAD
 	movl	%gs:0, %edx
 	subl	errno@gottpoff(%ecx), %edx
 	movl	$EAGAIN, (%edx)
+#else
+	call	__errno_location@plt
+	movl	$EAGAIN, (%eax)
+#endif
 	orl	$-1, %eax
 	ret
 	.size	__new_sem_trywait,.-__new_sem_trywait
@@ -226,9 +237,15 @@ sem_timedwait:
 4:
 #endif
 	addl	$_GLOBAL_OFFSET_TABLE_, %ebx
+#if USE___THREAD
 	movl	%gs:0, %edx
 	subl	errno@gottpoff(%ebx), %edx
 	movl	%eax, (%edx)
+#else
+	movl	%eax, %edx
+	call	__errno_location@plt
+	movl	%edx, (%eax)
+#endif
 
 	addl	$8, %esp
 	orl	$-1, %eax
@@ -272,9 +289,14 @@ __new_sem_post:
 4:
 #endif
 	addl	$_GLOBAL_OFFSET_TABLE_, %ebx
+#if USE___THREAD
 	movl	%gs:0, %edx
 	subl	errno@gottpoff(%ebx), %edx
 	movl	$EINVAL, (%edx)
+#else
+	call	__errno_location@plt
+	movl	$EAGAIN, (%eax)
+#endif
 
 	orl	$-1, %eax
 	popl	%ebx