首页 > 解决方案 > 配置 GCC 目标 CPU

问题描述

我有一个 Zynq 7000 目标硬件。I 由带有 NEON 和 VFP 协处理器的双核 ARM Cortex A-9 组成。必须通过对 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

Xilinx-SDK 的 GCC 编译器使用以下选项启动:

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

看起来 GCC 没有识别出 CPU 有 FPEXC 寄存器。如何配置 GCC 以启用该 CPU、协处理器和专用寄存器 FPXEC 的代码生成?

标签: gccxilinxneon

解决方案


GNU 汇编器想要查看此寄存器的 VMSR 指令:

 vmsr fpexc,r0            // Set EN bit in FPEXC

推荐阅读