about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2021-03-05 19:17:59 +0100
committerptitSeb <sebastien.chev@gmail.com>2021-03-05 19:17:59 +0100
commit0f73133debd70f02a2447038c60378c2049b2486 (patch)
tree2a7e9a24dee5346d0a5e51258b87af3806d9fe39 /src
parent90c81ecaa3c2974b105d951556104946e5317493 (diff)
downloadbox64-0f73133debd70f02a2447038c60378c2049b2486.tar.gz
box64-0f73133debd70f02a2447038c60378c2049b2486.zip
Fixed myalign handling for long double on ARM64
Diffstat (limited to 'src')
-rwxr-xr-xsrc/libtools/myalign.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/libtools/myalign.c b/src/libtools/myalign.c
index be5773f8..0d5190f4 100755
--- a/src/libtools/myalign.c
+++ b/src/libtools/myalign.c
@@ -103,7 +103,9 @@ void myStackAlign(x64emu_t* emu, const char* fmt, uint64_t* st, uint64_t* mystac
                 memcpy(mystack, st, 16);
                 st+=2; mystack+=2;
                 #else
-                // there is 128bits long double on ARM64
+                // there is 128bits long double on ARM64, but they need 128bit alignment
+                if((((uintptr_t)mystack)&0xf)!=0)
+                    mystack++;
                 LD2D((void*)st, &d);
                 ld = d ;
                 memcpy(mystack, &ld, 16);