]>
Commit | Line | Data |
---|---|---|
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 | |
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 */ |