我正在尝试编写一个可重用的宏来在程序集中配置一些 CSR。
例如
.macro initTrap entry, status, enable
la t0, entry
csrw mtvec, t0
csrwi mstatus, status
csrwi mie, enable
.endm
然后使用它(至少测试):
initTrap trap_entry, 0x0, 0x0
编译(汇编)时出现以下错误:
start.S:179: Error: Instruction csrwi requires absolute expression
start.S:179: Error: Instruction csrwi requires absolute expression
start.S:179: Error: Instruction csrwi requires absolute expression
有没有办法创建一个传递立即值而不会出现此错误的宏? (除了 ASM 编程指南之外,我似乎找不到任何有关 risc-v 汇编宏的文档,这就是我到目前为止的方法)
最佳答案
答案:参数使用时需要反斜杠。
.macro initTrap entry, status, enable
la t0, \entry
csrw mtvec, t0
csrwi mstatus, \status
csrwi mie, \enable
.endm
关于assembly - 如何在汇编宏中以立即值作为参数编写 riscv CSR?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66319166/