gcc /汇编程序无法识别aarch64 gicv3寄存器

时间:2018-02-07 10:20:47

标签: gcc assembly arm64

在Ubuntu 17.04上安装了aarch64-linux-gnu-as,编译以下汇编代码:

# code.s
_start:
   mrs x0,icc_igrpen0_el1

aarch64-linux-gnu-as code.s

给出以下错误:

as.s: Assembler messages:
as.s:3: Error: unknown or missing system register name at operand 2 -- `mrs x0,icc_igrpen0_el1'

但是,icc_igrpen0_el1在ARMv8配置文件,cortext-a53 TRM和GICv3规范的文档中有描述。

同样的错误适用于寄存器以ICC_开头。为什么gnu汇编器无法识别那些ICC_ *寄存器?

1 个答案:

答案 0 :(得分:3)

显然,您应该使用带有寄存器定义的头文件作为宏,将它们映射到通用系统寄存器名称,可能是这样的:

#define ICC_IGRPEN0_EL1     S3_0_C12_C12_6
#define ICC_IGRPEN1_EL1     S3_0_C12_C12_7
#define ICC_IGRPEN1_EL3     S3_6_C12_C12_7

我不认为有任何期望将非通用名称添加到GAS中。