[U-Boot] [PATCH v3 0/6] rockchip: back-to-bootrom: replace assembly-implementation with C-code
Dr. Philipp Tomsich
philipp.tomsich at theobroma-systems.com
Thu Sep 21 10:25:17 UTC 2017
> On 21 Sep 2017, at 11:44, Heiko Stuebner <heiko at sntech.de> wrote:
>
> Am Donnerstag, 21. September 2017, 11:09:49 CEST schrieb Heiko Stuebner:
>> Am Donnerstag, 21. September 2017, 10:19:23 CEST schrieb Philipp Tomsich:
>>>
>>> Recent discussions confirmed (what the code always assumed): the
>>> Rockchip BROM always enters U-Boot with the stack-pointer valid
>>> (i.e. the U-Boot startup code is running off the BROM stack).
>>>
>>> We can thus replace the back-to-bootrom code (i.e. both the
>>> save_boot_params and back_to_bootrom implementations) using C-code
>>> based on setjmp/longjmp. The new implementation is already structured
>>> to allow an easy drop-in of Andy's changes to enter download-mode when
>>> returning to the BROM.
>>>
>>> This turned out to require a some tweaking to system.h (making sure
>>> that the prototype for save_boot_params_ret is visible for A64)and
>>> start.S (so binutils knows that this is a possible function entry and
>>> it can correctly insert A32-to-Thumb transitions) and taking the axe
>>> to setjmp.h (which created quite a few issues with it not expecting
>>> A32/T32/Thumb call-sites and some fragility from GCC being smart about
>>> the clobber-list of the inline assembly... which led to r9 not being
>>> saved or restored).
>>
>> This is missing information on dependant series. Using the u-boot-rockchip
>> repository which is at
>> 782088de7be7 ("rockchip: imply ADC and SARADC_ROCKCHIP on supported SoCs")
>>
>> patches 1-3 apply, but patch 4 fails to apply as I seem to be missing some
>> dependencies.
>>
>> And the u-boot mailinglist seems to be configured very strangely, as it
>> seems to rip apart patch-series only sending me some parts.
>>
>> So far I can at least say, that the u-boot-rockchip repo at the above
>> commit still boots. Could you please point me to mbox versions
>> of needed base patches?
>
> Also, with patches 1-3 and 5 applied the radxarock board fails to start.
> I see the SPL banner and a "Returning to boot ROM..." and then nothing.
>
> I do belive it may have something to do with the TPL's + SPL's stack both
> being at the end of SRAM? Having the SPL go back to TPL and then
> back to bootrom was my original intention as well, but didn't work at
> the time.
I didn’t expect the stacks to overlap… so returning from SPL to TPL can’t
work. However, the jump_to_spl() is at least partially to blame (we already
have a working C-runtime and there’s no point in reentering through the
reset entry-point).
I need to ponder this a bit, but my gut feeling is that the TPL->SPL transition
can be done in a less intrusive way and may allow us to retain the TPL stack.
Regards,
Philipp.
More information about the U-Boot
mailing list