diff options
| -rw-r--r-- | arch/arc/include/asm/arcregs.h | 7 | ||||
| -rw-r--r-- | arch/arc/kernel/setup.c | 8 |
2 files changed, 10 insertions, 5 deletions
diff --git a/arch/arc/include/asm/arcregs.h b/arch/arc/include/asm/arcregs.h index 070f58827a5c..c8f57b8449dc 100644 --- a/arch/arc/include/asm/arcregs.h +++ b/arch/arc/include/asm/arcregs.h | |||
| @@ -89,11 +89,10 @@ | |||
| 89 | #define ECR_C_BIT_DTLB_LD_MISS 8 | 89 | #define ECR_C_BIT_DTLB_LD_MISS 8 |
| 90 | #define ECR_C_BIT_DTLB_ST_MISS 9 | 90 | #define ECR_C_BIT_DTLB_ST_MISS 9 |
| 91 | 91 | ||
| 92 | |||
| 93 | /* Auxiliary registers */ | 92 | /* Auxiliary registers */ |
| 94 | #define AUX_IDENTITY 4 | 93 | #define AUX_IDENTITY 4 |
| 95 | #define AUX_INTR_VEC_BASE 0x25 | 94 | #define AUX_INTR_VEC_BASE 0x25 |
| 96 | 95 | #define AUX_NON_VOL 0x5e | |
| 97 | 96 | ||
| 98 | /* | 97 | /* |
| 99 | * Floating Pt Registers | 98 | * Floating Pt Registers |
| @@ -240,9 +239,9 @@ struct bcr_extn_xymem { | |||
| 240 | 239 | ||
| 241 | struct bcr_perip { | 240 | struct bcr_perip { |
| 242 | #ifdef CONFIG_CPU_BIG_ENDIAN | 241 | #ifdef CONFIG_CPU_BIG_ENDIAN |
| 243 | unsigned int start:8, pad2:8, sz:8, pad:8; | 242 | unsigned int start:8, pad2:8, sz:8, ver:8; |
| 244 | #else | 243 | #else |
| 245 | unsigned int pad:8, sz:8, pad2:8, start:8; | 244 | unsigned int ver:8, sz:8, pad2:8, start:8; |
| 246 | #endif | 245 | #endif |
| 247 | }; | 246 | }; |
| 248 | 247 | ||
diff --git a/arch/arc/kernel/setup.c b/arch/arc/kernel/setup.c index 18cc01591c96..f2f771bd3ede 100644 --- a/arch/arc/kernel/setup.c +++ b/arch/arc/kernel/setup.c | |||
| @@ -47,6 +47,7 @@ static void read_arc_build_cfg_regs(void) | |||
| 47 | struct bcr_perip uncached_space; | 47 | struct bcr_perip uncached_space; |
| 48 | struct bcr_generic bcr; | 48 | struct bcr_generic bcr; |
| 49 | struct cpuinfo_arc *cpu = &cpuinfo_arc700[smp_processor_id()]; | 49 | struct cpuinfo_arc *cpu = &cpuinfo_arc700[smp_processor_id()]; |
| 50 | unsigned long perip_space; | ||
| 50 | FIX_PTR(cpu); | 51 | FIX_PTR(cpu); |
| 51 | 52 | ||
| 52 | READ_BCR(AUX_IDENTITY, cpu->core); | 53 | READ_BCR(AUX_IDENTITY, cpu->core); |
| @@ -56,7 +57,12 @@ static void read_arc_build_cfg_regs(void) | |||
| 56 | cpu->vec_base = read_aux_reg(AUX_INTR_VEC_BASE); | 57 | cpu->vec_base = read_aux_reg(AUX_INTR_VEC_BASE); |
| 57 | 58 | ||
| 58 | READ_BCR(ARC_REG_D_UNCACH_BCR, uncached_space); | 59 | READ_BCR(ARC_REG_D_UNCACH_BCR, uncached_space); |
| 59 | BUG_ON((uncached_space.start << 24) != ARC_UNCACHED_ADDR_SPACE); | 60 | if (uncached_space.ver < 3) |
| 61 | perip_space = uncached_space.start << 24; | ||
| 62 | else | ||
| 63 | perip_space = read_aux_reg(AUX_NON_VOL) & 0xF0000000; | ||
| 64 | |||
| 65 | BUG_ON(perip_space != ARC_UNCACHED_ADDR_SPACE); | ||
| 60 | 66 | ||
| 61 | READ_BCR(ARC_REG_MUL_BCR, cpu->extn_mpy); | 67 | READ_BCR(ARC_REG_MUL_BCR, cpu->extn_mpy); |
| 62 | 68 | ||
