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