|
@@ -233,12 +233,13 @@ static void __init cacheid_init(void)
|
|
|
unsigned int cachetype = read_cpuid_cachetype();
|
|
|
unsigned int arch = cpu_architecture();
|
|
|
|
|
|
- if (arch >= CPU_ARCH_ARMv7) {
|
|
|
- cacheid = CACHEID_VIPT_NONALIASING;
|
|
|
- if ((cachetype & (3 << 14)) == 1 << 14)
|
|
|
- cacheid |= CACHEID_ASID_TAGGED;
|
|
|
- } else if (arch >= CPU_ARCH_ARMv6) {
|
|
|
- if (cachetype & (1 << 23))
|
|
|
+ if (arch >= CPU_ARCH_ARMv6) {
|
|
|
+ if ((cachetype & (7 << 29)) == 4 << 29) {
|
|
|
+ /* ARMv7 register format */
|
|
|
+ cacheid = CACHEID_VIPT_NONALIASING;
|
|
|
+ if ((cachetype & (3 << 14)) == 1 << 14)
|
|
|
+ cacheid |= CACHEID_ASID_TAGGED;
|
|
|
+ } else if (cachetype & (1 << 23))
|
|
|
cacheid = CACHEID_VIPT_ALIASING;
|
|
|
else
|
|
|
cacheid = CACHEID_VIPT_NONALIASING;
|