diff options
Diffstat (limited to 'src/dynarec/rv64/rv64_prolog.S')
| -rw-r--r-- | src/dynarec/rv64/rv64_prolog.S | 43 |
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) |