diff options
author | Tom Rini <trini@konsulko.com> | 2019-05-08 09:20:19 -0400 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2019-05-08 09:20:19 -0400 |
commit | 8c66fb88e3bd00b486d2da2b90f5ff8534b7e3c0 (patch) | |
tree | 4b8a83298e5db7f930fd76f1cb7c0b40c0fbaf10 /arch/x86/cpu/start_from_tpl.S | |
parent | d4c352138c266d618677778a40a846946ec1af1c (diff) | |
parent | ffe403762be48d475de4b2b6df87c32fd3a1e8dd (diff) |
Merge git://git.denx.de/u-boot-x86
- Allow x86 boards to use TPL, SPL and U-Boot proper
- Update sysreset x86 driver to utilize ACPI registers to do power off
- Add a new chromebook_samus_tpl board for TPL support
- Several minor changes in binman tool
Diffstat (limited to 'arch/x86/cpu/start_from_tpl.S')
-rw-r--r-- | arch/x86/cpu/start_from_tpl.S | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/arch/x86/cpu/start_from_tpl.S b/arch/x86/cpu/start_from_tpl.S new file mode 100644 index 0000000000..44b5363a68 --- /dev/null +++ b/arch/x86/cpu/start_from_tpl.S @@ -0,0 +1,49 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * 32-bit x86 Startup Code when running from TPL + * + * Copyright 2018 Google, Inc + * Written by Simon Glass <sjg@chromium.org> + */ + +#include <config.h> + +.section .text.start +.code32 +.globl _start +.type _start, @function +_start: + /* Set up memory using the existing stack */ + mov %esp, %eax + call board_init_f_alloc_reserve + mov %eax, %esp + + call board_init_f_init_reserve + + xorl %eax, %eax + call board_init_f + call board_init_f_r + + /* Should not return here */ + jmp . + +.globl board_init_f_r_trampoline +.type board_init_f_r_trampoline, @function +board_init_f_r_trampoline: + /* + * TPL has been executed: SDRAM has been initialised, BSS has been + * cleared. + * + * %eax = Address of top of new stack + */ + + /* Stack grows down from top of SDRAM */ + movl %eax, %esp + + /* Re-enter SPL by calling board_init_f_r() */ + call board_init_f_r + +die: + hlt + jmp die + hlt |