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