|
@@ -816,10 +816,7 @@ got_prop:
|
|
|
|
|
|
.global leon_smp_init
|
|
|
leon_smp_init:
|
|
|
- sethi %hi(boot_cpu_id), %g1 ! master always 0
|
|
|
- stb %g0, [%g1 + %lo(boot_cpu_id)]
|
|
|
- sethi %hi(boot_cpu_id4), %g1 ! master always 0
|
|
|
- stb %g0, [%g1 + %lo(boot_cpu_id4)]
|
|
|
+ /* let boot_cpu_id default to 0 (master always 0) */
|
|
|
|
|
|
rd %asr17,%g1
|
|
|
srl %g1,28,%g1
|
|
@@ -893,9 +890,6 @@ sun4d_init:
|
|
|
sta %g4, [%g0] ASI_M_VIKING_TMP1
|
|
|
sethi %hi(boot_cpu_id), %g5
|
|
|
stb %g4, [%g5 + %lo(boot_cpu_id)]
|
|
|
- sll %g4, 2, %g4
|
|
|
- sethi %hi(boot_cpu_id4), %g5
|
|
|
- stb %g4, [%g5 + %lo(boot_cpu_id4)]
|
|
|
#endif
|
|
|
|
|
|
/* Fall through to sun4m_init */
|
|
@@ -1024,14 +1018,28 @@ sun4c_continue_boot:
|
|
|
bl 1b
|
|
|
add %o0, 0x1, %o0
|
|
|
|
|
|
+ /* If boot_cpu_id has not been setup by machine specific
|
|
|
+ * init-code above we default it to zero.
|
|
|
+ */
|
|
|
+ sethi %hi(boot_cpu_id), %g2
|
|
|
+ ldub [%g2 + %lo(boot_cpu_id)], %g3
|
|
|
+ cmp %g3, 0xff
|
|
|
+ bne 1f
|
|
|
+ nop
|
|
|
+ mov %g0, %g3
|
|
|
+ stub %g3, [%g2 + %lo(boot_cpu_id)]
|
|
|
+
|
|
|
+1: /* boot_cpu_id set. calculate boot_cpu_id4 = boot_cpu_id*4 */
|
|
|
+ sll %g3, 2, %g3
|
|
|
+ sethi %hi(boot_cpu_id4), %g2
|
|
|
+ stub %g3, [%g2 + %lo(boot_cpu_id4)]
|
|
|
+
|
|
|
/* Initialize the uwinmask value for init task just in case.
|
|
|
* But first make current_set[boot_cpu_id] point to something useful.
|
|
|
*/
|
|
|
set init_thread_union, %g6
|
|
|
set current_set, %g2
|
|
|
#ifdef CONFIG_SMP
|
|
|
- sethi %hi(boot_cpu_id4), %g3
|
|
|
- ldub [%g3 + %lo(boot_cpu_id4)], %g3
|
|
|
st %g6, [%g2]
|
|
|
add %g2, %g3, %g2
|
|
|
#endif
|