linux-4.4.1/v7_dma_inv_range()
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*参照元 [#t338f415]
#backlinks
*説明 [#z5b42d5a]
-パス: [[linux-4.4.1/arch/arm/mm/cache-v7.S]]
-FIXME: これは何?
--説明
**引数 [#j6c2ea52]
-start
--
-end
--
**返り値 [#ndd1d057]
-なし?
**参考 [#bee1b080]
*実装 [#kbaf317d]
/*
* v7_dma_inv_range(start,end)
*
* Invalidate the data cache within the specified r...
* be performing a DMA operation in this region and...
* purge old data in the cache.
*
* - start - virtual start address of region
* - end - virtual end address of region
*/
v7_dma_inv_range:
dcache_line_size r2, r3
-
--[[linux-4.4.1/dcache_line_size()]]
sub r3, r2, #1
tst r0, r3
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
mcrne p15, 0, r0, c7, c14, 1 @ clean ...
-cp15 CRn=c7, opc1=0, CRm=c14, opc2=1, DCCIMVAC レジスタ
--データまたは統一キャッシュを clean & invalidate する。
--つまり Dirty なら書き出してからキャッシュを破棄。Clean ...
--レジスタのデータ(このコードは r0 を渡している)は仮想...
tst r1, r3
bic r1, r1, r3
mcrne p15, 0, r1, c7, c14, 1 @ clean ...
1:
mcr p15, 0, r0, c7, c6, 1 @ invali...
-cp15 CRn=c7, opc1=0, CRm=c6, opc2=1, DCIMVAC レジスタ
--データまたは統一キャッシュを invalidate する。
--つまり Dirty でも Clean でも破棄。
--レジスタのデータ(このコードは r0 を渡している)は仮想...
add r0, r0, r2
cmp r0, r1
blo 1b
dsb st
ret lr
ENDPROC(v7_dma_inv_range)
-
--[[linux-4.4.1/ENDPROC()]]
*コメント [#h5c9d8d0]
終了行:
*参照元 [#t338f415]
#backlinks
*説明 [#z5b42d5a]
-パス: [[linux-4.4.1/arch/arm/mm/cache-v7.S]]
-FIXME: これは何?
--説明
**引数 [#j6c2ea52]
-start
--
-end
--
**返り値 [#ndd1d057]
-なし?
**参考 [#bee1b080]
*実装 [#kbaf317d]
/*
* v7_dma_inv_range(start,end)
*
* Invalidate the data cache within the specified r...
* be performing a DMA operation in this region and...
* purge old data in the cache.
*
* - start - virtual start address of region
* - end - virtual end address of region
*/
v7_dma_inv_range:
dcache_line_size r2, r3
-
--[[linux-4.4.1/dcache_line_size()]]
sub r3, r2, #1
tst r0, r3
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
mcrne p15, 0, r0, c7, c14, 1 @ clean ...
-cp15 CRn=c7, opc1=0, CRm=c14, opc2=1, DCCIMVAC レジスタ
--データまたは統一キャッシュを clean & invalidate する。
--つまり Dirty なら書き出してからキャッシュを破棄。Clean ...
--レジスタのデータ(このコードは r0 を渡している)は仮想...
tst r1, r3
bic r1, r1, r3
mcrne p15, 0, r1, c7, c14, 1 @ clean ...
1:
mcr p15, 0, r0, c7, c6, 1 @ invali...
-cp15 CRn=c7, opc1=0, CRm=c6, opc2=1, DCIMVAC レジスタ
--データまたは統一キャッシュを invalidate する。
--つまり Dirty でも Clean でも破棄。
--レジスタのデータ(このコードは r0 を渡している)は仮想...
add r0, r0, r2
cmp r0, r1
blo 1b
dsb st
ret lr
ENDPROC(v7_dma_inv_range)
-
--[[linux-4.4.1/ENDPROC()]]
*コメント [#h5c9d8d0]
ページ名: