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. 另一个疑问是,按照上面的指令,r0 内容被复制到 c0 中。为什么有两个c0?另一个 c0 是做什么用的?
4

2 回答 2

2

有关如何解码 cp15 系统控制寄存器功能的信息,请参阅此页面。

根据前述页面Op1=0, CRn=c0, CRm=c0, Op2=5给出:

MPIDR   Multiprocessor Affinity Register

您可以在此处找到有关 MPDIR 的更多信息。

于 2013-04-03T13:37:55.150 回答
1

在基本上所有的ARM处理器中,协处理器15用于控制当前内核的各种系统功能。它不引用多处理器集群中的其他处理器。您可以在内核特定的技术参考手册 (TRM) 中找到 CP15 寄存器的实际定义

例如,在Cortex-A7 TRM的汇总表中查找您提到的组合,我们可以看到它是MPIDR(Multiprocessor Affinity Register)。事实上,如果你点击详细描述的链接,你会看到这个指令:

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 回答