about summary refs log tree commit diff stats
path: root/src/dynarec/dynarec.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/dynarec/dynarec.c')
-rw-r--r--src/dynarec/dynarec.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/src/dynarec/dynarec.c b/src/dynarec/dynarec.c
index 5dddc23b..3675d5c9 100644
--- a/src/dynarec/dynarec.c
+++ b/src/dynarec/dynarec.c
@@ -28,7 +28,7 @@
 #ifdef DYNAREC
 uintptr_t getX64Address(dynablock_t* db, uintptr_t arm_addr);
 
-void* LinkNext(x64emu_t* emu, uintptr_t addr, void* x2, uintptr_t* x3)
+void* LinkNext(x64emu_t* emu, uintptr_t addr, void* x2)
 {
     int is32bits = (R_CS == 0x23);
     #ifdef HAVE_TRACE
@@ -53,7 +53,6 @@ void* LinkNext(x64emu_t* emu, uintptr_t addr, void* x2, uintptr_t* x3)
         uintptr_t old_addr = addr;
         addr = (uintptr_t)getAlternate((void*)addr);    // set new address
         R_RIP = addr;   // but also new RIP!
-        *x3 = addr; // and the RIP in x27 register
         printf_log(LOG_DEBUG, " -> %p\n", (void*)addr);
         block = DBAlternateBlock(emu, old_addr, addr, is32bits);
     } else
@@ -66,12 +65,12 @@ void* LinkNext(x64emu_t* emu, uintptr_t addr, void* x2, uintptr_t* x3)
             } else {
                 dynablock_t* db = FindDynablockFromNativeAddress(x2-4);
                 elfheader_t* h = FindElfAddress(my_context, (uintptr_t)x2-4);
-                dynarec_log(LOG_INFO, "Warning, jumping to a no-block address %p from %p (db=%p, x64addr=%p(elf=%s), RIP=%p)\n", (void*)addr, x2-4, db, db?(void*)getX64Address(db, (uintptr_t)x2-4):NULL, h?ElfName(h):"(none)", (void*)*x3);
+                dynarec_log(LOG_INFO, "Warning, jumping to a no-block address %p from %p (db=%p, x64addr=%p(elf=%s), RIP=%p)\n", (void*)addr, x2-4, db, db?(void*)getX64Address(db, (uintptr_t)x2-4):NULL, h?ElfName(h):"(none)", R_RIP);
             }
         }
         #endif
         //tableupdate(native_epilog, addr, table);
-        return native_epilog;
+        return native_epilog_fast;
     }
     if(!block->done) {
         // not finished yet... leave linker
@@ -81,11 +80,11 @@ void* LinkNext(x64emu_t* emu, uintptr_t addr, void* x2, uintptr_t* x3)
             printf_log(LOG_NONE, "Warning, NULL block at %p from %p (db=%p, x64addr=%p/%s)\n", (void*)addr, x2-4, db, db?(void*)getX64Address(db, (uintptr_t)x2-4):NULL, db?getAddrFunctionName(getX64Address(db, (uintptr_t)x2-4)):"(nil)");
         }
         #endif
-        return native_epilog;
+        return native_epilog_fast;
     }
     if(!(jblock=block->block)) {
         // null block, but done: go to epilog, no linker here
-        return native_epilog;
+        return native_epilog_fast;
     }
     //dynablock_t *father = block->father?block->father:block;
     return jblock;