uboot:什么是DECLARE_GLOBAL_DATA_PTR?

The*_*ker 2 linux-kernel u-boot

在一些 uboot 文件中我看到了这样的声明:

DECLARE_GLOBAL_DATA_PTR

就在包含内容的正下方...有谁知道这是做什么/为什么这样做的?

谢谢,vj

小智 5

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

请参阅自述文件l。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
Run Code Online (Sandbox Code Playgroud)