mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-29 08:01:08 +00:00
x86: Add 64-bit start-up code
Add code to start up U-Boot in 64-bit mode. It is fairly simple since we are running from RAM and SPL has done the low-level init. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
This commit is contained in:
parent
987116f7f6
commit
dca9220c35
3 changed files with 37 additions and 0 deletions
|
@ -3,8 +3,13 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
ifeq ($(CONFIG_EFI_APP),)
|
ifeq ($(CONFIG_EFI_APP),)
|
||||||
|
ifdef CONFIG_$(SPL_)X86_64
|
||||||
|
head-y := arch/x86/cpu/start64.o
|
||||||
|
else
|
||||||
head-y := arch/x86/cpu/start.o
|
head-y := arch/x86/cpu/start.o
|
||||||
endif
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
head-$(CONFIG_$(SPL_)X86_16BIT_INIT) += arch/x86/cpu/start16.o
|
head-$(CONFIG_$(SPL_)X86_16BIT_INIT) += arch/x86/cpu/start16.o
|
||||||
head-$(CONFIG_$(SPL_)X86_16BIT_INIT) += arch/x86/cpu/resetvec.o
|
head-$(CONFIG_$(SPL_)X86_16BIT_INIT) += arch/x86/cpu/resetvec.o
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,11 @@
|
||||||
# SPDX-License-Identifier: GPL-2.0+
|
# SPDX-License-Identifier: GPL-2.0+
|
||||||
#
|
#
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_$(SPL_)X86_64),y)
|
||||||
|
extra-y = start64.o
|
||||||
|
else
|
||||||
extra-y = start.o
|
extra-y = start.o
|
||||||
|
endif
|
||||||
extra-$(CONFIG_$(SPL_)X86_16BIT_INIT) += resetvec.o start16.o
|
extra-$(CONFIG_$(SPL_)X86_16BIT_INIT) += resetvec.o start16.o
|
||||||
obj-y += interrupts.o cpu.o cpu_x86.o call64.o setjmp.o
|
obj-y += interrupts.o cpu.o cpu_x86.o call64.o setjmp.o
|
||||||
|
|
||||||
|
|
28
arch/x86/cpu/start64.S
Normal file
28
arch/x86/cpu/start64.S
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
/*
|
||||||
|
* 64-bit x86 Startup Code
|
||||||
|
*
|
||||||
|
* (C) Copyright 216 Google, Inc
|
||||||
|
* Written by Simon Glass <sjg@chromium.org>
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: GPL-2.0+
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
|
|
||||||
|
.section .text
|
||||||
|
.code64
|
||||||
|
.globl _start
|
||||||
|
.type _start, @function
|
||||||
|
_start:
|
||||||
|
/* Set up memory using the existing stack */
|
||||||
|
mov %rsp, %rdi
|
||||||
|
call board_init_f_alloc_reserve
|
||||||
|
mov %rax, %rsp
|
||||||
|
|
||||||
|
call board_init_f_init_reserve
|
||||||
|
|
||||||
|
call board_init_f
|
||||||
|
call board_init_f_r
|
||||||
|
|
||||||
|
/* Should not return here */
|
||||||
|
jmp .
|
Loading…
Reference in a new issue