[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: CHris Zankel <chris@zankel.net>
diff --git a/arch/xtensa/kernel/entry.S b/arch/xtensa/kernel/entry.S
index 91a689e..401b33b 100644
--- a/arch/xtensa/kernel/entry.S
+++ b/arch/xtensa/kernel/entry.S
@@ -1344,7 +1344,7 @@
 
 	/* 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 @@
 	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 @@
 	movi	a3, 1
 	sll	a3, a3
 	wsr	a3, WINDOWSTART
-
-.Lnospill:
 	jx	a0
 
 .Lc4:	s32e	a4, a9, -16