Index: arch/sparc64/boot.c =================================================================== --- arch/sparc64/boot.c (revision 484) +++ arch/sparc64/boot.c (working copy) @@ -26,11 +26,11 @@ if (kernel_size) { void (*entry)(unsigned long p1, unsigned long p2, unsigned long p3, unsigned long p4, unsigned long p5); - extern int of_client_interface( int *params ); + extern int sparc64_of_client_interface( int *params ); printk("[sparc64] Kernel already loaded\n"); entry = (void *) (unsigned long)kernel_image; - entry(0, 0, 0, 0, (unsigned long)&of_client_interface); + entry(0, 0, 0, 0, (unsigned long)&sparc64_of_client_interface); } if(!path) { Index: arch/sparc64/build.xml =================================================================== --- arch/sparc64/build.xml (revision 484) +++ arch/sparc64/build.xml (working copy) @@ -29,6 +29,10 @@ + + + @@ -39,6 +43,7 @@ + @@ -77,6 +82,7 @@ + Index: arch/sparc64/call-client.S =================================================================== --- arch/sparc64/call-client.S (revision 0) +++ arch/sparc64/call-client.S (revision 0) @@ -0,0 +1,17 @@ + .globl sparc64_of_client_interface + + .text + .align 4 +/* + 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: + save %sp, -192, %sp + call of_client_interface + mov %i0, %o0 + mov %o0, %i0 + return %i7+8 + nop +