port some changes from netbsd gmp and adapt them to the gmp 6.x.

this allows devel/gmp to build on armv4.
This commit is contained in:
mrg 2015-04-03 07:41:26 +00:00
parent f61838cd80
commit 03de68df2c
3 changed files with 341 additions and 15 deletions

View file

@ -1,4 +1,4 @@
$NetBSD: distinfo,v 1.46 2014/04/18 10:49:01 adam Exp $
$NetBSD: distinfo,v 1.47 2015/04/03 07:41:26 mrg Exp $
SHA1 (gmp-6.0.0a.tar.bz2) = 360802e3541a3da08ab4b55268c80f799939fddc
RMD160 (gmp-6.0.0a.tar.bz2) = 2322e21e2042c974dcfaca2da18ae22d43a23ec4
@ -6,5 +6,5 @@ Size (gmp-6.0.0a.tar.bz2) = 2319400 bytes
SHA1 (patch-aa) = dec275cbd5886a70f7cf0def1dedf01e7e4a49e9
SHA1 (patch-ab) = 829812822a72a4926ea4cf6e8ffafdcd13a0f76c
SHA1 (patch-ac) = 6f7de0a285bec2c2645479d3090dc0276580f3d8
SHA1 (patch-mpn_arm_invert__limb.asm) = 0d4c4af299b846834bb13277844df364824d3a09
SHA1 (patch-mpn-arm-netbsd.diff) = 00ead78b6966e9863b4acacbaeced9a67815f90b
SHA1 (patch-mpn_x86__64_k8_redc_1.asm) = 896a8fcfe9f7370f5628403b93e10a5f52e38944

View file

