diff options
author | Chris Zankel <chris@zankel.net> | 2007-11-14 16:47:02 -0500 |
---|---|---|
committer | Chris Zankel <chris@zankel.net> | 2008-02-13 20:21:27 -0500 |
commit | 50c0716aa2f49a9d34589e380fad73402464c088 (patch) | |
tree | 714e50f1c391bbed2034b361ac2be66773b1cb2c /arch/xtensa | |
parent | ed3174d93c342b8b2eeba6bbd124707d55304a7b (diff) |
[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>
Diffstat (limited to 'arch/xtensa')
-rw-r--r-- | arch/xtensa/kernel/entry.S | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/arch/xtensa/kernel/entry.S b/arch/xtensa/kernel/entry.S index 91a689eca43d..401b33bfd9c0 100644 --- a/arch/xtensa/kernel/entry.S +++ b/arch/xtensa/kernel/entry.S | |||
@@ -1344,7 +1344,7 @@ ENTRY(_spill_registers) | |||
1344 | 1344 | ||
1345 | /* We are done if there are no more than the current register frame. */ | 1345 | /* We are done if there are no more than the current register frame. */ |
1346 | 1346 | ||
1347 | extui a3, a3, 1, WSBITS-2 # a3 = 0yyxxxwww | 1347 | extui a3, a3, 1, WSBITS-1 # a3 = 0yyxxxwww |
1348 | movi a2, (1 << (WSBITS-1)) | 1348 | movi a2, (1 << (WSBITS-1)) |
1349 | _beqz a3, .Lnospill # only one active frame? jump | 1349 | _beqz a3, .Lnospill # only one active frame? jump |
1350 | 1350 | ||
@@ -1394,6 +1394,10 @@ ENTRY(_spill_registers) | |||
1394 | l32e a4, a1, -16 | 1394 | l32e a4, a1, -16 |
1395 | j .Lc12c | 1395 | j .Lc12c |
1396 | 1396 | ||
1397 | .Lnospill: | ||
1398 | rsr a2, DEPC # restore a2 and 'return' | ||
1399 | jx a0 | ||
1400 | |||
1397 | .Lloop: _bbsi.l a3, 1, .Lc4 | 1401 | .Lloop: _bbsi.l a3, 1, .Lc4 |
1398 | _bbci.l a3, 2, .Lc12 | 1402 | _bbci.l a3, 2, .Lc12 |
1399 | 1403 | ||
@@ -1419,8 +1423,6 @@ ENTRY(_spill_registers) | |||
1419 | movi a3, 1 | 1423 | movi a3, 1 |
1420 | sll a3, a3 | 1424 | sll a3, a3 |
1421 | wsr a3, WINDOWSTART | 1425 | wsr a3, WINDOWSTART |
1422 | |||
1423 | .Lnospill: | ||
1424 | jx a0 | 1426 | jx a0 |
1425 | 1427 | ||
1426 | .Lc4: s32e a4, a9, -16 | 1428 | .Lc4: s32e a4, a9, -16 |