Overview
Comment: | forwarding-arm-elf.S: Add #ifdef HAVE_VFP2 |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
dc5938cee79c2c6368dd0ef72b06b4b1 |
User & Date: | js on 2014-04-23 18:56:06 |
Other Links: | manifest | tags |
Context
2014-04-26
| ||
00:40 | Fix a few issues on LLP64 and Win64 check-in: 4e59d2692f user: js tags: trunk | |
2014-04-23
| ||
18:56 | forwarding-arm-elf.S: Add #ifdef HAVE_VFP2 check-in: dc5938cee7 user: js tags: trunk | |
2014-04-14
| ||
11:17 | configure: Move --with-wii after AC_PROG_OBJC check-in: 3bda05c293 user: js tags: trunk | |
Changes
Modified configure.ac from [76d62f4108] to [8cbfa74ad3].
︙ | ︙ | |||
391 392 393 394 395 396 397 398 399 400 401 402 403 404 | ], [ fp_endianess="universal" ]) AC_MSG_RESULT($fp_endianess) AS_IF([test x"$fp_endianess" = x"unknown"], [ AC_MSG_ERROR( [Floating point implementation does not conform to IEEE 754!])]) AC_CHECK_LIB(m, fmod, LIBS="$LIBS -lm") AC_CHECK_FUNC(asprintf, [ case "$host" in *-psp-*) dnl asprintf is broken on the PSP, but snprintf works. | > > > > > > > > > > > > > > | 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 | ], [ fp_endianess="universal" ]) AC_MSG_RESULT($fp_endianess) AS_IF([test x"$fp_endianess" = x"unknown"], [ AC_MSG_ERROR( [Floating point implementation does not conform to IEEE 754!])]) case "$host" in arm*) AC_MSG_CHECKING(if VFP2 or above is available) AC_TRY_COMPILE([], [ __asm__("fstmfdd sp!, {d0-d7}"); ], [ AC_DEFINE(HAVE_VFP2, 1, [Whether we have VFP2 or above]) AC_MSG_RESULT(yes) ], [ AC_MSG_RESULT(no) ]) ;; esac AC_CHECK_LIB(m, fmod, LIBS="$LIBS -lm") AC_CHECK_FUNC(asprintf, [ case "$host" in *-psp-*) dnl asprintf is broken on the PSP, but snprintf works. |
︙ | ︙ |
Modified src/forwarding/forwarding-arm-elf.S from [8c7b39978c] to [fe09c3766a].
︙ | ︙ | |||
17 18 19 20 21 22 23 | #include "config.h" .globl of_forward .globl of_forward_stret .section .text of_forward: | | > > | | | | | | < > > > < > > > | > > | | | | | | < > > > < > > > | 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 | #include "config.h" .globl of_forward .globl of_forward_stret .section .text of_forward: #ifdef HAVE_VFP2 fstmfdd sp!, {d0-d7} #endif stmfd sp!, {r0-r4, lr} ldr r4, sel_forwardingTargetForSelector_$indirect_.L0 .L0: add r4, pc bl object_getClass(PLT) mov r1, r4 bl class_respondsToSelector(PLT) cmp r0, #0 beq 0f ldr r0, [sp, #0] mov r1, r4 bl objc_msg_lookup(PLT) mov r12, r0 ldr r0, [sp, #0] mov r1, r4 ldr r2, [sp, #4] blx r12 cmp r0, #0 beq 0f ldr r1, [sp, #0] cmp r0, r1 beq 0f str r0, [sp, #0] ldr r1, [sp, #4] bl objc_msg_lookup(PLT) mov r12, r0 ldmfd sp!, {r0-r4, lr} #ifdef HAVE_VFP2 fldmfdd sp!, {d0-d7} #endif bx r12 0: ldmfd sp!, {r0-r4, lr} #ifdef HAVE_VFP2 fldmfdd sp!, {d0-d7} #endif b of_method_not_found(PLT) .type of_forward, %function .size of_forward, .-of_forward of_forward_stret: #ifdef HAVE_VFP2 fstmfdd sp!, {d0-d7} #endif stmfd sp!, {r0-r4, lr} ldr r4, sel_forwardingTargetForSelector_$indirect_.L1 .L1: add r4, pc mov r0, r1 bl object_getClass(PLT) mov r1, r4 bl class_respondsToSelector(PLT) cmp r0, #0 beq 0f ldr r0, [sp, #4] mov r1, r4 bl objc_msg_lookup(PLT) mov r12, r0 ldr r0, [sp, #4] mov r1, r4 ldr r2, [sp, #8] blx r12 cmp r0, #0 beq 0f ldr r1, [sp, #4] cmp r0, r1 beq 0f str r0, [sp, #4] ldr r1, [sp, #8] bl objc_msg_lookup_stret(PLT) mov r12, r0 ldmfd sp!, {r0-r4, lr} #ifdef HAVE_VFP2 fldmfdd sp!, {d0-d7} #endif bx r12 0: ldmfd sp!, {r0-r4, lr} #ifdef HAVE_VFP2 fldmfdd sp!, {d0-d7} #endif b of_method_not_found_stret(PLT) .type of_forward_stret, %function .size of_forward_stret, .-of_forward_stret init: ldr r0, module$indirect_.L2 .L2: |
︙ | ︙ |