Changeset 8abcf4e in mainline
- Timestamp:
- 2013-08-04T12:41:47Z (12 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- f9f758e
- Parents:
- 186b919
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/arm32/src/cpu/cpu.c
r186b919 r8abcf4e 157 157 #endif 158 158 #ifdef PROCESSOR_ARCH_armv7_a 159 /* ICache coherency is elaborate on in barrier.h.159 /* ICache coherency is elaborated on in barrier.h. 160 160 * VIPT and PIPT caches need maintenance only on code modify, 161 161 * so it should be safe for general use. … … 204 204 #ifdef PROCESSOR_ARCH_armv7_a 205 205 CSSELR_write((level & CCSELR_LEVEL_MASK) << CCSELR_LEVEL_SHIFT); 206 const unsigned ls_log = 2 + 207 ((CCSIDR_read() >> CCSIDR_LINESIZE_SHIFT) & CCSIDR_LINESIZE_MASK); 208 return ls_log + 2; //return log2(bytes) 206 const uint32_t ccsidr = CCSIDR_read(); 207 return CCSIDR_LINESIZE_LOG(ccsidr); 209 208 #endif 210 209 return 0; … … 217 216 #ifdef PROCESSOR_ARCH_armv7_a 218 217 CSSELR_write((level & CCSELR_LEVEL_MASK) << CCSELR_LEVEL_SHIFT); 219 const unsigned ways = 1 + 220 ((CCSIDR_read() >> CCSIDR_ASSOC_SHIFT) & CCSIDR_ASSOC_MASK); 221 return ways; 218 const uint32_t ccsidr = CCSIDR_read(); 219 return CCSIDR_WAYS(ccsidr); 222 220 #endif 223 221 return 0; … … 229 227 #ifdef PROCESSOR_ARCH_armv7_a 230 228 CSSELR_write((level & CCSELR_LEVEL_MASK) << CCSELR_LEVEL_SHIFT); 231 const unsigned sets = 1 + 232 ((CCSIDR_read() >> CCSIDR_NUMSETS_SHIFT) & CCSIDR_NUMSETS_MASK); 233 return sets; 229 const uint32_t ccsidr = CCSIDR_read(); 230 return CCSIDR_SETS(ccsidr); 234 231 #endif 235 232 return 0; … … 241 238 #ifdef PROCESSOR_ARCH_armv7_a 242 239 const uint32_t val = CLIDR_read(); 243 for (unsigned i = 1; i <=7; ++i) {240 for (unsigned i = 0; i < 7; ++i) { 244 241 const unsigned ctype = CLIDR_CACHE(i, val); 245 242 switch (ctype) { … … 280 277 const unsigned ways = dcache_ways(i); 281 278 const unsigned sets = dcache_sets(i); 282 const unsigned way_shift = 31- log2(ways);279 const unsigned way_shift = 32 - log2(ways); 283 280 const unsigned set_shift = dcache_linesize_log(i); 284 281 dcache_clean_manual(i, false, ways, sets, way_shift, set_shift); … … 293 290 const unsigned ways = dcache_ways(i); 294 291 const unsigned sets = dcache_sets(i); 295 const unsigned way_shift = 31- log2(ways);292 const unsigned way_shift = 32 - log2(ways); 296 293 const unsigned set_shift = dcache_linesize_log(i); 297 294 dcache_clean_manual(i, true, ways, sets, way_shift, set_shift);
Note:
See TracChangeset
for help on using the changeset viewer.