Alexandre Julliard : wineandroid: Avoid using wine_get/set_fs().

Alexandre Julliard julliard at winehq.org
Fri Apr 3 14:55:37 CDT 2020


Module: wine
Branch: master
Commit: 44c9355676d391a80c40e44897bb95566596cce1
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=44c9355676d391a80c40e44897bb95566596cce1

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Fri Apr  3 10:46:29 2020 +0200

wineandroid: Avoid using wine_get/set_fs().

Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/wineandroid.drv/device.c | 11 +++++------
 dlls/wineandroid.drv/init.c   |  6 ++++--
 2 files changed, 9 insertions(+), 8 deletions(-)

diff --git a/dlls/wineandroid.drv/device.c b/dlls/wineandroid.drv/device.c
index 0b8bf67ef1..c9321c4899 100644
--- a/dlls/wineandroid.drv/device.c
+++ b/dlls/wineandroid.drv/device.c
@@ -39,7 +39,6 @@
 #include "ddk/wdm.h"
 #include "android.h"
 #include "wine/server.h"
-#include "wine/library.h"
 #include "wine/debug.h"
 
 WINE_DEFAULT_DEBUG_CHANNEL(android);
@@ -255,14 +254,14 @@ static inline BOOL is_client_in_process(void)
 #ifdef __i386__  /* the Java VM uses %fs/%gs for its own purposes, so we need to wrap the calls */
 
 static WORD orig_fs, java_fs;
-static inline void wrap_java_call(void)   { wine_set_fs( java_fs ); }
-static inline void unwrap_java_call(void) { wine_set_fs( orig_fs ); }
+static inline void wrap_java_call(void)   { __asm__( "mov %0,%%fs" :: "r" (java_fs) ); }
+static inline void unwrap_java_call(void) { __asm__( "mov %0,%%fs" :: "r" (orig_fs) ); }
 static inline void init_java_thread( JavaVM *java_vm )
 {
-    orig_fs = wine_get_fs();
+    __asm__( "mov %%fs,%0" : "=r" (orig_fs) );
     (*java_vm)->AttachCurrentThread( java_vm, &jni_env, 0 );
-    java_fs = wine_get_fs();
-    wine_set_fs( orig_fs );
+    __asm__( "mov %%fs,%0" : "=r" (java_fs) );
+    __asm__( "mov %0,%%fs" :: "r" (orig_fs) );
 }
 
 #elif defined(__x86_64__)
diff --git a/dlls/wineandroid.drv/init.c b/dlls/wineandroid.drv/init.c
index 97cdb515d5..f02b163831 100644
--- a/dlls/wineandroid.drv/init.c
+++ b/dlls/wineandroid.drv/init.c
@@ -635,7 +635,8 @@ static BOOL process_attach(void)
     if ((java_vm = wine_get_java_vm()))  /* running under Java */
     {
 #ifdef __i386__
-        WORD old_fs = wine_get_fs();
+        WORD old_fs;
+        __asm__( "mov %%fs,%0" : "=r" (old_fs) );
 #endif
         load_android_libs();
         (*java_vm)->AttachCurrentThread( java_vm, &jni_env, 0 );
@@ -643,7 +644,8 @@ static BOOL process_attach(void)
         (*jni_env)->RegisterNatives( jni_env, class, methods, ARRAY_SIZE( methods ));
         (*jni_env)->DeleteLocalRef( jni_env, class );
 #ifdef __i386__
-        wine_set_fs( old_fs );  /* the Java VM hijacks %fs for its own purposes, restore it */
+        /* the Java VM hijacks %fs for its own purposes, restore it */
+        __asm__( "mov %0,%%fs" :: "r" (old_fs) );
 #endif
     }
     return TRUE;




More information about the wine-cvs mailing list