参照元

説明

引数

返り値

参考

実装

CONFIG_CPU_CACHE_VIPT 無効の場合

#ifndef CONFIG_CPU_CACHE_VIPT
...(中略)...
#define flush_cache_range(vma,start,end) \
		vivt_flush_cache_range(vma,start,end)
...(中略)...

CONFIG_CPU_CACHE_VIPT 有効の場合

linux-2.6.33/arch/arm/include/asm/cacheflush.h

#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

void flush_cache_range(struct vm_area_struct *vma, unsigned long start, unsigned long end)
{
	if (cache_is_vivt()) {
		vivt_flush_cache_range(vma, start, end);
		return;
	}
	if (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();
}

コメント


トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2014-09-13 (土) 08:26:41