uboot:什么是DECLARE_GLOBAL_DATA_PTR?

时间:2013-09-13 21:04:56

标签: linux-kernel u-boot

在一些uboot文件中,我看到了这个声明:

DECLARE_GLOBAL_DATA_PTR

在包含的正下方....有没有人知道这是什么/为什么这样做?

谢谢, VJ

1 个答案:

答案 0 :(得分:3)

这是一个宏声明,表示将保留资源(例如,CPU寄存器)以指向struct global_data。对于ARM,宏在arch / arm / include / asm / global_data.h中定义,它保留CPU寄存器r8。

README升。 4602+描述了早期启动时的资源限制。全局数据指针可以轻松访问在此引导阶段最有用的数据元素。

全球意味着这些数据通常可用。 C源文件在任何编译代码之前使用此声明,告诉编译器不要使用该寄存器(例如ARM CPU r8)。

在引导结束时,例如在common / main.c main_loop()中,我看到DECLARE_GLOBAL_DATA_PTR仅在少数特定配置中使用。因此,可能由控制台命令驱动的其他代码(例如)不需要保留该资源。在C源文件中,看起来25%使用它,75%不使用它。

~/u-boot-2012.10$ find . -name "*.c" | wc -l
2824
~/u-boot-2012.10$ find . -name "*.c" | xargs grep DECLARE_GLOBAL_DATA_PTR | wc -l
745