mirror of
https://github.com/AsahiLinux/u-boot
synced 2025-02-17 22:49:02 +00:00
x86: Add support for passing tables into U-Boot
The EFI stub provides information to U-Boot in a table. This includes the memory map which is needed to decide where to relocate U-Boot. Collect this information in the early init code and store it in global_data. Fix up the BIST code at the same time since we don't have it when booting from EFI and can assume it is 0. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
This commit is contained in:
parent
96a8d409a7
commit
42fde30500
3 changed files with 20 additions and 1 deletions
|
@ -42,6 +42,13 @@ _x86boot_start:
|
|||
|
||||
/* Tell 32-bit code it is being entered from an in-RAM copy */
|
||||
movl $GD_FLG_WARM_BOOT, %ebx
|
||||
|
||||
/*
|
||||
* Zero the BIST (Built-In Self Test) value since we don't have it.
|
||||
* It must be 0 or the previous loader would have reported an error.
|
||||
*/
|
||||
movl $0, %ebp
|
||||
|
||||
jmp 1f
|
||||
|
||||
/* Add a way for tools to discover the _start entry point */
|
||||
|
@ -53,9 +60,13 @@ _start:
|
|||
* Set %ebx to GD_FLG_COLD_BOOT to indicate this.
|
||||
*/
|
||||
movl $GD_FLG_COLD_BOOT, %ebx
|
||||
1:
|
||||
|
||||
/* Save BIST */
|
||||
movl %eax, %ebp
|
||||
1:
|
||||
|
||||
/* Save table pointer */
|
||||
movl %ecx, %esi
|
||||
|
||||
/* Load the segement registers to match the GDT loaded in start16.S */
|
||||
movl $(X86_GDT_ENTRY_32BIT_DS * X86_GDT_ENTRY_SIZE), %eax
|
||||
|
@ -133,7 +144,13 @@ car_init_ret:
|
|||
movl %esi, (%edx)
|
||||
|
||||
skip_hob:
|
||||
#else
|
||||
/* Store table pointer */
|
||||
movl %esp, %edx
|
||||
addl $GD_TABLE, %edx
|
||||
movl %esi, (%edx)
|
||||
#endif
|
||||
|
||||
/* Setup first parameter to setup_gdt, pointer to global_data */
|
||||
movl %esp, %eax
|
||||
|
||||
|
|
|
@ -69,6 +69,7 @@ struct arch_global_data {
|
|||
char *mrc_output;
|
||||
unsigned int mrc_output_len;
|
||||
void *gdt; /* Global descriptor table */
|
||||
ulong table; /* Table pointer from previous loader */
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -21,5 +21,6 @@ int main(void)
|
|||
#ifdef CONFIG_HAVE_FSP
|
||||
DEFINE(GD_HOB_LIST, offsetof(gd_t, arch.hob_list));
|
||||
#endif
|
||||
DEFINE(GD_TABLE, offsetof(gd_t, arch.table));
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue