Commit 330cfe01 authored by Thiemo Seufer's avatar Thiemo Seufer Committed by Ralf Baechle

Let r4600 PRID detection match only legacy CPUs, cleanups.

Signed-off-by: default avatarThiemo Seufer <ths@networkno.de>
Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
parent 65dd7026
...@@ -50,8 +50,8 @@ static struct bcache_ops no_sc_ops = { ...@@ -50,8 +50,8 @@ static struct bcache_ops no_sc_ops = {
struct bcache_ops *bcops = &no_sc_ops; struct bcache_ops *bcops = &no_sc_ops;
#define cpu_is_r4600_v1_x() ((read_c0_prid() & 0xfffffff0) == 0x2010) #define cpu_is_r4600_v1_x() ((read_c0_prid() & 0xfffffff0) == 0x00002010)
#define cpu_is_r4600_v2_x() ((read_c0_prid() & 0xfffffff0) == 0x2020) #define cpu_is_r4600_v2_x() ((read_c0_prid() & 0xfffffff0) == 0x00002020)
#define R4600_HIT_CACHEOP_WAR_IMPL \ #define R4600_HIT_CACHEOP_WAR_IMPL \
do { \ do { \
......
...@@ -25,7 +25,10 @@ ...@@ -25,7 +25,10 @@
#include <asm/cpu.h> #include <asm/cpu.h>
#include <asm/war.h> #include <asm/war.h>
#define half_scache_line_size() (cpu_scache_line_size() >> 1) #define half_scache_line_size() (cpu_scache_line_size() >> 1)
#define cpu_is_r4600_v1_x() ((read_c0_prid() & 0xfffffff0) == 0x00002010)
#define cpu_is_r4600_v2_x() ((read_c0_prid() & 0xfffffff0) == 0x00002020)
/* /*
* Maximum sizes: * Maximum sizes:
...@@ -198,14 +201,14 @@ static inline void build_cdex_p(void) ...@@ -198,14 +201,14 @@ static inline void build_cdex_p(void)
if (store_offset & (cpu_dcache_line_size() - 1)) if (store_offset & (cpu_dcache_line_size() - 1))
return; return;
if (R4600_V1_HIT_CACHEOP_WAR && ((read_c0_prid() & 0xfff0) == 0x2010)) { if (R4600_V1_HIT_CACHEOP_WAR && cpu_is_r4600_v1_x()) {
build_nop(); build_nop();
build_nop(); build_nop();
build_nop(); build_nop();
build_nop(); build_nop();
} }
if (R4600_V2_HIT_CACHEOP_WAR && ((read_c0_prid() & 0xfff0) == 0x2020)) if (R4600_V2_HIT_CACHEOP_WAR && cpu_is_r4600_v2_x())
build_insn_word(0x8c200000); /* lw $zero, ($at) */ build_insn_word(0x8c200000); /* lw $zero, ($at) */
mi.c_format.opcode = cache_op; mi.c_format.opcode = cache_op;
...@@ -361,7 +364,7 @@ void __init build_clear_page(void) ...@@ -361,7 +364,7 @@ void __init build_clear_page(void)
build_addiu_a2_a0(PAGE_SIZE - (cpu_has_prefetch ? pref_offset_clear : 0)); build_addiu_a2_a0(PAGE_SIZE - (cpu_has_prefetch ? pref_offset_clear : 0));
if (R4600_V2_HIT_CACHEOP_WAR && ((read_c0_prid() & 0xfff0) == 0x2020)) if (R4600_V2_HIT_CACHEOP_WAR && cpu_is_r4600_v2_x())
build_insn_word(0x3c01a000); /* lui $at, 0xa000 */ build_insn_word(0x3c01a000); /* lui $at, 0xa000 */
dest = label(); dest = label();
...@@ -417,7 +420,7 @@ void __init build_copy_page(void) ...@@ -417,7 +420,7 @@ void __init build_copy_page(void)
build_addiu_a2_a0(PAGE_SIZE - (cpu_has_prefetch ? pref_offset_copy : 0)); build_addiu_a2_a0(PAGE_SIZE - (cpu_has_prefetch ? pref_offset_copy : 0));
if (R4600_V2_HIT_CACHEOP_WAR && ((read_c0_prid() & 0xfff0) == 0x2020)) if (R4600_V2_HIT_CACHEOP_WAR && cpu_is_r4600_v2_x())
build_insn_word(0x3c01a000); /* lui $at, 0xa000 */ build_insn_word(0x3c01a000); /* lui $at, 0xa000 */
dest = label(); dest = label();
......
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