1

Cortex-A15-Cortex-A7 big.LITTLE arch soc を使用しています。

big.LITTLE プロセッサの bL_head.S の場合 (LITTLE 初期化の場合)、MRC 命令は次のように使用されます。

mrc     p15, 0, r0, c0, c0, 5

さて、MRC命令の詳細に従って、

MRC{cond} coproc, opcode1, Rd, CRn, CRm{, opcode2}

opcode2
is an optional coprocessor-specific opcode.
  1. 5 の意味がわかりません。ここで、私の理解では、CP は LITTLE プロセッサ クラスターに他なりません。
  2. もう 1 つの疑問は、上記の指示に従って、r0 のコンテンツが c0 にコピーされることです。なぜ c0 が 2 つあるのですか? 別の c0 は何に使用されますか?
4

2 に答える 2

1

基本的にすべての ARM プロセッサで、コプロセッサ 15 は現在のコアのさまざまなシステム機能を制御するために使用されます。マルチプロセッサ クラスタ内の他のプロセッサは参照しません。CP15 レジスタの実際の定義については、コア固有のテクニカル リファレンス マニュアル (TRM) を参照してください。

たとえば、Cortex-A7 TRM の概要表MPIDRで言及されている組み合わせを調べると、それが(マルチプロセッサ アフィニティ レジスタ) であることがわかります。実際、詳細な説明へのリンクをたどると、まさにこの指示が表示されます。

To access the MPIDR, read the CP15 registers with:
MRC p15, 0, <Rt>, c0, c0, 5; Read Multiprocessor Affinity Register

あなたの場合、<Rt>ですR0。隠しコア レジスタから読み取った MPIDR の値に設定され、TRM に記述されているように解釈できます。

ところで、Opcode1、CRm、CRn、および Opcode2 の特定の組み合わせはプロセッサ固有ですが、それらの多くは関連するコア間で共有されます。したがって、一般に、持っている正確なコアの TRM を参照する必要は必ずしもありませんが、もちろんそれが最もうまく機能します。

于 2013-04-03T13:59:53.727 に答える