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
+