]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
2005-01-26 Jakub Jelinek <jakub@redhat.com>
authorRoland McGrath <roland@gnu.org>
Wed, 16 Feb 2005 11:07:44 +0000 (11:07 +0000)
committerRoland McGrath <roland@gnu.org>
Wed, 16 Feb 2005 11:07:44 +0000 (11:07 +0000)
[BZ #737]
* sysdeps/unix/sysv/linux/i386/i486/sem_trywait.S (__new_sem_trywait):
Use direct %gs segment access or, if NO_TLS_DIRECT_SEG_REFS,
at least gotntpoff relocation and addition.
* sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S (sem_timedwait):
Likewise.
* sysdeps/unix/sysv/linux/i386/i486/sem_post.S (__new_sem_post):
Likewise.
* sysdeps/unix/sysv/linux/i386/i486/sem_wait.S (__new_sem_wait):
Likewise.

nptl/sysdeps/unix/sysv/linux/i386/i486/sem_post.S
nptl/sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S
nptl/sysdeps/unix/sysv/linux/i386/i486/sem_trywait.S
nptl/sysdeps/unix/sysv/linux/i386/i486/sem_wait.S

index 3d67329bd1569d76de0bca331bd57f0a7c26aee9..0219fea14195094794a4c1bee7c4c6e8375861de 100644 (file)
@@ -65,9 +65,14 @@ __new_sem_post:
 #endif
        addl    $_GLOBAL_OFFSET_TABLE_, %ebx
 #if USE___THREAD
-       movl    %gs:0, %edx
-       subl    errno@gottpoff(%ebx), %edx
+# ifdef NO_TLS_DIRECT_SEG_REFS
+       movl    errno@gotntpoff(%ebx), %edx
+       addl    %gs:0, %edx
        movl    $EINVAL, (%edx)
+# else
+       movl    errno@gotntpoff(%ebx), %edx
+       movl    $EINVAL, %gs:(%edx)
+# endif
 #else
        call    __errno_location@plt
        movl    $EINVAL, (%eax)
index 5b244769361ae3cd79c9f5158113e7e275ea81cd..4a451dc29d474c143dc294b17e09e6f021e57fc7 100644 (file)
@@ -158,9 +158,14 @@ sem_timedwait:
 #endif
        addl    $_GLOBAL_OFFSET_TABLE_, %ebx
 #if USE___THREAD
-       movl    %gs:0, %edx
-       subl    errno@gottpoff(%ebx), %edx
+# ifdef NO_TLS_DIRECT_SEG_REFS
+       movl    errno@gotntpoff(%ebx), %edx
+       addl    %gs:0, %edx
        movl    %esi, (%edx)
+# else
+       movl    errno@gotntpoff(%ebx), %edx
+       movl    %esi, %gs:(%edx)
+# endif
 #else
        call    __errno_location@plt
        movl    %esi, (%eax)
index a7c405d95f3f1b5ca801e8c6c1c13b5b54a3a0f0..e6106f806f746e163fbca57f4c8208b9468f61fd 100644 (file)
@@ -55,9 +55,14 @@ __new_sem_trywait:
 #endif
        addl    $_GLOBAL_OFFSET_TABLE_, %ecx
 #if USE___THREAD
-       movl    %gs:0, %edx
-       subl    errno@gottpoff(%ecx), %edx
+# ifdef NO_TLS_DIRECT_SEG_REFS
+       movl    errno@gotntpoff(%ecx), %edx
+       addl    %gs:0, %edx
        movl    $EAGAIN, (%edx)
+# else
+       movl    errno@gotntpoff(%ecx), %edx
+       movl    $EAGAIN, %gs:(%edx)
+# endif
 #else
        call    __errno_location@plt
        movl    $EAGAIN, (%eax)
index b7674dc3baf85e0574a7fefd0a1245decd8ad4fb..76947719adee4526012c74fc7d0f898815fcec0c 100644 (file)
@@ -102,9 +102,14 @@ __new_sem_wait:
 #endif
        addl    $_GLOBAL_OFFSET_TABLE_, %ebx
 #if USE___THREAD
-       movl    %gs:0, %edx
-       subl    errno@gottpoff(%ebx), %edx
+# ifdef NO_TLS_DIRECT_SEG_REFS
+       movl    errno@gotntpoff(%ebx), %edx
+       addl    %gs:0, %edx
        movl    %esi, (%edx)
+# else
+       movl    errno@gotntpoff(%ebx), %edx
+       movl    %esi, %gs:(%edx)
+# endif
 #else
        call    __errno_location@plt
        movl    %esi, (%eax)