*参照元 [#y9c54fca] #backlinks *説明 [#w609e445] -パス: [[linux-2.6.33/arch/arm/mm/cache-v6.S]] -I-cache 無効化のエラッタ対応とのこと **引数 [#ye012212] -r0 --0 になって返ってくる -r1 --壊れるので保存が必要 **返り値 [#s251d9f3] -なし **参考 [#x09f3288] *実装 [#tcab8f2e] #ifdef CONFIG_ARM_ERRATA_411920 /* * Invalidate the entire I cache (this code is a workaround for the ARM1136 * erratum 411920 - Invalidate Instruction Cache operation can fail. This * erratum is present in 1136, 1156 and 1176. It does not affect the MPCore. * * Registers: * r0 - set to 0 * r1 - corrupted */ ENTRY(v6_icache_inval_all) mov r0, #0 mrs r1, cpsr cpsid ifa @ disable interrupts mcr p15, 0, r0, c7, c5, 0 @ invalidate entire I-cache mcr p15, 0, r0, c7, c5, 0 @ invalidate entire I-cache mcr p15, 0, r0, c7, c5, 0 @ invalidate entire I-cache mcr p15, 0, r0, c7, c5, 0 @ invalidate entire I-cache msr cpsr_cx, r1 @ restore interrupts .rept 11 @ ARM Ltd recommends at least nop @ 11 NOPs .endr mov pc, lr #endif *コメント [#maf1f4d4]