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/quad Add .cfi ops



details:   https://anonhg.NetBSD.org/src/rev/ebd7530edde2
branches:  trunk
changeset: 789443:ebd7530edde2
user:      matt <matt%NetBSD.org@localhost>
date:      Mon Aug 19 03:43:07 2013 +0000

description:
Add .cfi ops
Thumbify

diffstat:

 common/lib/libc/arch/arm/quad/__aeabi_uldivmod.S |  66 ++++++++++++++++++++---
 1 files changed, 57 insertions(+), 9 deletions(-)

diffs (100 lines):

diff -r fe2f2f31ef81 -r ebd7530edde2 common/lib/libc/arch/arm/quad/__aeabi_uldivmod.S
--- a/common/lib/libc/arch/arm/quad/__aeabi_uldivmod.S  Mon Aug 19 03:27:34 2013 +0000
+++ b/common/lib/libc/arch/arm/quad/__aeabi_uldivmod.S  Mon Aug 19 03:43:07 2013 +0000
@@ -29,7 +29,7 @@
 
 #include <machine/asm.h>
 
-RCSID("$NetBSD: __aeabi_uldivmod.S,v 1.6 2013/05/09 15:03:40 matt Exp $")
+RCSID("$NetBSD: __aeabi_uldivmod.S,v 1.7 2013/08/19 03:43:07 matt Exp $")
 
 /*
  * typedef struct { unsigned long long quo, rem } ulldiv_t;
@@ -38,31 +38,79 @@
  */
 
 ENTRY(__aeabi_uldivmod)
+#ifdef __ARM_EABI__
+       .fnstart
+       .cfi_startproc
+#endif
 #if !defined(_KERNEL) && !defined(_STANDALONE)
+#if !defined(__thumb__)
        orrs    ip, r2, r3
        beq     .Ldivbyzero
+#elif defined(_ARM_ARCH_T2)
+       cbnz    r2, 1f
+       cbz     r3, .Ldivbyzero
+1:
+#else
+       cmp     r2, #0
+       bne     1f
+       cmp     r3, #0
+       beq     .Ldivbyzero
+1:
+#endif
 #endif
 
        push    {r4,lr}
+#ifdef __ARM_EABI__
+       .save   {r4,lr}
+       .cfi_def_cfa_offset 8
+       .cfi_offset 14, -4
+       .cfi_offset 4, -8
+#endif
        sub     sp, sp, #16
-       add     ip, sp, #8
-       str     ip, [sp]
+#ifdef __ARM_EABI__
+       .cfi_def_cfa_offset 24
+#endif
+#if !defined(__thumb__) || defined(_ARM_ARCH_T2)
+       add     r4, sp, #8
+#else
+       mov     r4, sp
+       adds    r4, r4, #8
+#endif
+       str     r4, [sp]
        bl      PLT_SYM(__qdivrem)
        add     sp, sp, #8
+#ifdef __ARM_EABI__
+       .cfi_def_cfa_offset 16
+       .cfi_offset 3, -12
+       .cfi_offset 2, -16
+#endif
        /*
         * The remainder is already on the stack just waiting to be popped
         * into r2/r3.
         */
-       pop     {r2-r4,lr}
-       RET
+       pop     {r2-r4,pc}
 
 #if !defined(_KERNEL) && !defined(_STANDALONE)
 .Ldivbyzero:
-       push    {r0-r1,ip,lr}
+       push    {r0-r1,r4,lr}
+#ifdef __ARM_EABI__
+       .save   {r0-r1,r4,lr}
+       .cfi_def_cfa_offset 16
+       .cfi_offset 14, -4
+       .cfi_offset 4, -8
+#endif
+#ifdef __thumb__
+       movs    r0, #0
+       mvns    r0, r0
+#else
        mvn     r0, #0
-       mvn     r1, #0
+#endif
+       mvns    r1, r0
        bl      PLT_SYM(__aeabi_ldiv0)
-       pop     {r2-r3,ip,lr}
-       RET
+       pop     {r2-r4,pc}
+#endif
+#ifdef __ARM_EABI__
+       .cfi_endproc
+       .fnend
 #endif
 END(__aeabi_uldivmod)



Home | Main Index | Thread Index | Old Index