diff options
| author | Yang Liu <numbksco@gmail.com> | 2024-03-02 18:14:48 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-03-02 11:14:48 +0100 |
| commit | 9883c6464e3df077322d00295a64b63d546d1dc8 (patch) | |
| tree | 6562adb23f45ccf1e28001505cd5b105740cfd22 /src/dynarec | |
| parent | 67006f28092a407d31bcd1013f62900e7f52bbc3 (diff) | |
| download | box64-9883c6464e3df077322d00295a64b63d546d1dc8.tar.gz box64-9883c6464e3df077322d00295a64b63d546d1dc8.zip | |
[LA64_DYNAREC] Adopt to ARM64 way of CALL/RET optim since there is a dedicated register (#1309)
Diffstat (limited to 'src/dynarec')
| -rw-r--r-- | src/dynarec/la64/la64_epilog.S | 6 | ||||
| -rw-r--r-- | src/dynarec/la64/la64_prolog.S | 6 |
2 files changed, 5 insertions, 7 deletions
diff --git a/src/dynarec/la64/la64_epilog.S b/src/dynarec/la64/la64_epilog.S index 91627ea2..97f5e9ac 100644 --- a/src/dynarec/la64/la64_epilog.S +++ b/src/dynarec/la64/la64_epilog.S @@ -27,10 +27,8 @@ la64_epilog: st.d $r30, $r4, (8 * 15) st.d $r31, $r4, (8 * 16) // xFlags st.d $r20, $r4, (8 * 17) // put back reg value in emu, including EIP (so x27 must be EIP now) - ld.d $sp, $r4, 552 // restore saved sp from emu->xSPSave, see la64_prolog - ld.d $r22, $sp, -8 - st.d $r22, $r4, 552 - // vpop {d8-d15} + addi.d $sp, $r22, 0 // restore save sp from xSavedSP + // restore all used register ld.d $r1, $sp, (8 * 0) // load ra ld.d $r22, $sp, (8 * 1) // load fp ld.d $r23, $sp, (8 * 2) diff --git a/src/dynarec/la64/la64_prolog.S b/src/dynarec/la64/la64_prolog.S index 5f57218d..c1d1ed80 100644 --- a/src/dynarec/la64/la64_prolog.S +++ b/src/dynarec/la64/la64_prolog.S @@ -50,12 +50,12 @@ la64_prolog: ld.d $r30, $r4, (8 * 15) ld.d $r31, $r4, (8 * 16) //xFlags ld.d $r20, $r4, (8 * 17) //xRIP - ld.d $r22, $r4, 552 // grab an old value of emu->xSPSave - st.d $sp, $r4, 552 // save current sp to emu->xSPSave // push sentinel onto the stack - st.d $r22, $sp, -16 + st.d $r0, $sp, -16 st.d $r0, $sp, -8 addi.d $sp, $sp, -16 + // save old sp into xSavedSP + addi.d $r22, $sp, 16 // setup xMASK addi.w $r11, $r0, -1 lu32i.d $r11, 0 |