[Gmp-commit] /var/hg/gmp: Work around register clobbering issue.

mercurial at gmplib.org mercurial at gmplib.org
Wed May 2 12:37:01 CEST 2012


details:   /var/hg/gmp/rev/6daa4e5ce87e
changeset: 14932:6daa4e5ce87e
user:      Torbjorn Granlund <tege at gmplib.org>
date:      Wed May 02 12:36:58 2012 +0200
description:
Work around register clobbering issue.

diffstat:

 ChangeLog            |  2 ++
 mpn/arm/logops_n.asm |  9 +++++----
 2 files changed, 7 insertions(+), 4 deletions(-)

diffs (44 lines):

diff -r 4dd0af1aafa1 -r 6daa4e5ce87e ChangeLog
--- a/ChangeLog	Wed May 02 01:40:19 2012 +0200
+++ b/ChangeLog	Wed May 02 12:36:58 2012 +0200
@@ -1,5 +1,7 @@
 2012-05-02  Torbjorn Granlund  <tege at gmplib.org>
 
+	* mpn/arm/logops_n.asm: Work around register clobbering issue.
+
 	* mpn/arm/aorscnd_n.asm: New file.
 
 2012-05-01  Torbjorn Granlund  <tege at gmplib.org>
diff -r 4dd0af1aafa1 -r 6daa4e5ce87e mpn/arm/logops_n.asm
--- a/mpn/arm/logops_n.asm	Wed May 02 01:40:19 2012 +0200
+++ b/mpn/arm/logops_n.asm	Wed May 02 12:36:58 2012 +0200
@@ -29,7 +29,9 @@
 C Cortex-A9	2.5-2.72		2.75-3
 C Cortex-A15	 ?			 ?
 
-C TODO: It seems that 2.25 c/l and 2.75 c/l is possible for A9.
+C TODO
+C  * It seems that 2.25 c/l and 2.75 c/l is possible for A9.
+C  * Debug popping issue, see comment below.
 
 define(`rp', `r0')
 define(`up', `r1')
@@ -92,7 +94,7 @@
 L(skip2):
 	bics	n, n, #3
 	beq	L(rtn)
-	push	{ r5, r6, r7 }
+	push	{ r4, r5, r6, r7 }
 
 	ldmia	vp!, { r8, r9, r10, r12 }
 	b	L(mid)
@@ -118,8 +120,7 @@
 	POSTOP(	r7)
 	stmia	rp!, { r4, r5, r6, r7 }
 
-	pop	{ r4, r5, r6, r7, r8, r9, r10 }
-	bx	lr
+	pop	{ r4, r5, r6, r7 }	C popping r8-r10 here strangely fails
 
 L(rtn):	pop	{ r8, r9, r10 }
 	bx	r14


More information about the gmp-commit mailing list