DECLARE_GLOBAL_DATA_PTR

帅比萌擦擦* 提交于 2019-11-30 20:54:04

DECLARE_GLOBAL_DATA_PTR在arch/arm/include/asm/global_data.h中定义

 

#include <asm-generic/global_data.h>

 

#ifdef CONFIG_ARM64
#define DECLARE_GLOBAL_DATA_PTR     register volatile gd_t *gd asm ("x18")
#else
#define DECLARE_GLOBAL_DATA_PTR     register volatile gd_t *gd asm ("r9")
#endif

 

这个宏定义了一个gd_t全局数据结构的指针gd,这个指针存放在指定的寄存器中。

 

声明一个寄存器变量 gd占用r9。这个宏在所有需要引用全局数据指针gd_t *gd的源码中都有申明。
这个申明也避免编译器把r9分配给其它的变量。所以gd就是r9,用r9来保存内存地址,达到全局使用目的,这个指针变量不占用内存。

总结:gd指向一个数据结构,用于保存参数。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!