[U-Boot] [PATCH 20/22] x86: Disable CAR before relocation on platforms that need it

Simon Glass sjg at chromium.org
Thu Jan 1 23:32:28 CET 2015


Hi Bin,

On 30 December 2014 at 23:21, Bin Meng <bmeng.cn at gmail.com> wrote:
> Hi Simon,
>
> On Sun, Dec 28, 2014 at 10:20 AM, Simon Glass <sjg at chromium.org> wrote:
>> For platforms with CAR we should disable it before relocation. Check if
>> this function is available and call it if so.
>>
>> Signed-off-by: Simon Glass <sjg at chromium.org>
>> ---
>>
>>  arch/x86/cpu/start.S | 10 ++++++++++
>>  1 file changed, 10 insertions(+)
>>
>> diff --git a/arch/x86/cpu/start.S b/arch/x86/cpu/start.S
>> index 125782c..8cebde1 100644
>> --- a/arch/x86/cpu/start.S
>> +++ b/arch/x86/cpu/start.S
>> @@ -205,6 +205,16 @@ board_init_f_r_trampoline:
>>         /* Setup global descriptor table so gd->xyz works */
>>         call    setup_gdt
>>
>> +       /* Set if we need to disable CAR */
>> +       movl    $car_uninit, %eax
>> +       cmpl    $0, %eax
>> +       jz      car_ret
>> +
>> +       /* Pass return address in ebx */
>> +.weak  car_uninit
>> +       movl    $car_ret, %ebx
>> +       jmp     car_uninit
>
> Can we use 'call' here instead of jmp and %ebx as the return address?

Yes let's do that. The stack must be working so we might as well use it.

>
>> +car_ret:
>
> car_uninit_ret
>

OK

>>         /* Re-enter U-Boot by calling board_init_f_r */
>>         call    board_init_f_r

Regards,
Simon


More information about the U-Boot mailing list