ARM - 如何使用armcc保留r9寄存器

时间:2013-01-25 10:26:50

标签: arm eabi armcc

阅读ARM AAPCS(ARM EABI),我发现: 寄存器r9的作用是特定于平台的。虚拟平台可以将任何角色分配给该寄存器,并且必须记录此用法。例如,它可以将其指定为与位置无关的数据模型中的静态基础(SB),或者可以在具有线程本地存储的环境中将其指定为线程寄存器(TR)。该寄存器的使用可能要求所持有的值在所有调用中都是持久的。不需要这种特殊寄存器的虚拟平台可以将r9指定为另外一个被调用者保存的变量寄存器v6。

我想使用r9作为我的特定航空电子设备可抢占操作系统的PID持有者,但我无法弄清楚如何保留它:armcc C编译器总是将它用作变量寄存器,因此它的值总是通过申请SW。

有什么想法吗? armcc可以吗? GCC?戴铂?...

感谢您的帮助。

此致

克里斯托弗

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

我回答mysellf: 对于GCC,可以使用-ffixed-r9。

GCC online documentation

对于Windriver Diab编译器:

" #pragma global_register identifier = register"

(包含在每个文件中)