Changeset a03b609 in mainline for kernel/arch/arm32/src/cpu/cpu.c
- Timestamp:
- 2013-01-19T18:17:27Z (12 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 26e3db2
- Parents:
- 827aae5
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/arm32/src/cpu/cpu.c
r827aae5 ra03b609 129 129 void cpu_arch_init(void) 130 130 { 131 /* Get rid of any boot code hiding in ICache 132 * This is safe without regards to ICache state. */ 133 memory_barrier(); 134 smc_coherence(); 135 136 uint32_t control_reg = 0; 137 asm volatile ( 138 "mrc p15, 0, %[control_reg], c1, c0" 139 : [control_reg] "=r" (control_reg) 140 ); 131 uint32_t control_reg = SCTLR_read(); 141 132 142 133 /* Turn off tex remap, RAZ/WI prior to armv7 */ 143 control_reg &= ~ CP15_R1_TEX_REMAP_EN;134 control_reg &= ~SCTLR_TEX_REMAP_EN_FLAG; 144 135 /* Turn off accessed flag, RAZ/WI prior to armv7 */ 145 control_reg &= ~( CP15_R1_ACCESS_FLAG_EN | CP15_R1_HW_ACCESS_FLAG_EN);136 control_reg &= ~(SCTLR_ACCESS_FLAG_EN_FLAG | SCTLR_HW_ACCESS_FLAG_EN_FLAG); 146 137 /* Disable branch prediction RAZ/WI if not supported */ 147 control_reg &= ~ CP15_R1_BRANCH_PREDICT_EN;138 control_reg &= ~SCTLR_BRANCH_PREDICT_EN_FLAG; 148 139 149 140 /* Unaligned access is supported on armv6+ */ … … 153 144 * see ARM Architecture Reference Manual ARMv7-A and ARMv7-R edition 154 145 * L.3.1 (p. 2456) */ 155 control_reg |= CP15_R1_UNALIGNED_EN;146 control_reg |= SCTLR_UNALIGNED_EN_FLAG; 156 147 /* Disable alignment checks, this turns unaligned access to undefined, 157 148 * unless U bit is set. */ 158 control_reg &= ~ CP15_R1_ALIGN_CHECK_EN;149 control_reg &= ~SCTLR_ALIGN_CHECK_EN_FLAG; 159 150 /* Enable caching, On arm prior to armv7 there is only one level 160 151 * of caches. Data cache is coherent. … … 167 158 * L2 Cache for armv7 was enabled in boot code. 168 159 */ 169 control_reg |= CP15_R1_CACHE_EN;160 control_reg |= SCTLR_CACHE_EN_FLAG; 170 161 #endif 171 162 #ifdef PROCESSOR_cortex_a8 … … 173 164 * Cortex-A8 implements IVIPT extension. 174 165 * Cortex-A8 TRM ch. 7.2.6 p. 7-4 (PDF 245) */ 175 control_reg |= CP15_R1_INST_CACHE_EN; 176 #endif 177 178 asm volatile ( 179 "mcr p15, 0, %[control_reg], c1, c0" 180 :: [control_reg] "r" (control_reg) 181 ); 166 control_reg |= SCTLR_INST_CACHE_EN_FLAG; 167 #endif 168 SCTLR_write(control_reg); 169 182 170 #ifdef CONFIG_FPU 183 171 fpu_setup();
Note:
See TracChangeset
for help on using the changeset viewer.