Module Name:    src
Committed By:   matt
Date:           Mon Aug 19 03:43:07 UTC 2013

Modified Files:
        src/common/lib/libc/arch/arm/quad: __aeabi_uldivmod.S

Log Message:
Add .cfi ops
Thumbify


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/common/lib/libc/arch/arm/quad/__aeabi_uldivmod.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/quad/__aeabi_uldivmod.S
diff -u src/common/lib/libc/arch/arm/quad/__aeabi_uldivmod.S:1.6 src/common/lib/libc/arch/arm/quad/__aeabi_uldivmod.S:1.7
--- src/common/lib/libc/arch/arm/quad/__aeabi_uldivmod.S:1.6	Thu May  9 15:03:40 2013
+++ src/common/lib/libc/arch/arm/quad/__aeabi_uldivmod.S	Mon Aug 19 03:43:07 2013
@@ -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 @@ RCSID("$NetBSD: __aeabi_uldivmod.S,v 1.6
  */
 
 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)

Reply via email to