Changeset a03b609 in mainline for kernel/arch/arm32/src
- Timestamp:
- 2013-01-19T18:17:27Z (13 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 26e3db2
- Parents:
- 827aae5
- Location:
- kernel/arch/arm32/src
- Files:
-
- 2 edited
-
cpu/cpu.c (modified) (4 diffs)
-
exception.c (modified) (2 diffs)
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(); -
kernel/arch/arm32/src/exception.c
r827aae5 ra03b609 39 39 #include <interrupt.h> 40 40 #include <arch/mm/page_fault.h> 41 #include <arch/cp15.h> 41 42 #include <arch/barrier.h> 42 43 #include <print.h> … … 136 137 static void high_vectors(void) 137 138 { 138 uint32_t control_reg = 0; 139 asm volatile ( 140 "mrc p15, 0, %[control_reg], c1, c0" 141 : [control_reg] "=r" (control_reg) 142 ); 139 uint32_t control_reg = SCTLR_read(); 143 140 144 141 /* switch on the high vectors bit */ 145 control_reg |= CP15_R1_HIGH_VECTORS_EN; 146 147 asm volatile ( 148 "mcr p15, 0, %[control_reg], c1, c0" 149 :: [control_reg] "r" (control_reg) 150 ); 142 control_reg |= SCTLR_HIGH_VECTORS_EN_FLAG; 143 144 SCTLR_write(control_reg); 151 145 } 152 146 #endif
Note:
See TracChangeset
for help on using the changeset viewer.
