Commit 0005d455 authored by yuyin's avatar yuyin
Browse files

Bug 1407867 - MIPS64: Add missing save/restore registe fp. r=lth

fp use as Assembler::FramePointer, also see Bug 1393723.
parent 2e1e83bf
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -44,8 +44,11 @@ struct EnterJITRegs
    double f25;
    double f24;

    uintptr_t align;

    // non-volatile registers.
    uint64_t ra;
    uint64_t fp;
    uint64_t s7;
    uint64_t s6;
    uint64_t s5;
@@ -69,7 +72,8 @@ GenerateReturn(MacroAssembler& masm, int returnCode)
        masm.as_gslq(s1, s2, StackPointer, offsetof(EnterJITRegs, s2));
        masm.as_gslq(s3, s4, StackPointer, offsetof(EnterJITRegs, s4));
        masm.as_gslq(s5, s6, StackPointer, offsetof(EnterJITRegs, s6));
        masm.as_gslq(s7, ra, StackPointer, offsetof(EnterJITRegs, ra));
        masm.as_gslq(s7, fp, StackPointer, offsetof(EnterJITRegs, fp));
        masm.as_ld(ra, StackPointer, offsetof(EnterJITRegs, ra));

        // Restore non-volatile floating point registers
        masm.as_gslq(f24, f25, StackPointer, offsetof(EnterJITRegs, f25));
@@ -86,6 +90,7 @@ GenerateReturn(MacroAssembler& masm, int returnCode)
        masm.as_ld(s5, StackPointer, offsetof(EnterJITRegs, s5));
        masm.as_ld(s6, StackPointer, offsetof(EnterJITRegs, s6));
        masm.as_ld(s7, StackPointer, offsetof(EnterJITRegs, s7));
        masm.as_ld(fp, StackPointer, offsetof(EnterJITRegs, fp));
        masm.as_ld(ra, StackPointer, offsetof(EnterJITRegs, ra));

        // Restore non-volatile floating point registers
@@ -114,7 +119,8 @@ GeneratePrologue(MacroAssembler& masm)
        masm.as_gssq(s1, s2, StackPointer, offsetof(EnterJITRegs, s2));
        masm.as_gssq(s3, s4, StackPointer, offsetof(EnterJITRegs, s4));
        masm.as_gssq(s5, s6, StackPointer, offsetof(EnterJITRegs, s6));
        masm.as_gssq(s7, ra, StackPointer, offsetof(EnterJITRegs, ra));
        masm.as_gssq(s7, fp, StackPointer, offsetof(EnterJITRegs, fp));
        masm.as_sd(ra, StackPointer, offsetof(EnterJITRegs, ra));

        masm.as_gssq(f24, f25, StackPointer, offsetof(EnterJITRegs, f25));
        masm.as_gssq(f26, f27, StackPointer, offsetof(EnterJITRegs, f27));
@@ -131,6 +137,7 @@ GeneratePrologue(MacroAssembler& masm)
    masm.as_sd(s5, StackPointer, offsetof(EnterJITRegs, s5));
    masm.as_sd(s6, StackPointer, offsetof(EnterJITRegs, s6));
    masm.as_sd(s7, StackPointer, offsetof(EnterJITRegs, s7));
    masm.as_sd(fp, StackPointer, offsetof(EnterJITRegs, fp));
    masm.as_sd(ra, StackPointer, offsetof(EnterJITRegs, ra));
    masm.as_sd(a7, StackPointer, offsetof(EnterJITRegs, a7));