*参照元 [#u435bdbe]
#backlinks

*説明 [#ffc19d6d]
-パス: [[linux-4.4.1/arch/arm/mm/proc-macros.S]]

-データキャッシュラインサイズを取得する。


**引数 [#g8c805e5]
-reg
--データキャッシュラインサイズがバイトで格納されるレジスタ名を指定する。
-tmp
--作業用に破壊しても良いレジスタを指定する。


**返り値 [#jc5f3729]
-関数ではない。


**参考 [#b62ba938]


*実装 [#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]

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