*参照元 [#pc74718f]
#backlinks

*説明 [#b6032059]
-パス: [[linux-2.6.33/arch/arm/include/asm/cacheflush.h]]
--CONFIG_CPU_CACHE_VIPT 無効のとき
-パス: [[linux-2.6.33/arch/arm/mm/flush.c]]
--CONFIG_CPU_CACHE_VIPT 有効のとき

-FIXME: これは何?
--説明


**引数 [#x1f92ad8]
-struct vm_area_struct *vma
--
--[[linux-2.6.33/vm_area_struct]]
-unsigned long start
--
-unsigned long end
--


**返り値 [#g2020692]
-なし


**参考 [#w9549f6c]


*実装 [#d5d51dde]

**CONFIG_CPU_CACHE_VIPT 無効の場合 [#kb56f19c]

 #ifndef CONFIG_CPU_CACHE_VIPT
 ...(中略)...
 #define flush_cache_range(vma,start,end) \
 		vivt_flush_cache_range(vma,start,end)
-vivt_flush_cache_range を呼ぶ
--[[linux-2.6.33/vivt_flush_cache_range()]]

 ...(中略)...



**CONFIG_CPU_CACHE_VIPT 有効の場合 [#b0aa7481]

***linux-2.6.33/arch/arm/include/asm/cacheflush.h [#p008da05]
 #else
 ...(中略)...
 extern void flush_cache_range(struct vm_area_struct *vma, unsigned long start, unsigned long end);
-下記、参照

 ...(中略)...
 #endif


***linux-2.6.33/arch/arm/mm/flush.c [#j9a60783]

 void flush_cache_range(struct vm_area_struct *vma, unsigned long start, unsigned long end)
 {
 	if (cache_is_vivt()) {
-
--[[linux-2.6.33/cache_is_vivt()]]

 		vivt_flush_cache_range(vma, start, end);
 		return;
 	}
 
-
--[[linux-2.6.33/vivt_flush_cache_range()]]

 	if (cache_is_vipt_aliasing()) {
-
--[[linux-2.6.33/cache_is_vipt_aliasing()]]

 		asm(	"mcr	p15, 0, %0, c7, c14, 0\n"
 		"	mcr	p15, 0, %0, c7, c10, 4"
 		    :
 		    : "r" (0)
 		    : "cc");
 	}
 
 	if (vma->vm_flags & VM_EXEC)
 		__flush_icache_all();
-
--[[linux-2.6.33/VM_EXEC]]
-
--[[linux-2.6.33/__flush_icache_all()]]

 }


*コメント [#fb719f7b]

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