[PATCH] Improve and consolidate sparc PIC assembler.

David Miller davem at davemloft.net
Sun Apr 14 07:50:03 CEST 2013


So here is what I have right now.

I guessed on the sqr_diagonal.asm failures on 32-bit
Solaris/Sparc that something is wrong with INT32
or W32 (which INT32 uses) on Solaris.

Please give it a go.

2013-04-13  David S. Miller  <davem at davemloft.net>

	* mpn/sparc32/v9/sqr_diagonal.asm: Don't use INT32.
	* mpn/sparc64/gcd_1.asm: Use RODATA, TYPE, and SIZE.

diff -r 37082d27ed59 mpn/sparc32/v9/sqr_diagonal.asm
--- a/mpn/sparc32/v9/sqr_diagonal.asm	Sat Apr 13 23:40:21 2013 +0200
+++ b/mpn/sparc32/v9/sqr_diagonal.asm	Sat Apr 13 22:32:31 2013 -0700
@@ -75,7 +75,9 @@
 ASM_START()
 	LEA_THUNK(l7)
 	TEXT
-	INT32(noll, 0)
+	ALIGN(4)
+L(noll):
+	.word	0
 PROLOGUE(mpn_sqr_diagonal)
 	save	%sp,-256,%sp
 
diff -r 37082d27ed59 mpn/sparc64/gcd_1.asm
--- a/mpn/sparc64/gcd_1.asm	Sat Apr 13 23:40:21 2013 +0200
+++ b/mpn/sparc64/gcd_1.asm	Sat Apr 13 22:32:31 2013 -0700
@@ -37,13 +37,14 @@
 deflit(MAXSHIFT, 7)
 deflit(MASK, eval((m4_lshift(1,MAXSHIFT))-1))
 
-	.section	".rodata"
+	RODATA
+	TYPE(ctz_table,object)
 ctz_table:
 	.byte	MAXSHIFT
 forloop(i,1,MASK,
 `	.byte	m4_count_trailing_zeros(i)
 ')
-
+	SIZE(ctz_table,.-ctz_table)
 
 C Threshold of when to call bmod when U is one limb.  Should be about
 C (time_in_cycles(bmod_1,1) + call_overhead) / (cycles/bit).


More information about the gmp-devel mailing list