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	sub     $4,%esp		// Keep stack aligned
27	pushl	8(%ebp)		// put image ID on the stack again
28	// crtbegin.o stuff comes here
29
30.section .fini
31FUNCTION(_fini):
32	pushl	%ebp
33	movl	%esp, %ebp
34	sub     $4,%esp		// Keep stack aligned
35	pushl	8(%ebp)
36	// crtend.o stuff comes here
37