Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/common/lib/libc/arch/arm/gen Thumbify (and use .cfi ops)



details:   https://anonhg.NetBSD.org/src/rev/035f8f7ae192
branches:  trunk
changeset: 789448:035f8f7ae192
user:      matt <matt%NetBSD.org@localhost>
date:      Mon Aug 19 03:54:15 2013 +0000

description:
Thumbify (and use .cfi ops)

diffstat:

 common/lib/libc/arch/arm/gen/divsi3.S |  37 +++++++++++++++++++++++++++-------
 1 files changed, 29 insertions(+), 8 deletions(-)

diffs (57 lines):

diff -r c86b2a23c031 -r 035f8f7ae192 common/lib/libc/arch/arm/gen/divsi3.S
--- a/common/lib/libc/arch/arm/gen/divsi3.S     Mon Aug 19 03:51:04 2013 +0000
+++ b/common/lib/libc/arch/arm/gen/divsi3.S     Mon Aug 19 03:54:15 2013 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: divsi3.S,v 1.6 2013/06/20 07:16:23 matt Exp $  */
+/*     $NetBSD: divsi3.S,v 1.7 2013/08/19 03:54:15 matt Exp $  */
 
 /*
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
@@ -16,12 +16,6 @@
 
 #include <machine/asm.h>
 
-ENTRY_NP(__aeabi_idivmod)
-ENTRY_NP(__aeabi_idiv)
-#if defined(__ARM_EABI__) && defined(PIC_SYMVER)
-       .symver __aeabi_idiv,__aeabi_idiv@@GCC_3.5
-       .symver __aeabi_idivmod,__aeabi_idivmod@@GCC_3.5
-#endif
 ENTRY(__divsi3)
 #if defined(__ARM_ARCH_EXT_IDIV__)
 # if defined(__ARM_EABI__)
@@ -32,6 +26,33 @@
        mls     r1, r0, r1, r3  @ return modulus in r1
 # endif
        RET
-#else
+#elif !defined(__thumb__) || defined(_ARM_ARCH_T2)
        b       __divide
+#else
+#ifdef __ARM_EABI__
+       .fnstart
+       .cfi_startproc
 #endif
+       push    {r4, lr}
+#ifdef __ARM_EABI__
+       .cfi_def_cfa_offset 8
+       .cfi_offset 14, -4
+       .cfi_offset 4, -8
+#endif
+       bl      __divide
+       pop     {r4, pc}
+#ifdef __ARM_EABI__
+       .cfi_endproc
+       .fnend
+#endif
+#endif
+END(__divsi3)
+
+#if defined(__ARM_EABI__)
+STRONG_ALIAS(__aeabi_idivmod, __divsi3)
+STRONG_ALIAS(__aeabi_idiv, __divsi3)
+#if defined(PIC_SYMVER)
+       .symver __aeabi_idiv,__aeabi_idiv@@GCC_3.5
+       .symver __aeabi_idivmod,__aeabi_idivmod@@GCC_3.5
+#endif
+#endif



Home | Main Index | Thread Index | Old Index