DECLARE_GLOBAL_DATA_PTR     register volatile gd_t *gd  asm("r29")
문장의 의미가 궁금합니다.

gd_t* gd를 구조체 gd_t의 포인터 gd를 선언 한것은 알겠는데
asm("r29")이 붙은 이유와 의미가 무엇입니까?