8322 nl: misleading-indentation
[unleashed/tickless.git] / usr / src / lib / common / i386 / crti.s
blob8f8a7ed477c891caf93dff05b130ea2e1c3014a5
1 /*
2 * CDDL HEADER START
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License, Version 1.0 only
6 * (the "License"). You may not use this file except in compliance
7 * with the License.
9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 * or http://www.opensolaris.org/os/licensing.
11 * See the License for the specific language governing permissions
12 * and limitations under the License.
14 * When distributing Covered Code, include this CDDL HEADER in each
15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 * If applicable, add the following below this CDDL HEADER, with the
17 * fields enclosed by brackets "[]" replaced with your own identifying
18 * information: Portions Copyright [yyyy] [name of copyright owner]
20 * CDDL HEADER END
23 * Copyright (c) 2001 by Sun Microsystems, Inc.
24 * All rights reserved.
27 * Copyright (c) 2013, Joyent, Inc. All rights reserved.
31 * These crt*.o modules are provided as the bare minimum required
32 * from a crt*.o for inclusion in building low level system
33 * libraries. The are only be to included in libraries which
34 * contain *no* C++ code and want to avoid the startup code
35 * that the C++ runtime has introduced into the crt*.o modules.
37 * For further details - see bug#4433015
40 .file "crti.s"
43 * Note that when _init and _fini are called the stack needs to be 16-byte
44 * aligned with a 4-byte bias. See comment in lib/libc/i386/gen/makectxt.c.
46 * Note: If you change it, you need to change it in the following files as
47 * well:
49 * - lib/libc/i386/threads/machdep.c
50 * - lib/libc/i386/gen/makectxt.c
51 * - lib/common/i386/crt1.s
55 * _init function prologue
57 .section .init,"ax"
58 .globl _init
59 .type _init,@function
60 .align 16
61 _init:
62 pushl %ebp
63 movl %esp, %ebp
64 andl $-16,%esp
65 subl $12,%esp
66 pushl %ebx
67 call .L1
68 .L1: popl %ebx
69 addl $_GLOBAL_OFFSET_TABLE_+[.-.L1], %ebx
72 * _fini function prologue
74 .section .fini,"ax"
75 .globl _fini
76 .type _fini,@function
77 .align 16
78 _fini:
79 pushl %ebp
80 movl %esp, %ebp
81 andl $-16,%esp
82 subl $12,%esp
83 pushl %ebx
84 call .L2
85 .L2: popl %ebx
86 addl $_GLOBAL_OFFSET_TABLE_+[.-.L2], %ebx