
Hi Aiden,
On Tue, 21 Apr 2020 at 18:45, aiden.park@intel.com wrote:
From: Aiden Park aiden.park@intel.com
This supports 64-bit U-Boot as a Slim Bootloader payload.
Signed-off-by: Aiden Park aiden.park@intel.com
arch/x86/cpu/slimbootloader/Makefile | 9 +++++++-- arch/x86/cpu/slimbootloader/entry64.S | 14 ++++++++++++++ arch/x86/cpu/slimbootloader/slimbootloader.c | 17 +++++++++++++++-- 3 files changed, 36 insertions(+), 4 deletions(-) create mode 100644 arch/x86/cpu/slimbootloader/entry64.S
diff --git a/arch/x86/cpu/slimbootloader/Makefile b/arch/x86/cpu/slimbootloader/Makefile index aac9fa3db8..79fa699501 100644 --- a/arch/x86/cpu/slimbootloader/Makefile +++ b/arch/x86/cpu/slimbootloader/Makefile @@ -1,5 +1,10 @@ # SPDX-License-Identifier: GPL-2.0+ # -# Copyright (C) 2019 Intel Corporation <www.intel.com> +# Copyright (C) 2019-2020 Intel Corporation <www.intel.com>
-obj-y += car.o slimbootloader.o sdram.o serial.o +ifeq ($(CONFIG_X86_64),y) +obj-y += entry64.o +else +obj-y += car.o +endif +obj-y += slimbootloader.o sdram.o serial.o diff --git a/arch/x86/cpu/slimbootloader/entry64.S b/arch/x86/cpu/slimbootloader/entry64.S new file mode 100644 index 0000000000..5e101e18a9 --- /dev/null +++ b/arch/x86/cpu/slimbootloader/entry64.S @@ -0,0 +1,14 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/*
- Copyright (C) 2020 Intel Corporation <www.intel.com>
- */
+#include <generated/asm-offsets.h>
+.section .text
+.globl init_64bit_entry +init_64bit_entry:
/* Save hob pointer parameter */
mov %rcx, %r10
jmp init_64bit_entry_ret
diff --git a/arch/x86/cpu/slimbootloader/slimbootloader.c b/arch/x86/cpu/slimbootloader/slimbootloader.c index 21dcfb2142..7857e4cd8b 100644 --- a/arch/x86/cpu/slimbootloader/slimbootloader.c +++ b/arch/x86/cpu/slimbootloader/slimbootloader.c @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0+ /*
- Copyright (C) 2019 Intel Corporation <www.intel.com>
*/
- Copyright (C) 2019-2020 Intel Corporation <www.intel.com>
#include <common.h> @@ -43,11 +43,23 @@ static void tsc_init(void)
int arch_cpu_init(void) {
int ret = 0;
tsc_init();
return x86_cpu_init_f();
+#if !CONFIG_IS_ENABLED(X86_64)
Can you use if() instead of #if ?
ret = x86_cpu_init_f();
+#endif
return ret;
}
+#if CONFIG_IS_ENABLED(X86_64)
It should be safe to define both of these functions so I don't think you need the #ifdef
+int set_hob_list(void *hob_list) +{
gd->arch.hob_list = hob_list;
return 0;
+} +#else int checkcpu(void) { return 0; @@ -57,3 +69,4 @@ int print_cpuinfo(void) { return default_print_cpuinfo(); }
+#endif
2.20.1
Regards, Simon