2013-04-03 74 views
1

我正在使用Cortex-A15-Cortex-A7 big.LITTLE arch soc。opcode2在MRC指令中意味着什麼大小.LITTLE

在的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用於什麼?

回答

1

在基本上所有ARM處理器中,協處理器15用於控制當前內核的各種system functions。它不涉及多處理器集羣中的其他處理器。您可以在覈心專用技術參考手冊(TRM)中找到CP15寄存器的實際定義。例如,查找您在Cortex-A7 TRM的summary table中提到的組合,我們可以看到它是MPIDR(多處理器相關寄存器)。而事實上,如果按照the link的詳細說明,你就會清楚地看到這條指令:

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,儘管它當然最好。

2

有關如何解碼cp15系統控制寄存器功能的信息,請參閱this page

根據上述頁面Op1 = 0,CRn = C0,CRm = C0,Op2 = 5給出:

MPIDR Multiprocessor Affinity Register 

你可以找到MPDIR here更多信息。