MIPS: BMIPS: Fix PRID_IMP_BMIPS5000 masking for BMIPS5200
authorFlorian Fainelli <f.fainelli@gmail.com>
Sat, 30 Jan 2016 05:17:26 +0000 (21:17 -0800)
committerRalf Baechle <ralf@linux-mips.org>
Mon, 9 May 2016 10:00:01 +0000 (12:00 +0200)
BMIPS5000 have a PrID value of 0x5A00 and BMIPS5200 have a PrID value of
0x5B00, which, masked with 0x5A00, returns 0x5A00. Update all conditionals on
the PrID to cover both variants since we are going to need this to enable
BMIPS5200 SMP. The existing check, masking with 0xFF00 would not cover
BMIPS5200 at all.

Fixes: 68e6a78373a6d ("MIPS: BMIPS: Add PRId for BMIPS5200 (Whirlwind)")
Fixes: 6465460c92a85 ("MIPS: BMIPS: change compile time checks to runtime checks")
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Cc: john@phrozen.org
Cc: cernekee@gmail.com
Cc: jogo@openwrt.org
Cc: jaedon.shin@gmail.com
Cc: jfraser@broadcom.com
Cc: pgynther@google.com
Cc: dragan.stancevic@gmail.com
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/12279/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
arch/mips/kernel/bmips_vec.S

index 86495072a922f31e0214cad3b6ac71c10aaf5fa8..d9495f3f3fad345521aa5968731cd1f51e65020c 100644 (file)
@@ -93,7 +93,8 @@ NESTED(bmips_reset_nmi_vec, PT_SIZE, sp)
 #if defined(CONFIG_CPU_BMIPS5000)
        mfc0    k0, CP0_PRID
        li      k1, PRID_IMP_BMIPS5000
-       andi    k0, 0xff00
+       /* mask with PRID_IMP_BMIPS5000 to cover both variants */
+       andi    k0, PRID_IMP_BMIPS5000
        bne     k0, k1, 1f
 
        /* if we're not on core 0, this must be the SMP boot signal */
@@ -166,10 +167,12 @@ bmips_smp_entry:
 2:
 #endif /* CONFIG_CPU_BMIPS4350 || CONFIG_CPU_BMIPS4380 */
 #if defined(CONFIG_CPU_BMIPS5000)
-       /* set exception vector base */
+       /* mask with PRID_IMP_BMIPS5000 to cover both variants */
        li      k1, PRID_IMP_BMIPS5000
+       andi    k0, PRID_IMP_BMIPS5000
        bne     k0, k1, 3f
 
+       /* set exception vector base */
        la      k0, ebase
        lw      k0, 0(k0)
        mtc0    k0, $15, 1
@@ -263,6 +266,8 @@ LEAF(bmips_enable_xks01)
 #endif /* CONFIG_CPU_BMIPS4380 */
 #if defined(CONFIG_CPU_BMIPS5000)
        li      t1, PRID_IMP_BMIPS5000
+       /* mask with PRID_IMP_BMIPS5000 to cover both variants */
+       andi    t2, PRID_IMP_BMIPS5000
        bne     t2, t1, 2f
 
        mfc0    t0, $22, 5