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