Dne nedelja, 23. marec 2025 ob 12:35:34 Srednjeevropski standardni čas je Andre Przywara napisal(a): > To return a 64-bit Allwinner chip back to the 32-bit BootROM code, we > have some embedded AArch32 code that restores the CPU state, before > branching back to the BootROM. At the moment the pointer to the buffer > with that state is located *after* the code, which makes the PC relative > code fragile: adding or removing instructions will change the distance > to that pointer variable. > The "new" Allwinner A523 SoC requires more state to be restored (GICv3 > system registers), but we must do that *only* on that SoC. Conditional > compilation sounds like the easiest solution, but would mean that the > distance to that pointer would change. > > Solve this rather easily by moving the pointer to the *front* of the > code: we load that pointer in the first instruction, so the distance > would always stay the same. Later in the code we won't need PC relative > addressing anymore, so this code can grow or shrink easily, for instance > due to conditional compilation. > > Signed-off-by: Andre Przywara <andre.przyw...@arm.com>
Reviewed-by: Jernej Skrabec <jernej.skra...@gmail.com> Best regards, Jernej