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