xref: /rk3399_rockchip-uboot/arch/x86/lib/crt0_x86_64_efi.S (revision 2d221489df021393654805536be7effcb9d39702)
1*2dcd4e9eSSimon Glass/*
2*2dcd4e9eSSimon Glass * crt0-efi-x86_64.S - x86_64 EFI startup code.
3*2dcd4e9eSSimon Glass * Copyright (C) 1999 Hewlett-Packard Co.
4*2dcd4e9eSSimon Glass * Contributed by David Mosberger <davidm@hpl.hp.com>.
5*2dcd4e9eSSimon Glass * Copyright (C) 2005 Intel Co.
6*2dcd4e9eSSimon Glass * Contributed by Fenghua Yu <fenghua.yu@intel.com>.
7*2dcd4e9eSSimon Glass *
8*2dcd4e9eSSimon Glass * All rights reserved.
9*2dcd4e9eSSimon Glass * SPDX-License-Identifier:	BSD-3-Clause
10*2dcd4e9eSSimon Glass */
11*2dcd4e9eSSimon Glass	.text
12*2dcd4e9eSSimon Glass	.align 4
13*2dcd4e9eSSimon Glass
14*2dcd4e9eSSimon Glass	.globl _start
15*2dcd4e9eSSimon Glass_start:
16*2dcd4e9eSSimon Glass	subq $8, %rsp
17*2dcd4e9eSSimon Glass	pushq %rcx
18*2dcd4e9eSSimon Glass	pushq %rdx
19*2dcd4e9eSSimon Glass
20*2dcd4e9eSSimon Glass0:
21*2dcd4e9eSSimon Glass	lea image_base(%rip), %rdi
22*2dcd4e9eSSimon Glass	lea _DYNAMIC(%rip), %rsi
23*2dcd4e9eSSimon Glass
24*2dcd4e9eSSimon Glass	popq %rcx
25*2dcd4e9eSSimon Glass	popq %rdx
26*2dcd4e9eSSimon Glass	pushq %rcx
27*2dcd4e9eSSimon Glass	pushq %rdx
28*2dcd4e9eSSimon Glass	call _relocate
29*2dcd4e9eSSimon Glass
30*2dcd4e9eSSimon Glass	popq %rdi
31*2dcd4e9eSSimon Glass	popq %rsi
32*2dcd4e9eSSimon Glass
33*2dcd4e9eSSimon Glass	call efi_main
34*2dcd4e9eSSimon Glass	addq $8, %rsp
35*2dcd4e9eSSimon Glass
36*2dcd4e9eSSimon Glass.exit:
37*2dcd4e9eSSimon Glass	ret
38*2dcd4e9eSSimon Glass
39*2dcd4e9eSSimon Glass	/*
40*2dcd4e9eSSimon Glass	 * hand-craft a dummy .reloc section so EFI knows it's a relocatable
41*2dcd4e9eSSimon Glass	 * executable:
42*2dcd4e9eSSimon Glass	 */
43*2dcd4e9eSSimon Glass	.data
44*2dcd4e9eSSimon Glassdummy:	.long	0
45*2dcd4e9eSSimon Glass
46*2dcd4e9eSSimon Glass#define IMAGE_REL_ABSOLUTE	0
47*2dcd4e9eSSimon Glass	.section .reloc, "a"
48*2dcd4e9eSSimon Glasslabel1:
49*2dcd4e9eSSimon Glass	.long	dummy-label1				/* Page RVA */
50*2dcd4e9eSSimon Glass	.long	10					/* Block Size (2*4+2) */
51*2dcd4e9eSSimon Glass	.word	(IMAGE_REL_ABSOLUTE << 12) +  0		/* reloc for dummy */
52