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 +