【发布时间】:2013-10-14 09:38:33
【问题描述】:
我想在裸金属皮质 A-15 上初始化 NEON cp。在关注ARM's directives 之后,我在平台初始化序列的末尾写了这个序列:
MOV r0, #0x00F00000
MRC p15, 0, r0, c1, c1, 2
ORR r0, r0, #0x0C00
BIC r0, r0, #0xC000
MCR p15, 0, r0, c1, c1, 2
ISB
MRC p15, 4, r0, c1, c1, 2
BIC r0, r0, #0x0C00
BIC r0, r0, #(3<<14)
MCR p15, 4, r0, c1, c1, 2
ISB
MOV r3, #0x40000000
VMSR FPEXC, r3
我收到此错误:
Error: operand 0 must be FPSCR -- `vmsr FPEXC,r3'
我正在使用arm-eabi-as --version:
GNU assembler (GNU Binutils) 2.21
Copyright 2010 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License version 3 or later.
This program has absolutely no warranty.
This assembler was configured for a target of `arm-eabi'.
如果我将 FPEXC 更改为 FPSCR 程序编译并且正在运行的引发 unhandler 异常:
MRC p15, 4, r0, c1, c1, 2
【问题讨论】:
-
@artlessnoise 知道为什么
MRC p15, 4, r0, c1, c1, 2会引发异常并将CPSR register 中的模式更改为Undefined?我以Supervisor运行上述汇编代码。 -
@artlessnoise,这就是ARM claims
-
我觉得你需要
MRC p15, 0, r0, c1, c1, 2;没有4。这个数字很重要。您阅读了在 Hyp 模式下使用高级 SIMD 和 VFP;您没有使用虚拟化扩展?另外,如果您不使用 TrustZone,我认为您不需要这个。 -
@artlessnoise 你能发布完整序列的答案吗?
-
eee8Ra10其中R是寄存器。
标签: assembly arm neon bare-metal cortex-a