*参照元 [#wa41ebaf] #backlinks *説明 [#nf21f60f] -パス: 複数あり --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: これは何? --説明 **引数 [#c876a5a3] - -struct vm_area_struct *vma -- --[[linux-4.4.1/vm_area_struct]] -unsigned long user_addr -- -unsigned long pfn -- **返り値 [#f27b2045] - -- -なし **参考 [#d3b24cd6] *実装 [#s8b6a84d] **CONFIG_CPU_CACHE_VIPT 無効: arch/arm/include/asm/cacheflush.h [#e68b8527] #define flush_cache_page(vma,addr,pfn) \ vivt_flush_cache_page(vma,addr,pfn) - --[[linux-4.4.1/vivt_flush_cache_page()]] **CONFIG_CPU_CACHE_VIPT 有効: arch/arm/mm/flush.c [#s06242f4] void flush_cache_page(struct vm_area_struct *vma, unsigned long user_addr, unsigned long pfn) { if (cache_is_vivt()) { vivt_flush_cache_page(vma, user_addr, pfn); return; } - --[[linux-4.4.1/cache_is_vivt()]] --[[linux-4.4.1/vivt_flush_cache_page()]] if (cache_is_vipt_aliasing()) { flush_pfn_alias(pfn, user_addr); __flush_icache_all(); } - --[[linux-4.4.1/cache_is_vipt_aliasing()]] --[[linux-4.4.1/flush_pfn_alias()]] --[[linux-4.4.1/__flush_icache_all()]] if (vma->vm_flags & VM_EXEC && icache_is_vivt_asid_tagged()) __flush_icache_all(); - --[[linux-4.4.1/icache_is_vivt_asid_tagged()]] --[[linux-4.4.1/__flush_icache_all()]] } *コメント [#u7dd48d0]