在裸机AArch64中,生锈会生成tpidr0
作为thread_local
计算的默认寄存器。对于内核之类的方案,应使用tpidr1
而不是tpidr0
。如何使rust编译器生成代码以使用tpidr1
而不是默认值?
LLVM支持custom attribute -mattr=tipdr-el[1|2|3]
来覆盖线程本地寄存器。
默认情况下,tipdr0
用于此目的。可以通过执行以下操作来覆盖锈迹]
rustc -C target-feature=tpidr-el1 --target=aarch64-unknown-none