CVS commit: src/common/lib/libc/arch/arm/gen

2020-12-11 Thread David A. Holland
Module Name:src
Committed By:   dholland
Date:   Fri Dec 11 09:02:33 UTC 2020

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

Log Message:
arm bswap32: fix fatal typo in thumb code (PR 55854)


To generate a diff of this commit:
cvs rdiff -u -r1.8 -r1.9 src/common/lib/libc/arch/arm/gen/byte_swap_4.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/byte_swap_4.S
diff -u src/common/lib/libc/arch/arm/gen/byte_swap_4.S:1.8 src/common/lib/libc/arch/arm/gen/byte_swap_4.S:1.9
--- src/common/lib/libc/arch/arm/gen/byte_swap_4.S:1.8	Wed Dec  9 02:46:57 2020
+++ src/common/lib/libc/arch/arm/gen/byte_swap_4.S	Fri Dec 11 09:02:33 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: byte_swap_4.S,v 1.8 2020/12/09 02:46:57 dholland Exp $	*/
+/*	$NetBSD: byte_swap_4.S,v 1.9 2020/12/11 09:02:33 dholland Exp $	*/
 
 /*-
  * Copyright (c) 1997 The NetBSD Foundation, Inc.
@@ -46,7 +46,7 @@ ENTRY(FUNC)
 	eor	r0, r0, r1, lsr #8	/* a.d.c.b ^ 0.db.0.db -> a.b.c.d */
 #else
 	movs	r3, #16
-	lsls	r1, r0, #8		/* d.c.b.a -> c.b.a.0 /*
+	lsls	r1, r0, #8		/* d.c.b.a -> c.b.a.0 */
 	lsrs	r0, r0, #8		/* d.c.b.a -> 0.d.c.b */
 	rors	r1, r3			/* c.b.a.0 -> a.0.c.b */
 	rors	r0, r3			/* 0.d.c.b -> c.b.0.d */



CVS commit: src/common/lib/libc/arch/arm/gen

2020-12-08 Thread David A. Holland
Module Name:src
Committed By:   dholland
Date:   Wed Dec  9 02:46:57 UTC 2020

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

Log Message:
arm bswap32: Improve the comments showing the byte flow.

It's confusing to use 1-4 for bytes 1-4 and then 0 for literal zero,
so use a-d for bytes 1-4.


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/common/lib/libc/arch/arm/gen/byte_swap_4.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/byte_swap_4.S
diff -u src/common/lib/libc/arch/arm/gen/byte_swap_4.S:1.7 src/common/lib/libc/arch/arm/gen/byte_swap_4.S:1.8
--- src/common/lib/libc/arch/arm/gen/byte_swap_4.S:1.7	Mon Aug 19 03:44:47 2013
+++ src/common/lib/libc/arch/arm/gen/byte_swap_4.S	Wed Dec  9 02:46:57 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: byte_swap_4.S,v 1.7 2013/08/19 03:44:47 matt Exp $	*/
+/*	$NetBSD: byte_swap_4.S,v 1.8 2020/12/09 02:46:57 dholland Exp $	*/
 
 /*-
  * Copyright (c) 1997 The NetBSD Foundation, Inc.
@@ -40,21 +40,21 @@ ENTRY(FUNC)
 #ifdef _ARM_ARCH_6
 	rev	r0, r0
 #elif !defined(__thumb__)
-	eor	r1, r0, r0, ror #16	/* 4.3.2.1 -> 42.31.42.31 */
-	bic	r1, r1, #0x00FF	/* 42.31.42.31 -> 42.0.42.31 */
-	mov	r0, r0, ror #8		/* 4.3.2.1 -> 1.4.3.2 */
-	eor	r0, r0, r1, lsr #8	/* 1.4.3.2 ^ 0.42.0.42 -> 1.2.3.4 */
+	eor	r1, r0, r0, ror #16	/* d.c.b.a -> db.ca.db.ca */
+	bic	r1, r1, #0x00FF	/* db.ca.db.ca -> db.0.db.ca */
+	mov	r0, r0, ror #8		/* d.c.b.a -> a.d.c.b */
+	eor	r0, r0, r1, lsr #8	/* a.d.c.b ^ 0.db.0.db -> a.b.c.d */
 #else
 	movs	r3, #16
-	lsls	r1, r0, #8		/* 4.3.2.1 -> 3.2.1.0 /*
-	lsrs	r0, r0, #8		/* 4.3.2.1 -> 0.4.3.2 */
-	rors	r1, r3			/* 3.2.1.0 -> 1.0.3.2 */
-	rors	r0, r3			/* 0.4.3.2 -> 3.2.0.4 */
-	lsrs	r1, r1, #8		/* 1.0.3.2 -> 0.1.0.3 */
-	lsls	r1, r1, #8		/* 0.1.0.3 -> 1.0.3.0 */
-	lsls	r0, r0, #8		/* 3.2.0.4 -> 2.0.4.0 */
-	lsrs	r0, r0, #8		/* 2.0.4.0 -> 0.2.0.4 */
-	orrs	r0, r0, r1		/* 1.0.3.0 | 0.2.0.4 -> 1.2.3.4 */
+	lsls	r1, r0, #8		/* d.c.b.a -> c.b.a.0 /*
+	lsrs	r0, r0, #8		/* d.c.b.a -> 0.d.c.b */
+	rors	r1, r3			/* c.b.a.0 -> a.0.c.b */
+	rors	r0, r3			/* 0.d.c.b -> c.b.0.d */
+	lsrs	r1, r1, #8		/* a.0.c.b -> 0.a.0.c */
+	lsls	r1, r1, #8		/* 0.a.0.c -> a.0.c.0 */
+	lsls	r0, r0, #8		/* c.b.0.d -> b.0.d.0 */
+	lsrs	r0, r0, #8		/* b.0.d.0 -> 0.b.0.d */
+	orrs	r0, r0, r1		/* a.0.c.0 | 0.b.0.d -> a.b.c.d */
 #endif
 	RET
 END(FUNC)



CVS commit: src/common/lib/libc/arch/arm/gen

2014-01-29 Thread Joerg Sonnenberger
Module Name:src
Committed By:   joerg
Date:   Wed Jan 29 22:29:43 UTC 2014

Modified Files:
src/common/lib/libc/arch/arm/gen: __aeabi_idiv0.c __aeabi_ldiv0.c

Log Message:
Kernel and standalone code uses panic() for broken code.


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/arm/gen/__aeabi_idiv0.c \
src/common/lib/libc/arch/arm/gen/__aeabi_ldiv0.c

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/__aeabi_idiv0.c
diff -u src/common/lib/libc/arch/arm/gen/__aeabi_idiv0.c:1.2 src/common/lib/libc/arch/arm/gen/__aeabi_idiv0.c:1.3
--- src/common/lib/libc/arch/arm/gen/__aeabi_idiv0.c:1.2	Wed May  8 05:13:56 2013
+++ src/common/lib/libc/arch/arm/gen/__aeabi_idiv0.c	Wed Jan 29 22:29:43 2014
@@ -29,9 +29,11 @@
 
 #include sys/cdefs.h
 
-__RCSID($NetBSD: __aeabi_idiv0.c,v 1.2 2013/05/08 05:13:56 matt Exp $);
+__RCSID($NetBSD: __aeabi_idiv0.c,v 1.3 2014/01/29 22:29:43 joerg Exp $);
 
-#if !defined(_KERNEL)  !defined(_STANDALONE)
+#if defined(_KERNEL) || defined(_STANDALONE)
+#include sys/systm.h
+#else
 #include string.h
 #include unistd.h
 #include sys/types.h
