about summary refs log tree commit diff stats
path: root/src/dynarec/rv64/rv64_prolog.S
diff options
context:
space:
mode:
Diffstat (limited to 'src/dynarec/rv64/rv64_prolog.S')
-rw-r--r--src/dynarec/rv64/rv64_prolog.S43
1 files changed, 22 insertions, 21 deletions
diff --git a/src/dynarec/rv64/rv64_prolog.S b/src/dynarec/rv64/rv64_prolog.S
index 0817bdc1..96a85d3b 100644
--- a/src/dynarec/rv64/rv64_prolog.S
+++ b/src/dynarec/rv64/rv64_prolog.S
@@ -11,29 +11,30 @@
 .global rv64_prolog
 rv64_prolog:
     //save all 18 used register
-    addi    sp,  sp, -(8 * 22)
+    addi    sp,  sp, -(8 * 24)  // 16 bytes aligned
     sd      ra, (sp)  // save ra
     sd      x8, 8(sp) // save fp
-    sd      x18, 16(sp)
-    sd      x19, 24(sp)
-    sd      x20, 32(sp)
-    sd      x21, 40(sp)
-    sd      x22, 48(sp)
-    sd      x23, 56(sp)
-    sd      x24, 64(sp)
-    sd      x25, 72(sp)
-    sd      x26, 80(sp)
-    sd      x27, 88(sp)
-    fsd     f18, (12*8)(sp)
-    fsd     f19, (13*8)(sp)
-    fsd     f20, (14*8)(sp)
-    fsd     f21, (15*8)(sp)
-    fsd     f22, (16*8)(sp)
-    fsd     f23, (17*8)(sp)
-    fsd     f24, (18*8)(sp)
-    fsd     f25, (19*8)(sp)
-    fsd     f26, (20*8)(sp)
-    fsd     f27, (21*8)(sp)
+    sd      x18, (2*8)(sp)
+    sd      x19, (3*8)(sp)
+    sd      x20, (4*8)(sp)
+    sd      x21, (5*8)(sp)
+    sd      x22, (6*8)(sp)
+    sd      x23, (7*8)(sp)
+    sd      x24, (8*8)(sp)
+    sd      x25, (9*8)(sp)
+    sd      x26, (10*8)(sp)
+    sd      x27, (11*8)(sp)
+    sd      x9,  (12*8)(sp)
+    fsd     f18, (13*8)(sp)
+    fsd     f19, (14*8)(sp)
+    fsd     f20, (15*8)(sp)
+    fsd     f21, (16*8)(sp)
+    fsd     f22, (17*8)(sp)
+    fsd     f23, (19*8)(sp)
+    fsd     f24, (19*8)(sp)
+    fsd     f25, (20*8)(sp)
+    fsd     f26, (21*8)(sp)
+    fsd     f27, (22*8)(sp)
     //setup emu -> register
     ld      x16, (a0)
     ld      x17, 8(a0)