[OpenBIOS] [commit] r749 - trunk/openbios-devel/arch/sparc64
repository service
svn at openbios.org
Fri Apr 16 12:20:07 CEST 2010
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 at 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
More information about the OpenBIOS
mailing list