Fixed incorrect use of mvcle introduced by 2001-07-12 change.
[kopensolaris-gnu/glibc.git] / sysdeps / s390 / s390-64 / initfini.c
1 /* Special .init and .fini section support for 64 bit S/390.
2    Copyright (C) 2001 Free Software Foundation, Inc.
3    Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
4    This file is part of the GNU C Library.
5
6    The GNU C Library is free software; you can redistribute it and/or
7    modify it under the terms of the GNU Lesser General Public
8    License as published by the Free Software Foundation; either
9    version 2.1 of the License, or (at your option) any later version.
10
11    The GNU C Library is distributed in the hope that it will be useful,
12    but WITHOUT ANY WARRANTY; without even the implied warranty of
13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14    Lesser General Public License for more details.
15
16    You should have received a copy of the GNU Lesser General Public
17    License along with the GNU C Library; if not, write to the Free
18    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
19    02111-1307 USA.  */
20
21 /* This file is compiled into assembly code which is then munged by a sed
22    script into two files: crti.s and crtn.s.
23
24    * crti.s puts a function prologue at the beginning of the
25    .init and .fini sections and defines global symbols for
26    those addresses, so they can be called as functions.
27
28    * crtn.s puts the corresponding function epilogues
29    in the .init and .fini sections. */
30
31 __asm__ ("
32
33 #include \"defs.h\"
34
35 /*@HEADER_ENDS*/
36
37 /*@TESTS_BEGIN*/
38
39 /*@TESTS_END*/
40
41 /*@_init_PROLOG_BEGINS*/
42
43         .section .init
44 #NO_APP
45         .align 4
46 .globl _init
47         .type    _init,@function
48 _init:
49 #       leaf function           0
50 #       automatics              0
51 #       outgoing args           0
52 #       need frame pointer      0
53 #       call alloca             0
54 #       has varargs             0
55 #       incoming args (stack)   0
56 #       function length         36
57         STMG    6,15,48(15)
58         LGR     1,15
59         AGHI    15,-160
60         STG     1,0(15)
61         LARL    12,_GLOBAL_OFFSET_TABLE_
62         LARL    1,__gmon_start__@GOTENT
63         LG      1,0(1)
64         LTGR    1,1
65         JE      .L22
66         BASR    14,1
67 .L22:
68 #APP
69         .align 4,0x07
70         END_INIT
71
72 /*@_init_PROLOG_ENDS*/
73
74 /*@_init_EPILOG_BEGINS*/
75         .align 4
76         .section .init
77 #NO_APP
78         .align 4
79         LG      4,272(15)
80         LMG     6,15,208(15)
81         BR      4
82 #APP
83         END_INIT
84
85 /*@_init_EPILOG_ENDS*/
86
87 /*@_fini_PROLOG_BEGINS*/
88         .section .fini
89 #NO_APP
90         .align 4
91 .globl _fini
92         .type    _fini,@function
93 _fini:
94 #       leaf function           0
95 #       automatics              0
96 #       outgoing args           0
97 #       need frame pointer      0
98 #       call alloca             0
99 #       has varargs             0
100 #       incoming args (stack)   0
101 #       function length         30
102         STMG    6,15,48(15)
103         LGR     1,15
104         AGHI    15,-160
105         STG     1,0(15)
106         LARL    12,_GLOBAL_OFFSET_TABLE_
107 #APP
108         .align 4,0x07
109         END_FINI
110
111 /*@_fini_PROLOG_ENDS*/
112
113 /*@_fini_EPILOG_BEGINS*/
114         .align 4
115         .section .fini
116 #NO_APP
117         .align 4
118         LG      4,272(15)
119         LMG     6,15,208(15)
120         BR      4
121 #APP
122         END_FINI
123
124 /*@_fini_EPILOG_ENDS*/
125
126 /*@TRAILER_BEGINS*/
127 ");