[PATCH 3/3] MIPS: csum_partial.S CPU_DADDI_WORKAROUNDS bug fix

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This change reverts most of commit 
60724ca59eda766a30be57aec6b49bc3e2bead91 [MIPS: IP checksums: Remove 
unncessary .set pseudos] that introduced warnings with the 
CPU_DADDI_WORKAROUNDS option set:

arch/mips/lib/csum_partial.S: Assembler messages:
arch/mips/lib/csum_partial.S:450: Warning: used $3 with ".set at=$3"
arch/mips/lib/csum_partial.S:450: Warning: used $3 with ".set at=$3"
arch/mips/lib/csum_partial.S:450: Warning: used $3 with ".set at=$3"
arch/mips/lib/csum_partial.S:452: Warning: used $3 with ".set at=$3"
arch/mips/lib/csum_partial.S:452: Warning: used $3 with ".set at=$3"
arch/mips/lib/csum_partial.S:452: Warning: used $3 with ".set at=$3"
arch/mips/lib/csum_partial.S:454: Warning: used $3 with ".set at=$3"
arch/mips/lib/csum_partial.S:454: Warning: used $3 with ".set at=$3"
arch/mips/lib/csum_partial.S:454: Warning: used $3 with ".set at=$3"
arch/mips/lib/csum_partial.S:456: Warning: used $3 with ".set at=$3"
arch/mips/lib/csum_partial.S:456: Warning: used $3 with ".set at=$3"
arch/mips/lib/csum_partial.S:456: Warning: used $3 with ".set at=$3"
[and so on, and so on...]

The warnings are benign and good code is produced regardless because no 
macros that'd use the assembler's temporary register are involved, however 
the `.set noat' directives removed by the commit referred are crucial to 
guarantee this is still going to be the case after any changes in the 
future.  Therefore they need to be brought back to place which this 
change does.

Signed-off-by: Maciej W. Rozycki <macro@xxxxxxxxxxxxxx>
---
Ralf,

 It take it is because of the lack of -Werror enabled for this file it 
took so long to discover the problem.  What would those "meaningful 
warnings" you referred to in 60724ca59eda766a30be57aec6b49bc3e2bead91 be 
anyway?

  Maciej

linux-mips-csum-partial-nodaddi-fix.patch
Index: linux-20140329-4maxp64/arch/mips/lib/csum_partial.S
===================================================================
--- linux-20140329-4maxp64.orig/arch/mips/lib/csum_partial.S
+++ linux-20140329-4maxp64/arch/mips/lib/csum_partial.S
@@ -55,14 +55,20 @@
 #define UNIT(unit)  ((unit)*NBYTES)
 
 #define ADDC(sum,reg)						\
+	.set	push;						\
+	.set	noat;						\
 	ADD	sum, reg;					\
 	sltu	v1, sum, reg;					\
 	ADD	sum, v1;					\
+	.set	pop
 
 #define ADDC32(sum,reg)						\
+	.set	push;						\
+	.set	noat;						\
 	addu	sum, reg;					\
 	sltu	v1, sum, reg;					\
 	addu	sum, v1;					\
+	.set	pop
 
 #define CSUM_BIGCHUNK1(src, offset, sum, _t0, _t1, _t2, _t3)	\
 	LOAD	_t0, (offset + UNIT(0))(src);			\
@@ -662,6 +668,8 @@ EXC(	sb	t0, NBYTES-2(dst), .Ls_exc)
 	ADDC(sum, t2)
 .Ldone:
 	/* fold checksum */
+	.set	push
+	.set	noat
 #ifdef USE_DOUBLE
 	dsll32	v1, sum, 0
 	daddu	sum, v1
@@ -684,6 +692,7 @@ EXC(	sb	t0, NBYTES-2(dst), .Ls_exc)
 	or	sum, sum, t0
 1:
 #endif
+	.set	pop
 	.set reorder
 	ADDC32(sum, psum)
 	jr	ra


[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux