簡體   English   中英

AARCH64 上不存在 MCR 和 MRC?

[英]MCR and MRC does not exist on AARCH64?

我正在嘗試基於 Board 在 AARCH64 上編譯“mrc”和“mcr”指令,但我看到以下錯誤消息

   tmp/ccqOHmrK.s: Assembler messages:
  /tmp/ccqOHmrK.s:43: Error: unknown mnemonic `mrc' -- `mrc p15,0,x0,c14,c3,1'
  /tmp/ccqOHmrK.s:53: Error: unknown mnemonic `mrc' -- `mrc p15,0,x2,c14,c3,0'

我嘗試查看內核源代碼 /arch/arm64,但沒有模擬就沒有使用過 mcr&&mrc。

這是一些語法問題嗎?

您應該將這些替換為適當的msr說明。 例如, arch/arm/include/asm/arch_timer.h有:

case ARCH_TIMER_REG_CTRL:
    asm volatile("mcr p15, 0, %0, c14, c3, 1" : : "r" (val));

arch/arm64/include/asm/arch_timer.h 中的對應項有:

case ARCH_TIMER_REG_CTRL:
    asm volatile("msr cntv_ctl_el0,  %0" : : "r" (val));

ARMv8 中不存在MCRMRC

在 ARMv7-A 中,系統寄存器通常通過協處理器 15 (CP15) 操作訪問,並使用MCRMRC訪問。 但是,AArch64 不包括對協處理器的支持。

在 AArch64 中,系統配置通過系統寄存器控制,並使用MSRMRS指令訪問。

如果要訪問系統寄存器,可以參考 Arm 架構參考手冊。 例如, PMSELR_EL0中的 PMSELR_EL0。 在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM