Настройте целевой процессор GCC - PullRequest
0 голосов
/ 04 сентября 2018

У меня целевое оборудование Zynq 7000. Я состоит из двухъядерного ARM Cortex A-9 с сопроцессором NEON и VFP. Сопроцессор должен быть включен с правами записи в регистр FPEXC.

Включение NEON и FPU для голого металла показывает соответствующий код. Проблема в том, что GCC (GNU ассемблер) не принимает код. Ошибка:

Ошибка: выбранный процессор не поддерживает запрошенный регистр специального назначения - `msr fpexc, r0 '

Полный пример минимального исходного кода приведен здесь:

  .text

  .global enableNeon
 enableNeon:
    mrc p15,0,r0,c1,c0,2    // Read CP Access register
    orr r0,#0x00f00000      // Enable full access to NEON/VFP (Coprocessors 10 and 11)
    mcr p15,0,r0,c1,c0,2    // Write CP Access register
    isb
    mov r0,#0x40000000      // Switch on the VFP and NEON hardware
    msr fpexc,r0            // Set EN bit in FPEXC
    bx lr

  .end

Компилятор GCC Xilinx-SDK запускается со следующими параметрами:

arm-none-eabi-gcc -c -o "monitor.o" -mcpu=cortex-a9 -mfpu=neon-vfpv4  monitor.s

Похоже, что GCC не распознал, что процессор имеет регистр FPEXC. Как настроить GCC для включения генерации кода для этого ЦП, сопроцессора и специального регистра FPXEC?

1 Ответ

0 голосов
/ 11 сентября 2018

Ассемблер GNU хочет увидеть инструкцию VMSR для этого регистра:

 vmsr fpexc,r0            // Set EN bit in FPEXC
...