Module Name:    src
Committed By:   matt
Date:           Mon Aug 19 03:54:15 UTC 2013

Modified Files:
        src/common/lib/libc/arch/arm/gen: divsi3.S

Log Message:
Thumbify (and use .cfi ops)


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/common/lib/libc/arch/arm/gen/divsi3.S

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/common/lib/libc/arch/arm/gen/divsi3.S
diff -u src/common/lib/libc/arch/arm/gen/divsi3.S:1.6 src/common/lib/libc/arch/arm/gen/divsi3.S:1.7
--- src/common/lib/libc/arch/arm/gen/divsi3.S:1.6	Thu Jun 20 07:16:23 2013
+++ src/common/lib/libc/arch/arm/gen/divsi3.S	Mon Aug 19 03:54:15 2013
@@ -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 @@ ENTRY(__divsi3)
 	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

Reply via email to