~ubuntu-branches/ubuntu/natty/libffi/natty

« back to all changes in this revision

Viewing changes to src/arm/sysv.S

  • Committer: Bazaar Package Importer
  • Author(s): Matthias Klose
  • Date: 2009-09-23 15:28:55 UTC
  • Revision ID: james.westby@ubuntu.com-20090923152855-eq5i7zh46ypv3gl6
Tags: 3.0.7-1ubuntu2
* Fix build failure on armel with -mfloat-abi=softfp.
* Don't pessimize the code for newer armv6 and armv7 processors.

Show diffs side-by-side

added added

removed removed

Lines of Context:
67
67
 
68
68
#if defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) \
69
69
        || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6Z__) \
70
 
        || defined(__ARM_ARCH_6ZK__)
 
70
        || defined(__ARM_ARCH_6ZK__) || defined(__ARM_ARCH_6T2__) \
 
71
        || defined(__ARM_ARCH_6M__)
71
72
# undef __ARM_ARCH__
72
73
# define __ARM_ARCH__ 6
73
74
#endif
74
75
 
 
76
#if defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) \
 
77
        || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__)
 
78
# undef __ARM_ARCH__
 
79
# define __ARM_ARCH__ 7
 
80
#endif
 
81
 
75
82
#if __ARM_ARCH__ >= 5
76
83
# define call_reg(x)    blx     x
77
84
#elif defined (__ARM_ARCH_4T__)
189
196
 
190
197
@ return INT
191
198
        cmp     r3, #FFI_TYPE_INT
192
 
#ifdef __SOFTFP__
 
199
#if defined(__SOFTFP__) || defined(__ARM_EABI__)
193
200
        cmpne   r3, #FFI_TYPE_FLOAT
194
201
#endif
195
202
        streq   r0, [r2]
197
204
 
198
205
        @ return INT64
199
206
        cmp     r3, #FFI_TYPE_SINT64
200
 
#ifdef __SOFTFP__
 
207
#if defined(__SOFTFP__) || defined(__ARM_EABI__)
201
208
        cmpne   r3, #FFI_TYPE_DOUBLE
202
209
#endif
203
210
        stmeqia r2, {r0, r1}
204
211
 
205
 
#ifndef __SOFTFP__
 
212
#if !defined(__SOFTFP__) && !defined(__ARM_EABI__)
206
213
        beq     LSYM(Lepilogue)
207
214
 
208
215
@ return FLOAT
245
252
        beq     .Lretint
246
253
 
247
254
        cmp     r0, #FFI_TYPE_FLOAT
248
 
#ifdef __SOFTFP__
 
255
#if defined(__SOFTFP__) || defined(__ARM_EABI__)
249
256
        beq     .Lretint
250
257
#else
251
258
        beq     .Lretfloat
252
259
#endif
253
260
 
254
261
        cmp     r0, #FFI_TYPE_DOUBLE
255
 
#ifdef __SOFTFP__
 
262
#if defined(__SOFTFP__) || defined(__ARM_EABI__)
256
263
        beq     .Lretlonglong
257
264
#else
258
265
        beq     .Lretdouble
259
266
#endif
260
267
 
261
268
        cmp     r0, #FFI_TYPE_LONGDOUBLE
262
 
#ifdef __SOFTFP__
 
269
#if defined(__SOFTFP__) || defined(__ARM_EABI__)
263
270
        beq     .Lretlonglong
264
271
#else
265
272
        beq     .Lretlongdouble
278
285
        ldr     r1, [sp, #4]
279
286
        b       .Lclosure_epilogue
280
287
 
281
 
#ifndef __SOFTFP__
 
288
#if !defined(__SOFTFP__) && !defined(__ARM_EABI__)
282
289
.Lretfloat:
283
290
        ldfs    f0, [sp]
284
291
        b       .Lclosure_epilogue