xref: /freebsd/stand/efi/loader/arch/i386/start.S (revision f8ca5d45c3c1829759ecd87cb95d53e5ab7d0811)
1*f8ca5d45SAhmad Khalifa/*-
2*f8ca5d45SAhmad Khalifa * Copyright (C) 1999 Hewlett-Packard Co.
3*f8ca5d45SAhmad Khalifa *     Contributed by David Mosberger <davidm@hpl.hp.com>.
4*f8ca5d45SAhmad Khalifa * All rights reserved.
5*f8ca5d45SAhmad Khalifa *
6*f8ca5d45SAhmad Khalifa * Redistribution and use in source and binary forms, with or without
7*f8ca5d45SAhmad Khalifa * modification, are permitted provided that the following conditions
8*f8ca5d45SAhmad Khalifa * are met:
9*f8ca5d45SAhmad Khalifa * 1. Redistributions of source code must retain the above copyright
10*f8ca5d45SAhmad Khalifa *    notice, this list of conditions and the following disclaimer.
11*f8ca5d45SAhmad Khalifa * 2. Redistributions in binary form must reproduce the above copyright
12*f8ca5d45SAhmad Khalifa *    notice, this list of conditions and the following disclaimer in the
13*f8ca5d45SAhmad Khalifa *    documentation and/or other materials provided with the distribution.
14*f8ca5d45SAhmad Khalifa * 3. Neither the name of Hewlett-Packard Co. nor the names of its
15*f8ca5d45SAhmad Khalifa *    contributors may be used to endorse or promote products derived
16*f8ca5d45SAhmad Khalifa *    from this software without specific prior written permission.
17*f8ca5d45SAhmad Khalifa *
18*f8ca5d45SAhmad Khalifa * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19*f8ca5d45SAhmad Khalifa * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20*f8ca5d45SAhmad Khalifa * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21*f8ca5d45SAhmad Khalifa * A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT
22*f8ca5d45SAhmad Khalifa * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23*f8ca5d45SAhmad Khalifa * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24*f8ca5d45SAhmad Khalifa * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25*f8ca5d45SAhmad Khalifa * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26*f8ca5d45SAhmad Khalifa * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
27*f8ca5d45SAhmad Khalifa * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
28*f8ca5d45SAhmad Khalifa * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29*f8ca5d45SAhmad Khalifa * SUCH DAMAGE.
30*f8ca5d45SAhmad Khalifa */
31*f8ca5d45SAhmad Khalifa
32*f8ca5d45SAhmad Khalifa/*
33*f8ca5d45SAhmad Khalifa * crt0-efi-ia32.S - x86 EFI startup code.
34*f8ca5d45SAhmad Khalifa */
35*f8ca5d45SAhmad Khalifa
36*f8ca5d45SAhmad Khalifa	.text
37*f8ca5d45SAhmad Khalifa	.align 4
38*f8ca5d45SAhmad Khalifa
39*f8ca5d45SAhmad Khalifa	.globl _start
40*f8ca5d45SAhmad Khalifa_start:
41*f8ca5d45SAhmad Khalifa	pushl %ebp
42*f8ca5d45SAhmad Khalifa	movl %esp, %ebp
43*f8ca5d45SAhmad Khalifa
44*f8ca5d45SAhmad Khalifa	pushl 12(%ebp)
45*f8ca5d45SAhmad Khalifa	pushl  8(%ebp)
46*f8ca5d45SAhmad Khalifa
47*f8ca5d45SAhmad Khalifa	call 0f
48*f8ca5d45SAhmad Khalifa0:	popl %eax
49*f8ca5d45SAhmad Khalifa	movl %eax, %ebx
50*f8ca5d45SAhmad Khalifa
51*f8ca5d45SAhmad Khalifa	addl $ImageBase-0b, %eax
52*f8ca5d45SAhmad Khalifa	addl $_DYNAMIC-0b, %ebx
53*f8ca5d45SAhmad Khalifa
54*f8ca5d45SAhmad Khalifa	pushl %ebx
55*f8ca5d45SAhmad Khalifa	pushl %eax
56*f8ca5d45SAhmad Khalifa	call self_reloc
57*f8ca5d45SAhmad Khalifa	popl %ebx
58*f8ca5d45SAhmad Khalifa	popl %ebx
59*f8ca5d45SAhmad Khalifa
60*f8ca5d45SAhmad Khalifa	call setup
61*f8ca5d45SAhmad Khalifa
62*f8ca5d45SAhmad Khalifa.exit:
63*f8ca5d45SAhmad Khalifa	leave
64*f8ca5d45SAhmad Khalifa	ret
65*f8ca5d45SAhmad Khalifa
66*f8ca5d45SAhmad Khalifa	/*
67*f8ca5d45SAhmad Khalifa	 * hand-craft a dummy .reloc section so EFI knows it's a relocatable
68*f8ca5d45SAhmad Khalifa	 * executable:
69*f8ca5d45SAhmad Khalifa	 */
70*f8ca5d45SAhmad Khalifa
71*f8ca5d45SAhmad Khalifa	.data
72*f8ca5d45SAhmad Khalifa	.section .reloc, "a"
73*f8ca5d45SAhmad Khalifa	.long   0
74*f8ca5d45SAhmad Khalifa	.long   10
75*f8ca5d45SAhmad Khalifa	.word   0
76