183d290c5STom Rini/* SPDX-License-Identifier: BSD-3-Clause */ 22dcd4e9eSSimon Glass/* 32dcd4e9eSSimon Glass * crt0-efi-x86_64.S - x86_64 EFI startup code. 42dcd4e9eSSimon Glass * Copyright (C) 1999 Hewlett-Packard Co. 52dcd4e9eSSimon Glass * Contributed by David Mosberger <davidm@hpl.hp.com>. 6*9f0b0113SIvan Gorinov * Copyright (C) 2005 Intel Corporation 72dcd4e9eSSimon Glass * Contributed by Fenghua Yu <fenghua.yu@intel.com>. 82dcd4e9eSSimon Glass * 92dcd4e9eSSimon Glass * All rights reserved. 102dcd4e9eSSimon Glass */ 112dcd4e9eSSimon Glass .text 122dcd4e9eSSimon Glass .align 4 132dcd4e9eSSimon Glass 142dcd4e9eSSimon Glass .globl _start 152dcd4e9eSSimon Glass_start: 162dcd4e9eSSimon Glass subq $8, %rsp 17*9f0b0113SIvan Gorinov 182dcd4e9eSSimon Glass pushq %rcx 192dcd4e9eSSimon Glass pushq %rdx 202dcd4e9eSSimon Glass 21*9f0b0113SIvan Gorinov lea image_base(%rip), %rcx 22*9f0b0113SIvan Gorinov lea _DYNAMIC(%rip), %rdx 23*9f0b0113SIvan Gorinov 242dcd4e9eSSimon Glass call _relocate 252dcd4e9eSSimon Glass 26*9f0b0113SIvan Gorinov popq %rdx 27*9f0b0113SIvan Gorinov popq %rcx 28*9f0b0113SIvan Gorinov 29*9f0b0113SIvan Gorinov testq %rax, %rax 30*9f0b0113SIvan Gorinov jnz .exit 312dcd4e9eSSimon Glass 322dcd4e9eSSimon Glass call efi_main 33*9f0b0113SIvan Gorinov.exit: 342dcd4e9eSSimon Glass addq $8, %rsp 352dcd4e9eSSimon Glass 362dcd4e9eSSimon Glass ret 372dcd4e9eSSimon Glass 382dcd4e9eSSimon Glass /* 392dcd4e9eSSimon Glass * hand-craft a dummy .reloc section so EFI knows it's a relocatable 402dcd4e9eSSimon Glass * executable: 412dcd4e9eSSimon Glass */ 422dcd4e9eSSimon Glass .data 432dcd4e9eSSimon Glassdummy: .long 0 442dcd4e9eSSimon Glass 452dcd4e9eSSimon Glass#define IMAGE_REL_ABSOLUTE 0 462dcd4e9eSSimon Glass .section .reloc, "a" 472dcd4e9eSSimon Glasslabel1: 482dcd4e9eSSimon Glass .long dummy-label1 /* Page RVA */ 492dcd4e9eSSimon Glass .long 10 /* Block Size (2*4+2) */ 502dcd4e9eSSimon Glass .word (IMAGE_REL_ABSOLUTE << 12) + 0 /* reloc for dummy */ 51