about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/emu/x64run.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/emu/x64run.c b/src/emu/x64run.c
index f9f6e14e..16a3a3b3 100644
--- a/src/emu/x64run.c
+++ b/src/emu/x64run.c
@@ -723,7 +723,13 @@ x64emurun:
                 if(rex.w) {
                     GD->q[0] = native_lock_xchg_dd(ED, GD->q[0]);
                 } else {
-                    GD->q[0] = native_lock_xchg_d(ED, GD->dword[0]);
+                    if((uintptr_t)ED&3) {
+                        // not aligned, dont't try to "LOCK"
+                        tmp32u = ED->dword[0];
+                        ED->dword[0] = GD->dword[0];
+                        GD->q[0] = tmp32u;
+                    } else
+                        GD->q[0] = native_lock_xchg_d(ED, GD->dword[0]);
                 }
             }
 #else