Commit 3b75752b authored by Florian Fainelli's avatar Florian Fainelli Committed by Kamal Mostafa

MIPS: BMIPS: Fix PRID_IMP_BMIPS5000 masking for BMIPS5200

commit cbbda6e7 upstream.

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: 68e6a783 ("MIPS: BMIPS: Add PRId for BMIPS5200 (Whirlwind)")
Fixes: 6465460c ("MIPS: BMIPS: change compile time checks to runtime checks")
Signed-off-by: default avatarFlorian 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: default avatarRalf Baechle <ralf@linux-mips.org>
Signed-off-by: default avatarKamal Mostafa <kamal@canonical.com>
parent f9fd162c
...@@ -93,7 +93,8 @@ NESTED(bmips_reset_nmi_vec, PT_SIZE, sp) ...@@ -93,7 +93,8 @@ NESTED(bmips_reset_nmi_vec, PT_SIZE, sp)
#if defined(CONFIG_CPU_BMIPS5000) #if defined(CONFIG_CPU_BMIPS5000)
mfc0 k0, CP0_PRID mfc0 k0, CP0_PRID
li k1, PRID_IMP_BMIPS5000 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 bne k0, k1, 1f
/* if we're not on core 0, this must be the SMP boot signal */ /* if we're not on core 0, this must be the SMP boot signal */
...@@ -166,10 +167,12 @@ bmips_smp_entry: ...@@ -166,10 +167,12 @@ bmips_smp_entry:
2: 2:
#endif /* CONFIG_CPU_BMIPS4350 || CONFIG_CPU_BMIPS4380 */ #endif /* CONFIG_CPU_BMIPS4350 || CONFIG_CPU_BMIPS4380 */
#if defined(CONFIG_CPU_BMIPS5000) #if defined(CONFIG_CPU_BMIPS5000)
/* set exception vector base */ /* mask with PRID_IMP_BMIPS5000 to cover both variants */
li k1, PRID_IMP_BMIPS5000 li k1, PRID_IMP_BMIPS5000
andi k0, PRID_IMP_BMIPS5000
bne k0, k1, 3f bne k0, k1, 3f
/* set exception vector base */
la k0, ebase la k0, ebase
lw k0, 0(k0) lw k0, 0(k0)
mtc0 k0, $15, 1 mtc0 k0, $15, 1
...@@ -263,6 +266,8 @@ LEAF(bmips_enable_xks01) ...@@ -263,6 +266,8 @@ LEAF(bmips_enable_xks01)
#endif /* CONFIG_CPU_BMIPS4380 */ #endif /* CONFIG_CPU_BMIPS4380 */
#if defined(CONFIG_CPU_BMIPS5000) #if defined(CONFIG_CPU_BMIPS5000)
li t1, PRID_IMP_BMIPS5000 li t1, PRID_IMP_BMIPS5000
/* mask with PRID_IMP_BMIPS5000 to cover both variants */
andi t2, PRID_IMP_BMIPS5000
bne t2, t1, 2f bne t2, t1, 2f
mfc0 t0, $22, 5 mfc0 t0, $22, 5
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment