Module: wine Branch: master Commit: 44c9355676d391a80c40e44897bb95566596cce1 URL: https://source.winehq.org/git/wine.git/?a=commit;h=44c9355676d391a80c40e4489...
Author: Alexandre Julliard julliard@winehq.org Date: Fri Apr 3 10:46:29 2020 +0200
wineandroid: Avoid using wine_get/set_fs().
Signed-off-by: Alexandre Julliard julliard@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;