about summary refs log tree commit diff stats
path: root/src/dynarec/arm64
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2024-11-03 20:01:56 +0100
committerptitSeb <sebastien.chev@gmail.com>2024-11-03 20:01:56 +0100
commit08085be36070ba22b9e2e99529826d60d5ba149f (patch)
tree500d1b706b6c84b19e42e6eb5d57cbbc66368e02 /src/dynarec/arm64
parent3809866d99b8f8ac8efa3a41d5410906029229b8 (diff)
downloadbox64-08085be36070ba22b9e2e99529826d60d5ba149f.tar.gz
box64-08085be36070ba22b9e2e99529826d60d5ba149f.zip
[DYNAREC] Reverted last 2 commit, will use CancelFillblock mecanism instead
Diffstat (limited to 'src/dynarec/arm64')
-rw-r--r--src/dynarec/arm64/arm64_epilog.S2
-rw-r--r--src/dynarec/arm64/arm64_next.S34
2 files changed, 13 insertions, 23 deletions
diff --git a/src/dynarec/arm64/arm64_epilog.S b/src/dynarec/arm64/arm64_epilog.S
index 62e75590..57f23200 100644
--- a/src/dynarec/arm64/arm64_epilog.S
+++ b/src/dynarec/arm64/arm64_epilog.S
@@ -7,7 +7,6 @@
 .align 4
 
 .global arm64_epilog
-.global arm64_epilog_fast
 arm64_epilog:
     //update register -> emu
     stp     x10, x11, [x0, (8 *  0)]
@@ -19,7 +18,6 @@ arm64_epilog:
     stp     x22, x23, [x0, (8 * 12)]
     stp     x24, x25, [x0, (8 * 14)]
     stp     x26, x27, [x0, (8 * 16)] // put back reg value in emu, including EIP (so x27 must be EIP now)
-arm64_epilog_fast:
     //restore all used register
     add     sp, x28, 0
     //vpop     {d8-d15}
diff --git a/src/dynarec/arm64/arm64_next.S b/src/dynarec/arm64/arm64_next.S
index b9b0f2fd..e900fbec 100644
--- a/src/dynarec/arm64/arm64_next.S
+++ b/src/dynarec/arm64/arm64_next.S
@@ -14,36 +14,28 @@
 arm64_next:
     // emu is r0
     // IP address is r1
-    sub     sp,  sp,  (8 * 2)
+    sub     sp,  sp,  (8 * 12)
     stp     x0,  x1,  [sp, (8 *  0)]
-    stp     x10, x11, [x0, (8 *  0)]
-    stp     x12, x13, [x0, (8 *  2)]
-    stp     x14, x15, [x0, (8 *  4)]
-    stp     x16, x17, [x0, (8 *  6)]
-    stp     x18, x19, [x0, (8 *  8)]
-    stp     x20, x21, [x0, (8 * 10)]
-    stp     x22, x23, [x0, (8 * 12)]
-    stp     x24, x25, [x0, (8 * 14)]
-    stp     x26, x27, [x0, (8 * 16)] 
+    stp     x10, x11, [sp, (8 *  2)]
+    stp     x12, x13, [sp, (8 *  4)]
+    stp     x14, x15, [sp, (8 *  6)]
+    stp     x16, x17, [sp, (8 *  8)]
+    stp     x18, x27, [sp, (8 * 10)]    // also save x27(rip) to allow change in LinkNext
 
     mov     x2, x30      // "from" is in lr, so put in x2
-
+    add     x3, sp, 8*11    // x3 is address to change rip
     // call the function
     bl      LinkNext
     // preserve return value
     mov     x3, x0
     // pop regs
     ldp     x0, x1,   [sp, (8 *  0)]
-    ldp     x10, x11, [x0, (8 *  0)]
-    ldp     x12, x13, [x0, (8 *  2)]
-    ldp     x14, x15, [x0, (8 *  4)]
-    ldp     x16, x17, [x0, (8 *  6)]
-    ldp     x18, x19, [x0, (8 *  8)]
-    ldp     x20, x21, [x0, (8 * 10)]
-    ldp     x22, x23, [x0, (8 * 12)]
-    ldp     x24, x25, [x0, (8 * 14)]
-    ldp     x26, x27, [x0, (8 * 16)]
-    add     sp,  sp, (8 * 2)
+    ldp     x10, x11, [sp, (8 *  2)]
+    ldp     x12, x13, [sp, (8 *  4)]
+    ldp     x14, x15, [sp, (8 *  6)]
+    ldp     x16, x17, [sp, (8 *  8)]
+    ldp     x18, x27, [sp, (8 * 10)]
+    add     sp,  sp, (8 * 12)
     // return offset is jump address
     br      x3