1*83d290c5STom Rini/* SPDX-License-Identifier: BSD-3-Clause */ 22dcd4e9eSSimon Glass/* 32dcd4e9eSSimon Glass * crt0-efi-ia32.S - x86 EFI startup code. 42dcd4e9eSSimon Glass * 52dcd4e9eSSimon Glass * Copyright (C) 1999 Hewlett-Packard Co. 62dcd4e9eSSimon Glass * Contributed by David Mosberger <davidm@hpl.hp.com>. 72dcd4e9eSSimon Glass * All rights reserved. 82dcd4e9eSSimon Glass */ 92dcd4e9eSSimon Glass 102dcd4e9eSSimon Glass .text 112dcd4e9eSSimon Glass .align 4 122dcd4e9eSSimon Glass 132dcd4e9eSSimon Glass .globl _start 142dcd4e9eSSimon Glass_start: 152dcd4e9eSSimon Glass pushl %ebp 162dcd4e9eSSimon Glass movl %esp,%ebp 172dcd4e9eSSimon Glass 182dcd4e9eSSimon Glass pushl 12(%ebp) # copy "image" argument 192dcd4e9eSSimon Glass pushl 8(%ebp) # copy "systab" argument 202dcd4e9eSSimon Glass 212dcd4e9eSSimon Glass call 0f 222dcd4e9eSSimon Glass0: popl %eax 232dcd4e9eSSimon Glass movl %eax,%ebx 242dcd4e9eSSimon Glass 252dcd4e9eSSimon Glass addl $image_base-0b,%eax # %eax = ldbase 262dcd4e9eSSimon Glass addl $_DYNAMIC-0b,%ebx # %ebx = _DYNAMIC 272dcd4e9eSSimon Glass 282dcd4e9eSSimon Glass pushl %ebx # pass _DYNAMIC as second argument 292dcd4e9eSSimon Glass pushl %eax # pass ldbase as first argument 302dcd4e9eSSimon Glass call _relocate 312dcd4e9eSSimon Glass popl %ebx 322dcd4e9eSSimon Glass popl %ebx 332dcd4e9eSSimon Glass testl %eax,%eax 342dcd4e9eSSimon Glass jne .exit 352dcd4e9eSSimon Glass call efi_main # call app with "image" and "systab" argument 362dcd4e9eSSimon Glass 372dcd4e9eSSimon Glass.exit: leave 382dcd4e9eSSimon Glass ret 392dcd4e9eSSimon Glass 402dcd4e9eSSimon Glass /* 412dcd4e9eSSimon Glass * hand-craft a dummy .reloc section so EFI knows it's a relocatable 422dcd4e9eSSimon Glass * executable: 432dcd4e9eSSimon Glass */ 442dcd4e9eSSimon Glass .data 452dcd4e9eSSimon Glassdummy: .long 0 462dcd4e9eSSimon Glass 472dcd4e9eSSimon Glass#define IMAGE_REL_ABSOLUTE 0 482dcd4e9eSSimon Glass .section .reloc 492dcd4e9eSSimon Glass .long dummy /* Page RVA */ 502dcd4e9eSSimon Glass .long 10 /* Block Size (2*4+2) */ 512dcd4e9eSSimon Glass .word (IMAGE_REL_ABSOLUTE << 12) + 0 /* reloc for dummy */ 52