1 /* Special .init and .fini section support for ia64.
2 Copyright (C) 2000, 2002 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, write to the Free
17 Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
20 /* This file is compiled into assembly code which is then munged by a sed
21 script into two files: crti.s and crtn.s.
23 * crti.s puts a function prologue at the beginning of the
24 .init and .fini sections and defines global symbols for
25 those addresses, so they can be called as functions.
27 * crtn.s puts the corresponding function epilogues
28 in the .init and .fini sections. */
32 #include \"defs.h\"\n\
36 /*@_init_PROLOG_BEGINS*/\n\
42 alloc r34 = ar.pfs, 0, 3, 0, 0\n\
45 adds r12 = -16, r12\n\
46 addl r14 = @ltoff(@fptr(__gmon_start__#)), gp\n\
50 cmp.eq p6, p7 = 0, r15\n\
51 (p6) br.cond.dptk .L5\n\
53 /* we could use r35 to save gp, but we use the stack since that's what\n\
54 * all the other init routines will do --davidm 00/04/05 */\n\
55 st8 [r12] = gp, -16\n\
56 br.call.sptk.many b0 = __gmon_start__# ;;\n\
65 /*@_init_PROLOG_ENDS*/\n\
67 /*@_init_EPILOG_BEGINS*/\n\
73 br.ret.sptk.many b0\n\
75 /*@_init_EPILOG_ENDS*/\n\
77 /*@_fini_PROLOG_BEGINS*/\n\
83 alloc r34 = ar.pfs, 0, 3, 0, 0\n\
86 adds r12 = -16, r12\n\
91 /*@_fini_PROLOG_ENDS*/\n\
92 br.call.sptk.many b0 = i_am_not_a_leaf# ;;\n\
95 /*@_fini_EPILOG_BEGINS*/\n\
100 br.ret.sptk.many b0\n\
103 /*@_fini_EPILOG_ENDS*/\n\
105 /*@TRAILER_BEGINS*/\n\
106 .weak __gmon_start__#\n\