]> git.ipfire.org Git - thirdparty/u-boot.git/blame - arch/x86/lib/crt0_ia32_efi.S
SPDX: Convert all of our single license tags to Linux Kernel style
[thirdparty/u-boot.git] / arch / x86 / lib / crt0_ia32_efi.S
CommitLineData
83d290c5 1/* SPDX-License-Identifier: BSD-3-Clause */
3dcdd17b
BS
2/*
3 * crt0-efi-ia32.S - x86 EFI startup code.
4 *
5 * Copyright (C) 1999 Hewlett-Packard Co.
6 * Contributed by David Mosberger <davidm@hpl.hp.com>.
7 * All rights reserved.
3dcdd17b
BS
8 */
9
10 .text
11 .align 4
12
13 .globl _start
14_start:
15 pushl %ebp
16 movl %esp,%ebp
17
18 pushl 12(%ebp) # copy "image" argument
19 pushl 8(%ebp) # copy "systab" argument
20
21 call 0f
220: popl %eax
23 movl %eax,%ebx
24
25 addl $image_base-0b,%eax # %eax = ldbase
26 addl $_DYNAMIC-0b,%ebx # %ebx = _DYNAMIC
27
28 pushl %ebx # pass _DYNAMIC as second argument
29 pushl %eax # pass ldbase as first argument
30 call _relocate
31 popl %ebx
32 popl %ebx
33 testl %eax,%eax
34 jne .exit
35 call efi_main # call app with "image" and "systab" argument
36
37.exit: leave
38 ret
39
40 /*
41 * hand-craft a dummy .reloc section so EFI knows it's a relocatable
42 * executable:
43 */
44 .data
45dummy: .long 0
46
47#define IMAGE_REL_ABSOLUTE 0
48 .section .reloc
49 .long dummy /* Page RVA */
50 .long 10 /* Block Size (2*4+2) */
51 .word (IMAGE_REL_ABSOLUTE << 12) + 0 /* reloc for dummy */