@@ -44,7 +46,9 @@ __RCSID($NetBSD: __aeabi_idiv0.c,v 1.2 
 int
 __aeabi_idiv0(int result)
 {
-#if !defined(_KERNEL) || !defined(_STANDALONE)
+#if defined(_KERNEL) || defined(_STANDALONE)
+	panic(divide by 0);
+#else
 	siginfo_t info;
 	
 	memset(info, 0, sizeof info);
Index: src/common/lib/libc/arch/arm/gen/__aeabi_ldiv0.c
diff -u src/common/lib/libc/arch/arm/gen/__aeabi_ldiv0.c:1.2 src/common/lib/libc/arch/arm/gen/__aeabi_ldiv0.c:1.3
--- src/common/lib/libc/arch/arm/gen/__aeabi_ldiv0.c:1.2	Wed May  8 05:13:56 2013
+++ src/common/lib/libc/arch/arm/gen/__aeabi_ldiv0.c	Wed Jan 29 22:29:43 2014
@@ -29,9 +29,11 @@
 
 #include sys/cdefs.h
 
-__RCSID($NetBSD: __aeabi_ldiv0.c,v 1.2 2013/05/08 05:13:56 matt Exp $);
+__RCSID($NetBSD: __aeabi_ldiv0.c,v 1.3 2014/01/29 22:29:43 joerg Exp $);
 
-#if !defined(_KERNEL)  !defined(_STANDALONE)
+#if defined(_KERNEL) || defined(_STANDALONE)
+#include sys/systm.h
+#else
 #include string.h
 #include unistd.h
 #include sys/types.h
@@ -44,7 +46,9 @@ __RCSID($NetBSD: __aeabi_ldiv0.c,v 1.2 
 long long
 __aeabi_ldiv0(long long result)
 {
-#if !defined(_KERNEL)  !defined(_STANDALONE)
+#if defined(_KERNEL) || defined(_STANDALONE)
+	panic(divide by 0);
+#else
 	siginfo_t info;
 	
 	memset(info, 0, sizeof info);



CVS commit: src/common/lib/libc/arch/arm/gen

2013-09-09 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Mon Sep  9 07:33:54 UTC 2013

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

Log Message:
Remove movw/movt due to linker problems.
Check for 0 divisor and __aeabi_idiv0 if needed (EABI  _LIBC only).


To generate a diff of this commit:
cvs rdiff -u -r1.11 -r1.12 src/common/lib/libc/arch/arm/gen/divsi3.S
cvs rdiff -u -r1.7 -r1.8 src/common/lib/libc/arch/arm/gen/udivsi3.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.11 src/common/lib/libc/arch/arm/gen/divsi3.S:1.12
--- src/common/lib/libc/arch/arm/gen/divsi3.S:1.11	Mon Sep  9 00:34:10 2013
+++ src/common/lib/libc/arch/arm/gen/divsi3.S	Mon Sep  9 07:33:54 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: divsi3.S,v 1.11 2013/09/09 00:34:10 matt Exp $	*/
+/*	$NetBSD: divsi3.S,v 1.12 2013/09/09 07:33:54 matt Exp $	*/
 
 /*
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
@@ -31,35 +31,39 @@ ENTRY(__divsi3)
 # endif
 	RET
 #elif defined(__ARM_EABI__)  defined(_LIBC)
-#ifdef _ARM_ARCH_7
-	movw	r2, #:lower16:REL_SYM(_libc_arm_hwdiv_present, .LPIC0)
-	movt	r2, #:upper16:REL_SYM(_libc_arm_hwdiv_present, .LPIC0)
-#else
+	cmp	r1, #0		@ dividing by 0?
+	beq	.Ldiv0		@ call __aeabi_idiv0
 	ldr	r2, .Lhwdiv_present
-#endif
 # ifdef PIC
-	add	r2, r2, pc
+	add	r2, r2, pc	@ pc = .LPIC0
 # endif
 	ldr	r2, [r2]
 .LPIC0:	cmp	r2, #0
 	beq	__divide
 	mov	r3, r0
-#if defined(__ARM_ARCH_EXT_IDIV__)
+# if defined(__ARM_ARCH_EXT_IDIV__)
 	sdiv	r0, r0, r1
-	mls	r1, r0, r1, r3	/* return modulus in r1 */
-#elif defined(__thumb__)  defined(_ARM_ARCH_T2)
+	mls	r1, r0, r1, r3	@ return modulus in r1
+# elif defined(__thumb__)  defined(_ARM_ARCH_T2)
 	.inst.w	0xfb90f0f1
 	.inst.w	0xfb003111
-#else
+# else
 	.inst	0xe710f110
 	.inst	0xe0613190
-#endif
+# endif
 	RET
-#ifndef _ARM_ARCH_7
+
 	.align	0
 .Lhwdiv_present:
 	.word	REL_SYM(_libc_arm_hwdiv_present, .LPIC0)
-#endif
+
+	.align	0
+.Ldiv0:	push	{r0, lr}	/* save r0 */
+	cmp	r0, #0
+	mvnge	r0, #0x8000	/* INT_MAX = 0x7fff */
+	movlt	r0, #0x8000	/* INT_MIN = 0x8000 */
+	bl	_C_LABEL(__aeabi_idiv0)
+	pop	{r1, pc}	/* restore r0 as r1 */
 #else /* !__ARM_EABI__ */
 	b	__divide
 #endif

Index: src/common/lib/libc/arch/arm/gen/udivsi3.S
diff -u src/common/lib/libc/arch/arm/gen/udivsi3.S:1.7 src/common/lib/libc/arch/arm/gen/udivsi3.S:1.8
--- src/common/lib/libc/arch/arm/gen/udivsi3.S:1.7	Mon Sep  9 00:34:10 2013
+++ src/common/lib/libc/arch/arm/gen/udivsi3.S	Mon Sep  9 07:33:54 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: udivsi3.S,v 1.7 2013/09/09 00:34:10 matt Exp $	*/
+/*	$NetBSD: udivsi3.S,v 1.8 2013/09/09 07:33:54 matt Exp $	*/
 
 /*
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
@@ -31,35 +31,38 @@ ENTRY(__udivsi3)
 # endif
 	RET
 #elif defined(__ARM_EABI__)  defined(_LIBC)
-#ifdef _ARM_ARCH_7
-	movw	r2, #:lower16:REL_SYM(_libc_arm_hwdiv_present, .LPIC0)
-	movt	r2, #:upper16:REL_SYM(_libc_arm_hwdiv_present, .LPIC0)
-#else
+	cmp	r1, #0
+	beq	.Ldiv0
 	ldr	r2, .Lhwdiv_present
-#endif
-#ifdef PIC
-	add	r2, r2, pc
-#endif
+# ifdef PIC
+	add	r2, r2, pc	/* pc = .LPIC0 */
+# endif
 	ldr	r2, [r2]
 .LPIC0:	cmp	r2, #0
 	beq	__udivide
 	mov	r3, r0
-#if defined(__ARM_ARCH_EXT_IDIV__)
+# if defined(__ARM_ARCH_EXT_IDIV__)
 	udiv	r0, r0, r1
 	mls	r1, r0, r1, r3	/* return modulus in r1 */
-#elif defined(__thumb__)  defined(_ARM_ARCH_T2)
+# elif defined(__thumb__)  defined(_ARM_ARCH_T2)
 	.inst.w 0xfbb0f0f1
 	.inst.w	0xfb003111
-#else
+# else
 	.inst	0xe730f110
 	.inst	0xe0613190
-#endif
+# endif
 	RET
-#ifndef _ARM_ARCH_7
+
 	.align 0
 .Lhwdiv_present:
 	.word	REL_SYM(_libc_arm_hwdiv_present, .LPIC0)
-#endif
+
+	/* Handle divide by zero */
+	.align	0
+.Ldiv0:	push	{r0, lr}	/* save r0 */
+	mvns	r0, #0		/* thumb2 */
+	bl	_C_LABEL(__aeabi_idiv0)
+	pop	{r1, pc}	/* restore r0 as r1 */
 #else
 	b	__udivide
 #endif



CVS commit: src/common/lib/libc/arch/arm/gen

2013-09-08 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Sun Sep  8 13:24:16 UTC 2013

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

Log Message:
Support using hwdiv instructions if those are available.
But only for EABI.


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 src/common/lib/libc/arch/arm/gen/divsi3.S
cvs rdiff -u -r1.5 -r1.6 src/common/lib/libc/arch/arm/gen/udivsi3.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.9 src/common/lib/libc/arch/arm/gen/divsi3.S:1.10
--- src/common/lib/libc/arch/arm/gen/divsi3.S:1.9	Thu Sep  5 05:16:08 2013
+++ src/common/lib/libc/arch/arm/gen/divsi3.S	Sun Sep  8 13:24:16 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: divsi3.S,v 1.9 2013/09/05 05:16:08 matt Exp $	*/
+/*	$NetBSD: divsi3.S,v 1.10 2013/09/08 13:24:16 matt Exp $	*/
 
 /*
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
@@ -16,7 +16,11 @@
 
 #include machine/asm.h
 
+#if defined(__thumb__)  !defined(_ARM_ARCH_T2)
+ARM_ENTRY(__divsi3)
+#else
 ENTRY(__divsi3)
+#endif
 #if defined(__ARM_ARCH_EXT_IDIV__)
 # if defined(__ARM_EABI__)
 	mov	r3, r0		@ save for mls
@@ -26,25 +30,38 @@ ENTRY(__divsi3)
 	mls	r1, r0, r1, r3	@ return modulus in r1
 # endif
 	RET
-#elif !defined(__thumb__) || defined(_ARM_ARCH_T2)
-	b	__divide
+#elif defined(__ARM_EABI__)  defined(_LIBC)
+#ifdef _ARM_ARCH_7
+	movw	r2, #:lower16:REL_SYM(__libc_arm_hwdiv_present, .LPIC0)
+	movt	r2, #:upper16:REL_SYM(__libc_arm_hwdiv_present, .LPIC0)
 #else
-#if defined(__ARM_EABI__)  defined(__UNWIND_TABLES__)
-	.fnstart
-	.cfi_startproc
-#endif
-	push	{r4, lr}
-#if defined(__ARM_EABI__)  defined(__UNWIND_TABLES__)
-	.cfi_def_cfa_offset 8
-	.cfi_offset 14, -4
-	.cfi_offset 4, -8
-#endif
-	bl	__divide
-	pop	{r4, pc}
-#if defined(__ARM_EABI__)  defined(__UNWIND_TABLES__)
-	.cfi_endproc
-	.fnend
+	ldr	r2, .Lhwdiv_present
 #endif
+# ifdef PIC
+	add	r2, r2, pc
+# endif
+	ldr	r2, [r2]
+.LPIC0:	cmp	r2, #0
+	beq	__divide
+	mov	r3, r0
+#if defined(__ARM_ARCH_EXT_IDIV__)
+	sdiv	r0, r0, r1
+	mls	r1, r0, r1, r3	/* return modulus in r1 */
+#elif defined(__thumb__)  defined(_ARM_ARCH_T2)
+	.inst.w	0xfb90f0f1
+	.inst.w	0xfb003111
+#else
+	.inst	0xe710f110
+	.inst	0xe0613190
+#endif
+	RET
+#ifndef _ARM_ARCH_7
+	.align	0
+.Lhwdiv_present:
+	.word	REL_SYM(__libc_arm_hwdiv_present, .LPIC0)
+#endif
+#else /* !__ARM_EABI__ */
+	b	__divide
 #endif
 END(__divsi3)
 

Index: src/common/lib/libc/arch/arm/gen/udivsi3.S
diff -u src/common/lib/libc/arch/arm/gen/udivsi3.S:1.5 src/common/lib/libc/arch/arm/gen/udivsi3.S:1.6
--- src/common/lib/libc/arch/arm/gen/udivsi3.S:1.5	Thu Sep  5 05:16:08 2013
+++ src/common/lib/libc/arch/arm/gen/udivsi3.S	Sun Sep  8 13:24:16 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: udivsi3.S,v 1.5 2013/09/05 05:16:08 matt Exp $	*/
+/*	$NetBSD: udivsi3.S,v 1.6 2013/09/08 13:24:16 matt Exp $	*/
 
 /*
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
@@ -16,7 +16,11 @@
 
 #include machine/asm.h
 
+#if defined(__ARM_EABI__)  defined(__thumb__)  !defined(_ARM_ARCH_T2)
+ARM_ENTRY(__udivsi3)
+#else
 ENTRY(__udivsi3)
+#endif
 #if defined(__ARM_ARCH_EXT_IDIV__)
 # if defined(__ARM_EABI__)
 	mov	r3, r0		@ save for mls
@@ -26,26 +30,38 @@ ENTRY(__udivsi3)
 	mls	r1, r0, r1, r3	@ return modulus in r1
 # endif
 	RET
-#elif !defined(__thumb__) || defined(_ARM_ARCH_T2)
-	b	__udivide
+#elif defined(__ARM_EABI__)  defined(_LIBC)
+#ifdef _ARM_ARCH_7
+	movw	r2, #:lower16:REL_SYM(__libc_arm_hwdiv_present, .LPIC0)
+	movt	r2, #:upper16:REL_SYM(__libc_arm_hwdiv_present, .LPIC0)
+#else
+	ldr	r2, .Lhwdiv_present
+#endif
+#ifdef PIC
+	add	r2, r2, pc
+#endif
+	ldr	r2, [r2]
+.LPIC0:	cmp	r2, #0
+	beq	__udivide
+	mov	r3, r0
+#if defined(__ARM_ARCH_EXT_IDIV__)
+	udiv	r0, r0, r1
+	mls	r1, r0, r1, r3	/* return modulus in r1 */
+#elif defined(__thumb__)  defined(_ARM_ARCH_T2)
+	.inst.w 0xfbb0f0f1
+	.inst.w	0xfb003111
 #else
-#if defined(__ARM_EABI__)  defined(__UNWIND_TABLES__)
-	.fnstart
-	.cfi_startproc
-#endif
-	push	{r4, lr}
-#if defined(__ARM_EABI__)  defined(__UNWIND_TABLES__)
-	.save	{r4, lr}
-	.cfi_def_cfa_offset 8
-	.cfi_offset 14, -4
-	.cfi_offset 4, -8
-#endif
-	bl	__udivide
-	pop	{r4, pc}
-#if defined(__ARM_EABI__)  defined(__UNWIND_TABLES__)
-	.cfi_endproc
-	.fnend
+	.inst	0xe730f110
+	.inst	0xe0613190
+#endif
+	RET
+#ifndef _ARM_ARCH_7
+	.align 0
+.Lhwdiv_present:
+	.word	REL_SYM(__libc_arm_hwdiv_present, .LPIC0)
 #endif
+#else
+	b	__udivide
 #endif
 END(__udivsi3)
 



CVS commit: src/common/lib/libc/arch/arm/gen

2013-09-08 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Mon Sep  9 00:34:10 UTC 2013

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

Log Message:
s/__libc/_libc/


To generate a diff of this commit:
cvs rdiff -u -r1.10 -r1.11 src/common/lib/libc/arch/arm/gen/divsi3.S
cvs rdiff -u -r1.6 -r1.7 src/common/lib/libc/arch/arm/gen/udivsi3.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.10 src/common/lib/libc/arch/arm/gen/divsi3.S:1.11
--- src/common/lib/libc/arch/arm/gen/divsi3.S:1.10	Sun Sep  8 13:24:16 2013
+++ src/common/lib/libc/arch/arm/gen/divsi3.S	Mon Sep  9 00:34:10 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: divsi3.S,v 1.10 2013/09/08 13:24:16 matt Exp $	*/
+/*	$NetBSD: divsi3.S,v 1.11 2013/09/09 00:34:10 matt Exp $	*/
 
 /*
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
@@ -32,8 +32,8 @@ ENTRY(__divsi3)
 	RET
 #elif defined(__ARM_EABI__)  defined(_LIBC)
 #ifdef _ARM_ARCH_7
-	movw	r2, #:lower16:REL_SYM(__libc_arm_hwdiv_present, .LPIC0)
-	movt	r2, #:upper16:REL_SYM(__libc_arm_hwdiv_present, .LPIC0)
+	movw	r2, #:lower16:REL_SYM(_libc_arm_hwdiv_present, .LPIC0)
+	movt	r2, #:upper16:REL_SYM(_libc_arm_hwdiv_present, .LPIC0)
 #else
 	ldr	r2, .Lhwdiv_present
 #endif
@@ -58,7 +58,7 @@ ENTRY(__divsi3)
 #ifndef _ARM_ARCH_7
 	.align	0
 .Lhwdiv_present:
-	.word	REL_SYM(__libc_arm_hwdiv_present, .LPIC0)
+	.word	REL_SYM(_libc_arm_hwdiv_present, .LPIC0)
 #endif
 #else /* !__ARM_EABI__ */
 	b	__divide

Index: src/common/lib/libc/arch/arm/gen/udivsi3.S
diff -u src/common/lib/libc/arch/arm/gen/udivsi3.S:1.6 src/common/lib/libc/arch/arm/gen/udivsi3.S:1.7
--- src/common/lib/libc/arch/arm/gen/udivsi3.S:1.6	Sun Sep  8 13:24:16 2013
+++ src/common/lib/libc/arch/arm/gen/udivsi3.S	Mon Sep  9 00:34:10 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: udivsi3.S,v 1.6 2013/09/08 13:24:16 matt Exp $	*/
+/*	$NetBSD: udivsi3.S,v 1.7 2013/09/09 00:34:10 matt Exp $	*/
 
 /*
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
@@ -32,8 +32,8 @@ ENTRY(__udivsi3)
 	RET
 #elif defined(__ARM_EABI__)  defined(_LIBC)
 #ifdef _ARM_ARCH_7
-	movw	r2, #:lower16:REL_SYM(__libc_arm_hwdiv_present, .LPIC0)
-	movt	r2, #:upper16:REL_SYM(__libc_arm_hwdiv_present, .LPIC0)
+	movw	r2, #:lower16:REL_SYM(_libc_arm_hwdiv_present, .LPIC0)
+	movt	r2, #:upper16:REL_SYM(_libc_arm_hwdiv_present, .LPIC0)
 #else
 	ldr	r2, .Lhwdiv_present
 #endif
@@ -58,7 +58,7 @@ ENTRY(__udivsi3)
 #ifndef _ARM_ARCH_7
 	.align 0
 .Lhwdiv_present:
-	.word	REL_SYM(__libc_arm_hwdiv_present, .LPIC0)
+	.word	REL_SYM(_libc_arm_hwdiv_present, .LPIC0)
 #endif
 #else
 	b	__udivide



CVS commit: src/common/lib/libc/arch/arm/gen

2013-09-04 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Thu Sep  5 05:16:08 UTC 2013

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

Log Message:
Use __ARM_EABI__ and new __UNWIND_TABLES__ to decide when to use .cfi ops


To generate a diff of this commit:
cvs rdiff -u -r1.8 -r1.9 src/common/lib/libc/arch/arm/gen/divsi3.S
cvs rdiff -u -r1.4 -r1.5 src/common/lib/libc/arch/arm/gen/udivsi3.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.8 src/common/lib/libc/arch/arm/gen/divsi3.S:1.9
--- src/common/lib/libc/arch/arm/gen/divsi3.S:1.8	Thu Aug 22 19:25:00 2013
+++ src/common/lib/libc/arch/arm/gen/divsi3.S	Thu Sep  5 05:16:08 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: divsi3.S,v 1.8 2013/08/22 19:25:00 matt Exp $	*/
+/*	$NetBSD: divsi3.S,v 1.9 2013/09/05 05:16:08 matt Exp $	*/
 
 /*
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
@@ -29,19 +29,19 @@ ENTRY(__divsi3)
 #elif !defined(__thumb__) || defined(_ARM_ARCH_T2)
 	b	__divide
 #else
-#if defined(__ARM_EABI__)  (!defined(_KERNEL)  !defined(_STANDALONE))
+#if defined(__ARM_EABI__)  defined(__UNWIND_TABLES__)
 	.fnstart
 	.cfi_startproc
 #endif
 	push	{r4, lr}
-#if defined(__ARM_EABI__)  (!defined(_KERNEL)  !defined(_STANDALONE))
+#if defined(__ARM_EABI__)  defined(__UNWIND_TABLES__)
 	.cfi_def_cfa_offset 8
 	.cfi_offset 14, -4
 	.cfi_offset 4, -8
 #endif
 	bl	__divide
 	pop	{r4, pc}
-#ifdef __ARM_EABI__
+#if defined(__ARM_EABI__)  defined(__UNWIND_TABLES__)
 	.cfi_endproc
 	.fnend
 #endif

Index: src/common/lib/libc/arch/arm/gen/udivsi3.S
diff -u src/common/lib/libc/arch/arm/gen/udivsi3.S:1.4 src/common/lib/libc/arch/arm/gen/udivsi3.S:1.5
--- src/common/lib/libc/arch/arm/gen/udivsi3.S:1.4	Thu Aug 22 19:25:00 2013
+++ src/common/lib/libc/arch/arm/gen/udivsi3.S	Thu Sep  5 05:16:08 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: udivsi3.S,v 1.4 2013/08/22 19:25:00 matt Exp $	*/
+/*	$NetBSD: udivsi3.S,v 1.5 2013/09/05 05:16:08 matt Exp $	*/
 
 /*
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
@@ -29,12 +29,12 @@ ENTRY(__udivsi3)
 #elif !defined(__thumb__) || defined(_ARM_ARCH_T2)
 	b	__udivide
 #else
-#if defined(__ARM_EABI__)  (!defined(_KERNEL)  !defined(_STANDALONE))
+#if defined(__ARM_EABI__)  defined(__UNWIND_TABLES__)
 	.fnstart
 	.cfi_startproc
 #endif
 	push	{r4, lr}
-#if defined(__ARM_EABI__)  (!defined(_KERNEL)  !defined(_STANDALONE))
+#if defined(__ARM_EABI__)  defined(__UNWIND_TABLES__)
 	.save	{r4, lr}
 	.cfi_def_cfa_offset 8
 	.cfi_offset 14, -4
@@ -42,7 +42,7 @@ ENTRY(__udivsi3)
 #endif
 	bl	__udivide
 	pop	{r4, pc}
-#ifdef __ARM_EABI__
+#if defined(__ARM_EABI__)  defined(__UNWIND_TABLES__)
 	.cfi_endproc
 	.fnend
 #endif



CVS commit: src/common/lib/libc/arch/arm/gen

2013-08-18 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Mon Aug 19 03:44:47 UTC 2013

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

Log Message:
Add thumb version
Use STRONG_ALIAS


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/common/lib/libc/arch/arm/gen/byte_swap_4.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/byte_swap_4.S
diff -u src/common/lib/libc/arch/arm/gen/byte_swap_4.S:1.6 src/common/lib/libc/arch/arm/gen/byte_swap_4.S:1.7
--- src/common/lib/libc/arch/arm/gen/byte_swap_4.S:1.6	Wed Jan 16 21:48:56 2013
+++ src/common/lib/libc/arch/arm/gen/byte_swap_4.S	Mon Aug 19 03:44:47 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: byte_swap_4.S,v 1.6 2013/01/16 21:48:56 matt Exp $	*/
+/*	$NetBSD: byte_swap_4.S,v 1.7 2013/08/19 03:44:47 matt Exp $	*/
 
 /*-
  * Copyright (c) 1997 The NetBSD Foundation, Inc.
@@ -32,21 +32,34 @@
 #include machine/asm.h
 
 #if defined(_KERNEL) || defined(_STANDALONE)
-_ENTRY(_C_LABEL(bswap32))
+#define	FUNC	_C_LABEL(bswap32)
 #else
-_ENTRY(_C_LABEL(__bswap32))
+#define	FUNC	_C_LABEL(__bswap32)
 #endif
-#if BYTE_ORDER == LITTLE_ENDIAN
-_ENTRY(_C_LABEL(ntohl))
-_ENTRY(_C_LABEL(htonl))
-#endif
-_PROF_PROLOGUE
+ENTRY(FUNC)
 #ifdef _ARM_ARCH_6
 	rev	r0, r0
-#else
+#elif !defined(__thumb__)
 	eor	r1, r0, r0, ror #16	/* 4.3.2.1 - 42.31.42.31 */
 	bic	r1, r1, #0x00FF	/* 42.31.42.31 - 42.0.42.31 */
 	mov	r0, r0, ror #8		/* 4.3.2.1 - 1.4.3.2 */
 	eor	r0, r0, r1, lsr #8	/* 1.4.3.2 ^ 0.42.0.42 - 1.2.3.4 */
+#else
+	movs	r3, #16
+	lsls	r1, r0, #8		/* 4.3.2.1 - 3.2.1.0 /*
+	lsrs	r0, r0, #8		/* 4.3.2.1 - 0.4.3.2 */
+	rors	r1, r3			/* 3.2.1.0 - 1.0.3.2 */
+	rors	r0, r3			/* 0.4.3.2 - 3.2.0.4 */
+	lsrs	r1, r1, #8		/* 1.0.3.2 - 0.1.0.3 */
+	lsls	r1, r1, #8		/* 0.1.0.3 - 1.0.3.0 */
+	lsls	r0, r0, #8		/* 3.2.0.4 - 2.0.4.0 */
+	lsrs	r0, r0, #8		/* 2.0.4.0 - 0.2.0.4 */
+	orrs	r0, r0, r1		/* 1.0.3.0 | 0.2.0.4 - 1.2.3.4 */
 #endif
 	RET
+END(FUNC)
+
+#if BYTE_ORDER == LITTLE_ENDIAN
+STRONG_ALIAS(_C_LABEL(ntohl), FUNC)
+STRONG_ALIAS(_C_LABEL(htonl), FUNC)
+#endif



CVS commit: src/common/lib/libc/arch/arm/gen

2013-08-18 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Mon Aug 19 03:44:18 UTC 2013

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

Log Message:
Use STRONG_ALIAS
Add thumb variation


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/common/lib/libc/arch/arm/gen/byte_swap_2.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/byte_swap_2.S
diff -u src/common/lib/libc/arch/arm/gen/byte_swap_2.S:1.5 src/common/lib/libc/arch/arm/gen/byte_swap_2.S:1.6
--- src/common/lib/libc/arch/arm/gen/byte_swap_2.S:1.5	Tue Nov 27 23:57:07 2012
+++ src/common/lib/libc/arch/arm/gen/byte_swap_2.S	Mon Aug 19 03:44:18 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: byte_swap_2.S,v 1.5 2012/11/27 23:57:07 matt Exp $	*/
+/*	$NetBSD: byte_swap_2.S,v 1.6 2013/08/19 03:44:18 matt Exp $	*/
 
 /*-
  * Copyright (c) 1999 The NetBSD Foundation, Inc.
@@ -32,20 +32,30 @@
 #include machine/asm.h
 
 #if defined(_KERNEL) || defined(_STANDALONE)
-_ENTRY(_C_LABEL(bswap16))
+#define FUNC _C_LABEL(bswap16)
 #else
-_ENTRY(_C_LABEL(__bswap16))
+#define FUNC _C_LABEL(__bswap16)
 #endif
-#if BYTE_ORDER == LITTLE_ENDIAN
-_ENTRY(_C_LABEL(ntohs))
-_ENTRY(_C_LABEL(htons))
-#endif
-_PROF_PROLOGUE
+
+ENTRY(FUNC)
 #ifdef _ARM_ARCH_6
 	rev16		r0, r0
-#else
+#elif !defined(__thumb__)
 	and		r1, r0, #0xff
 	mov		r0, r0, lsr #8
 	orr		r0, r0, r1, lsl #8
+#else
+	movs		r2, #0xff
+	movs		r1, r0
+	ands		r1, r1, r2
+	lsls		r1, r1, #8
+	lsrs		r0, r0, #8
+	ands		r0, r0, r2
+	orrs		r0, r0, r1
 #endif
 	RET
+END(FUNC)
+#if BYTE_ORDER == LITTLE_ENDIAN
+STRONG_ALIAS(_C_LABEL(ntohs), FUNC)
+STRONG_ALIAS(_C_LABEL(htons), FUNC)
+#endif



CVS commit: src/common/lib/libc/arch/arm/gen

2013-08-18 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Mon Aug 19 03:47:06 UTC 2013

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

Log Message:
This is ARM only


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/common/lib/libc/arch/arm/gen/divide.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/divide.S
diff -u src/common/lib/libc/arch/arm/gen/divide.S:1.3 src/common/lib/libc/arch/arm/gen/divide.S:1.4
--- src/common/lib/libc/arch/arm/gen/divide.S:1.3	Thu Jun 20 07:16:23 2013
+++ src/common/lib/libc/arch/arm/gen/divide.S	Mon Aug 19 03:47:06 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: divide.S,v 1.3 2013/06/20 07:16:23 matt Exp $	*/
+/*	$NetBSD: divide.S,v 1.4 2013/08/19 03:47:06 matt Exp $	*/
 
 /*
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
@@ -23,25 +23,7 @@
  * which makes a C call
  */
 
-.L_overflow:
-#if !defined(_KERNEL)  !defined(_STANDALONE)
-#ifdef __ARM_EABI__
-	mov	r0, r1/* return quotient */
-	b	PLT_SYM(__aeabi_idiv0)
-#else
-	mov	r0, #8			/* SIGFPE */
-	bl	PLT_SYM(_C_LABEL(raise))	/* raise it */
-	mov	r0, #0
-	RET
-#endif
-#else
-	/* XXX should cause a fatal error */
-	mvn	r0, #0
-	RET
-#endif
-
-	.globl	__udivide
-__udivide:/* r0 = r0 / r1; r1 = r0 % r1 */
+_ARM_ENTRY(__udivide)			/* r0 = r0 / r1; r1 = r0 % r1 */
 	eor r0, r1, r0 
 	eor r1, r0, r1 
 	eor r0, r1, r0 
@@ -61,9 +43,9 @@ __udivide:/* r0 = r0 / r1; r1 = r0 %
 	mov	r0, r1
 	mov	r1, #0
 	RET
+END(__udivide)
 
-	.globl	__divide
-__divide:/* r0 = r0 / r1; r1 = r0 % r1 */
+_ARM_ENTRY(__divide)			/* r0 = r0 / r1; r1 = r0 % r1 */
 	eor r0, r1, r0 
 	eor r1, r0, r1 
 	eor r0, r1, r0 
@@ -377,4 +359,23 @@ __divide:/* r0 = r0 / r1; r1 = r0 % 
 	mov	r0, r3
 	RET
 
+.L_overflow:
+#if !defined(_KERNEL)  !defined(_STANDALONE)
+#ifdef __ARM_EABI__
+	mov	r0, r1/* return quotient */
+	b	PLT_SYM(__aeabi_idiv0)
+#else
+	mov	r0, #8			/* SIGFPE */
+	bl	PLT_SYM(_C_LABEL(raise))	/* raise it */
+	mov	r0, #0
+	RET
+#endif
+#else
+	/* XXX should cause a fatal error */
+	mvn	r0, #0
+	RET
+#endif
+
+END(__divide)
+
 #endif /* __ARM_ARCH_EXT_IDIV__ */



CVS commit: src/common/lib/libc/arch/arm/gen

2013-08-18 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Mon Aug 19 03:51:04 UTC 2013

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

Log Message:
thumbify
add .cfi ops (for thumb)


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/arm/gen/udivsi3.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/udivsi3.S
diff -u src/common/lib/libc/arch/arm/gen/udivsi3.S:1.2 src/common/lib/libc/arch/arm/gen/udivsi3.S:1.3
--- src/common/lib/libc/arch/arm/gen/udivsi3.S:1.2	Thu Jun 20 07:16:23 2013
+++ src/common/lib/libc/arch/arm/gen/udivsi3.S	Mon Aug 19 03:51:04 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: udivsi3.S,v 1.2 2013/06/20 07:16:23 matt Exp $	*/
+/*	$NetBSD: udivsi3.S,v 1.3 2013/08/19 03:51:04 matt Exp $	*/
 
 /*
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
@@ -16,9 +16,6 @@
 
 #include machine/asm.h
 
-
-ENTRY_NP(__aeabi_uidivmod)
-ENTRY_NP(__aeabi_uidiv)
 ENTRY(__udivsi3)
 #if defined(__ARM_ARCH_EXT_IDIV__)
 # if defined(__ARM_EABI__)
@@ -29,6 +26,30 @@ ENTRY(__udivsi3)
 	mls	r1, r0, r1, r3	@ return modulus in r1
 # endif
 	RET
-#else
+#elif !defined(__thumb__) || defined(_ARM_ARCH_T2)
 	b	__udivide
+#else
+#ifdef __ARM_EABI__
+	.fnstart
+	.cfi_startproc
+#endif
+	push	{r4, lr}
+#ifdef __ARM_EABI__
+	.save	{r4, lr}
+	.cfi_def_cfa_offset 8
+	.cfi_offset 14, -4
+	.cfi_offset 4, -8
+#endif
+	bl	__udivide
+	pop	{r4, pc}
+#ifdef __ARM_EABI__
+	.cfi_endproc
+	.fnend
+#endif
+#endif
+END(__udivsi3)
+
+#ifdef __ARM_EABI__
+STRONG_ALIAS(__aeabi_uidivmod, __udivsi3)
+STRONG_ALIAS(__aeabi_uidiv, __udivsi3)
 #endif



CVS commit: src/common/lib/libc/arch/arm/gen

2013-08-18 Thread Matt Thomas
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



CVS commit: src/common/lib/libc/arch/arm/gen

2013-08-15 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Thu Aug 15 21:40:11 UTC 2013

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

Log Message:
Only assemble if !__ARM_EABI__


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/common/lib/libc/arch/arm/gen/modsi3.S \
src/common/lib/libc/arch/arm/gen/umodsi3.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/modsi3.S
diff -u src/common/lib/libc/arch/arm/gen/modsi3.S:1.3 src/common/lib/libc/arch/arm/gen/modsi3.S:1.4
--- src/common/lib/libc/arch/arm/gen/modsi3.S:1.3	Thu Jun 20 07:16:23 2013
+++ src/common/lib/libc/arch/arm/gen/modsi3.S	Thu Aug 15 21:40:11 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: modsi3.S,v 1.3 2013/06/20 07:16:23 matt Exp $	*/
+/*	$NetBSD: modsi3.S,v 1.4 2013/08/15 21:40:11 matt Exp $	*/
 
 /*
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
@@ -16,6 +16,7 @@
 
 #include machine/asm.h
 
+#ifndef __ARM_EABI__
 /* 
  * stack is aligned as there's a possibility of branching to .L_overflow
  * which makes a C call
@@ -33,3 +34,5 @@ ENTRY(__modsi3)
 #endif
 	RET
 END(__modsi3)
+
+#endif
Index: src/common/lib/libc/arch/arm/gen/umodsi3.S
diff -u src/common/lib/libc/arch/arm/gen/umodsi3.S:1.3 src/common/lib/libc/arch/arm/gen/umodsi3.S:1.4
--- src/common/lib/libc/arch/arm/gen/umodsi3.S:1.3	Thu Jun 20 07:16:23 2013
+++ src/common/lib/libc/arch/arm/gen/umodsi3.S	Thu Aug 15 21:40:11 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: umodsi3.S,v 1.3 2013/06/20 07:16:23 matt Exp $	*/
+/*	$NetBSD: umodsi3.S,v 1.4 2013/08/15 21:40:11 matt Exp $	*/
 
 /*
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
@@ -16,6 +16,7 @@
 
 #include machine/asm.h
 
+#ifndef __ARM_EABI__
 /* 
  * stack is aligned as there's a possibility of branching to .L_overflow
  * which makes a C call
@@ -32,3 +33,5 @@ ENTRY(__umodsi3)
 	ldr	lr, [sp], #8	/* pop lr */
 #endif
 	RET
+END(__umodsi3)
+#endif



CVS commit: src/common/lib/libc/arch/arm/gen

2013-06-20 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Thu Jun 20 07:16:23 UTC 2013

Modified Files:
src/common/lib/libc/arch/arm/gen: divide.S divsi3.S modsi3.S udivsi3.S
umodsi3.S

Log Message:
Add support for __ARM_ARCH_EXT_IDIV__ which is set for those cores
with hardware divide instructions.  Note that gcc 4.5.x doesn't support
this so this is just latent.  gcc 4.7.x does.


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/arm/gen/divide.S \
src/common/lib/libc/arch/arm/gen/modsi3.S \
src/common/lib/libc/arch/arm/gen/umodsi3.S
cvs rdiff -u -r1.5 -r1.6 src/common/lib/libc/arch/arm/gen/divsi3.S
cvs rdiff -u -r1.1 -r1.2 src/common/lib/libc/arch/arm/gen/udivsi3.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/divide.S
diff -u src/common/lib/libc/arch/arm/gen/divide.S:1.2 src/common/lib/libc/arch/arm/gen/divide.S:1.3
--- src/common/lib/libc/arch/arm/gen/divide.S:1.2	Wed May  8 05:13:56 2013
+++ src/common/lib/libc/arch/arm/gen/divide.S	Thu Jun 20 07:16:23 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: divide.S,v 1.2 2013/05/08 05:13:56 matt Exp $	*/
+/*	$NetBSD: divide.S,v 1.3 2013/06/20 07:16:23 matt Exp $	*/
 
 /*
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
@@ -14,6 +14,8 @@
  * SUCH DAMAGE.
  */
 
+#ifndef __ARM_ARCH_EXT_IDIV__
+
 #include machine/asm.h
 
 /* 
@@ -374,3 +376,5 @@ __divide:/* r0 = r0 / r1; r1 = r0 % 
 	addhs	r3, r3, r2
 	mov	r0, r3
 	RET
+
+#endif /* __ARM_ARCH_EXT_IDIV__ */
Index: src/common/lib/libc/arch/arm/gen/modsi3.S
diff -u src/common/lib/libc/arch/arm/gen/modsi3.S:1.2 src/common/lib/libc/arch/arm/gen/modsi3.S:1.3
--- src/common/lib/libc/arch/arm/gen/modsi3.S:1.2	Wed Nov 28 01:35:05 2012
+++ src/common/lib/libc/arch/arm/gen/modsi3.S	Thu Jun 20 07:16:23 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: modsi3.S,v 1.2 2012/11/28 01:35:05 matt Exp $	*/
+/*	$NetBSD: modsi3.S,v 1.3 2013/06/20 07:16:23 matt Exp $	*/
 
 /*
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
@@ -22,9 +22,14 @@
  */
 
 ENTRY(__modsi3)
+#ifdef __ARM_ARCH_EXT_IDIV__
+	sdiv	r3, r0, r1
+	mls	r0, r3, r1, r0
+#else
 	str	lr, [sp, #-8]!	/* push lr */
 	bl	PIC_SYM(__divsi3, PLT)
 	mov	r0, r1
 	ldr	lr, [sp], #8	/* pop lr */
+#endif
 	RET
 END(__modsi3)
Index: src/common/lib/libc/arch/arm/gen/umodsi3.S
diff -u src/common/lib/libc/arch/arm/gen/umodsi3.S:1.2 src/common/lib/libc/arch/arm/gen/umodsi3.S:1.3
--- src/common/lib/libc/arch/arm/gen/umodsi3.S:1.2	Wed Nov 28 01:35:05 2012
+++ src/common/lib/libc/arch/arm/gen/umodsi3.S	Thu Jun 20 07:16:23 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: umodsi3.S,v 1.2 2012/11/28 01:35:05 matt Exp $	*/
+/*	$NetBSD: umodsi3.S,v 1.3 2013/06/20 07:16:23 matt Exp $	*/
 
 /*
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
@@ -22,8 +22,13 @@
  */
 
 ENTRY(__umodsi3)
+#ifdef __ARM_ARCH_EXT_IDIV__
+	udiv	r3, r0, r1
+	mls	r0, r3, r1, r0
+#else
 	str	lr, [sp, #-8]!	/* push lr */
 	bl	PIC_SYM(__udivsi3, PLT)
 	mov	r0, r1
 	ldr	lr, [sp], #8	/* pop lr */
+#endif
 	RET

Index: src/common/lib/libc/arch/arm/gen/divsi3.S
diff -u src/common/lib/libc/arch/arm/gen/divsi3.S:1.5 src/common/lib/libc/arch/arm/gen/divsi3.S:1.6
--- src/common/lib/libc/arch/arm/gen/divsi3.S:1.5	Wed May  8 05:13:56 2013
+++ src/common/lib/libc/arch/arm/gen/divsi3.S	Thu Jun 20 07:16:23 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: divsi3.S,v 1.5 2013/05/08 05:13:56 matt Exp $	*/
+/*	$NetBSD: divsi3.S,v 1.6 2013/06/20 07:16:23 matt Exp $	*/
 
 /*
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
@@ -23,4 +23,15 @@ ENTRY_NP(__aeabi_idiv)
 	.symver	__aeabi_idivmod,__aeabi_idivmod@@GCC_3.5
 #endif
 ENTRY(__divsi3)
+#if defined(__ARM_ARCH_EXT_IDIV__)
+# if defined(__ARM_EABI__)
+	mov	r3, r0		@ save for mls
+# endif
+	sdiv	r0, r0, r1
+# if defined(__ARM_EABI__)
+	mls	r1, r0, r1, r3	@ return modulus in r1
+# endif
+	RET
+#else
 	b	__divide
+#endif

Index: src/common/lib/libc/arch/arm/gen/udivsi3.S
diff -u src/common/lib/libc/arch/arm/gen/udivsi3.S:1.1 src/common/lib/libc/arch/arm/gen/udivsi3.S:1.2
--- src/common/lib/libc/arch/arm/gen/udivsi3.S:1.1	Tue Oct 30 12:42:13 2012
+++ src/common/lib/libc/arch/arm/gen/udivsi3.S	Thu Jun 20 07:16:23 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: udivsi3.S,v 1.1 2012/10/30 12:42:13 christos Exp $	*/
+/*	$NetBSD: udivsi3.S,v 1.2 2013/06/20 07:16:23 matt Exp $	*/
 
 /*
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
@@ -20,4 +20,15 @@
 ENTRY_NP(__aeabi_uidivmod)
 ENTRY_NP(__aeabi_uidiv)
 ENTRY(__udivsi3)
+#if defined(__ARM_ARCH_EXT_IDIV__)
+# if defined(__ARM_EABI__)
+	mov	r3, r0		@ save for mls
+# endif
+	udiv	r0, r0, r1
+# if defined(__ARM_EABI__)
+	mls	r1, r0, r1, r3	@ return modulus in r1
+# endif
+	RET
+#else
 	b	__udivide
+#endif



CVS commit: src/common/lib/libc/arch/arm/gen

2013-01-22 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Wed Jan 23 07:38:20 UTC 2013

Added Files:
src/common/lib/libc/arch/arm/gen: __aeabi_idiv0.c __aeabi_ldiv0.c

Log Message:
Add EABI support routines to raise SIGFPE on integer divide by 0.


To generate a diff of this commit:
cvs rdiff -u -r0 -r1.1 src/common/lib/libc/arch/arm/gen/__aeabi_idiv0.c \
src/common/lib/libc/arch/arm/gen/__aeabi_ldiv0.c

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

Added files:

Index: src/common/lib/libc/arch/arm/gen/__aeabi_idiv0.c
diff -u /dev/null src/common/lib/libc/arch/arm/gen/__aeabi_idiv0.c:1.1
--- /dev/null	Wed Jan 23 07:38:20 2013
+++ src/common/lib/libc/arch/arm/gen/__aeabi_idiv0.c	Wed Jan 23 07:38:19 2013
@@ -0,0 +1,59 @@
+/*-
+ * Copyright (c) 2012 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Matt Thomas of 3am Software Foundry.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *notice, this list of conditions and the following disclaimer in the
+ *documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include sys/cdefs.h
+
+__RCSID($NetBSD: __aeabi_idiv0.c,v 1.1 2013/01/23 07:38:19 matt Exp $);
+
+#if !defined(_KERNEL)
+#include string.h
+#include unistd.h
+#include sys/types.h
+#include sys/signal.h
+#include sys/siginfo.h
+#endif
+
+#include arm/aeabi.h
+
+int
+__aeabi_idiv0(int result)
+{
+#ifdef _KERNEL
+#else
+	siginfo_t info;
+	
+	memset(info, 0, sizeof info);
+	info.si_signo = SIGFPE;
+	info.si_pid = getpid();
+	info.si_uid = geteuid();
+	info.si_code = FPE_INTDIV;
+	sigqueueinfo(getpid(), info);
+#endif
+	return result;
+}
Index: src/common/lib/libc/arch/arm/gen/__aeabi_ldiv0.c
diff -u /dev/null src/common/lib/libc/arch/arm/gen/__aeabi_ldiv0.c:1.1
--- /dev/null	Wed Jan 23 07:38:20 2013
+++ src/common/lib/libc/arch/arm/gen/__aeabi_ldiv0.c	Wed Jan 23 07:38:19 2013
@@ -0,0 +1,59 @@
+/*-
+ * Copyright (c) 2012 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Matt Thomas of 3am Software Foundry.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *notice, this list of conditions and the following disclaimer in the
+ *documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include sys/cdefs.h
+
+__RCSID($NetBSD: __aeabi_ldiv0.c,v 1.1 2013/01/23 07:38:19 matt Exp $);
+
+#if !defined(_KERNEL)
+#include string.h
+#include unistd.h
+#include sys/types.h
+#include sys/signal.h
+#include sys/siginfo.h
+#endif
+
+#include arm/aeabi.h
+
+long long
+__aeabi_ldiv0(long long result)

CVS commit: src/common/lib/libc/arch/arm/gen

2013-01-16 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Wed Jan 16 21:48:56 UTC 2013

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

Log Message:
Add some comments to illustrate what is actually happening.


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/common/lib/libc/arch/arm/gen/byte_swap_4.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/byte_swap_4.S
diff -u src/common/lib/libc/arch/arm/gen/byte_swap_4.S:1.5 src/common/lib/libc/arch/arm/gen/byte_swap_4.S:1.6
--- src/common/lib/libc/arch/arm/gen/byte_swap_4.S:1.5	Tue Nov 27 23:57:07 2012
+++ src/common/lib/libc/arch/arm/gen/byte_swap_4.S	Wed Jan 16 21:48:56 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: byte_swap_4.S,v 1.5 2012/11/27 23:57:07 matt Exp $	*/
+/*	$NetBSD: byte_swap_4.S,v 1.6 2013/01/16 21:48:56 matt Exp $	*/
 
 /*-
  * Copyright (c) 1997 The NetBSD Foundation, Inc.
@@ -42,11 +42,11 @@ _ENTRY(_C_LABEL(htonl))
 #endif
 _PROF_PROLOGUE
 #ifdef _ARM_ARCH_6
-	rev		r0, r0
+	rev	r0, r0
 #else
-	eor		r1, r0, r0, ror #16
-	bic		r1, r1, #0x00FF
-	mov		r0, r0, ror #8
-	eor		r0, r0, r1, lsr #8
+	eor	r1, r0, r0, ror #16	/* 4.3.2.1 - 42.31.42.31 */
+	bic	r1, r1, #0x00FF	/* 42.31.42.31 - 42.0.42.31 */
+	mov	r0, r0, ror #8		/* 4.3.2.1 - 1.4.3.2 */
+	eor	r0, r0, r1, lsr #8	/* 1.4.3.2 ^ 0.42.0.42 - 1.2.3.4 */
 #endif
 	RET



CVS commit: src/common/lib/libc/arch/arm/gen

2012-12-17 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Tue Dec 18 06:14:23 UTC 2012

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

Log Message:
Don't need to include assym.h
Add a missing comma.


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/common/lib/libc/arch/arm/gen/neon_mask.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/neon_mask.S
diff -u src/common/lib/libc/arch/arm/gen/neon_mask.S:1.1 src/common/lib/libc/arch/arm/gen/neon_mask.S:1.2
--- src/common/lib/libc/arch/arm/gen/neon_mask.S:1.1	Mon Dec 17 00:46:14 2012
+++ src/common/lib/libc/arch/arm/gen/neon_mask.S	Tue Dec 18 06:14:23 2012
@@ -28,11 +28,10 @@
  */
 
 #include machine/asm.h
-#include assym.h
 
 #ifdef _ARM_ARCH_7
 
-RCSID($NetBSD: neon_mask.S,v 1.1 2012/12/17 00:46:14 matt Exp $)
+RCSID($NetBSD: neon_mask.S,v 1.2 2012/12/18 06:14:23 matt Exp $)
 
 /*
  * __neon_loading_qword_bitmask(size_t len);
@@ -45,7 +44,7 @@ ENTRY(__neon_leading_qword_bitmask)
 	sublt		r0, r0, #64	/* 1st dword needs MSBs cleared */
 	subge		r1, r0, #128	/* 2nd dword needs MSBs cleared */
 #else
-	rsblt		r0, r0 	#64	/* 1st dword needs LSBs cleared */
+	rsblt		r0, r0, #64	/* 1st dword needs LSBs cleared */
 	rsbge		r1, r0, #128	/* 2nd dword needs LSBs cleared */
 #endif
 	movge		r0, #0		/* 1st dword needs to left alone */



CVS commit: src/common/lib/libc/arch/arm/gen

2012-12-16 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Mon Dec 17 00:46:14 UTC 2012

Added Files:
src/common/lib/libc/arch/arm/gen: neon_mask.S

Log Message:
Add a routine to create an up to an 128 bitmask returned
in VFP/NEON q0 starting at the rightmost bit (bit 0).


To generate a diff of this commit:
cvs rdiff -u -r0 -r1.1 src/common/lib/libc/arch/arm/gen/neon_mask.S

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

Added files:

Index: src/common/lib/libc/arch/arm/gen/neon_mask.S
diff -u /dev/null src/common/lib/libc/arch/arm/gen/neon_mask.S:1.1
--- /dev/null	Mon Dec 17 00:46:14 2012
+++ src/common/lib/libc/arch/arm/gen/neon_mask.S	Mon Dec 17 00:46:14 2012
@@ -0,0 +1,60 @@
+/*-
+ * Copyright (c) 2012 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Matt Thomas of 3am Software Foundry.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *notice, this list of conditions and the following disclaimer in the
+ *documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include machine/asm.h
+#include assym.h
+
+#ifdef _ARM_ARCH_7
+
+RCSID($NetBSD: neon_mask.S,v 1.1 2012/12/17 00:46:14 matt Exp $)
+
+/*
+ * __neon_loading_qword_bitmask(size_t len);
+ *  IN	r0 = length of mask in bits
+ * OUT	q0 = mask
+ */
+ENTRY(__neon_leading_qword_bitmask)
+	cmp		r0, #64		/* which dword is partial? */
+#ifdef __ARMEL__
+	sublt		r0, r0, #64	/* 1st dword needs MSBs cleared */
+	subge		r1, r0, #128	/* 2nd dword needs MSBs cleared */
+#else
+	rsblt		r0, r0 	#64	/* 1st dword needs LSBs cleared */
+	rsbge		r1, r0, #128	/* 2nd dword needs LSBs cleared */
+#endif
+	movge		r0, #0		/* 1st dword needs to left alone */
+	movlt		r1, #64		/* 2st dword needs to be cleared */
+	vmov		d2, r0, r1	/* move dword shifts to SIMD */
+	vmovl.u32	q1, d2		/* 2 U32 - 2 U64 */
+	vmvn.u64	q0, #0		/* create a mask */
+	vshl.u64	q0, q0, q1	/* shift out unneeded bytes */
+	RET
+END(__neon_leading_qword_bitmask)
+
+#endif	/* _ARM_ARCH_7 */



CVS commit: src/common/lib/libc/arch/arm/gen

2012-11-27 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Tue Nov 27 23:57:07 UTC 2012

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

Log Message:
Use the armv6 rev/rev16 if armv6 or later


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/common/lib/libc/arch/arm/gen/byte_swap_2.S \
src/common/lib/libc/arch/arm/gen/byte_swap_4.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/byte_swap_2.S
diff -u src/common/lib/libc/arch/arm/gen/byte_swap_2.S:1.4 src/common/lib/libc/arch/arm/gen/byte_swap_2.S:1.5
--- src/common/lib/libc/arch/arm/gen/byte_swap_2.S:1.4	Mon Apr 28 20:22:52 2008
+++ src/common/lib/libc/arch/arm/gen/byte_swap_2.S	Tue Nov 27 23:57:07 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: byte_swap_2.S,v 1.4 2008/04/28 20:22:52 martin Exp $	*/
+/*	$NetBSD: byte_swap_2.S,v 1.5 2012/11/27 23:57:07 matt Exp $	*/
 
 /*-
  * Copyright (c) 1999 The NetBSD Foundation, Inc.
@@ -41,7 +41,11 @@ _ENTRY(_C_LABEL(ntohs))
 _ENTRY(_C_LABEL(htons))
 #endif
 _PROF_PROLOGUE
+#ifdef _ARM_ARCH_6
+	rev16		r0, r0
+#else
 	and		r1, r0, #0xff
 	mov		r0, r0, lsr #8
 	orr		r0, r0, r1, lsl #8
+#endif
 	RET
Index: src/common/lib/libc/arch/arm/gen/byte_swap_4.S
diff -u src/common/lib/libc/arch/arm/gen/byte_swap_4.S:1.4 src/common/lib/libc/arch/arm/gen/byte_swap_4.S:1.5
--- src/common/lib/libc/arch/arm/gen/byte_swap_4.S:1.4	Mon Apr 28 20:22:52 2008
+++ src/common/lib/libc/arch/arm/gen/byte_swap_4.S	Tue Nov 27 23:57:07 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: byte_swap_4.S,v 1.4 2008/04/28 20:22:52 martin Exp $	*/
+/*	$NetBSD: byte_swap_4.S,v 1.5 2012/11/27 23:57:07 matt Exp $	*/
 
 /*-
  * Copyright (c) 1997 The NetBSD Foundation, Inc.
@@ -41,8 +41,12 @@ _ENTRY(_C_LABEL(ntohl))
 _ENTRY(_C_LABEL(htonl))
 #endif
 _PROF_PROLOGUE
+#ifdef _ARM_ARCH_6
+	rev		r0, r0
+#else
 	eor		r1, r0, r0, ror #16
 	bic		r1, r1, #0x00FF
 	mov		r0, r0, ror #8
 	eor		r0, r0, r1, lsr #8
+#endif
 	RET



CVS commit: src/common/lib/libc/arch/arm/gen

2012-11-27 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Wed Nov 28 01:35:06 UTC 2012

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

Log Message:
Optimize.


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/common/lib/libc/arch/arm/gen/modsi3.S \
src/common/lib/libc/arch/arm/gen/umodsi3.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/modsi3.S
diff -u src/common/lib/libc/arch/arm/gen/modsi3.S:1.1 src/common/lib/libc/arch/arm/gen/modsi3.S:1.2
--- src/common/lib/libc/arch/arm/gen/modsi3.S:1.1	Wed Oct 10 02:16:54 2012
+++ src/common/lib/libc/arch/arm/gen/modsi3.S	Wed Nov 28 01:35:05 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: modsi3.S,v 1.1 2012/10/10 02:16:54 christos Exp $	*/
+/*	$NetBSD: modsi3.S,v 1.2 2012/11/28 01:35:05 matt Exp $	*/
 
 /*
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
@@ -22,10 +22,9 @@
  */
 
 ENTRY(__modsi3)
-	stmfd	sp!, {lr}
-	sub	sp, sp, #4	/* align stack */
+	str	lr, [sp, #-8]!	/* push lr */
 	bl	PIC_SYM(__divsi3, PLT)
-	add	sp, sp, #4	/* unalign stack */
 	mov	r0, r1
-	ldmfd	sp!, {pc}
-
+	ldr	lr, [sp], #8	/* pop lr */
+	RET
+END(__modsi3)
Index: src/common/lib/libc/arch/arm/gen/umodsi3.S
diff -u src/common/lib/libc/arch/arm/gen/umodsi3.S:1.1 src/common/lib/libc/arch/arm/gen/umodsi3.S:1.2
--- src/common/lib/libc/arch/arm/gen/umodsi3.S:1.1	Wed Oct 10 02:16:54 2012
+++ src/common/lib/libc/arch/arm/gen/umodsi3.S	Wed Nov 28 01:35:05 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: umodsi3.S,v 1.1 2012/10/10 02:16:54 christos Exp $	*/
+/*	$NetBSD: umodsi3.S,v 1.2 2012/11/28 01:35:05 matt Exp $	*/
 
 /*
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
@@ -22,9 +22,8 @@
  */
 
 ENTRY(__umodsi3)
-	stmfd	sp!, {lr}
-	sub	sp, sp, #4	/* align stack */
+	str	lr, [sp, #-8]!	/* push lr */
 	bl	PIC_SYM(__udivsi3, PLT)
-	add	sp, sp, #4	/* unalign stack */
 	mov	r0, r1
-	ldmfd	sp!, {pc}
+	ldr	lr, [sp], #8	/* pop lr */
+	RET



CVS commit: src/common/lib/libc/arch/arm/gen

2012-10-30 Thread Christos Zoulas
Module Name:src
Committed By:   christos
Date:   Tue Oct 30 12:42:14 UTC 2012

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

Log Message:
split udivsi3 and divsi3 to fix static linking. This could be done better.


To generate a diff of this commit:
cvs rdiff -u -r0 -r1.1 src/common/lib/libc/arch/arm/gen/divide.S \
src/common/lib/libc/arch/arm/gen/udivsi3.S
cvs rdiff -u -r1.3 -r1.4 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.3 src/common/lib/libc/arch/arm/gen/divsi3.S:1.4
--- src/common/lib/libc/arch/arm/gen/divsi3.S:1.3	Tue Oct  9 22:16:54 2012
+++ src/common/lib/libc/arch/arm/gen/divsi3.S	Tue Oct 30 08:42:13 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: divsi3.S,v 1.3 2012/10/10 02:16:54 christos Exp $	*/
+/*	$NetBSD: divsi3.S,v 1.4 2012/10/30 12:42:13 christos Exp $	*/
 
 /*
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
@@ -16,359 +16,7 @@
 
 #include machine/asm.h
 
-/* 
- * stack is aligned as there's a possibility of branching to .L_overflow
- * which makes a C call
- */
-
-.L_overflow:
-#if !defined(_KERNEL)  !defined(_STANDALONE)
-	mov	r0, #8			/* SIGFPE */
-	bl	PIC_SYM(_C_LABEL(raise), PLT)	/* raise it */
-	mov	r0, #0
-#else
-	/* XXX should cause a fatal error */
-	mvn	r0, #0
-#endif
-	RET
-
-ENTRY_NP(__aeabi_uidivmod)
-ENTRY_NP(__aeabi_uidiv)
-ENTRY(__udivsi3)
-.L_udivide:/* r0 = r0 / r1; r1 = r0 % r1 */
-	eor r0, r1, r0 
-	eor r1, r0, r1 
-	eor r0, r1, r0 
-	/* r0 = r1 / r0; r1 = r1 % r0 */
-	cmp	r0, #1
-	bcc	.L_overflow
-	beq	.L_divide_l0
-	mov	ip, #0
-	movs	r1, r1
-	bpl	.L_divide_l1
-	orr	ip, ip, #0x2000	/* ip bit 0x2000 = -ve r1 */
-	movs	r1, r1, lsr #1
-	orrcs	ip, ip, #0x1000	/* ip bit 0x1000 = bit 0 of r1 */
-	b	.L_divide_l1
-
-.L_divide_l0:/* r0 == 1 */
-	mov	r0, r1
-	mov	r1, #0
-	RET
-
 ENTRY_NP(__aeabi_idivmod)
 ENTRY_NP(__aeabi_idiv)
 ENTRY(__divsi3)
-.L_divide:/* r0 = r0 / r1; r1 = r0 % r1 */
-	eor r0, r1, r0 
-	eor r1, r0, r1 
-	eor r0, r1, r0 
-	/* r0 = r1 / r0; r1 = r1 % r0 */
-	cmp	r0, #1
-	bcc	.L_overflow
-	beq	.L_divide_l0
-	ands	ip, r0, #0x8000
-	rsbmi	r0, r0, #0
-	ands	r2, r1, #0x8000
-	eor	ip, ip, r2
-	rsbmi	r1, r1, #0
-	orr	ip, r2, ip, lsr #1	/* ip bit 0x4000 = -ve division */
-	/* ip bit 0x8000 = -ve remainder */
-
-.L_divide_l1:
-	mov	r2, #1
-	mov	r3, #0
-
-	/*
-	 * If the highest bit of the dividend is set, we have to be
-	 * careful when shifting the divisor. Test this. 
-	 */
-	movs	r1,r1
-	bpl	.L_old_code
-
-	/*
-	 * At this point, the highest bit of r1 is known to be set.
-	 * We abuse this below in the tst instructions.
-	 */
-	tst	r1, r0 /*, lsl #0 */
-	bmi	.L_divide_b1
-	tst	r1, r0, lsl #1
-	bmi	.L_divide_b2
-	tst	r1, r0, lsl #2
-	bmi	.L_divide_b3
-	tst	r1, r0, lsl #3
-	bmi	.L_divide_b4
-	tst	r1, r0, lsl #4
-	bmi	.L_divide_b5
-	tst	r1, r0, lsl #5
-	bmi	.L_divide_b6
-	tst	r1, r0, lsl #6
-	bmi	.L_divide_b7
-	tst	r1, r0, lsl #7
-	bmi	.L_divide_b8
-	tst	r1, r0, lsl #8
-	bmi	.L_divide_b9
-	tst	r1, r0, lsl #9
-	bmi	.L_divide_b10
-	tst	r1, r0, lsl #10
-	bmi	.L_divide_b11
-	tst	r1, r0, lsl #11
-	bmi	.L_divide_b12
-	tst	r1, r0, lsl #12
-	bmi	.L_divide_b13
-	tst	r1, r0, lsl #13
-	bmi	.L_divide_b14
-	tst	r1, r0, lsl #14
-	bmi	.L_divide_b15
-	tst	r1, r0, lsl #15
-	bmi	.L_divide_b16
-	tst	r1, r0, lsl #16
-	bmi	.L_divide_b17
-	tst	r1, r0, lsl #17
-	bmi	.L_divide_b18
-	tst	r1, r0, lsl #18
-	bmi	.L_divide_b19
-	tst	r1, r0, lsl #19
-	bmi	.L_divide_b20
-	tst	r1, r0, lsl #20
-	bmi	.L_divide_b21
-	tst	r1, r0, lsl #21
-	bmi	.L_divide_b22
-	tst	r1, r0, lsl #22
-	bmi	.L_divide_b23
-	tst	r1, r0, lsl #23
-	bmi	.L_divide_b24
-	tst	r1, r0, lsl #24
-	bmi	.L_divide_b25
-	tst	r1, r0, lsl #25
-	bmi	.L_divide_b26
-	tst	r1, r0, lsl #26
-	bmi	.L_divide_b27
-	tst	r1, r0, lsl #27
-	bmi	.L_divide_b28
-	tst	r1, r0, lsl #28
-	bmi	.L_divide_b29
-	tst	r1, r0, lsl #29
-	bmi	.L_divide_b30
-	tst	r1, r0, lsl #30
-	bmi	.L_divide_b31
-/*
- * instead of:
- *	tst	r1, r0, lsl #31
- *	bmi	.L_divide_b32
- */
-	b	.L_divide_b32
-
-.L_old_code:
-	cmp	r1, r0
-	bcc	.L_divide_b0
-	cmp	r1, r0, lsl #1
-	bcc	.L_divide_b1
-	cmp	r1, r0, lsl #2
-	bcc	.L_divide_b2
-	cmp	r1, r0, lsl #3
-	bcc	.L_divide_b3
-	cmp	r1, r0, lsl #4
-	bcc	.L_divide_b4
-	cmp	r1, r0, lsl #5
-	bcc	.L_divide_b5
-	cmp	r1, r0, lsl #6
-	bcc	.L_divide_b6
-	cmp	r1, r0, lsl #7
-	bcc	.L_divide_b7
-	cmp	r1, r0, lsl #8
-	bcc	.L_divide_b8
-	cmp	r1, r0, lsl #9
-	bcc	.L_divide_b9
-	cmp	r1, r0, lsl #10
-	bcc	.L_divide_b10
-	cmp	r1, r0, lsl #11
-	bcc	.L_divide_b11
-	cmp	r1, r0, lsl #12
-	bcc	.L_divide_b12
-	cmp	r1, r0, lsl #13
-	bcc	.L_divide_b13
-	cmp	r1, r0, lsl #14
-	bcc	.L_divide_b14
-	cmp	r1, r0, lsl #15
-	bcc	.L_divide_b15
-	cmp	r1, r0, 

CVS commit: src/common/lib/libc/arch/arm/gen

2012-10-09 Thread Christos Zoulas
Module Name:src
Committed By:   christos
Date:   Wed Oct 10 02:16:54 UTC 2012

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

Log Message:
Split out modsi3 and umodsi3 from the divsi3 file. This is so that
we don't get re-defined symbols in libc from libgcc in static linking.
Example: cc -pthread -static main-calls-pthread-create.c


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/arm/gen/divsi3.S
cvs rdiff -u -r0 -r1.1 src/common/lib/libc/arch/arm/gen/modsi3.S \
src/common/lib/libc/arch/arm/gen/umodsi3.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.2 src/common/lib/libc/arch/arm/gen/divsi3.S:1.3
--- src/common/lib/libc/arch/arm/gen/divsi3.S:1.2	Sun Aug  5 00:22:01 2012
+++ src/common/lib/libc/arch/arm/gen/divsi3.S	Tue Oct  9 22:16:54 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: divsi3.S,v 1.2 2012/08/05 04:22:01 matt Exp $	*/
+/*	$NetBSD: divsi3.S,v 1.3 2012/10/10 02:16:54 christos Exp $	*/
 
 /*
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
@@ -21,22 +21,6 @@
  * which makes a C call
  */
 
-ENTRY(__umodsi3)
-	stmfd	sp!, {lr}
-	sub	sp, sp, #4	/* align stack */
-	bl	.L_udivide
-	add	sp, sp, #4	/* unalign stack */
-	mov	r0, r1
-	ldmfd	sp!, {pc}
-
-ENTRY(__modsi3)
-	stmfd	sp!, {lr}
-	sub	sp, sp, #4	/* align stack */
-	bl	.L_divide
-	add	sp, sp, #4	/* unalign stack */
-	mov	r0, r1
-	ldmfd	sp!, {pc}
-
 .L_overflow:
 #if !defined(_KERNEL)  !defined(_STANDALONE)
 	mov	r0, #8			/* SIGFPE */

Added files:

Index: src/common/lib/libc/arch/arm/gen/modsi3.S
diff -u /dev/null src/common/lib/libc/arch/arm/gen/modsi3.S:1.1
--- /dev/null	Tue Oct  9 22:16:54 2012
+++ src/common/lib/libc/arch/arm/gen/modsi3.S	Tue Oct  9 22:16:54 2012
@@ -0,0 +1,31 @@
+/*	$NetBSD: modsi3.S,v 1.1 2012/10/10 02:16:54 christos Exp $	*/
+
+/*
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include machine/asm.h
+
+/* 
+ * stack is aligned as there's a possibility of branching to .L_overflow
+ * which makes a C call
+ */
+
+ENTRY(__modsi3)
+	stmfd	sp!, {lr}
+	sub	sp, sp, #4	/* align stack */
+	bl	PIC_SYM(__divsi3, PLT)
+	add	sp, sp, #4	/* unalign stack */
+	mov	r0, r1
+	ldmfd	sp!, {pc}
+
Index: src/common/lib/libc/arch/arm/gen/umodsi3.S
diff -u /dev/null src/common/lib/libc/arch/arm/gen/umodsi3.S:1.1
--- /dev/null	Tue Oct  9 22:16:54 2012
+++ src/common/lib/libc/arch/arm/gen/umodsi3.S	Tue Oct  9 22:16:54 2012
@@ -0,0 +1,30 @@
+/*	$NetBSD: umodsi3.S,v 1.1 2012/10/10 02:16:54 christos Exp $	*/
+
+/*
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include machine/asm.h
+
+/* 
+ * stack is aligned as there's a possibility of branching to .L_overflow
+ * which makes a C call
+ */
+
+ENTRY(__umodsi3)
+	stmfd	sp!, {lr}
+	sub	sp, sp, #4	/* align stack */
+	bl	PIC_SYM(__udivsi3, PLT)
+	add	sp, sp, #4	/* unalign stack */
+	mov	r0, r1
+	ldmfd	sp!, {pc}



CVS commit: src/common/lib/libc/arch/arm/gen

2012-08-04 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Sun Aug  5 04:22:01 UTC 2012

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

Log Message:
For __udivsi3 and __divsi3, add their EABI aliases as alternate entry
points.


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 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.1 src/common/lib/libc/arch/arm/gen/divsi3.S:1.2
--- src/common/lib/libc/arch/arm/gen/divsi3.S:1.1	Tue Dec 20 19:28:49 2005
+++ src/common/lib/libc/arch/arm/gen/divsi3.S	Sun Aug  5 04:22:01 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: divsi3.S,v 1.1 2005/12/20 19:28:49 christos Exp $	*/
+/*	$NetBSD: divsi3.S,v 1.2 2012/08/05 04:22:01 matt Exp $	*/
 
 /*
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
@@ -48,6 +48,8 @@ ENTRY(__modsi3)
 #endif
 	RET
 
+ENTRY_NP(__aeabi_uidivmod)
+ENTRY_NP(__aeabi_uidiv)
 ENTRY(__udivsi3)
 .L_udivide:/* r0 = r0 / r1; r1 = r0 % r1 */
 	eor r0, r1, r0 
@@ -70,6 +72,8 @@ ENTRY(__udivsi3)
 	mov	r1, #0
 	RET
 
+ENTRY_NP(__aeabi_idivmod)
+ENTRY_NP(__aeabi_idiv)
 ENTRY(__divsi3)
 .L_divide:/* r0 = r0 / r1; r1 = r0 % r1 */
 	eor r0, r1, r0