about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rwxr-xr-xsrc/dynarec/arm64/arm64_printer.c1
-rwxr-xr-xsrc/dynarec/arm64/dynarec_arm64_00.c7
-rw-r--r--src/dynarec/dynarec_next.h6
3 files changed, 10 insertions, 4 deletions
diff --git a/src/dynarec/arm64/arm64_printer.c b/src/dynarec/arm64/arm64_printer.c
index 5bace025..ead54a61 100755
--- a/src/dynarec/arm64/arm64_printer.c
+++ b/src/dynarec/arm64/arm64_printer.c
@@ -1523,6 +1523,7 @@ const char* arm64_print(uint32_t opcode, uintptr_t addr)
     // DMB ISH

     if(isMask(opcode, "11010101000000110011nnnn10111111", &a)) {

         snprintf(buff, sizeof(buff), "DMB %s", (Rn==0b1011)?"ISH":"???");

+        return buff;

     }

 

 

diff --git a/src/dynarec/arm64/dynarec_arm64_00.c b/src/dynarec/arm64/dynarec_arm64_00.c
index 5375e78a..3269ac1b 100755
--- a/src/dynarec/arm64/dynarec_arm64_00.c
+++ b/src/dynarec/arm64/dynarec_arm64_00.c
@@ -585,7 +585,12 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                         dyn->doublepush = 1;
                     }
                 } else {
-                    PUSH1z(gd);
+                    if (gd == xRSP) {
+                        MOVz_REG(x1, xRSP);
+                        PUSH1z(x1);
+                    } else {
+                        PUSH1z(gd);
+                    }
                 }
             }
             break;
diff --git a/src/dynarec/dynarec_next.h b/src/dynarec/dynarec_next.h
index 0ad6c18d..dc37aadb 100644
--- a/src/dynarec/dynarec_next.h
+++ b/src/dynarec/dynarec_next.h
@@ -4,21 +4,21 @@
 #ifdef ARM64
 void arm64_next(void) EXPORTDYN;
 void arm64_prolog(x64emu_t* emu, void* addr) EXPORTDYN;
-void arm64_epilog() EXPORTDYN;
+void arm64_epilog(void) EXPORTDYN;
 #define native_next         arm64_next
 #define native_prolog       arm64_prolog
 #define native_epilog       arm64_epilog
 #elif defined(LA464)
 void la464_next(void) EXPORTDYN;
 void la464_prolog(x64emu_t* emu, void* addr) EXPORTDYN;
-void la464_epilog() EXPORTDYN;
+void la464_epilog(void) EXPORTDYN;
 #define native_next         la464_next
 #define native_prolog       la464_prolog
 #define native_epilog       la464_epilog
 #elif defined(RV64)
 void rv64_next(void) EXPORTDYN;
 void rv64_prolog(x64emu_t* emu, void* addr) EXPORTDYN;
-void rv64_epilog() EXPORTDYN;
+void rv64_epilog(void) EXPORTDYN;
 #define native_next         rv64_next
 #define native_prolog       rv64_prolog
 #define native_epilog       rv64_epilog