[OpenBIOS] [PATCH] Sparc32: avoid problems with SMP table

Blue Swirl blauwirbel at gmail.com
Sun May 6 20:45:00 CEST 2012


Check CPU ID if we're running on boot CPU. If so,
don't use SMP table information since it may contain
uninitialized or garbage values.

Signed-off-by: Blue Swirl <blauwirbel at gmail.com>
---
 arch/sparc32/entry.S |   11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/arch/sparc32/entry.S b/arch/sparc32/entry.S
index 9f5356c..24c4cbf 100644
--- a/arch/sparc32/entry.S
+++ b/arch/sparc32/entry.S
@@ -126,12 +126,23 @@ entry:
         set     0x2000, %g3
         sub     %g1, %g3, %g6

+        ! Check if this is the boot CPU and skip SMP table check if yes
+        ! XXX: not all CPUs should have MXCC
+        set     0x1c00f00, %g2
+        ldda    [%g2] ASI_CONTROL, %g2
+        srl     %g3, 24, %g7
+        sub     %g7, 8, %g7
+        tst     %g7
+        bz      skip_table
+         nop
+
         ! Calculate SMP table location
 	set	0x1f0c, %g2
         add     %g6, %g2, %g2                 ! valid?
         lda     [%g2] ASI_M_BYPASS, %g7
         sta     %g0, [%g2] ASI_M_BYPASS

+skip_table:
         ! Get machine ID from configuration device
         mov     FW_CFG_MACHINE_ID, %g2
         sub     %g5, 2, %g5
-- 
1.7.10



More information about the OpenBIOS mailing list