*参照元 [#h753765a] #backlinks *説明 [#d25fe883] -パス: 複数あり --CONFIG_CPU_CACHE_VIPT 無効: [[linux-4.4.1/arch/arm/include/asm/cacheflush.h]] --CONFIG_CPU_CACHE_VIPT 有効: [[linux-4.4.1/arch/arm/mm/flush.c]] --[[linux-4.4.1/CONFIG_CPU_CACHE_VIPT]] -FIXME: これは何? --説明 **引数 [#of21c1e4] - -struct vm_area_struct *vma -- --[[linux-4.4.1/vm_area_struct]] -unsigned long start -- -unsigned long end -- **返り値 [#p2736f7c] - -- -なし **参考 [#n24bd15a] *実装 [#n75c5df6] **CONFIG_CPU_CACHE_VIPT 無効: arch/arm/include/asm/cacheflush.h [#e7a412f3] #define flush_cache_range(vma,start,end) \ vivt_flush_cache_range(vma,start,end) - --[[linux-4.4.1/vivt_flush_cache_range()]] **CONFIG_CPU_CACHE_VIPT 有効: arch/arm/mm/flush.c [#fea0d1a7] 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; } - --[[linux-4.4.1/cache_is_vivt()]] --[[linux-4.4.1/vivt_flush_cache_range()]] if (cache_is_vipt_aliasing()) { asm( "mcr p15, 0, %0, c7, c14, 0\n" " mcr p15, 0, %0, c7, c10, 4" : : "r" (0) : "cc"); } - --[[linux-4.4.1/cache_is_vipt_aliasing()]] if (vma->vm_flags & VM_EXEC) __flush_icache_all(); - --[[linux-4.4.1/__flush_icache_all()]] } *コメント [#o4bf4dfd]