btrfs: Attempt to fix GCC2 build.
[haiku.git] / src / system / glue / arch / x86_64 / crti.S
blobec26b6d5a3c6822d09f3af6c556b232fd632b090
1 /*
2  * Copyright 2005-2006, Axel Dörfler, axeld@pinc-software.de.
3  * Copyright 2012, Alex Smith, alex@alex-smith.me.uk.
4  * Distributed under the terms of the MIT License.
5  */
8 #include <asm_defs.h>
11 /**     This file contains the first part of the ".init" and ".fini" sections in
12  *      the ELF executable.
13  *      The functions defined here will be called during initialization/termination
14  *      of the loaded executable/library. The ".init" and ".fini" sections are
15  *      stacked together like this:
16  *
17  *      crti.S          entry point
18  *                              call to _init_before/_term_before
19  *      crtbegin.S      GCC specific: constructors/destructors are called, ...
20  *      crtend.S
21  *      crtn.S          call to _init_after/_term_after
22  *                              exit
23  */
26 .section .init
27 FUNCTION(_init):
28         push    %rbp
29         movq    %rsp, %rbp
31         // Preserve image ID for call to __haiku_init_after.
32         push    %rdi
33         sub             $0x8, %rsp
35         call    __haiku_init_before
36         // crtbegin.o stuff comes here
38 .section .fini
39 FUNCTION(_fini):
40         push    %rbp
41         movq    %rsp, %rbp
42         push    %rdi
43         sub             $0x8, %rsp
44         call    __haiku_term_before
45         // crtend.o stuff comes here