summary refs log tree commit diff
path: root/linuxthreads
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2003-04-20 08:25:06 +0000
committerUlrich Drepper <drepper@redhat.com>2003-04-20 08:25:06 +0000
commit2626ed6c9cb5aba9766af934ac4f2568d0e69d9c (patch)
tree01f1cb61af6d4326c40ab00a323ad4cfcc482547 /linuxthreads
parentd63c3a705769aecf8ec9064a47c955f41a2e99a8 (diff)
downloadglibc-2626ed6c9cb5aba9766af934ac4f2568d0e69d9c.tar.gz
glibc-2626ed6c9cb5aba9766af934ac4f2568d0e69d9c.tar.xz
glibc-2626ed6c9cb5aba9766af934ac4f2568d0e69d9c.zip
Update.
	* sysdeps/i386/useldt.h (DO_SET_THREAD_AREA): Make sure the
	compiler knows we use the ldt_entry variable and that the syscall
	modifies the memory.
Diffstat (limited to 'linuxthreads')
-rw-r--r--linuxthreads/ChangeLog4
-rw-r--r--linuxthreads/sysdeps/i386/useldt.h8
2 files changed, 10 insertions, 2 deletions
diff --git a/linuxthreads/ChangeLog b/linuxthreads/ChangeLog
index 093cce8e2c..cf59f3cc63 100644
--- a/linuxthreads/ChangeLog
+++ b/linuxthreads/ChangeLog
@@ -1,5 +1,9 @@
 2003-04-20  Ulrich Drepper  <drepper@redhat.com>
 
+	* sysdeps/i386/useldt.h (DO_SET_THREAD_AREA): Make sure the
+	compiler knows we use the ldt_entry variable and that the syscall
+	modifies the memory.
+
 	* internals.h: Split pthread_functions definition into...
 	* sysdeps/pthread/pthread-functions.h: ...new file.
 
diff --git a/linuxthreads/sysdeps/i386/useldt.h b/linuxthreads/sysdeps/i386/useldt.h
index a4d4fd22c8..4ac82f1ab0 100644
--- a/linuxthreads/sysdeps/i386/useldt.h
+++ b/linuxthreads/sysdeps/i386/useldt.h
@@ -110,7 +110,9 @@ extern int __modify_ldt (int, struct modify_ldt_ldt_s *, size_t);
 	     "int $0x80\n\t"						      \
 	     USETLS_LOAD_EBX						      \
 	     : "=&a" (__result)						      \
-	     : USETLS_EBX_ARG (&ldt_entry), "i" (__NR_set_thread_area));      \
+	     : USETLS_EBX_ARG (&ldt_entry), "i" (__NR_set_thread_area),	      \
+	       "m" (ldt_entry)						      \
+	     : "memory");						      \
       if (__result == 0)						      \
 	asm ("movw %w0, %%gs" :: "q" (__gs));				      \
       else								      \
@@ -128,7 +130,9 @@ extern int __modify_ldt (int, struct modify_ldt_ldt_s *, size_t);
 	     "int $0x80\n\t"						      \
 	     USETLS_LOAD_EBX						      \
 	     : "=&a" (__result)						      \
-	     : USETLS_EBX_ARG (&ldt_entry), "i" (__NR_set_thread_area));      \
+	     : USETLS_EBX_ARG (&ldt_entry), "i" (__NR_set_thread_area),	      \
+	       "m" (ldt_entry)						      \
+	     : "memory");						      \
       if (__result == 0)						      \
 	{								      \
 	  __gs = (ldt_entry.entry_number << 3) + 3;			      \