[U-Boot] [PATCH v2 20/47] efi: Avoid using non-existent text base
Simon Glass
sjg at chromium.org
Mon Aug 3 01:37:48 CEST 2015
On 2 August 2015 at 09:04, Bin Meng <bmeng.cn at gmail.com> wrote:
> On Fri, Jul 31, 2015 at 11:31 PM, Simon Glass <sjg at chromium.org> wrote:
>> From: Ben Stoltz <stoltz at google.com>
>>
>> When U-Boot runs as an EFI application is does not have a definition of
>> CONFIG_SYS_TEXT_BASE. U-Boot is a relocatable application and the relocation
>> is done by EFI. U-Boot can be loaded at any address.
>>
>> This is similar to how sandbox works. Adjust the early board init to deal
>> with this.
>>
>> Signed-off-by: Ben Stoltz <stoltz at google.com>
>> Signed-off-by: Simon Glass <sjg at chromium.org>
>> ---
>>
>> Changes in v2:
>> - Rename CONFIG_ARCH_EFI to CONFIG_EFI_APP
>> - Reorder this patch to after CONFIG_EFI_APP is introduced
>>
>> common/board_f.c | 7 ++++---
>> 1 file changed, 4 insertions(+), 3 deletions(-)
>>
>> diff --git a/common/board_f.c b/common/board_f.c
>> index 5e09c5f..c596083 100644
>> --- a/common/board_f.c
>> +++ b/common/board_f.c
>> @@ -144,7 +144,7 @@ static int init_baud_rate(void)
>>
>> static int display_text_info(void)
>> {
>> -#ifndef CONFIG_SANDBOX
>> +#if !defined(CONFIG_SANDBOX) && !defined(CONFIG_EFI_APP)
>> ulong bss_start, bss_end, text_base;
>>
>> bss_start = (ulong)&__bss_start;
>> @@ -267,7 +267,7 @@ static int setup_mon_len(void)
>> {
>> #if defined(__ARM__) || defined(__MICROBLAZE__)
>> gd->mon_len = (ulong)&__bss_end - (ulong)_start;
>> -#elif defined(CONFIG_SANDBOX)
>> +#elif defined(CONFIG_SANDBOX) || defined(CONFIG_EFI_APP)
>> gd->mon_len = (ulong)&_end - (ulong)_init;
>> #elif defined(CONFIG_BLACKFIN) || defined(CONFIG_NIOS2)
>> gd->mon_len = CONFIG_SYS_MONITOR_LEN;
>> @@ -975,7 +975,8 @@ void board_init_f(ulong boot_flags)
>> if (initcall_run_list(init_sequence_f))
>> hang();
>>
>> -#if !defined(CONFIG_ARM) && !defined(CONFIG_SANDBOX)
>> +#if !defined(CONFIG_ARM) && !defined(CONFIG_SANDBOX) && \
>> + !defined(CONFIG_EFI_APP)
>> /* NOTREACHED - jump_to_copy() does not return */
>> hang();
>> #endif
>> --
>
> Reviewed-by: Bin Meng <bmeng.cn at gmail.com>
Applied to u-boot-x86.
More information about the U-Boot
mailing list