diff options
author | Steven J. Hill <sjhill@mips.com> | 2012-06-26 00:11:03 -0400 |
---|---|---|
committer | Steven J. Hill <sjhill@mips.com> | 2012-09-13 16:21:47 -0400 |
commit | 006a851b10a395955c153a145ad8241494d43688 (patch) | |
tree | e636786a07cf84b2e587c5403564465a9d5e8fd4 /arch/mips/mm | |
parent | fea7a08acb13524b47711625eebea40a0ede69a0 (diff) |
MIPS: Add support for the 1074K core.
Signed-off-by: Steven J. Hill <sjhill@mips.com>
Diffstat (limited to 'arch/mips/mm')
-rw-r--r-- | arch/mips/mm/c-r4k.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/arch/mips/mm/c-r4k.c b/arch/mips/mm/c-r4k.c index f092c265dc63..4c32ede464b5 100644 --- a/arch/mips/mm/c-r4k.c +++ b/arch/mips/mm/c-r4k.c | |||
@@ -786,6 +786,25 @@ static inline void rm7k_erratum31(void) | |||
786 | } | 786 | } |
787 | } | 787 | } |
788 | 788 | ||
789 | static inline void alias_74k_erratum(struct cpuinfo_mips *c) | ||
790 | { | ||
791 | /* | ||
792 | * Early versions of the 74K do not update the cache tags on a | ||
793 | * vtag miss/ptag hit which can occur in the case of KSEG0/KUSEG | ||
794 | * aliases. In this case it is better to treat the cache as always | ||
795 | * having aliases. | ||
796 | */ | ||
797 | if ((c->processor_id & 0xff) <= PRID_REV_ENCODE_332(2, 4, 0)) | ||
798 | c->dcache.flags |= MIPS_CACHE_VTAG; | ||
799 | if ((c->processor_id & 0xff) == PRID_REV_ENCODE_332(2, 4, 0)) | ||
800 | write_c0_config6(read_c0_config6() | MIPS_CONF6_SYND); | ||
801 | if (((c->processor_id & 0xff00) == PRID_IMP_1074K) && | ||
802 | ((c->processor_id & 0xff) <= PRID_REV_ENCODE_332(1, 1, 0))) { | ||
803 | c->dcache.flags |= MIPS_CACHE_VTAG; | ||
804 | write_c0_config6(read_c0_config6() | MIPS_CONF6_SYND); | ||
805 | } | ||
806 | } | ||
807 | |||
789 | static char *way_string[] __cpuinitdata = { NULL, "direct mapped", "2-way", | 808 | static char *way_string[] __cpuinitdata = { NULL, "direct mapped", "2-way", |
790 | "3-way", "4-way", "5-way", "6-way", "7-way", "8-way" | 809 | "3-way", "4-way", "5-way", "6-way", "7-way", "8-way" |
791 | }; | 810 | }; |
@@ -1056,6 +1075,8 @@ static void __cpuinit probe_pcache(void) | |||
1056 | case CPU_34K: | 1075 | case CPU_34K: |
1057 | case CPU_74K: | 1076 | case CPU_74K: |
1058 | case CPU_1004K: | 1077 | case CPU_1004K: |
1078 | if (c->cputype == CPU_74K) | ||
1079 | alias_74k_erratum(c); | ||
1059 | if ((read_c0_config7() & (1 << 16))) { | 1080 | if ((read_c0_config7() & (1 << 16))) { |
1060 | /* effectively physically indexed dcache, | 1081 | /* effectively physically indexed dcache, |
1061 | thus no virtual aliases. */ | 1082 | thus no virtual aliases. */ |