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 Split out modsi3 and umodsi3 fr...



details:   https://anonhg.NetBSD.org/src/rev/7096d036199c
branches:  trunk
changeset: 781958:7096d036199c
user:      christos <christos%NetBSD.org@localhost>
date:      Wed Oct 10 02:16:54 2012 +0000

description:
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

diffstat:

 common/lib/libc/arch/arm/gen/divsi3.S  |  18 +-----------------
 common/lib/libc/arch/arm/gen/modsi3.S  |  31 +++++++++++++++++++++++++++++++
 common/lib/libc/arch/arm/gen/umodsi3.S |  30 ++++++++++++++++++++++++++++++
 3 files changed, 62 insertions(+), 17 deletions(-)

diffs (101 lines):

diff -r 0f2e0219ec9d -r 7096d036199c common/lib/libc/arch/arm/gen/divsi3.S
--- a/common/lib/libc/arch/arm/gen/divsi3.S     Wed Oct 10 02:15:31 2012 +0000
+++ b/common/lib/libc/arch/arm/gen/divsi3.S     Wed Oct 10 02:16:54 2012 +0000
@@ -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 */
diff -r 0f2e0219ec9d -r 7096d036199c common/lib/libc/arch/arm/gen/modsi3.S
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/common/lib/libc/arch/arm/gen/modsi3.S     Wed Oct 10 02:16:54 2012 +0000
@@ -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}
+
diff -r 0f2e0219ec9d -r 7096d036199c common/lib/libc/arch/arm/gen/umodsi3.S
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/common/lib/libc/arch/arm/gen/umodsi3.S    Wed Oct 10 02:16:54 2012 +0000
@@ -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}



Home | Main Index | Thread Index | Old Index