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