|
|
|
@ -97,13 +97,13 @@ ENTRY(_main) |
|
|
|
|
* 'here' but relocated. |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
ldr sp, [r8, #GD_START_ADDR_SP] /* r8 = gd->start_addr_sp */ |
|
|
|
|
ldr sp, [r8, #GD_START_ADDR_SP] /* sp = gd->start_addr_sp */ |
|
|
|
|
bic sp, sp, #7 /* 8-byte alignment for ABI compliance */ |
|
|
|
|
ldr r8, [r8, #GD_BD] /* r8 = gd->bd */ |
|
|
|
|
sub r8, r8, #GD_SIZE /* new GD is below bd */ |
|
|
|
|
|
|
|
|
|
adr lr, here |
|
|
|
|
ldr r0, [r8, #GD_RELOC_OFF] /* lr = gd->start_addr_sp */ |
|
|
|
|
ldr r0, [r8, #GD_RELOC_OFF] /* r0 = gd->reloc_off */ |
|
|
|
|
add lr, lr, r0 |
|
|
|
|
ldr r0, [r8, #GD_RELOCADDR] /* r0 = gd->relocaddr */ |
|
|
|
|
b relocate_code |
|
|
|
|