|
@@ -672,14 +672,12 @@ tlb_fixup_done:
|
|
sethi %hi(init_thread_union), %g6
|
|
sethi %hi(init_thread_union), %g6
|
|
or %g6, %lo(init_thread_union), %g6
|
|
or %g6, %lo(init_thread_union), %g6
|
|
ldx [%g6 + TI_TASK], %g4
|
|
ldx [%g6 + TI_TASK], %g4
|
|
- mov %sp, %l6
|
|
|
|
|
|
|
|
wr %g0, ASI_P, %asi
|
|
wr %g0, ASI_P, %asi
|
|
mov 1, %g1
|
|
mov 1, %g1
|
|
sllx %g1, THREAD_SHIFT, %g1
|
|
sllx %g1, THREAD_SHIFT, %g1
|
|
sub %g1, (STACKFRAME_SZ + STACK_BIAS), %g1
|
|
sub %g1, (STACKFRAME_SZ + STACK_BIAS), %g1
|
|
add %g6, %g1, %sp
|
|
add %g6, %g1, %sp
|
|
- mov 0, %fp
|
|
|
|
|
|
|
|
/* Set per-cpu pointer initially to zero, this makes
|
|
/* Set per-cpu pointer initially to zero, this makes
|
|
* the boot-cpu use the in-kernel-image per-cpu areas
|
|
* the boot-cpu use the in-kernel-image per-cpu areas
|
|
@@ -706,44 +704,14 @@ tlb_fixup_done:
|
|
nop
|
|
nop
|
|
#endif
|
|
#endif
|
|
|
|
|
|
- mov %l6, %o1 ! OpenPROM stack
|
|
|
|
call prom_init
|
|
call prom_init
|
|
mov %l7, %o0 ! OpenPROM cif handler
|
|
mov %l7, %o0 ! OpenPROM cif handler
|
|
|
|
|
|
- /* Initialize current_thread_info()->cpu as early as possible.
|
|
|
|
- * In order to do that accurately we have to patch up the get_cpuid()
|
|
|
|
- * assembler sequences. And that, in turn, requires that we know
|
|
|
|
- * if we are on a Starfire box or not. While we're here, patch up
|
|
|
|
- * the sun4v sequences as well.
|
|
|
|
|
|
+ /* To create a one-register-window buffer between the kernel's
|
|
|
|
+ * initial stack and the last stack frame we use from the firmware,
|
|
|
|
+ * do the rest of the boot from a C helper function.
|
|
*/
|
|
*/
|
|
- call check_if_starfire
|
|
|
|
- nop
|
|
|
|
- call per_cpu_patch
|
|
|
|
- nop
|
|
|
|
- call sun4v_patch
|
|
|
|
- nop
|
|
|
|
-
|
|
|
|
-#ifdef CONFIG_SMP
|
|
|
|
- call hard_smp_processor_id
|
|
|
|
- nop
|
|
|
|
- cmp %o0, NR_CPUS
|
|
|
|
- blu,pt %xcc, 1f
|
|
|
|
- nop
|
|
|
|
- call boot_cpu_id_too_large
|
|
|
|
- nop
|
|
|
|
- /* Not reached... */
|
|
|
|
-
|
|
|
|
-1:
|
|
|
|
-#else
|
|
|
|
- mov 0, %o0
|
|
|
|
-#endif
|
|
|
|
- sth %o0, [%g6 + TI_CPU]
|
|
|
|
-
|
|
|
|
- call prom_init_report
|
|
|
|
- nop
|
|
|
|
-
|
|
|
|
- /* Off we go.... */
|
|
|
|
- call start_kernel
|
|
|
|
|
|
+ call start_early_boot
|
|
nop
|
|
nop
|
|
/* Not reached... */
|
|
/* Not reached... */
|
|
|
|
|