Vin*_*dra 2 llvm bare-metal rust arm64
在裸机 AArch64 中,rusttpidr0作为thread_local计算的默认寄存器生成。对于像内核这样的场景,tpidr1应该使用而不是tpidr0. 如何让 Rust 编译器生成要使用的代码tpidr1而不是默认值?
LLVM 支持自定义属性 -mattr=tipdr-el[1|2|3]来覆盖线程本地寄存器。
默认情况下,tipdr0用于此目的。这可以通过执行以下操作在 rust 中覆盖
rustc -C target-feature=tpidr-el1 --target=aarch64-unknown-none
Run Code Online (Sandbox Code Playgroud)