xref: /haiku/src/system/glue/arch/x86/crti.S (revision 2f470aec1c92ce6917b8a903e343795dc77af41f)
1/*
2 * Copyright 2005-2006, Axel Dörfler, axeld@pinc-software.de.
3 * Distributed under the terms of the MIT License.
4 */
5
6/**	This file contains the first part of the ".init" and ".fini" sections in
7 *	the ELF executable.
8 *	The functions defined here will be called during initialization/termination
9 *	of the loaded executable/library. The ".init" and ".fini" sections are
10 *	stacked together like this:
11 *
12 *	crti.S		entry point
13 *				call to _init_before/_term_before
14 *	crtbegin.S	GCC specific: constructors/destructors are called, ...
15 *	crtend.S
16 *	crtn.S		call to _init_after/_term_after
17 *				exit
18 */
19
20#define FUNCTION(x) .global x; .type x,@function; x
21
22.section .init
23FUNCTION(_init):
24	pushl	%ebp
25	movl	%esp, %ebp
26	pushl	8(%ebp)		// put image ID on the stack again
27	call	_init_before
28	// crtbegin.o stuff comes here
29
30.section .fini
31FUNCTION(_fini):
32	pushl	%ebp
33	movl	%esp, %ebp
34	pushl	8(%ebp)
35	call	_term_before
36	// crtend.o stuff comes here
37