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

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