summaryrefslogtreecommitdiffstats
path: root/xpcom/reflect/xptcall
diff options
context:
space:
mode:
authorJiaxun Yang <jiaxun.yang@flygoat.com>2020-05-12 12:40:04 +0800
committerMoonchild <moonchild@palemoon.org>2020-05-20 13:59:53 +0000
commitd9e0b4be85812fcb2bd04ff9b4383a4c23a6851d (patch)
tree18a86a6ed1572dcb2f5a0947890f9ce172e135e5 /xpcom/reflect/xptcall
parenta17ab79b887f582e3fcaab724b160ea3781fdf4f (diff)
downloadUXP-d9e0b4be85812fcb2bd04ff9b4383a4c23a6851d.tar
UXP-d9e0b4be85812fcb2bd04ff9b4383a4c23a6851d.tar.gz
UXP-d9e0b4be85812fcb2bd04ff9b4383a4c23a6851d.tar.lz
UXP-d9e0b4be85812fcb2bd04ff9b4383a4c23a6851d.tar.xz
UXP-d9e0b4be85812fcb2bd04ff9b4383a4c23a6851d.zip
Bug 1394286 - mips64: fix error correction about stackpointer within function _NS_InvokeByIndex
Tag: #1542
Diffstat (limited to 'xpcom/reflect/xptcall')
-rw-r--r--xpcom/reflect/xptcall/md/unix/xptcinvoke_asm_mips64.S11
1 files changed, 5 insertions, 6 deletions
diff --git a/xpcom/reflect/xptcall/md/unix/xptcinvoke_asm_mips64.S b/xpcom/reflect/xptcall/md/unix/xptcinvoke_asm_mips64.S
index eef34de7f..d2c5595ab 100644
--- a/xpcom/reflect/xptcall/md/unix/xptcinvoke_asm_mips64.S
+++ b/xpcom/reflect/xptcall/md/unix/xptcinvoke_asm_mips64.S
@@ -67,10 +67,10 @@ NESTED(_NS_InvokeByIndex, FRAMESZ, ra)
jal invoke_copy_to_stack
REG_L t3, 8(sp) # get previous a0
- REG_L sp, 0(sp) # get orig sp back
+ REG_L s0, 0(sp) # get orig sp back and save away our stack pointer
- REG_L a0, A0OFF(sp) # a0 - that
- REG_L a1, A1OFF(sp) # a1 - methodIndex
+ REG_L a0, A0OFF(s0) # a0 - that
+ REG_L a1, A1OFF(s0) # a1 - methodIndex
# t1 = methodIndex * pow(2, PTRLOG)
# (use shift instead of mult)
@@ -105,13 +105,12 @@ NESTED(_NS_InvokeByIndex, FRAMESZ, ra)
l.d $f18, 40(t1)
l.d $f19, 48(t1)
- # save away our stack pointer and create
- # the stack pointer for the function
- move s0, sp
+ # create the stack pointer for the function
move sp, t3
jalr t9
+ ## restore stack pointer.
move sp, s0
RESTORE_GP64