*参照元 [#o33e1c6d]
#backlinks

*説明 [#gd557a06]
-パス: [[linux-4.4.1/arch/arm64/mm/cache.S]]

-FIXME: これは何?
--説明
--キャッシュの変更された内容(dirty ビットでマークされている内容)を次のキャッシュ(L1 から L2 など)もしくはメインメモリに書き込む
--キャッシュの内容の dirty ビットを消す
--キャッシュの内容は残るので、次に CPU から read したときはキャッシュにヒットする

原文

 Invalidation
 means to clear it of data, by clearing the valid bit of one or more cache lines.
 The cache must always be invalidated after reset as its contents are undefined.
 This can also be viewed as a way of making changes in the memory domain outside
 the cache visible to the user of the cache.
 
 Cleaning
 means writing the contents of cache lines that are marked as dirty,
 out to the next level of cache, or to main memory, and clearing the
 dirty bits in the cache line.
 This makes the contents of the cache line with the next level of the cache or memory system.
 This is only applicable for data caches in which a write-back policy is used.
 This is also a way of making changes in the cache visible to the user of the outer memory domain,
 but is only available for data cache.

http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.den0024a/BABJDBHI.html


**引数 [#v36f2200]
-void *start
--
-void *end
--


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


**参考 [#me0e8de5]


*実装 [#g3a4cdf2]

 /*
  *      __dma_clean_range(start, end)
  *      - start   - virtual start address of region
  *      - end     - virtual end address of region
  */
 __dma_clean_range:
         dcache_line_size x2, x3
-
--[[linux-4.4.1/dcache_line_size()]]

         sub     x3, x2, #1
         bic     x0, x0, x3
 1:
 alternative_if_not ARM64_WORKAROUND_CLEAN_CACHE
         dc      cvac, x0
 alternative_else
         dc      civac, x0
 alternative_endif
         add     x0, x0, x2
         cmp     x0, x1
         b.lo    1b
         dsb     sy
         ret
 ENDPROC(__dma_clean_range)


*コメント [#j58b08b6]

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