*参照元 [#n6b71e9d]
#backlinks

*説明 [#baac9d01]
-パス: [[linux-4.4.1/arch/arm/mm/cache-v7.S]]

-FIXME: これは何?
--説明


**引数 [#n393b859]
-
--

**返り値 [#s0bbec12]
-
--

**参考 [#l4109f6f]


*実装 [#q4915958]
 /*
  *      v7_dma_clean_range(start,end)
  *      - start   - virtual start address of region
  *      - end     - virtual end address of region
  */
 v7_dma_clean_range:
         dcache_line_size r2, r3
-
--[[linux-4.4.1/dcache_line_size()]]

         sub     r3, r2, #1
         bic     r0, r0, r3
 #ifdef CONFIG_ARM_ERRATA_764369
-
--[[linux-4.4.1/CONFIG_ARM_ERRATA_764369]]

         ALT_SMP(W(dsb))
         ALT_UP(W(nop))
-
--[[linux-4.4.1/ALT_SMP()]]
--[[linux-4.4.1/ALT_UP()]]
--[[linux-4.4.1/W()]]

 #endif
 1:
         mcr     p15, 0, r0, c7, c10, 1          @ clean D / U line
-cp15 CRn=c7, opc1=0, CRm=c10, opc2=1, DCCMVAC レジスタ
--データまたは統一キャッシュを clean する。
--つまり Dirty なら書き出す。Clean なら何もしない。
--レジスタのデータは仮想アドレスとして解釈される。
--このコードの場合は r0 ですね。

         add     r0, r0, r2
         cmp     r0, r1
         blo     1b
         dsb     st
         ret     lr
 ENDPROC(v7_dma_clean_range)
-
--[[linux-4.4.1/ENDPROC()]]


*コメント [#vc23b6b3]

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