*参照元 [#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]


トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS