2015-09-03 4 views
0

Я пытаюсь скомпилировать «MRC» и «MCR» инструкцию по AARCH64 на основе совета, но я вижу ниже сообщение об ошибкеMCR и MRC не существует на AARCH64?

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' 

Я пытался смотреть в исходный код ядра/арка/arm64 но не где MCR & & mrc был использован без эмуляции.

Это проблема с синтаксисом?

ответ

2

Вы должны заменить их соответствующими инструкциями 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)); 
+0

Хорошо, спасибо. Но могу ли я узнать от вас, MCR/MRC устарел в ARMv8? –

+1

Они, конечно же, не указаны в документации набора инструкций, и ассемблер их не знает, поэтому я бы сказал, что их не существует. – Jester

Смежные вопросы