Home | History | Annotate | Line # | Download | only in gnuefi
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