*参照元 [#u435bdbe] *参照元 [#qc49b238] #backlinks *説明 [#ffc19d6d] -パス: [[linux-4.4.1/arch/arm/mm/proc-macros.S]] *説明 [#r3edbb6d] -パス: 複数あり --ARM 版: [[linux-4.4.1/dcache_line_size()(arm)]] --ARM64 版: [[linux-4.4.1/dcache_line_size()(arm64)]] -データキャッシュラインサイズを取得する。 -FIXME: これは何? --説明 **引数 [#g8c805e5] -reg --データキャッシュラインサイズがバイトで格納されるレジスタ名を指定する。 -tmp --作業用に破壊しても良いレジスタを指定する。 **参考 [#i490a204] **返り値 [#jc5f3729] -関数ではない。 *実装 [#nd904704] -各アーキテクチャのページを参照してください。 **参考 [#b62ba938] *コメント [#gfd6cf15] *実装 [#bb2f894c] /* * dcache_line_size - get the minimum D-cache line size from the CTR register * on ARMv7. */ .macro dcache_line_size, reg, tmp mrc p15, 0, \tmp, c0, c0, 1 @ read ctr -cp15 CRn=c0, opc1=0, CRm=c0, opc2=1, CTR レジスタ lsr \tmp, \tmp, #16 and \tmp, \tmp, #0xf @ cache line size encoding -Dminline[19:16] フィールドを読む --D-cache の最小キャッシュラインの大きさが log2 の Word 数で書かれている。 --この値が 4 だとしたら、16(= 2^4)[word/line] * 4[byte/word] = 64[byte/line] mov \reg, #4 @ bytes per word mov \reg, \reg, lsl \tmp @ actual cache line size .endm *コメント [#e1bce85f]