diff options
author | Joerg Sonnenberger <joerg@bec.de> | 2014-01-24 14:33:42 +0000 |
---|---|---|
committer | Joerg Sonnenberger <joerg@bec.de> | 2014-01-24 14:33:42 +0000 |
commit | 7a46a761d72357c283b19c94780270b9be9c7b15 (patch) | |
tree | 68268a187208da1860aade5784fd4c9082a59d46 | |
parent | f7681d22fef1252177d55f107e35159cc60529ba (diff) |
Mechanically add end-of-function markers.
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@200005 91177308-0d34-0410-b5e6-96231b3b80d8
57 files changed, 78 insertions, 30 deletions
diff --git a/lib/arm/adddf3vfp.S b/lib/arm/adddf3vfp.S index c90b0c2ea..4302b6ab3 100644 --- a/lib/arm/adddf3vfp.S +++ b/lib/arm/adddf3vfp.S @@ -23,3 +23,4 @@ DEFINE_COMPILERRT_FUNCTION(__adddf3vfp) vadd.f64 d6, d6, d7 vmov r0, r1, d6 // move result back to r0/r1 pair bx lr +END_COMPILERRT_FUNCTION(__adddf3vfp) diff --git a/lib/arm/addsf3vfp.S b/lib/arm/addsf3vfp.S index 43653d526..316328abe 100644 --- a/lib/arm/addsf3vfp.S +++ b/lib/arm/addsf3vfp.S @@ -23,3 +23,4 @@ DEFINE_COMPILERRT_FUNCTION(__addsf3vfp) vadd.f32 s14, s14, s15 vmov r0, s14 // move result back to r0 bx lr +END_COMPILERRT_FUNCTION(__addsf3vfp) diff --git a/lib/arm/aeabi_dcmp.S b/lib/arm/aeabi_dcmp.S index c4d07727a..ee2946d2d 100644 --- a/lib/arm/aeabi_dcmp.S +++ b/lib/arm/aeabi_dcmp.S @@ -30,7 +30,8 @@ DEFINE_COMPILERRT_FUNCTION(__aeabi_dcmp ## cond) \ pop { r4, pc } SEPARATOR \ 1: SEPARATOR \ mov r0, #1 SEPARATOR \ - pop { r4, pc } + pop { r4, pc } SEPARATOR \ +END_COMPILERRT_FUNCTION(__aeabi_dcmp ## cond) DEFINE_AEABI_DCMP(eq) DEFINE_AEABI_DCMP(lt) diff --git a/lib/arm/aeabi_fcmp.S b/lib/arm/aeabi_fcmp.S index 576a33f25..ac3f54721 100644 --- a/lib/arm/aeabi_fcmp.S +++ b/lib/arm/aeabi_fcmp.S @@ -30,7 +30,8 @@ DEFINE_COMPILERRT_FUNCTION(__aeabi_fcmp ## cond) \ pop { r4, pc } SEPARATOR \ 1: SEPARATOR \ mov r0, #1 SEPARATOR \ - pop { r4, pc } + pop { r4, pc } SEPARATOR \ +END_COMPILERRT_FUNCTION(__aeabi_fcmp ## cond) DEFINE_AEABI_FCMP(eq) DEFINE_AEABI_FCMP(lt) diff --git a/lib/arm/aeabi_idivmod.S b/lib/arm/aeabi_idivmod.S index 0237f2221..ac5dfcc22 100644 --- a/lib/arm/aeabi_idivmod.S +++ b/lib/arm/aeabi_idivmod.S @@ -25,3 +25,4 @@ DEFINE_COMPILERRT_FUNCTION(__aeabi_idivmod) ldr r1, [sp] add sp, sp, #4 pop { pc } +END_COMPILERRT_FUNCTION(__aeabi_idivmod) diff --git a/lib/arm/aeabi_ldivmod.S b/lib/arm/aeabi_ldivmod.S index 197c459eb..684252571 100644 --- a/lib/arm/aeabi_ldivmod.S +++ b/lib/arm/aeabi_ldivmod.S @@ -28,3 +28,4 @@ DEFINE_COMPILERRT_FUNCTION(__aeabi_ldivmod) ldr r3, [sp, #12] add sp, sp, #16 pop {r11, pc} +END_COMPILERRT_FUNCTION(__aeabi_ldivmod) diff --git a/lib/arm/aeabi_memcmp.S b/lib/arm/aeabi_memcmp.S index ca29c10c6..fc20825f4 100644 --- a/lib/arm/aeabi_memcmp.S +++ b/lib/arm/aeabi_memcmp.S @@ -14,6 +14,7 @@ .align 2 DEFINE_COMPILERRT_FUNCTION(__aeabi_memcmp) b memcmp +END_COMPILERRT_FUNCTION(__aeabi_memcmp) DEFINE_AEABI_FUNCTION_ALIAS(__aeabi_memcmp4, __aeabi_memcmp) DEFINE_AEABI_FUNCTION_ALIAS(__aeabi_memcmp8, __aeabi_memcmp) diff --git a/lib/arm/aeabi_memcpy.S b/lib/arm/aeabi_memcpy.S index 8b9c7fdf5..f6184632e 100644 --- a/lib/arm/aeabi_memcpy.S +++ b/lib/arm/aeabi_memcpy.S @@ -14,6 +14,7 @@ .align 2 DEFINE_COMPILERRT_FUNCTION(__aeabi_memcpy) b memcpy +END_COMPILERRT_FUNCTION(__aeabi_memcpy) DEFINE_AEABI_FUNCTION_ALIAS(__aeabi_memcpy4, __aeabi_memcpy) DEFINE_AEABI_FUNCTION_ALIAS(__aeabi_memcpy8, __aeabi_memcpy) diff --git a/lib/arm/aeabi_memmove.S b/lib/arm/aeabi_memmove.S index c94ed2b21..f3d6b0e1a 100644 --- a/lib/arm/aeabi_memmove.S +++ b/lib/arm/aeabi_memmove.S @@ -14,6 +14,7 @@ .align 2 DEFINE_COMPILERRT_FUNCTION(__aeabi_memmove) b memmove +END_COMPILERRT_FUNCTION(__aeabi_memmove) DEFINE_AEABI_FUNCTION_ALIAS(__aeabi_memmove4, __aeabi_memmove) DEFINE_AEABI_FUNCTION_ALIAS(__aeabi_memmove8, __aeabi_memmove) diff --git a/lib/arm/aeabi_memset.S b/lib/arm/aeabi_memset.S index 30ab4bae5..43c085e26 100644 --- a/lib/arm/aeabi_memset.S +++ b/lib/arm/aeabi_memset.S @@ -18,14 +18,16 @@ DEFINE_COMPILERRT_FUNCTION(__aeabi_memset) mov r1, r2 mov r2, r3 b memset +END_COMPILERRT_FUNCTION(__aeabi_memset) DEFINE_AEABI_FUNCTION_ALIAS(__aeabi_memset4, __aeabi_memset) DEFINE_AEABI_FUNCTION_ALIAS(__aeabi_memset8, __aeabi_memset) - + DEFINE_COMPILERRT_FUNCTION(__aeabi_memclr) mov r2, r1 mov r1, #0 b memset +END_COMPILERRT_FUNCTION(__aeabi_memclr) DEFINE_AEABI_FUNCTION_ALIAS(__aeabi_memclr4, __aeabi_memclr) DEFINE_AEABI_FUNCTION_ALIAS(__aeabi_memclr8, __aeabi_memclr) diff --git a/lib/arm/aeabi_uidivmod.S b/lib/arm/aeabi_uidivmod.S index f7e1d2ebe..4c1e818cb 100644 --- a/lib/arm/aeabi_uidivmod.S +++ b/lib/arm/aeabi_uidivmod.S @@ -26,3 +26,4 @@ DEFINE_COMPILERRT_FUNCTION(__aeabi_uidivmod) ldr r1, [sp] add sp, sp, #4 pop { pc } +END_COMPILERRT_FUNCTION(__aeabi_uidivmod) diff --git a/lib/arm/aeabi_uldivmod.S b/lib/arm/aeabi_uldivmod.S index 724049dd9..62a2113cc 100644 --- a/lib/arm/aeabi_uldivmod.S +++ b/lib/arm/aeabi_uldivmod.S @@ -27,4 +27,5 @@ DEFINE_COMPILERRT_FUNCTION(__aeabi_uldivmod) ldr r2, [sp, #8] ldr r3, [sp, #12] add sp, sp, #16 - pop {r11, pc}
\ No newline at end of file + pop {r11, pc} +END_COMPILERRT_FUNCTION(__aeabi_uldivmod) diff --git a/lib/arm/bswapdi2.S b/lib/arm/bswapdi2.S index a0283e14e..7fae92920 100644 --- a/lib/arm/bswapdi2.S +++ b/lib/arm/bswapdi2.S @@ -34,3 +34,4 @@ DEFINE_COMPILERRT_FUNCTION(__bswapdi2) #endif mov r1, r2 // r1 = r2 = rev(r0) bx lr +END_COMPILERRT_FUNCTION(__bswapdi2) diff --git a/lib/arm/bswapsi2.S b/lib/arm/bswapsi2.S index 4c3af1f6d..139ae220e 100644 --- a/lib/arm/bswapsi2.S +++ b/lib/arm/bswapsi2.S @@ -26,3 +26,4 @@ DEFINE_COMPILERRT_FUNCTION(__bswapsi2) rev r0, r0 #endif bx lr +END_COMPILERRT_FUNCTION(__bswapsi2) diff --git a/lib/arm/comparesf2.S b/lib/arm/comparesf2.S index 784a3466c..b8074118a 100644 --- a/lib/arm/comparesf2.S +++ b/lib/arm/comparesf2.S @@ -42,33 +42,30 @@ .align 2 DEFINE_COMPILERRT_FUNCTION(__eqsf2) -DEFINE_COMPILERRT_FUNCTION(__lesf2) -DEFINE_COMPILERRT_FUNCTION(__ltsf2) -DEFINE_COMPILERRT_FUNCTION(__nesf2) // Make copies of a and b with the sign bit shifted off the top. These will // be used to detect zeros and NaNs. mov r2, r0, lsl #1 mov r3, r1, lsl #1 - + // We do the comparison in three stages (ignoring NaN values for the time // being). First, we orr the absolute values of a and b; this sets the Z // flag if both a and b are zero (of either sign). The shift of r3 doesn't // effect this at all, but it *does* make sure that the C flag is clear for // the subsequent operations. orrs r12, r2, r3, lsr #1 - + // Next, we check if a and b have the same or different signs. If they have // opposite signs, this eor will set the N flag. it ne eorsne r12, r0, r1 - + // If a and b are equal (either both zeros or bit identical; again, we're // ignoring NaNs for now), this subtract will zero out r0. If they have the // same sign, the flags are updated as they would be for a comparison of the // absolute values of a and b. it pl subspl r0, r2, r3 - + // If a is smaller in magnitude than b and both have the same sign, place // the negation of the sign of b in r0. Thus, if both are negative and // a > b, this sets r0 to 0; if both are positive and a < b, this sets @@ -88,14 +85,14 @@ DEFINE_COMPILERRT_FUNCTION(__nesf2) // and a > b, zero is placed in r0. it hi movhi r0, r1, asr #31 - + // If you've been keeping track, at this point r0 contains -1 if a < b and // 0 if a >= b. All that remains to be done is to set it to 1 if a > b. // If a == b, then the Z flag is set, so we can get the correct final value // into r0 by simply or'ing with 1 if Z is clear. it ne - orrne r0, r0, #1 - + orrne r0, r0, #1 + // Finally, we need to deal with NaNs. If either argument is NaN, replace // the value in r0 with 1. cmp r2, #0xff000000 @@ -103,9 +100,12 @@ DEFINE_COMPILERRT_FUNCTION(__nesf2) cmpls r3, #0xff000000 movhi r0, #1 bx lr - +END_COMPILERRT_FUNCTION(__eqsf2) +DEFINE_COMPILERRT_FUNCTION_ALIAS(__lesf2, __eqsf2) +DEFINE_COMPILERRT_FUNCTION_ALIAS(__ltsf2, __eqsf2) +DEFINE_COMPILERRT_FUNCTION_ALIAS(__nesf2, __eqsf2) + .align 2 -DEFINE_COMPILERRT_FUNCTION(__gesf2) DEFINE_COMPILERRT_FUNCTION(__gtsf2) // Identical to the preceeding except in that we return -1 for NaN values. // Given that the two paths share so much code, one might be tempted to @@ -123,13 +123,15 @@ DEFINE_COMPILERRT_FUNCTION(__gtsf2) it hi movhi r0, r1, asr #31 it ne - orrne r0, r0, #1 + orrne r0, r0, #1 cmp r2, #0xff000000 ite ls cmpls r3, #0xff000000 movhi r0, #-1 bx lr - +END_COMPILERRT_FUNCTION(__gtsf2) +DEFINE_COMPILERRT_FUNCTION_ALIAS(__gesf2, __gtsf2) + .align 2 DEFINE_COMPILERRT_FUNCTION(__unordsf2) // Return 1 for NaN values, 0 otherwise. @@ -141,5 +143,6 @@ DEFINE_COMPILERRT_FUNCTION(__unordsf2) cmpls r3, #0xff000000 movhi r0, #1 bx lr +END_COMPILERRT_FUNCTION(__unordsf2) DEFINE_AEABI_FUNCTION_ALIAS(__aeabi_fcmpun, __unordsf2) diff --git a/lib/arm/divdf3vfp.S b/lib/arm/divdf3vfp.S index 52de67f7f..ec2f99721 100644 --- a/lib/arm/divdf3vfp.S +++ b/lib/arm/divdf3vfp.S @@ -23,3 +23,4 @@ DEFINE_COMPILERRT_FUNCTION(__divdf3vfp) vdiv.f64 d5, d6, d7 vmov r0, r1, d5 // move result back to r0/r1 pair bx lr +END_COMPILERRT_FUNCTION(__divdf3vfp) diff --git a/lib/arm/divmodsi4.S b/lib/arm/divmodsi4.S index 6495a8b4c..24e3657dd 100644 --- a/lib/arm/divmodsi4.S +++ b/lib/arm/divmodsi4.S @@ -58,3 +58,4 @@ LOCAL_LABEL(divzero): str r1, [r6] CLEAR_FRAME_AND_RETURN #endif +END_COMPILERRT_FUNCTION(__divmodsi4) diff --git a/lib/arm/divsf3vfp.S b/lib/arm/divsf3vfp.S index 81ba90307..a4e2f8148 100644 --- a/lib/arm/divsf3vfp.S +++ b/lib/arm/divsf3vfp.S @@ -23,3 +23,4 @@ DEFINE_COMPILERRT_FUNCTION(__divsf3vfp) vdiv.f32 s13, s14, s15 vmov r0, s13 // move result back to r0 bx lr +END_COMPILERRT_FUNCTION(__divsf3vfp) diff --git a/lib/arm/divsi3.S b/lib/arm/divsi3.S index b631db292..76b679352 100644 --- a/lib/arm/divsi3.S +++ b/lib/arm/divsi3.S @@ -49,3 +49,4 @@ ESTABLISH_FRAME sub r0, r0, r4, asr #31 CLEAR_FRAME_AND_RETURN #endif +END_COMPILERRT_FUNCTION(__divsi3) diff --git a/lib/arm/eqdf2vfp.S b/lib/arm/eqdf2vfp.S index c41e55a34..198d42278 100644 --- a/lib/arm/eqdf2vfp.S +++ b/lib/arm/eqdf2vfp.S @@ -26,3 +26,4 @@ DEFINE_COMPILERRT_FUNCTION(__eqdf2vfp) moveq r0, #1 // set result register to 1 if equal movne r0, #0 bx lr +END_COMPILERRT_FUNCTION(__eqdf2vfp) diff --git a/lib/arm/eqsf2vfp.S b/lib/arm/eqsf2vfp.S index 730ef88da..395187f47 100644 --- a/lib/arm/eqsf2vfp.S +++ b/lib/arm/eqsf2vfp.S @@ -26,4 +26,4 @@ DEFINE_COMPILERRT_FUNCTION(__eqsf2vfp) moveq r0, #1 // set result register to 1 if equal movne r0, #0 bx lr - +END_COMPILERRT_FUNCTION(__eqsf2vfp) diff --git a/lib/arm/extendsfdf2vfp.S b/lib/arm/extendsfdf2vfp.S index 17a146e02..ba31f3e0c 100644 --- a/lib/arm/extendsfdf2vfp.S +++ b/lib/arm/extendsfdf2vfp.S @@ -23,3 +23,4 @@ DEFINE_COMPILERRT_FUNCTION(__extendsfdf2vfp) vcvt.f64.f32 d7, s15 // convert single to double vmov r0, r1, d7 // return result in r0/r1 pair bx lr +END_COMPILERRT_FUNCTION(__extendsfdf2vfp) diff --git a/lib/arm/fixdfsivfp.S b/lib/arm/fixdfsivfp.S index b7c3299d1..26adbe389 100644 --- a/lib/arm/fixdfsivfp.S +++ b/lib/arm/fixdfsivfp.S @@ -23,3 +23,4 @@ DEFINE_COMPILERRT_FUNCTION(__fixdfsivfp) vcvt.s32.f64 s15, d7 // convert double to 32-bit int into s15 vmov r0, s15 // move s15 to result register bx lr +END_COMPILERRT_FUNCTION(__fixdfsivfp) diff --git a/lib/arm/fixsfsivfp.S b/lib/arm/fixsfsivfp.S index 1cea6a486..c1e0dadb7 100644 --- a/lib/arm/fixsfsivfp.S +++ b/lib/arm/fixsfsivfp.S @@ -23,3 +23,4 @@ DEFINE_COMPILERRT_FUNCTION(__fixsfsivfp) vcvt.s32.f32 s15, s15 // convert single to 32-bit int into s15 vmov r0, s15 // move s15 to result register bx lr +END_COMPILERRT_FUNCTION(__fixsfsivfp) diff --git a/lib/arm/fixunsdfsivfp.S b/lib/arm/fixunsdfsivfp.S index 54b03592b..fb91da752 100644 --- a/lib/arm/fixunsdfsivfp.S +++ b/lib/arm/fixunsdfsivfp.S @@ -24,3 +24,4 @@ DEFINE_COMPILERRT_FUNCTION(__fixunsdfsivfp) vcvt.u32.f64 s15, d7 // convert double to 32-bit int into s15 vmov r0, s15 // move s15 to result register bx lr +END_COMPILERRT_FUNCTION(__fixunsdfsivfp) diff --git a/lib/arm/fixunssfsivfp.S b/lib/arm/fixunssfsivfp.S index 12adb529a..f12dff61a 100644 --- a/lib/arm/fixunssfsivfp.S +++ b/lib/arm/fixunssfsivfp.S @@ -24,3 +24,4 @@ DEFINE_COMPILERRT_FUNCTION(__fixunssfsivfp) vcvt.u32.f32 s15, s15 // convert single to 32-bit unsigned into s15 vmov r0, s15 // move s15 to result register bx lr +END_COMPILERRT_FUNCTION(__fixunssfsivfp) diff --git a/lib/arm/floatsidfvfp.S b/lib/arm/floatsidfvfp.S index e6a1eb3e4..ab48933b9 100644 --- a/lib/arm/floatsidfvfp.S +++ b/lib/arm/floatsidfvfp.S @@ -23,3 +23,4 @@ DEFINE_COMPILERRT_FUNCTION(__floatsidfvfp) vcvt.f64.s32 d7, s15 // convert 32-bit int in s15 to double in d7 vmov r0, r1, d7 // move d7 to result register pair r0/r1 bx lr +END_COMPILERRT_FUNCTION(__floatsidfvfp) diff --git a/lib/arm/floatsisfvfp.S b/lib/arm/floatsisfvfp.S index 0d3a24fc1..eb265e990 100644 --- a/lib/arm/floatsisfvfp.S +++ b/lib/arm/floatsisfvfp.S @@ -23,3 +23,4 @@ DEFINE_COMPILERRT_FUNCTION(__floatsisfvfp) vcvt.f32.s32 s15, s15 // convert 32-bit int in s15 to float in s15 vmov r0, s15 // move s15 to result register bx lr +END_COMPILERRT_FUNCTION(__floatsisfvfp) diff --git a/lib/arm/floatunssidfvfp.S b/lib/arm/floatunssidfvfp.S index 770b20292..96e2eb21e 100644 --- a/lib/arm/floatunssidfvfp.S +++ b/lib/arm/floatunssidfvfp.S @@ -23,3 +23,4 @@ DEFINE_COMPILERRT_FUNCTION(__floatunssidfvfp) vcvt.f64.u32 d7, s15 // convert 32-bit int in s15 to double in d7 vmov r0, r1, d7 // move d7 to result register pair r0/r1 bx lr +END_COMPILERRT_FUNCTION(__floatunssidfvfp) diff --git a/lib/arm/floatunssisfvfp.S b/lib/arm/floatunssisfvfp.S index 16b3ffb10..05471c4a5 100644 --- a/lib/arm/floatunssisfvfp.S +++ b/lib/arm/floatunssisfvfp.S @@ -23,3 +23,4 @@ DEFINE_COMPILERRT_FUNCTION(__floatunssisfvfp) vcvt.f32.u32 s15, s15 // convert 32-bit int in s15 to float in s15 vmov r0, s15 // move s15 to result register bx lr +END_COMPILERRT_FUNCTION(__floatunssisfvfp) diff --git a/lib/arm/gedf2vfp.S b/lib/arm/gedf2vfp.S index 55603b83e..aa636aa14 100644 --- a/lib/arm/gedf2vfp.S +++ b/lib/arm/gedf2vfp.S @@ -26,3 +26,4 @@ DEFINE_COMPILERRT_FUNCTION(__gedf2vfp) movge r0, #1 // set result register to 1 if greater than or equal movlt r0, #0 bx lr +END_COMPILERRT_FUNCTION(__gedf2vfp) diff --git a/lib/arm/gesf2vfp.S b/lib/arm/gesf2vfp.S index 02da35c02..087ce15f1 100644 --- a/lib/arm/gesf2vfp.S +++ b/lib/arm/gesf2vfp.S @@ -26,4 +26,4 @@ DEFINE_COMPILERRT_FUNCTION(__gesf2vfp) movge r0, #1 // set result register to 1 if greater than or equal movlt r0, #0 bx lr - +END_COMPILERRT_FUNCTION(__gesf2vfp) diff --git a/lib/arm/gtdf2vfp.S b/lib/arm/gtdf2vfp.S index b5b1e1482..230952a9f 100644 --- a/lib/arm/gtdf2vfp.S +++ b/lib/arm/gtdf2vfp.S @@ -26,3 +26,4 @@ DEFINE_COMPILERRT_FUNCTION(__gtdf2vfp) movgt r0, #1 // set result register to 1 if equal movle r0, #0 bx lr +END_COMPILERRT_FUNCTION(__gtdf2vfp) diff --git a/lib/arm/gtsf2vfp.S b/lib/arm/gtsf2vfp.S index 685a9cec9..c1f5db053 100644 --- a/lib/arm/gtsf2vfp.S +++ b/lib/arm/gtsf2vfp.S @@ -26,4 +26,4 @@ DEFINE_COMPILERRT_FUNCTION(__gtsf2vfp) movgt r0, #1 // set result register to 1 if equal movle r0, #0 bx lr - +END_COMPILERRT_FUNCTION(__gtsf2vfp) diff --git a/lib/arm/ledf2vfp.S b/lib/arm/ledf2vfp.S index 6e140dde8..94980a2ef 100644 --- a/lib/arm/ledf2vfp.S +++ b/lib/arm/ledf2vfp.S @@ -26,3 +26,4 @@ DEFINE_COMPILERRT_FUNCTION(__ledf2vfp) movls r0, #1 // set result register to 1 if equal movhi r0, #0 bx lr +END_COMPILERRT_FUNCTION(__ledf2vfp) diff --git a/lib/arm/lesf2vfp.S b/lib/arm/lesf2vfp.S index 7b2825097..362352a83 100644 --- a/lib/arm/lesf2vfp.S +++ b/lib/arm/lesf2vfp.S @@ -26,4 +26,4 @@ DEFINE_COMPILERRT_FUNCTION(__lesf2vfp) movls r0, #1 // set result register to 1 if equal movhi r0, #0 bx lr - +END_COMPILERRT_FUNCTION(__lesf2vfp) diff --git a/lib/arm/ltdf2vfp.S b/lib/arm/ltdf2vfp.S index a09e67a2f..391ff2924 100644 --- a/lib/arm/ltdf2vfp.S +++ b/lib/arm/ltdf2vfp.S @@ -26,3 +26,4 @@ DEFINE_COMPILERRT_FUNCTION(__ltdf2vfp) movmi r0, #1 // set result register to 1 if equal movpl r0, #0 bx lr +END_COMPILERRT_FUNCTION(__ltdf2vfp) diff --git a/lib/arm/ltsf2vfp.S b/lib/arm/ltsf2vfp.S index 8c7f9a863..dcaa03561 100644 --- a/lib/arm/ltsf2vfp.S +++ b/lib/arm/ltsf2vfp.S @@ -26,4 +26,4 @@ DEFINE_COMPILERRT_FUNCTION(__ltsf2vfp) movmi r0, #1 // set result register to 1 if equal movpl r0, #0 bx lr - +END_COMPILERRT_FUNCTION(__ltsf2vfp) diff --git a/lib/arm/modsi3.S b/lib/arm/modsi3.S index fe75b41b1..07c5f9381 100644 --- a/lib/arm/modsi3.S +++ b/lib/arm/modsi3.S @@ -48,3 +48,4 @@ LOCAL_LABEL(divzero): sub r0, r0, r4, asr #31 CLEAR_FRAME_AND_RETURN #endif +END_COMPILERRT_FUNCTION(__modsi3) diff --git a/lib/arm/muldf3vfp.S b/lib/arm/muldf3vfp.S index 838581eb1..2c1d70377 100644 --- a/lib/arm/muldf3vfp.S +++ b/lib/arm/muldf3vfp.S @@ -23,3 +23,4 @@ DEFINE_COMPILERRT_FUNCTION(__muldf3vfp) vmul.f64 d6, d6, d7 vmov r0, r1, d6 // move result back to r0/r1 pair bx lr +END_COMPILERRT_FUNCTION(__muldf3vfp) diff --git a/lib/arm/mulsf3vfp.S b/lib/arm/mulsf3vfp.S index ea25913cc..98af81d23 100644 --- a/lib/arm/mulsf3vfp.S +++ b/lib/arm/mulsf3vfp.S @@ -23,3 +23,4 @@ DEFINE_COMPILERRT_FUNCTION(__mulsf3vfp) vmul.f32 s13, s14, s15 vmov r0, s13 // move result back to r0 bx lr +END_COMPILERRT_FUNCTION(__mulsf3vfp) diff --git a/lib/arm/nedf2vfp.S b/lib/arm/nedf2vfp.S index 21670816c..c1a832e1a 100644 --- a/lib/arm/nedf2vfp.S +++ b/lib/arm/nedf2vfp.S @@ -26,3 +26,4 @@ DEFINE_COMPILERRT_FUNCTION(__nedf2vfp) movne r0, #1 // set result register to 0 if unequal moveq r0, #0 bx lr +END_COMPILERRT_FUNCTION(__nedf2vfp) diff --git a/lib/arm/negdf2vfp.S b/lib/arm/negdf2vfp.S index 64c9b692f..ad9b87418 100644 --- a/lib/arm/negdf2vfp.S +++ b/lib/arm/negdf2vfp.S @@ -20,3 +20,4 @@ DEFINE_COMPILERRT_FUNCTION(__negdf2vfp) eor r1, r1, #-2147483648 // flip sign bit on double in r0/r1 pair bx lr +END_COMPILERRT_FUNCTION(__negdf2vfp) diff --git a/lib/arm/negsf2vfp.S b/lib/arm/negsf2vfp.S index b883b733d..482eb2640 100644 --- a/lib/arm/negsf2vfp.S +++ b/lib/arm/negsf2vfp.S @@ -20,3 +20,4 @@ DEFINE_COMPILERRT_FUNCTION(__negsf2vfp) eor r0, r0, #-2147483648 // flip sign bit on float in r0 bx lr +END_COMPILERRT_FUNCTION(__negsf2vfp) diff --git a/lib/arm/nesf2vfp.S b/lib/arm/nesf2vfp.S index fa7aa80e1..127145ec4 100644 --- a/lib/arm/nesf2vfp.S +++ b/lib/arm/nesf2vfp.S @@ -26,4 +26,4 @@ DEFINE_COMPILERRT_FUNCTION(__nesf2vfp) movne r0, #1 // set result register to 1 if unequal moveq r0, #0 bx lr - +END_COMPILERRT_FUNCTION(__nesf2vfp) diff --git a/lib/arm/restore_vfp_d8_d15_regs.S b/lib/arm/restore_vfp_d8_d15_regs.S index 7f441db53..5d5547415 100644 --- a/lib/arm/restore_vfp_d8_d15_regs.S +++ b/lib/arm/restore_vfp_d8_d15_regs.S @@ -29,9 +29,7 @@ DEFINE_COMPILERRT_PRIVATE_FUNCTION(__restore_vfp_d8_d15_regs) vldmia sp!, {d8-d15} // pop registers d8-d15 off stack bx lr // return to prolog - - +END_COMPILERRT_FUNCTION(__restore_vfp_d8_d15_regs) // tell linker it can break up file at label boundaries .subsections_via_symbols - diff --git a/lib/arm/save_vfp_d8_d15_regs.S b/lib/arm/save_vfp_d8_d15_regs.S index fbd21ba38..4be3ff3a5 100644 --- a/lib/arm/save_vfp_d8_d15_regs.S +++ b/lib/arm/save_vfp_d8_d15_regs.S @@ -29,7 +29,7 @@ DEFINE_COMPILERRT_PRIVATE_FUNCTION(__save_vfp_d8_d15_regs) vstmdb sp!, {d8-d15} // push registers d8-d15 onto stack bx lr // return to prolog +END_COMPILERRT_FUNCTION(__save_vfp_d8_d15_regs) // tell linker it can break up file at label boundaries .subsections_via_symbols - diff --git a/lib/arm/subdf3vfp.S b/lib/arm/subdf3vfp.S index 3f88baacd..747d6596c 100644 --- a/lib/arm/subdf3vfp.S +++ b/lib/arm/subdf3vfp.S @@ -23,3 +23,4 @@ DEFINE_COMPILERRT_FUNCTION(__subdf3vfp) vsub.f64 d6, d6, d7 vmov r0, r1, d6 // move result back to r0/r1 pair bx lr +END_COMPILERRT_FUNCTION(__subdf3vfp) diff --git a/lib/arm/subsf3vfp.S b/lib/arm/subsf3vfp.S index ed02ba921..7cc63cccc 100644 --- a/lib/arm/subsf3vfp.S +++ b/lib/arm/subsf3vfp.S @@ -24,3 +24,4 @@ DEFINE_COMPILERRT_FUNCTION(__subsf3vfp) vsub.f32 s14, s14, s15 vmov r0, s14 // move result back to r0 bx lr +END_COMPILERRT_FUNCTION(__subsf3vfp) diff --git a/lib/arm/switch16.S b/lib/arm/switch16.S index 9c3f0cf99..0dedc598a 100644 --- a/lib/arm/switch16.S +++ b/lib/arm/switch16.S @@ -40,6 +40,7 @@ DEFINE_COMPILERRT_PRIVATE_FUNCTION(__switch16) ldrshhs r0, [ip, #1] // load 16-bit element if r0 out of range add ip, lr, r0, lsl #1 // compute label = lr + element*2 bx ip // jump to computed label +END_COMPILERRT_FUNCTION(__switch16) // tell linker it can break up file at label boundaries .subsections_via_symbols diff --git a/lib/arm/switch32.S b/lib/arm/switch32.S index 3152dfa1d..64d558eb8 100644 --- a/lib/arm/switch32.S +++ b/lib/arm/switch32.S @@ -40,7 +40,7 @@ DEFINE_COMPILERRT_PRIVATE_FUNCTION(__switch32) ldrhs r0, [ip, #3] // load 32-bit element if r0 out of range add ip, lr, r0 // compute label = lr + element bx ip // jump to computed label - +END_COMPILERRT_FUNCTION(__switch32) // tell linker it can break up file at label boundaries .subsections_via_symbols diff --git a/lib/arm/switch8.S b/lib/arm/switch8.S index 15729ebc3..b5008849a 100644 --- a/lib/arm/switch8.S +++ b/lib/arm/switch8.S @@ -38,6 +38,7 @@ DEFINE_COMPILERRT_PRIVATE_FUNCTION(__switch8) ldrsbhs r0, [lr, ip] // if out of range, use last entry in table add ip, lr, r0, lsl #1 // compute label = lr + element*2 bx ip // jump to computed label +END_COMPILERRT_FUNCTION(__switch8) // tell linker it can break up file at label boundaries .subsections_via_symbols diff --git a/lib/arm/switchu8.S b/lib/arm/switchu8.S index 0a4efac88..488d4e74e 100644 --- a/lib/arm/switchu8.S +++ b/lib/arm/switchu8.S @@ -38,6 +38,7 @@ DEFINE_COMPILERRT_PRIVATE_FUNCTION(__switchu8) ldrbhs r0, [lr, ip] // if out of range, use last entry in table add ip, lr, r0, lsl #1 // compute label = lr + element*2 bx ip // jump to computed label +END_COMPILERRT_FUNCTION(__switchu8) // tell linker it can break up file at label boundaries .subsections_via_symbols diff --git a/lib/arm/sync_synchronize.S b/lib/arm/sync_synchronize.S index 06dade964..aa18f04fb 100644 --- a/lib/arm/sync_synchronize.S +++ b/lib/arm/sync_synchronize.S @@ -27,6 +27,7 @@ DEFINE_COMPILERRT_PRIVATE_FUNCTION(__sync_synchronize) add r7, sp, #0 bl _OSMemoryBarrier ldmfd sp!, {r7, pc} +END_COMPILERRT_FUNCTION(__sync_synchronize) // tell linker it can break up file at label boundaries .subsections_via_symbols diff --git a/lib/arm/truncdfsf2vfp.S b/lib/arm/truncdfsf2vfp.S index 371aee94b..55bf324cc 100644 --- a/lib/arm/truncdfsf2vfp.S +++ b/lib/arm/truncdfsf2vfp.S @@ -23,3 +23,4 @@ DEFINE_COMPILERRT_FUNCTION(__truncdfsf2vfp) vcvt.f32.f64 s15, d7 // convert double to single (trucate precision) vmov r0, s15 // return result in r0 bx lr +END_COMPILERRT_FUNCTION(__truncdfsf2vfp) diff --git a/lib/arm/unorddf2vfp.S b/lib/arm/unorddf2vfp.S index c49e55f29..ee7de4025 100644 --- a/lib/arm/unorddf2vfp.S +++ b/lib/arm/unorddf2vfp.S @@ -26,3 +26,4 @@ DEFINE_COMPILERRT_FUNCTION(__unorddf2vfp) movvs r0, #1 // set result register to 1 if "overflow" (any NaNs) movvc r0, #0 bx lr +END_COMPILERRT_FUNCTION(__unorddf2vfp) diff --git a/lib/arm/unordsf2vfp.S b/lib/arm/unordsf2vfp.S index 0ab27edf5..eb419a541 100644 --- a/lib/arm/unordsf2vfp.S +++ b/lib/arm/unordsf2vfp.S @@ -26,4 +26,4 @@ DEFINE_COMPILERRT_FUNCTION(__unordsf2vfp) movvs r0, #1 // set result register to 1 if "overflow" (any NaNs) movvc r0, #0 bx lr - +END_COMPILERRT_FUNCTION(__unordsf2vfp) |