@ -0,0 +1,339 @@
Index: mpn/arm/aorslsh1_n.asm
===================================================================
RCS file: /cvsroot/src/external/lgpl3/gmp/dist/mpn/arm/aorslsh1_n.asm,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -p -u -r1.1.1.1 -r1.2
--- mpn/arm/aorslsh1_n.asm 29 Nov 2013 07:49:48 -0000 1.1.1.1
+++ mpn/arm/aorslsh1_n.asm 29 Nov 2013 08:02:28 -0000 1.2
@@ -151,5 +151,8 @@ L(rt1): mov r14, r12
REVCY(r12)
L(rt0): RETVAL( r14)
pop {r4-r10r11, r14}
- bx r14
+ifdef(`ARM_THUMB_MODE',
+` bx r14
+',` mov pc, r14
+')
EPILOGUE()
Index: mpn/arm/bdiv_dbm1c.asm
===================================================================
RCS file: /cvsroot/src/external/lgpl3/gmp/dist/mpn/arm/bdiv_dbm1c.asm,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -p -u -r1.1.1.1 -r1.2
--- mpn/arm/bdiv_dbm1c.asm 29 Nov 2013 07:49:48 -0000 1.1.1.1
+++ mpn/arm/bdiv_dbm1c.asm 29 Nov 2013 08:02:28 -0000 1.2
@@ -97,5 +97,8 @@ L(wd1): subs r5, r5, r8
str r5, [qp]
sbc r0, r5, r12
pop {r4, r5, r6, r7, r8}
- bx lr
+ifdef(`ARM_THUMB_MODE',
+` bx lr
+',` mov pc, lr
+')
EPILOGUE()
Index: mpn/arm/com.asm
===================================================================
RCS file: /cvsroot/src/external/lgpl3/gmp/dist/mpn/arm/com.asm,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -p -u -r1.1.1.1 -r1.2
--- mpn/arm/com.asm 29 Nov 2013 07:49:48 -0000 1.1.1.1
+++ mpn/arm/com.asm 29 Nov 2013 08:02:28 -0000 1.2
@@ -59,5 +59,9 @@ L(top): ldmia up!, { r3, r8, r9, r12 } C
bne L(top)
ldmfd sp!, { r7, r8, r9 } C restore regs from stack
-L(rtn): bx lr
+L(rtn):
+ifdef(`ARM_THUMB_MODE',
+` bx lr
+',` mov pc, lr
+')
EPILOGUE()
Index: mpn/arm/copyd.asm
===================================================================
RCS file: /cvsroot/src/external/lgpl3/gmp/dist/mpn/arm/copyd.asm,v
retrieving revision 1.1.1.2
retrieving revision 1.2
diff -p -u -r1.1.1.2 -r1.2
--- mpn/arm/copyd.asm 29 Nov 2013 07:49:48 -0000 1.1.1.2
+++ mpn/arm/copyd.asm 29 Nov 2013 08:02:28 -0000 1.2
@@ -80,5 +80,9 @@
L(end): stmda rp, { r3,r4,r5,r12 }
pop { r4-r5 }
-L(rtn): bx lr
+L(rtn):
+ifdef(`ARM_THUMB_MODE',
+` bx lr
+',` mov pc, lr
+')
EPILOGUE()
Index: mpn/arm/copyi.asm
===================================================================
RCS file: /cvsroot/src/external/lgpl3/gmp/dist/mpn/arm/copyi.asm,v
retrieving revision 1.1.1.2
retrieving revision 1.2
diff -p -u -r1.1.1.2 -r1.2
--- mpn/arm/copyi.asm 29 Nov 2013 07:49:48 -0000 1.1.1.2
+++ mpn/arm/copyi.asm 29 Nov 2013 08:02:28 -0000 1.2
@@ -75,5 +75,9 @@
L(end): stm rp, { r3,r4,r5,r12 }
pop { r4-r5 }
-L(rtn): bx lr
+L(rtn):
+ifdef(`ARM_THUMB_MODE',
+` bx lr
+',` mov pc, lr
+')
EPILOGUE()
Index: mpn/arm/invert_limb.asm
===================================================================
RCS file: /cvsroot/src/external/lgpl3/gmp/dist/mpn/arm/invert_limb.asm,v
retrieving revision 1.1.1.2
retrieving revision 1.3
diff -p -u -r1.1.1.2 -r1.3
--- mpn/arm/invert_limb.asm 29 Nov 2013 07:49:48 -0000 1.1.1.2
+++ mpn/arm/invert_limb.asm 29 Nov 2013 07:57:11 -0000 1.3
@@ -41,7 +41,10 @@ PROLOGUE(mpn_invert_limb)
adds r1, r12, r0
adc r3, r3, r0
rsb r0, r3, r2
- bx lr
+ifdef(`ARM_THUMB_MODE',
+` bx lr
+',` mov pc, lr
+')
EPILOGUE()
.section .rodata
Index: mpn/arm/logops_n.asm
===================================================================
RCS file: /cvsroot/src/external/lgpl3/gmp/dist/mpn/arm/logops_n.asm,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -p -u -r1.1.1.1 -r1.2
--- mpn/arm/logops_n.asm 29 Nov 2013 07:49:48 -0000 1.1.1.1
+++ mpn/arm/logops_n.asm 29 Nov 2013 08:02:28 -0000 1.2
@@ -123,5 +123,8 @@ L(mid): sub n, n, #4
pop { r4, r5, r6, r7 } C popping r8-r10 here strangely fails
L(rtn): pop { r8, r9, r10 }
- bx r14
+ifdef(`ARM_THUMB_MODE',
+` bx r14
+',` mov pc, r14
+')
EPILOGUE()
Index: mpn/arm/lshift.asm
===================================================================
RCS file: /cvsroot/src/external/lgpl3/gmp/dist/mpn/arm/lshift.asm,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -p -u -r1.1.1.1 -r1.2
--- mpn/arm/lshift.asm 29 Nov 2013 07:49:48 -0000 1.1.1.1
+++ mpn/arm/lshift.asm 29 Nov 2013 08:02:28 -0000 1.2
@@ -84,5 +84,8 @@
L(1): str r7, [rp, #-4]
mov r0, r4, lsr tnc
pop {r4, r6, r7, r8}
- bx r14
+ifdef(`ARM_THUMB_MODE',
+` bx r14
+',` mov pc, r14
+')
EPILOGUE()
Index: mpn/arm/lshiftc.asm
===================================================================
RCS file: /cvsroot/src/external/lgpl3/gmp/dist/mpn/arm/lshiftc.asm,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -p -u -r1.1.1.1 -r1.2
--- mpn/arm/lshiftc.asm 29 Nov 2013 07:49:48 -0000 1.1.1.1
+++ mpn/arm/lshiftc.asm 29 Nov 2013 08:02:28 -0000 1.2
@@ -91,5 +91,8 @@
str r7, [rp, #-4]
mov r0, r4, lsr tnc
pop {r4, r6, r7, r8}
- bx r14
+ifdef(`ARM_THUMB_MODE',
+` bx r14
+',` mov pc, r14
+')
EPILOGUE()
Index: mpn/arm/mod_34lsub1.asm
===================================================================
RCS file: /cvsroot/src/external/lgpl3/gmp/dist/mpn/arm/mod_34lsub1.asm,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -p -u -r1.1.1.1 -r1.2
--- mpn/arm/mod_34lsub1.asm 29 Nov 2013 07:49:48 -0000 1.1.1.1
+++ mpn/arm/mod_34lsub1.asm 29 Nov 2013 08:02:28 -0000 1.2
@@ -94,7 +94,10 @@ L(sum2):
add r0, r0, r12, lsr #8
pop { r4, r5, r6, r7 }
- bx lr
+ifdef(`ARM_THUMB_MODE',
+` bx lr
+',` mov pc, lr
+')
L(le2): cmn n, #1
bne L(1)
@@ -105,5 +108,8 @@ L(1): ldr r2, [ap]
bic r0, r2, #0xff000000
add r0, r0, r2, lsr #24
pop { r4, r5, r6, r7 }
- bx lr
+ifdef(`ARM_THUMB_MODE',
+` bx lr
+',` mov pc, lr
+')
EPILOGUE()
Index: mpn/arm/mode1o.asm
===================================================================
RCS file: /cvsroot/src/external/lgpl3/gmp/dist/mpn/arm/mode1o.asm,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -p -u -r1.1.1.1 -r1.2
--- mpn/arm/mode1o.asm 29 Nov 2013 07:49:48 -0000 1.1.1.1
+++ mpn/arm/mode1o.asm 29 Nov 2013 08:02:28 -0000 1.2
@@ -68,5 +68,8 @@ L(end): sbcs cy, r5, cy
addcc r0, r0, #1
ldmfd sp!, {r4, r5}
- bx r14
+ifdef(`ARM_THUMB_MODE',
+` bx r14
+',` mov pc, r14
+')
EPILOGUE()
Index: mpn/arm/rsh1aors_n.asm
===================================================================
RCS file: /cvsroot/src/external/lgpl3/gmp/dist/mpn/arm/rsh1aors_n.asm,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -p -u -r1.1.1.1 -r1.2
--- mpn/arm/rsh1aors_n.asm 29 Nov 2013 07:49:48 -0000 1.1.1.1
+++ mpn/arm/rsh1aors_n.asm 29 Nov 2013 08:02:28 -0000 1.2
@@ -108,5 +108,8 @@ L(e1): RSTCY( r12, r1)
str r4, [rp, #0]
mov r0, r11
pop {r4-r11}
- bx r14
+ifdef(`ARM_THUMB_MODE',
+` bx r14
+',` mov pc, r14
+')
EPILOGUE()
Index: mpn/arm/rshift.asm
===================================================================
RCS file: /cvsroot/src/external/lgpl3/gmp/dist/mpn/arm/rshift.asm,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -p -u -r1.1.1.1 -r1.2
--- mpn/arm/rshift.asm 29 Nov 2013 07:49:48 -0000 1.1.1.1
+++ mpn/arm/rshift.asm 29 Nov 2013 08:02:28 -0000 1.2
@@ -82,5 +82,8 @@
L(1): str r7, [rp]
mov r0, r4, lsl tnc
pop {r4, r6, r7, r8}
- bx r14
+ifdef(`ARM_THUMB_MODE',
+` bx r14
+',` mov pc, r14
+')
EPILOGUE()
Index: mpn/arm/udiv.asm
===================================================================
RCS file: /cvsroot/src/external/lgpl3/gmp/dist/mpn/arm/udiv.asm,v
retrieving revision 1.1.1.2
retrieving revision 1.4
diff -p -u -r1.1.1.2 -r1.4
--- mpn/arm/udiv.asm 29 Nov 2013 07:49:48 -0000 1.1.1.2
+++ mpn/arm/udiv.asm 29 Nov 2013 08:02:28 -0000 1.4
@@ -50,7 +50,10 @@ L(oop): divstep(n1,n0,d)
str n1, [rem_ptr] C store remainder
adc r0, n0, n0 C quotient: add last carry from divstep
- bx lr
+ifdef(`ARM_THUMB_MODE',
+` bx lr
+',` mov pc, lr
+')
L(_large_divisor):
stmfd sp!, { r8, lr }
Index: mpn/arm/cnd_aors_n.asm
===================================================================
--- mpn/arm/cnd_aors_n.asm.orig 2014-03-25 07:37:55.000000000 -0700
+++ mpn/arm/cnd_aors_n.asm 2015-04-01 23:38:37.000000000 -0700
@@ -130,5 +130,8 @@
L(end): RETVAL
pop {r4-r11}
- bx r14
+ifdef(`ARM_THUMB_MODE',
+` bx r14
+',` mov pc, r14
+')
EPILOGUE()
Index: mpn/arm/dive_1.asm
===================================================================
--- mpn/arm/dive_1.asm.orig 2014-03-25 07:37:55.000000000 -0700
+++ mpn/arm/dive_1.asm 2015-04-02 00:00:58.000000000 -0700
@@ -112,7 +112,10 @@
mul r9, r4, cy
str r9, [rp]
pop {r4-r9}
- bx r14
+ifdef(`ARM_THUMB_MODE',
+` bx r14
+',` mov pc, r14
+')
L(unnorm):
rsb tnc, cnt, #32
@@ -136,7 +139,10 @@
mul r9, r4, cy
str r9, [rp]
pop {r4-r9}
- bx r14
+ifdef(`ARM_THUMB_MODE',
+` bx r14
+',` mov pc, r14
+')
EPILOGUE()
.section .rodata
Index: mpn/arm/sec_tabselect.asm
===================================================================
--- mpn/arm/sec_tabselect.asm.orig 2014-03-25 07:37:55.000000000 -0700
+++ mpn/arm/sec_tabselect.asm 2015-04-02 00:51:31.000000000 -0700
@@ -109,7 +109,10 @@
bge L(tp2)
stmia rp, {r8,r9}
pop {r4-r11, r14}
- bx lr
+ifdef(`ARM_THUMB_MODE',
+` bx lr
+',` mov pc, lr
+')
L(n2): cmp j, #-2
bne L(n1)
@@ -127,5 +130,8 @@
bge L(tp1)
str r8, [rp]
L(n1): pop {r4-r11, r14}
- bx lr
+ifdef(`ARM_THUMB_MODE',
+` bx lr
+',` mov pc, lr
+')
EPILOGUE()

View file

@ -1,13 +0,0 @@
$NetBSD: patch-mpn_arm_invert__limb.asm,v 1.3 2013/01/31 20:30:26 adam Exp $
--- mpn/arm/invert_limb.asm.orig 2012-12-18 19:05:09.000000000 +0000
+++ mpn/arm/invert_limb.asm
@@ -41,7 +41,7 @@ PROLOGUE(mpn_invert_limb)
adds r1, r12, r0
adc r3, r3, r0
rsb r0, r3, r2
- bx lr
+ mov pc,lr
EPILOGUE()
.section .rodata