Commit 50c0716a authored by Chris Zankel's avatar Chris Zankel

[XTENSA] Add missing a2 register restore in register spill routine

Register a2 is saved in depc but wasn't getting restored before
returning from _spill_registers when there weren't any registers
to spill. The mask to cut the top bit from the rotated WINDOWMASK
register was also one bit short.
Signed-off-by: default avatarCHris Zankel <chris@zankel.net>
parent ed3174d9
......@@ -1344,7 +1344,7 @@ ENTRY(_spill_registers)
/* We are done if there are no more than the current register frame. */
extui a3, a3, 1, WSBITS-2 # a3 = 0yyxxxwww
extui a3, a3, 1, WSBITS-1 # a3 = 0yyxxxwww
movi a2, (1 << (WSBITS-1))
_beqz a3, .Lnospill # only one active frame? jump
......@@ -1394,6 +1394,10 @@ ENTRY(_spill_registers)
l32e a4, a1, -16
j .Lc12c
.Lnospill:
rsr a2, DEPC # restore a2 and 'return'
jx a0
.Lloop: _bbsi.l a3, 1, .Lc4
_bbci.l a3, 2, .Lc12
......@@ -1419,8 +1423,6 @@ ENTRY(_spill_registers)
movi a3, 1
sll a3, a3
wsr a3, WINDOWSTART
.Lnospill:
jx a0
.Lc4: s32e a4, a9, -16
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment