[OpenBIOS] r510 - trunk/openbios-devel/arch/sparc64

svn at openbios.org svn at openbios.org
Sun Jul 12 12:13:40 CEST 2009


Author: blueswirl
Date: 2009-07-12 12:13:39 +0200 (Sun, 12 Jul 2009)
New Revision: 510

Added:
   trunk/openbios-devel/arch/sparc64/call-client.S
Log:
Add a file missing from r508


Added: trunk/openbios-devel/arch/sparc64/call-client.S
===================================================================
--- trunk/openbios-devel/arch/sparc64/call-client.S	                        (rev 0)
+++ trunk/openbios-devel/arch/sparc64/call-client.S	2009-07-12 10:13:39 UTC (rev 510)
@@ -0,0 +1,44 @@
+	.globl	sparc64_of_client_interface
+
+	.data
+	.align	8
+client_globals:
+	.skip 64
+
+	.text
+	.align	4
+        .register %g2, #scratch
+        .register %g3, #scratch
+        .register %g6, #scratch
+        .register %g7, #scratch
+/*
+	make some more space on stack since linux kernel only provides 128 bytes
+	without memory to spill registers (used by gcc in -O0 mode)
+*/
+
+sparc64_of_client_interface:
+	/* make sure caller's windows are on caller's stack */
+	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]
+
+	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
+	return  %i7+8
+	 nop
+




More information about the OpenBIOS mailing list