[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