Я пытаюсь понять источник U-boot (2014.07). Я мог видеть следующий код в файле arch/arm/cpu/armv7/lowlevel_init.S.
#ifdef CONFIG_SPL_BUILD
ldr r9, =gdata
#else
sub sp, sp, #GD_SIZE
bic sp, sp, #7
mov r9, sp
#endif
push {ip, lr}
bl s_init
pop {ip, pc}
Подскажите, пожалуйста, почему sp перемещен в регистр r9 - "mov r9, sp" (для сборки SPL gdata загружается в регистр r9 - "ldr r9, =gdata"). Есть ли какое-либо конкретное использование регистра r9, чтобы мы сохраняли значение sp в r9.