aboutsummaryrefslogtreecommitdiff
path: root/linuxthreads/sysdeps/i386/tls.h
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2002-08-21 02:35:30 +0000
committerUlrich Drepper <drepper@redhat.com>2002-08-21 02:35:30 +0000
commitc761cdf5a082d0d22d18f2d70443da7d064e2187 (patch)
tree3050cf18c76eb52a8c1f7a22bfd236521b7d526a /linuxthreads/sysdeps/i386/tls.h
parent9d69bd2492a229db2c165b56afb4e8822abe5b62 (diff)
downloadglibc-c761cdf5a082d0d22d18f2d70443da7d064e2187.tar
glibc-c761cdf5a082d0d22d18f2d70443da7d064e2187.tar.gz
glibc-c761cdf5a082d0d22d18f2d70443da7d064e2187.tar.bz2
glibc-c761cdf5a082d0d22d18f2d70443da7d064e2187.zip
Update.
* sysdeps/i386/useldt.h: Go back to using 16-bit instructions when loading/reading segment registers. Some old hardware doesn't handle the 32-bit instructions as expected. * sysdeps/i386/tls.h: Likewise.
Diffstat (limited to 'linuxthreads/sysdeps/i386/tls.h')
-rw-r--r--linuxthreads/sysdeps/i386/tls.h6
1 files changed, 3 insertions, 3 deletions
diff --git a/linuxthreads/sysdeps/i386/tls.h b/linuxthreads/sysdeps/i386/tls.h
index 0bec077730..a168c008b7 100644
--- a/linuxthreads/sysdeps/i386/tls.h
+++ b/linuxthreads/sysdeps/i386/tls.h
@@ -123,8 +123,8 @@ typedef struct
int result; \
if (secondcall) \
ldt_entry.entry_number = ({ int _gs; \
- asm ("movl %%gs, %0" : "=q" (_gs)); \
- _gs >> 3; }); \
+ asm ("movw %%gs, %w0" : "=q" (_gs)); \
+ (_gs & 0xffff) >> 3; }); \
asm volatile (TLS_LOAD_EBX \
"int $0x80\n\t" \
TLS_LOAD_EBX \
@@ -164,7 +164,7 @@ typedef struct
__gs = TLS_SETUP_GS_SEGMENT (_descr, secondcall); \
if (__builtin_expect (__gs, 7) != -1) \
{ \
- asm ("movl %0, %%gs" : : "q" (__gs)); \
+ asm ("movw %w0, %%gs" : : "q" (__gs)); \
__gs = 0; \
} \
__gs; \