patches/gcc/3.3.2/sh-lib1funcs_sizeAndType.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sat Feb 24 11:00:05 2007 +0000 (2007-02-24)
changeset 1 eeea35fbf182
permissions -rw-r--r--
Add the full crosstool-NG sources to the new repository of its own.
You might just say: 'Yeah! crosstool-NG's got its own repo!".
Unfortunately, that's because the previous repo got damaged beyond repair and I had no backup.
That means I'm putting backups in place in the afternoon.
That also means we've lost history... :-(
yann@1
     1
Fixes the problem
yann@1
     2
	[ libdemo.so and main.o both use assignment on structures ]
yann@1
     3
	$ sh4-unknown-linux-gnu-gcc libdemo.so main.o
yann@1
     4
	sh4-unknown-linux-gnu/bin/ld: warning: type and size of dynamic symbol `__movstr_i4_even' are not defined
yann@1
     5
	[ resulting app links, but crashes at runtime ]
yann@1
     6
See testcase at http://tsukuba.m17n.org/linux-sh/ml/linux-sh/2003-11/msg00016.html
yann@1
     7
yann@1
     8
Patch was posted as http://gcc.gnu.org/ml/gcc-patches/2002-11/msg01641.html
yann@1
     9
and is in cvs as http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/sh/lib1funcs.asm.diff?r1=1.29.4.1&r2=1.29.4.2
yann@1
    10
yann@1
    11
but see also sh-libgcc-hidden.patch
yann@1
    12
yann@1
    13
===================================================================
yann@1
    14
yann@1
    15
--- gcc/gcc/config/sh/lib1funcs.asm	2002/09/20 01:29:21	1.29.4.1
yann@1
    16
+++ gcc/gcc/config/sh/lib1funcs.asm	2003/11/18 12:27:31
yann@1
    17
@@ -38,9 +38,14 @@
yann@1
    18
    amylaar@cygnus.com  */
yann@1
    19
 
yann@1
    20
 #ifdef __ELF__
yann@1
    21
-#define LOCAL(X) .L_##X
yann@1
    22
-#else
yann@1
    23
-#define LOCAL(X) L_##X
yann@1
    24
+#define LOCAL(X)	.L_##X
yann@1
    25
+#define FUNC(X)		.type X,@function
yann@1
    26
+#define ENDFUNC0(X)	.Lfe_##X: .size X,.Lfe_##X-X
yann@1
    27
+#define ENDFUNC(X)	ENDFUNC0(X)
yann@1
    28
+#else
yann@1
    29
+#define LOCAL(X)	L_##X
yann@1
    30
+#define FUNC(X)
yann@1
    31
+#define ENDFUNC(X)
yann@1
    32
 #endif
yann@1
    33
 
yann@1
    34
 #define	CONCAT(A,B)	A##B
yann@1
    35
@@ -87,6 +92,40 @@
yann@1
    36
 	.global	GLOBAL(ashiftrt_r4_31)
yann@1
    37
 	.global	GLOBAL(ashiftrt_r4_32)
yann@1
    38
 
yann@1
    39
+	FUNC(GLOBAL(ashiftrt_r4_0))
yann@1
    40
+	FUNC(GLOBAL(ashiftrt_r4_1))
yann@1
    41
+	FUNC(GLOBAL(ashiftrt_r4_2))
yann@1
    42
+	FUNC(GLOBAL(ashiftrt_r4_3))
yann@1
    43
+	FUNC(GLOBAL(ashiftrt_r4_4))
yann@1
    44
+	FUNC(GLOBAL(ashiftrt_r4_5))
yann@1
    45
+	FUNC(GLOBAL(ashiftrt_r4_6))
yann@1
    46
+	FUNC(GLOBAL(ashiftrt_r4_7))
yann@1
    47
+	FUNC(GLOBAL(ashiftrt_r4_8))
yann@1
    48
+	FUNC(GLOBAL(ashiftrt_r4_9))
yann@1
    49
+	FUNC(GLOBAL(ashiftrt_r4_10))
yann@1
    50
+	FUNC(GLOBAL(ashiftrt_r4_11))
yann@1
    51
+	FUNC(GLOBAL(ashiftrt_r4_12))
yann@1
    52
+	FUNC(GLOBAL(ashiftrt_r4_13))
yann@1
    53
+	FUNC(GLOBAL(ashiftrt_r4_14))
yann@1
    54
+	FUNC(GLOBAL(ashiftrt_r4_15))
yann@1
    55
+	FUNC(GLOBAL(ashiftrt_r4_16))
yann@1
    56
+	FUNC(GLOBAL(ashiftrt_r4_17))
yann@1
    57
+	FUNC(GLOBAL(ashiftrt_r4_18))
yann@1
    58
+	FUNC(GLOBAL(ashiftrt_r4_19))
yann@1
    59
+	FUNC(GLOBAL(ashiftrt_r4_20))
yann@1
    60
+	FUNC(GLOBAL(ashiftrt_r4_21))
yann@1
    61
+	FUNC(GLOBAL(ashiftrt_r4_22))
yann@1
    62
+	FUNC(GLOBAL(ashiftrt_r4_23))
yann@1
    63
+	FUNC(GLOBAL(ashiftrt_r4_24))
yann@1
    64
+	FUNC(GLOBAL(ashiftrt_r4_25))
yann@1
    65
+	FUNC(GLOBAL(ashiftrt_r4_26))
yann@1
    66
+	FUNC(GLOBAL(ashiftrt_r4_27))
yann@1
    67
+	FUNC(GLOBAL(ashiftrt_r4_28))
yann@1
    68
+	FUNC(GLOBAL(ashiftrt_r4_29))
yann@1
    69
+	FUNC(GLOBAL(ashiftrt_r4_30))
yann@1
    70
+	FUNC(GLOBAL(ashiftrt_r4_31))
yann@1
    71
+	FUNC(GLOBAL(ashiftrt_r4_32))
yann@1
    72
+
yann@1
    73
 	.align	1
yann@1
    74
 GLOBAL(ashiftrt_r4_32):
yann@1
    75
 GLOBAL(ashiftrt_r4_31):
yann@1
    76
@@ -166,6 +205,40 @@
yann@1
    77
 GLOBAL(ashiftrt_r4_0):
yann@1
    78
 	rts
yann@1
    79
 	nop
yann@1
    80
+
yann@1
    81
+	ENDFUNC(GLOBAL(ashiftrt_r4_0))
yann@1
    82
+	ENDFUNC(GLOBAL(ashiftrt_r4_1))
yann@1
    83
+	ENDFUNC(GLOBAL(ashiftrt_r4_2))
yann@1
    84
+	ENDFUNC(GLOBAL(ashiftrt_r4_3))
yann@1
    85
+	ENDFUNC(GLOBAL(ashiftrt_r4_4))
yann@1
    86
+	ENDFUNC(GLOBAL(ashiftrt_r4_5))
yann@1
    87
+	ENDFUNC(GLOBAL(ashiftrt_r4_6))
yann@1
    88
+	ENDFUNC(GLOBAL(ashiftrt_r4_7))
yann@1
    89
+	ENDFUNC(GLOBAL(ashiftrt_r4_8))
yann@1
    90
+	ENDFUNC(GLOBAL(ashiftrt_r4_9))
yann@1
    91
+	ENDFUNC(GLOBAL(ashiftrt_r4_10))
yann@1
    92
+	ENDFUNC(GLOBAL(ashiftrt_r4_11))
yann@1
    93
+	ENDFUNC(GLOBAL(ashiftrt_r4_12))
yann@1
    94
+	ENDFUNC(GLOBAL(ashiftrt_r4_13))
yann@1
    95
+	ENDFUNC(GLOBAL(ashiftrt_r4_14))
yann@1
    96
+	ENDFUNC(GLOBAL(ashiftrt_r4_15))
yann@1
    97
+	ENDFUNC(GLOBAL(ashiftrt_r4_16))
yann@1
    98
+	ENDFUNC(GLOBAL(ashiftrt_r4_17))
yann@1
    99
+	ENDFUNC(GLOBAL(ashiftrt_r4_18))
yann@1
   100
+	ENDFUNC(GLOBAL(ashiftrt_r4_19))
yann@1
   101
+	ENDFUNC(GLOBAL(ashiftrt_r4_20))
yann@1
   102
+	ENDFUNC(GLOBAL(ashiftrt_r4_21))
yann@1
   103
+	ENDFUNC(GLOBAL(ashiftrt_r4_22))
yann@1
   104
+	ENDFUNC(GLOBAL(ashiftrt_r4_23))
yann@1
   105
+	ENDFUNC(GLOBAL(ashiftrt_r4_24))
yann@1
   106
+	ENDFUNC(GLOBAL(ashiftrt_r4_25))
yann@1
   107
+	ENDFUNC(GLOBAL(ashiftrt_r4_26))
yann@1
   108
+	ENDFUNC(GLOBAL(ashiftrt_r4_27))
yann@1
   109
+	ENDFUNC(GLOBAL(ashiftrt_r4_28))
yann@1
   110
+	ENDFUNC(GLOBAL(ashiftrt_r4_29))
yann@1
   111
+	ENDFUNC(GLOBAL(ashiftrt_r4_30))
yann@1
   112
+	ENDFUNC(GLOBAL(ashiftrt_r4_31))
yann@1
   113
+	ENDFUNC(GLOBAL(ashiftrt_r4_32))
yann@1
   114
 #endif
yann@1
   115
 
yann@1
   116
 #ifdef L_ashiftrt_n
yann@1
   117
@@ -188,6 +261,7 @@
yann@1
   118
 !
yann@1
   119
 
yann@1
   120
 	.global	GLOBAL(ashrsi3)
yann@1
   121
+	FUNC(GLOBAL(ashrsi3))
yann@1
   122
 	.align	2
yann@1
   123
 GLOBAL(ashrsi3):
yann@1
   124
 	mov	#31,r0
yann@1
   125
@@ -315,6 +389,7 @@
yann@1
   126
 	rts
yann@1
   127
 	nop
yann@1
   128
 
yann@1
   129
+	ENDFUNC(GLOBAL(ashrsi3))
yann@1
   130
 #endif
yann@1
   131
 
yann@1
   132
 #ifdef L_ashiftlt
yann@1
   133
@@ -336,6 +411,7 @@
yann@1
   134
 ! (none)
yann@1
   135
 !
yann@1
   136
 	.global	GLOBAL(ashlsi3)
yann@1
   137
+	FUNC(GLOBAL(ashlsi3))
yann@1
   138
 	.align	2
yann@1
   139
 GLOBAL(ashlsi3):
yann@1
   140
 	mov	#31,r0
yann@1
   141
@@ -472,6 +548,7 @@
yann@1
   142
 	rts
yann@1
   143
 	nop
yann@1
   144
 
yann@1
   145
+	ENDFUNC(GLOBAL(ashlsi3))
yann@1
   146
 #endif
yann@1
   147
 
yann@1
   148
 #ifdef L_lshiftrt
yann@1
   149
@@ -493,6 +570,7 @@
yann@1
   150
 ! (none)
yann@1
   151
 !
yann@1
   152
 	.global	GLOBAL(lshrsi3)
yann@1
   153
+	FUNC(GLOBAL(lshrsi3))
yann@1
   154
 	.align	2
yann@1
   155
 GLOBAL(lshrsi3):
yann@1
   156
 	mov	#31,r0
yann@1
   157
@@ -629,6 +707,7 @@
yann@1
   158
 	rts
yann@1
   159
 	nop
yann@1
   160
 
yann@1
   161
+	ENDFUNC(GLOBAL(lshrsi3))
yann@1
   162
 #endif
yann@1
   163
 
yann@1
   164
 #ifdef L_movstr
yann@1
   165
@@ -645,76 +724,113 @@
yann@1
   166
 	add	#64,r4
yann@1
   167
 	.align	4
yann@1
   168
 	.global	GLOBAL(movstrSI64)
yann@1
   169
+	FUNC(GLOBAL(movstrSI64))
yann@1
   170
 GLOBAL(movstrSI64):
yann@1
   171
 	mov.l	@(60,r5),r0
yann@1
   172
 	mov.l	r0,@(60,r4)
yann@1
   173
 	.global	GLOBAL(movstrSI60)
yann@1
   174
+	FUNC(GLOBAL(movstrSI60))
yann@1
   175
 GLOBAL(movstrSI60):
yann@1
   176
 	mov.l	@(56,r5),r0
yann@1
   177
 	mov.l	r0,@(56,r4)
yann@1
   178
 	.global	GLOBAL(movstrSI56)
yann@1
   179
+	FUNC(GLOBAL(movstrSI56))
yann@1
   180
 GLOBAL(movstrSI56):
yann@1
   181
 	mov.l	@(52,r5),r0
yann@1
   182
 	mov.l	r0,@(52,r4)
yann@1
   183
 	.global	GLOBAL(movstrSI52)
yann@1
   184
+	FUNC(GLOBAL(movstrSI52))
yann@1
   185
 GLOBAL(movstrSI52):
yann@1
   186
 	mov.l	@(48,r5),r0
yann@1
   187
 	mov.l	r0,@(48,r4)
yann@1
   188
 	.global	GLOBAL(movstrSI48)
yann@1
   189
+	FUNC(GLOBAL(movstrSI48))
yann@1
   190
 GLOBAL(movstrSI48):
yann@1
   191
 	mov.l	@(44,r5),r0
yann@1
   192
 	mov.l	r0,@(44,r4)
yann@1
   193
 	.global	GLOBAL(movstrSI44)
yann@1
   194
+	FUNC(GLOBAL(movstrSI44))
yann@1
   195
 GLOBAL(movstrSI44):
yann@1
   196
 	mov.l	@(40,r5),r0
yann@1
   197
 	mov.l	r0,@(40,r4)
yann@1
   198
 	.global	GLOBAL(movstrSI40)
yann@1
   199
+	FUNC(GLOBAL(movstrSI40))
yann@1
   200
 GLOBAL(movstrSI40):
yann@1
   201
 	mov.l	@(36,r5),r0
yann@1
   202
 	mov.l	r0,@(36,r4)
yann@1
   203
 	.global	GLOBAL(movstrSI36)
yann@1
   204
+	FUNC(GLOBAL(movstrSI36))
yann@1
   205
 GLOBAL(movstrSI36):
yann@1
   206
 	mov.l	@(32,r5),r0
yann@1
   207
 	mov.l	r0,@(32,r4)
yann@1
   208
 	.global	GLOBAL(movstrSI32)
yann@1
   209
+	FUNC(GLOBAL(movstrSI32))
yann@1
   210
 GLOBAL(movstrSI32):
yann@1
   211
 	mov.l	@(28,r5),r0
yann@1
   212
 	mov.l	r0,@(28,r4)
yann@1
   213
 	.global	GLOBAL(movstrSI28)
yann@1
   214
+	FUNC(GLOBAL(movstrSI28))
yann@1
   215
 GLOBAL(movstrSI28):
yann@1
   216
 	mov.l	@(24,r5),r0
yann@1
   217
 	mov.l	r0,@(24,r4)
yann@1
   218
 	.global	GLOBAL(movstrSI24)
yann@1
   219
+	FUNC(GLOBAL(movstrSI24))
yann@1
   220
 GLOBAL(movstrSI24):
yann@1
   221
 	mov.l	@(20,r5),r0
yann@1
   222
 	mov.l	r0,@(20,r4)
yann@1
   223
 	.global	GLOBAL(movstrSI20)
yann@1
   224
+	FUNC(GLOBAL(movstrSI20))
yann@1
   225
 GLOBAL(movstrSI20):
yann@1
   226
 	mov.l	@(16,r5),r0
yann@1
   227
 	mov.l	r0,@(16,r4)
yann@1
   228
 	.global	GLOBAL(movstrSI16)
yann@1
   229
+	FUNC(GLOBAL(movstrSI16))
yann@1
   230
 GLOBAL(movstrSI16):
yann@1
   231
 	mov.l	@(12,r5),r0
yann@1
   232
 	mov.l	r0,@(12,r4)
yann@1
   233
 	.global	GLOBAL(movstrSI12)
yann@1
   234
+	FUNC(GLOBAL(movstrSI12))
yann@1
   235
 GLOBAL(movstrSI12):
yann@1
   236
 	mov.l	@(8,r5),r0
yann@1
   237
 	mov.l	r0,@(8,r4)
yann@1
   238
 	.global	GLOBAL(movstrSI8)
yann@1
   239
+	FUNC(GLOBAL(movstrSI8))
yann@1
   240
 GLOBAL(movstrSI8):
yann@1
   241
 	mov.l	@(4,r5),r0
yann@1
   242
 	mov.l	r0,@(4,r4)
yann@1
   243
 	.global	GLOBAL(movstrSI4)
yann@1
   244
+	FUNC(GLOBAL(movstrSI4))
yann@1
   245
 GLOBAL(movstrSI4):
yann@1
   246
 	mov.l	@(0,r5),r0
yann@1
   247
 	mov.l	r0,@(0,r4)
yann@1
   248
+	.global	GLOBAL(movstrSI0)
yann@1
   249
+	FUNC(GLOBAL(movstrSI0))
yann@1
   250
 GLOBAL(movstrSI0):
yann@1
   251
 	rts
yann@1
   252
 	nop
yann@1
   253
 
yann@1
   254
+	ENDFUNC(GLOBAL(movstrSI64))
yann@1
   255
+	ENDFUNC(GLOBAL(movstrSI60))
yann@1
   256
+	ENDFUNC(GLOBAL(movstrSI56))
yann@1
   257
+	ENDFUNC(GLOBAL(movstrSI52))
yann@1
   258
+	ENDFUNC(GLOBAL(movstrSI48))
yann@1
   259
+	ENDFUNC(GLOBAL(movstrSI44))
yann@1
   260
+	ENDFUNC(GLOBAL(movstrSI40))
yann@1
   261
+	ENDFUNC(GLOBAL(movstrSI36))
yann@1
   262
+	ENDFUNC(GLOBAL(movstrSI32))
yann@1
   263
+	ENDFUNC(GLOBAL(movstrSI28))
yann@1
   264
+	ENDFUNC(GLOBAL(movstrSI24))
yann@1
   265
+	ENDFUNC(GLOBAL(movstrSI20))
yann@1
   266
+	ENDFUNC(GLOBAL(movstrSI16))
yann@1
   267
+	ENDFUNC(GLOBAL(movstrSI12))
yann@1
   268
+	ENDFUNC(GLOBAL(movstrSI8))
yann@1
   269
+	ENDFUNC(GLOBAL(movstrSI4))
yann@1
   270
+	ENDFUNC(GLOBAL(movstrSI0))
yann@1
   271
+
yann@1
   272
 	.align	4
yann@1
   273
 
yann@1
   274
 	.global	GLOBAL(movstr)
yann@1
   275
+	FUNC(GLOBAL(movstr))
yann@1
   276
 GLOBAL(movstr):
yann@1
   277
 	mov.l	@(60,r5),r0
yann@1
   278
 	mov.l	r0,@(60,r4)
yann@1
   279
@@ -771,6 +887,8 @@
yann@1
   280
 	add	#64,r5
yann@1
   281
 	bra	GLOBAL(movstr)
yann@1
   282
 	add	#64,r4
yann@1
   283
+
yann@1
   284
+	FUNC(GLOBAL(movstr))
yann@1
   285
 #endif
yann@1
   286
 
yann@1
   287
 #ifdef L_movstr_i4
yann@1
   288
@@ -779,6 +897,10 @@
yann@1
   289
 	.global	GLOBAL(movstr_i4_odd)
yann@1
   290
 	.global	GLOBAL(movstrSI12_i4)
yann@1
   291
 
yann@1
   292
+	FUNC(GLOBAL(movstr_i4_even))
yann@1
   293
+	FUNC(GLOBAL(movstr_i4_odd))
yann@1
   294
+	FUNC(GLOBAL(movstrSI12_i4))
yann@1
   295
+
yann@1
   296
 	.p2align	5
yann@1
   297
 L_movstr_2mod4_end:
yann@1
   298
 	mov.l	r0,@(16,r4)
yann@1
   299
@@ -787,6 +909,11 @@
yann@1
   300
 
yann@1
   301
 	.p2align	2
yann@1
   302
 
yann@1
   303
+GLOBAL(movstr_i4_even):
yann@1
   304
+	mov.l	@r5+,r0
yann@1
   305
+	bra	L_movstr_start_even
yann@1
   306
+	mov.l	@r5+,r1
yann@1
   307
+
yann@1
   308
 GLOBAL(movstr_i4_odd):
yann@1
   309
 	mov.l	@r5+,r1
yann@1
   310
 	add	#-4,r4
yann@1
   311
@@ -813,10 +940,8 @@
yann@1
   312
 	rts
yann@1
   313
 	mov.l	r3,@(12,r4)
yann@1
   314
 
yann@1
   315
-GLOBAL(movstr_i4_even):
yann@1
   316
-	mov.l	@r5+,r0
yann@1
   317
-	bra	L_movstr_start_even
yann@1
   318
-	mov.l	@r5+,r1
yann@1
   319
+	ENDFUNC(GLOBAL(movstr_i4_even))
yann@1
   320
+	ENDFUNC(GLOBAL(movstr_i4_odd))
yann@1
   321
 
yann@1
   322
 	.p2align	4
yann@1
   323
 GLOBAL(movstrSI12_i4):
yann@1
   324
@@ -827,12 +952,15 @@
yann@1
   325
 	mov.l	r1,@(4,r4)
yann@1
   326
 	rts
yann@1
   327
 	mov.l	r2,@(8,r4)
yann@1
   328
+
yann@1
   329
+	ENDFUNC(GLOBAL(movstrSI12_i4))
yann@1
   330
 #endif
yann@1
   331
 
yann@1
   332
 #ifdef L_mulsi3
yann@1
   333
 
yann@1
   334
 
yann@1
   335
 	.global	GLOBAL(mulsi3)
yann@1
   336
+	FUNC(GLOBAL(mulsi3))
yann@1
   337
 
yann@1
   338
 ! r4 =       aabb
yann@1
   339
 ! r5 =       ccdd
yann@1
   340
@@ -865,7 +993,7 @@
yann@1
   341
 	rts
yann@1
   342
 	add	r2,r0
yann@1
   343
 
yann@1
   344
-
yann@1
   345
+	FUNC(GLOBAL(mulsi3))
yann@1
   346
 #endif
yann@1
   347
 #endif /* ! __SH5__ */
yann@1
   348
 #ifdef L_sdivsi3_i4
yann@1
   349
@@ -875,6 +1003,7 @@
yann@1
   350
 !! args in r4 and r5, result in fpul, clobber dr0, dr2
yann@1
   351
 
yann@1
   352
 	.global	GLOBAL(sdivsi3_i4)
yann@1
   353
+	FUNC(GLOBAL(sdivsi3_i4))
yann@1
   354
 GLOBAL(sdivsi3_i4):
yann@1
   355
 	lds r4,fpul
yann@1
   356
 	float fpul,dr0
yann@1
   357
@@ -884,6 +1013,7 @@
yann@1
   358
 	rts
yann@1
   359
 	ftrc dr0,fpul
yann@1
   360
 
yann@1
   361
+	ENDFUNC(GLOBAL(sdivsi3_i4))
yann@1
   362
 #elif defined(__SH4_SINGLE__) || defined(__SH4_SINGLE_ONLY__) || (defined (__SH5__) && ! defined __SH4_NOFPU__)
yann@1
   363
 !! args in r4 and r5, result in fpul, clobber r2, dr0, dr2
yann@1
   364
 
yann@1
   365
@@ -892,6 +1022,7 @@
yann@1
   366
 	.mode	SHcompact
yann@1
   367
 #endif
yann@1
   368
 	.global	GLOBAL(sdivsi3_i4)
yann@1
   369
+	FUNC(GLOBAL(sdivsi3_i4))
yann@1
   370
 GLOBAL(sdivsi3_i4):
yann@1
   371
 	sts.l fpscr,@-r15
yann@1
   372
 	mov #8,r2
yann@1
   373
@@ -906,6 +1037,7 @@
yann@1
   374
 	rts
yann@1
   375
 	lds.l @r15+,fpscr
yann@1
   376
 
yann@1
   377
+	ENDFUNC(GLOBAL(sdivsi3_i4))
yann@1
   378
 #endif /* ! __SH5__ || __SH5__ == 32 */
yann@1
   379
 #endif /* ! __SH4__ */
yann@1
   380
 #endif
yann@1
   381
@@ -920,9 +1052,10 @@
yann@1
   382
 !!
yann@1
   383
 !!
yann@1
   384
 
yann@1
   385
-!! args in r4 and r5, result in r0 clobber r1,r2,r3
yann@1
   386
+!! args in r4 and r5, result in r0 clobber r1, r2, r3, and t bit
yann@1
   387
 
yann@1
   388
 	.global	GLOBAL(sdivsi3)
yann@1
   389
+	FUNC(GLOBAL(sdivsi3))
yann@1
   390
 #if __SHMEDIA__
yann@1
   391
 #if __SH5__ == 32
yann@1
   392
 	.section	.text..SHmedia32,"ax"
yann@1
   393
@@ -1166,6 +1299,7 @@
yann@1
   394
 div0:	rts
yann@1
   395
 	mov	#0,r0
yann@1
   396
 
yann@1
   397
+	ENDFUNC(GLOBAL(sdivsi3))
yann@1
   398
 #endif /* ! __SHMEDIA__ */
yann@1
   399
 #endif /* ! __SH4__ */
yann@1
   400
 #endif
yann@1
   401
@@ -1174,9 +1308,11 @@
yann@1
   402
 	.title "SH DIVIDE"
yann@1
   403
 !! 4 byte integer Divide code for the Hitachi SH
yann@1
   404
 #ifdef __SH4__
yann@1
   405
-!! args in r4 and r5, result in fpul, clobber r0, r1, r4, r5, dr0, dr2, dr4
yann@1
   406
+!! args in r4 and r5, result in fpul, clobber r0, r1, r4, r5, dr0, dr2, dr4,
yann@1
   407
+!! and t bit
yann@1
   408
 
yann@1
   409
 	.global	GLOBAL(udivsi3_i4)
yann@1
   410
+	FUNC(GLOBAL(udivsi3_i4))
yann@1
   411
 GLOBAL(udivsi3_i4):
yann@1
   412
 	mov #1,r1
yann@1
   413
 	cmp/hi r1,r5
yann@1
   414
@@ -1217,11 +1353,13 @@
yann@1
   415
 L1:
yann@1
   416
 	.double 2147483648
yann@1
   417
 
yann@1
   418
+	ENDFUNC(GLOBAL(udivsi3_i4))
yann@1
   419
 #elif defined (__SH5__) && ! defined (__SH4_NOFPU__)
yann@1
   420
 #if ! __SH5__ || __SH5__ == 32
yann@1
   421
 !! args in r4 and r5, result in fpul, clobber r20, r21, dr0, fr33
yann@1
   422
 	.mode	SHmedia
yann@1
   423
 	.global	GLOBAL(udivsi3_i4)
yann@1
   424
+	FUNC(GLOBAL(udivsi3_i4))
yann@1
   425
 GLOBAL(udivsi3_i4):
yann@1
   426
 	addz.l	r4,r63,r20
yann@1
   427
 	addz.l	r5,r63,r21
yann@1
   428
@@ -1234,6 +1372,8 @@
yann@1
   429
 	ftrc.dq dr0,dr32
yann@1
   430
 	fmov.s fr33,fr32
yann@1
   431
 	blink tr0,r63
yann@1
   432
+
yann@1
   433
+	ENDFUNC(GLOBAL(udivsi3_i4))
yann@1
   434
 #endif /* ! __SH5__ || __SH5__ == 32 */
yann@1
   435
 #elif defined(__SH4_SINGLE__) || defined(__SH4_SINGLE_ONLY__)
yann@1
   436
 !! args in r4 and r5, result in fpul, clobber r0, r1, r4, r5, dr0, dr2, dr4
yann@1
   437
@@ -1287,6 +1427,7 @@
yann@1
   438
 #endif
yann@1
   439
 	.double 2147483648
yann@1
   440
 
yann@1
   441
+	ENDFUNC(GLOBAL(udivsi3_i4))
yann@1
   442
 #endif /* ! __SH4__ */
yann@1
   443
 #endif
yann@1
   444
 
yann@1
   445
@@ -1297,6 +1438,7 @@
yann@1
   446
 
yann@1
   447
 !! args in r4 and r5, result in r0, clobbers r4, pr, and t bit
yann@1
   448
 	.global	GLOBAL(udivsi3)
yann@1
   449
+	FUNC(GLOBAL(udivsi3))
yann@1
   450
 
yann@1
   451
 #if __SHMEDIA__
yann@1
   452
 #if __SH5__ == 32
yann@1
   453
@@ -1485,6 +1627,7 @@
yann@1
   454
  rts
yann@1
   455
  rotcl r0
yann@1
   456
 
yann@1
   457
+	ENDFUNC(GLOBAL(udivsi3))
yann@1
   458
 #endif /* ! __SHMEDIA__ */
yann@1
   459
 #endif /* __SH4__ */
yann@1
   460
 #endif /* L_udivsi3 */
yann@1
   461
@@ -1790,6 +1933,7 @@
yann@1
   462
 	.mode	SHcompact
yann@1
   463
 #endif
yann@1
   464
 	.global GLOBAL(set_fpscr)
yann@1
   465
+	FUNC(GLOBAL(set_fpscr))
yann@1
   466
 GLOBAL(set_fpscr):
yann@1
   467
 	lds r4,fpscr
yann@1
   468
 	mov.l LOCAL(set_fpscr_L1),r1
yann@1
   469
@@ -1822,6 +1966,8 @@
yann@1
   470
 	.align 2
yann@1
   471
 LOCAL(set_fpscr_L1):
yann@1
   472
 	.long GLOBAL(fpscr_values)
yann@1
   473
+
yann@1
   474
+	ENDFUNC(GLOBAL(set_fpscr))
yann@1
   475
 #ifdef __ELF__
yann@1
   476
         .comm   GLOBAL(fpscr_values),8,4
yann@1
   477
 #else
yann@1
   478
@@ -1860,6 +2006,7 @@
yann@1
   479
 	blink	tr0, r63
yann@1
   480
 #elif defined(__SH4_SINGLE__) || defined(__SH4__) || defined(__SH4_SINGLE_ONLY__)
yann@1
   481
 	.global GLOBAL(ic_invalidate)
yann@1
   482
+	FUNC(GLOBAL(ic_invalidate))
yann@1
   483
 GLOBAL(ic_invalidate):
yann@1
   484
 	ocbwb	@r4
yann@1
   485
 	mova	0f,r0
yann@1
   486
@@ -1882,6 +2029,8 @@
yann@1
   487
 	nop
yann@1
   488
 	.endr
yann@1
   489
 	.endr
yann@1
   490
+
yann@1
   491
+	ENDFUNC(GLOBAL(ic_invalidate))
yann@1
   492
 #endif /* SH4 */
yann@1
   493
 #endif /* L_ic_invalidate */
yann@1
   494
 
yann@1
   495
@@ -1940,6 +2089,7 @@
yann@1
   496
 	will be expanded into r2/r3 upon return.  */
yann@1
   497
 	
yann@1
   498
 	.global	GLOBAL(GCC_shcompact_call_trampoline)
yann@1
   499
+	FUNC(GLOBAL(GCC_shcompact_call_trampoline))
yann@1
   500
 GLOBAL(GCC_shcompact_call_trampoline):
yann@1
   501
 	ptabs/l	r0, tr0	/* Prepare to call the actual function.  */
yann@1
   502
 	movi	((datalabel LOCAL(ct_main_table) - 31 * 2) >> 16) & 65535, r0
yann@1
   503
@@ -2290,6 +2440,8 @@
yann@1
   504
 	shari	r2, 32, r2
yann@1
   505
 #endif
yann@1
   506
 	blink	tr0, r63
yann@1
   507
+
yann@1
   508
+	ENDFUNC(GLOBAL(GCC_shcompact_call_trampoline))
yann@1
   509
 #endif /* L_shcompact_call_trampoline */
yann@1
   510
 
yann@1
   511
 #ifdef L_shcompact_return_trampoline
yann@1
   512
@@ -2302,6 +2454,7 @@
yann@1
   513
 	.section	.text..SHmedia32, "ax"
yann@1
   514
 	.align	2
yann@1
   515
 	.global	GLOBAL(GCC_shcompact_return_trampoline)
yann@1
   516
+	FUNC(GLOBAL(GCC_shcompact_return_trampoline))
yann@1
   517
 GLOBAL(GCC_shcompact_return_trampoline):
yann@1
   518
 	ptabs/l	r18, tr0
yann@1
   519
 #if __LITTLE_ENDIAN__
yann@1
   520
@@ -2313,6 +2466,8 @@
yann@1
   521
 #endif
yann@1
   522
 	or	r3, r2, r2
yann@1
   523
 	blink	tr0, r63
yann@1
   524
+
yann@1
   525
+	ENDFUNC(GLOBAL(GCC_shcompact_return_trampoline))
yann@1
   526
 #endif /* L_shcompact_return_trampoline */
yann@1
   527
 
yann@1
   528
 #ifdef L_shcompact_incoming_args
yann@1
   529
@@ -2367,6 +2522,7 @@
yann@1
   530
 	actual bit pattern.  */
yann@1
   531
 	
yann@1
   532
 	.global	GLOBAL(GCC_shcompact_incoming_args)
yann@1
   533
+	FUNC(GLOBAL(GCC_shcompact_incoming_args))
yann@1
   534
 GLOBAL(GCC_shcompact_incoming_args):
yann@1
   535
 	ptabs/l	r18, tr0	/* Prepare to return.  */
yann@1
   536
 	shlri	r17, 32, r0	/* Load the cookie.  */
yann@1
   537
@@ -2519,6 +2675,7 @@
yann@1
   538
 LOCAL(ia_return):	/* Return.  */
yann@1
   539
 	blink	tr0, r63
yann@1
   540
 LOCAL(ia_end_of_push_seq): /* Label used to compute the first push instruction.  */
yann@1
   541
+	ENDFUNC(GLOBAL(GCC_shcompact_incoming_args))
yann@1
   542
 #endif /* L_shcompact_incoming_args */
yann@1
   543
 #endif
yann@1
   544
 #if __SH5__
yann@1
   545
@@ -2530,6 +2687,7 @@
yann@1
   546
 #endif
yann@1
   547
 	.align	3 /* It is copied in units of 8 bytes in SHmedia mode.  */
yann@1
   548
 	.global	GLOBAL(GCC_nested_trampoline)
yann@1
   549
+	FUNC(GLOBAL(GCC_nested_trampoline))
yann@1
   550
 GLOBAL(GCC_nested_trampoline):
yann@1
   551
 	.mode	SHmedia
yann@1
   552
 	ptrel/u	r63, tr0
yann@1
   553
@@ -2546,6 +2704,8 @@
yann@1
   554
 	ld.l	r0, 28, r1
yann@1
   555
 #endif
yann@1
   556
 	blink	tr1, r63
yann@1
   557
+
yann@1
   558
+	ENDFUNC(GLOBAL(GCC_nested_trampoline))
yann@1
   559
 #endif /* L_nested_trampoline */
yann@1
   560
 #endif /* __SH5__ */
yann@1
   561
 #if __SH5__ == 32
yann@1
   562
@@ -2555,6 +2715,7 @@
yann@1
   563
 	.align	2
yann@1
   564
 #ifndef __SH4_NOFPU__	
yann@1
   565
 	.global	GLOBAL(GCC_push_shmedia_regs)
yann@1
   566
+	FUNC(GLOBAL(GCC_push_shmedia_regs))
yann@1
   567
 GLOBAL(GCC_push_shmedia_regs):
yann@1
   568
 	addi.l	r15, -14*8, r15
yann@1
   569
 	fst.d	r15, 13*8, dr62
yann@1
   570
@@ -2573,6 +2734,7 @@
yann@1
   571
 	fst.d	r15,  0*8, dr36
yann@1
   572
 #endif
yann@1
   573
 	.global	GLOBAL(GCC_push_shmedia_regs_nofpu)
yann@1
   574
+	FUNC(GLOBAL(GCC_push_shmedia_regs_nofpu))
yann@1
   575
 GLOBAL(GCC_push_shmedia_regs_nofpu):
yann@1
   576
 	ptabs/l	r18, tr0
yann@1
   577
 	addi.l	r15, -27*8, r15
yann@1
   578
@@ -2608,8 +2770,13 @@
yann@1
   579
 	st.q	r15,  0*8, r28
yann@1
   580
 	blink	tr0, r63
yann@1
   581
 
yann@1
   582
+#ifndef __SH4_NOFPU__	
yann@1
   583
+	ENDFUNC(GLOBAL(GCC_push_shmedia_regs))
yann@1
   584
+#endif
yann@1
   585
+	ENDFUNC(GLOBAL(GCC_push_shmedia_regs_nofpu))
yann@1
   586
 #ifndef __SH4_NOFPU__
yann@1
   587
 	.global	GLOBAL(GCC_pop_shmedia_regs)
yann@1
   588
+	FUNC(GLOBAL(GCC_pop_shmedia_regs))
yann@1
   589
 GLOBAL(GCC_pop_shmedia_regs):
yann@1
   590
 	pt	.L0, tr1
yann@1
   591
 	movi	41*8, r0
yann@1
   592
@@ -2630,6 +2797,7 @@
yann@1
   593
 	blink	tr1, r63
yann@1
   594
 #endif
yann@1
   595
 	.global	GLOBAL(GCC_pop_shmedia_regs_nofpu)
yann@1
   596
+	FUNC(GLOBAL(GCC_pop_shmedia_regs_nofpu))
yann@1
   597
 GLOBAL(GCC_pop_shmedia_regs_nofpu):
yann@1
   598
 	movi	27*8, r0
yann@1
   599
 .L0:
yann@1
   600
@@ -2666,5 +2834,10 @@
yann@1
   601
 	ld.q	r15,  0*8, r28
yann@1
   602
 	add.l	r15, r0, r15
yann@1
   603
 	blink	tr0, r63
yann@1
   604
+
yann@1
   605
+#ifndef __SH4_NOFPU__
yann@1
   606
+	ENDFUNC(GLOBAL(GCC_pop_shmedia_regs))
yann@1
   607
+#endif
yann@1
   608
+	ENDFUNC(GLOBAL(GCC_pop_shmedia_regs_nofpu))
yann@1
   609
 #endif /* __SH5__ == 32 */
yann@1
   610
 #endif /* L_push_pop_shmedia_regs */