j
: Next unread message k
: Previous unread message j a
: Jump to all threads
j l
: Jump to MailingList overview
Author: mcayland Date: Fri Apr 16 12:20:06 2010 New Revision: 749 URL: http://tracker.coreboot.org/trac/openbios/changeset/749
Log: Fix a mistake in call-client.S whereby the stack offsets were out by one item. When saving registers upon a client's entry into the CIF, we were using space for one more stack item than we had allocated. Hence a subsequent stack push would corrupt the topmost item (in this case register %g7) causing it to be restored with a random value before returning to the client.
Signed-off-by: Mark Cave-Ayland mark.cave-ayland@siriusit.co.uk
Modified: trunk/openbios-devel/arch/sparc64/call-client.S
Modified: trunk/openbios-devel/arch/sparc64/call-client.S ============================================================================== --- trunk/openbios-devel/arch/sparc64/call-client.S Fri Apr 16 12:01:42 2010 (r748) +++ trunk/openbios-devel/arch/sparc64/call-client.S Fri Apr 16 12:20:06 2010 (r749) @@ -21,24 +21,24 @@ flushw save %sp, -248, %sp stx %g1, [%sp + 2047 + 192 + 0] - stx %g2, [%sp + 2047 + 192 + 16] - stx %g3, [%sp + 2047 + 192 + 24] - stx %g4, [%sp + 2047 + 192 + 32] - stx %g5, [%sp + 2047 + 192 + 40] - stx %g6, [%sp + 2047 + 192 + 48] - stx %g7, [%sp + 2047 + 192 + 56] + stx %g2, [%sp + 2047 + 192 + 8] + stx %g3, [%sp + 2047 + 192 + 16] + stx %g4, [%sp + 2047 + 192 + 24] + stx %g5, [%sp + 2047 + 192 + 32] + stx %g6, [%sp + 2047 + 192 + 40] + stx %g7, [%sp + 2047 + 192 + 48]
call of_client_interface mov %i0, %o0 mov %o0, %i0
ldx [%sp + 2047 + 192 + 0], %g1 - ldx [%sp + 2047 + 192 + 16], %g2 - ldx [%sp + 2047 + 192 + 24], %g3 - ldx [%sp + 2047 + 192 + 32], %g4 - ldx [%sp + 2047 + 192 + 40], %g5 - ldx [%sp + 2047 + 192 + 48], %g6 - ldx [%sp + 2047 + 192 + 56], %g7 + ldx [%sp + 2047 + 192 + 8], %g2 + ldx [%sp + 2047 + 192 + 16], %g3 + ldx [%sp + 2047 + 192 + 24], %g4 + ldx [%sp + 2047 + 192 + 32], %g5 + ldx [%sp + 2047 + 192 + 40], %g6 + ldx [%sp + 2047 + 192 + 48], %g7 return %i7+8 nop