aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/sparc/kernel/head_32.S10
-rw-r--r--arch/sparc/kernel/kernel.h3
-rw-r--r--arch/sparc/kernel/setup_32.c10
3 files changed, 15 insertions, 8 deletions
diff --git a/arch/sparc/kernel/head_32.S b/arch/sparc/kernel/head_32.S
index f22a729dfb3..6c6b8c27c1b 100644
--- a/arch/sparc/kernel/head_32.S
+++ b/arch/sparc/kernel/head_32.S
@@ -661,16 +661,10 @@ continue_boot:
661 wr %g3, PSR_ET, %psr 661 wr %g3, PSR_ET, %psr
662 WRITE_PAUSE 662 WRITE_PAUSE
663 663
664 /* First we call prom_init() to set up PROMLIB, then 664 /* Call sparc32_start_kernel(struct linux_romvec *rp) */
665 * off to start_kernel().
666 */
667
668 sethi %hi(prom_vector_p), %g5 665 sethi %hi(prom_vector_p), %g5
669 ld [%g5 + %lo(prom_vector_p)], %o0 666 ld [%g5 + %lo(prom_vector_p)], %o0
670 call prom_init 667 call sparc32_start_kernel
671 nop
672
673 call start_kernel
674 nop 668 nop
675 669
676 /* We should not get here. */ 670 /* We should not get here. */
diff --git a/arch/sparc/kernel/kernel.h b/arch/sparc/kernel/kernel.h
index a86372d3458..291bb5de9ce 100644
--- a/arch/sparc/kernel/kernel.h
+++ b/arch/sparc/kernel/kernel.h
@@ -26,6 +26,9 @@ static inline unsigned long kimage_addr_to_ra(const char *p)
26#endif 26#endif
27 27
28#ifdef CONFIG_SPARC32 28#ifdef CONFIG_SPARC32
29/* setup_32.c */
30void sparc32_start_kernel(struct linux_romvec *rp);
31
29/* cpu.c */ 32/* cpu.c */
30extern void cpu_probe(void); 33extern void cpu_probe(void);
31 34
diff --git a/arch/sparc/kernel/setup_32.c b/arch/sparc/kernel/setup_32.c
index c052313f4dc..68dd63dea36 100644
--- a/arch/sparc/kernel/setup_32.c
+++ b/arch/sparc/kernel/setup_32.c
@@ -32,6 +32,7 @@
32#include <linux/cpu.h> 32#include <linux/cpu.h>
33#include <linux/kdebug.h> 33#include <linux/kdebug.h>
34#include <linux/export.h> 34#include <linux/export.h>
35#include <linux/start_kernel.h>
35 36
36#include <asm/io.h> 37#include <asm/io.h>
37#include <asm/processor.h> 38#include <asm/processor.h>
@@ -244,6 +245,15 @@ struct tt_entry *sparc_ttable;
244 245
245struct pt_regs fake_swapper_regs; 246struct pt_regs fake_swapper_regs;
246 247
248/* Called from head_32.S - before we have setup anything
249 * in the kernel. Be very careful with what you do here.
250 */
251void __init sparc32_start_kernel(struct linux_romvec *rp)
252{
253 prom_init(rp);
254 start_kernel();
255}
256
247void __init setup_arch(char **cmdline_p) 257void __init setup_arch(char **cmdline_p)
248{ 258{
249 int i; 259 int i;