代码之家  ›  专栏  ›  技术社区  ›  harper

配置GCC目标CPU

  •  0
  • harper  · 技术社区  · 6 年前

    我有一个Zynq7000目标硬件。我包括一个双核手臂皮质A-9与氖和VFP共同处理器。必须通过对fpexc寄存器的写访问来启用协同处理器。

    这个 Enabling NEON and FPU for bare-metal 显示相应的代码。问题是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生成代码?

    1 回复  |  直到 6 年前
        1
  •  0
  •   James Greenhalgh    6 年前

    GNU汇编程序希望看到此寄存器的VMSR指令:

     vmsr fpexc,r0            // Set EN bit in FPEXC