blob: 78e894d2a21a21891f7f73c741d113da6a9646f6 [file] [log] [blame]
Tom Rini10e47792018-05-06 17:58:06 -04001/* SPDX-License-Identifier: GPL-2.0+ */
Simon Glass8157b332017-01-16 07:03:48 -07002/*
3 * 64-bit x86 Startup Code
4 *
Simon Glass435f7052019-04-25 21:58:40 -06005 * Copyright 2019 Google, Inc
Simon Glass8157b332017-01-16 07:03:48 -07006 * Written by Simon Glass <sjg@chromium.org>
Simon Glass8157b332017-01-16 07:03:48 -07007 */
8
9#include <config.h>
10
Alexander Graf94a10f22018-06-12 07:48:37 +020011.section .text.start
Simon Glass8157b332017-01-16 07:03:48 -070012.code64
13.globl _start
14.type _start, @function
15_start:
16 /* Set up memory using the existing stack */
17 mov %rsp, %rdi
18 call board_init_f_alloc_reserve
19 mov %rax, %rsp
20
21 call board_init_f_init_reserve
22
Bin Mengf92b3d72018-10-13 20:52:09 -070023 xor %rdi, %rdi
Simon Glass8157b332017-01-16 07:03:48 -070024 call board_init_f
25 call board_init_f_r
26
27 /* Should not return here */
28 jmp .
Simon Glasse6b03502023-07-15 21:38:52 -060029
30.globl board_init_f_r_trampoline64
31.type board_init_f_r_trampoline64, @function
32board_init_f_r_trampoline64:
33 /*
34 * SDRAM has been initialised, U-Boot code has been copied into
35 * RAM, BSS has been cleared and relocation adjustments have been
36 * made. It is now time to jump into the in-RAM copy of U-Boot
37 *
38 * %eax = Address of top of new stack
39 */
40
41 /* Stack grows down from top of SDRAM */
42 movq %rsi, %rsp
43
44 /* New gd is in rdi */
45
46 /* Re-enter U-Boot by calling board_init_f_r() */
47 call board_init_f_r