SPDX: Convert all of our single license tags to Linux Kernel style
[platform/kernel/u-boot.git] / arch / x86 / lib / crt0_ia32_efi.S
1 /* SPDX-License-Identifier: BSD-3-Clause */
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.
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
22 0:      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
45 dummy:  .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 */