Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Protect noat assembly with .set push/pop and make it somewhat readable.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Signed-off-by: Thiemo Seufer <ths@networkno.de>

authored by

Thiemo Seufer and committed by
Ralf Baechle
04988d6f 9556ac2f

+69 -67
+69 -67
include/asm-mips/checksum.h
··· 71 71 static inline unsigned short int csum_fold(unsigned int sum) 72 72 { 73 73 __asm__( 74 - ".set\tnoat\t\t\t# csum_fold\n\t" 75 - "sll\t$1,%0,16\n\t" 76 - "addu\t%0,$1\n\t" 77 - "sltu\t$1,%0,$1\n\t" 78 - "srl\t%0,%0,16\n\t" 79 - "addu\t%0,$1\n\t" 80 - "xori\t%0,0xffff\n\t" 81 - ".set\tat" 74 + " .set push # csum_fold\n" 75 + " .set noat \n" 76 + " sll $1, %0, 16 \n" 77 + " addu %0, $1 \n" 78 + " sltu $1, %0, $1 \n" 79 + " srl %0, %0, 16 \n" 80 + " addu %0, $1 \n" 81 + " xori %0, 0xffff \n" 82 + " .set pop" 82 83 : "=r" (sum) 83 84 : "0" (sum)); 84 85 ··· 129 128 unsigned int sum) 130 129 { 131 130 __asm__( 132 - ".set\tnoat\t\t\t# csum_tcpudp_nofold\n\t" 131 + " .set push # csum_tcpudp_nofold\n" 132 + " .set noat \n" 133 133 #ifdef CONFIG_32BIT 134 - "addu\t%0, %2\n\t" 135 - "sltu\t$1, %0, %2\n\t" 136 - "addu\t%0, $1\n\t" 134 + " addu %0, %2 \n" 135 + " sltu $1, %0, %2 \n" 136 + " addu %0, $1 \n" 137 137 138 - "addu\t%0, %3\n\t" 139 - "sltu\t$1, %0, %3\n\t" 140 - "addu\t%0, $1\n\t" 138 + " addu %0, %3 \n" 139 + " sltu $1, %0, %3 \n" 140 + " addu %0, $1 \n" 141 141 142 - "addu\t%0, %4\n\t" 143 - "sltu\t$1, %0, %4\n\t" 144 - "addu\t%0, $1\n\t" 142 + " addu %0, %4 \n" 143 + " sltu $1, %0, %4 \n" 144 + " addu %0, $1 \n" 145 145 #endif 146 146 #ifdef CONFIG_64BIT 147 - "daddu\t%0, %2\n\t" 148 - "daddu\t%0, %3\n\t" 149 - "daddu\t%0, %4\n\t" 150 - "dsll32\t$1, %0, 0\n\t" 151 - "daddu\t%0, $1\n\t" 152 - "dsrl32\t%0, %0, 0\n\t" 147 + " daddu %0, %2 \n" 148 + " daddu %0, %3 \n" 149 + " daddu %0, %4 \n" 150 + " dsll32 $1, %0, 0 \n" 151 + " daddu %0, $1 \n" 152 + " dsrl32 %0, %0, 0 \n" 153 153 #endif 154 - ".set\tat" 154 + " .set pop" 155 155 : "=r" (sum) 156 156 : "0" (daddr), "r"(saddr), 157 157 #ifdef __MIPSEL__ ··· 195 193 unsigned int sum) 196 194 { 197 195 __asm__( 198 - ".set\tpush\t\t\t# csum_ipv6_magic\n\t" 199 - ".set\tnoreorder\n\t" 200 - ".set\tnoat\n\t" 201 - "addu\t%0, %5\t\t\t# proto (long in network byte order)\n\t" 202 - "sltu\t$1, %0, %5\n\t" 203 - "addu\t%0, $1\n\t" 196 + " .set push # csum_ipv6_magic\n" 197 + " .set noreorder \n" 198 + " .set noat \n" 199 + " addu %0, %5 # proto (long in network byte order)\n" 200 + " sltu $1, %0, %5 \n" 201 + " addu %0, $1 \n" 204 202 205 - "addu\t%0, %6\t\t\t# csum\n\t" 206 - "sltu\t$1, %0, %6\n\t" 207 - "lw\t%1, 0(%2)\t\t\t# four words source address\n\t" 208 - "addu\t%0, $1\n\t" 209 - "addu\t%0, %1\n\t" 210 - "sltu\t$1, %0, %1\n\t" 203 + " addu %0, %6 # csum\n" 204 + " sltu $1, %0, %6 \n" 205 + " lw %1, 0(%2) # four words source address\n" 206 + " addu %0, $1 \n" 207 + " addu %0, %1 \n" 208 + " sltu $1, %0, %1 \n" 211 209 212 - "lw\t%1, 4(%2)\n\t" 213 - "addu\t%0, $1\n\t" 214 - "addu\t%0, %1\n\t" 215 - "sltu\t$1, %0, %1\n\t" 210 + " lw %1, 4(%2) \n" 211 + " addu %0, $1 \n" 212 + " addu %0, %1 \n" 213 + " sltu $1, %0, %1 \n" 216 214 217 - "lw\t%1, 8(%2)\n\t" 218 - "addu\t%0, $1\n\t" 219 - "addu\t%0, %1\n\t" 220 - "sltu\t$1, %0, %1\n\t" 215 + " lw %1, 8(%2) \n" 216 + " addu %0, $1 \n" 217 + " addu %0, %1 \n" 218 + " sltu $1, %0, %1 \n" 221 219 222 - "lw\t%1, 12(%2)\n\t" 223 - "addu\t%0, $1\n\t" 224 - "addu\t%0, %1\n\t" 225 - "sltu\t$1, %0, %1\n\t" 220 + " lw %1, 12(%2) \n" 221 + " addu %0, $1 \n" 222 + " addu %0, %1 \n" 223 + " sltu $1, %0, %1 \n" 226 224 227 - "lw\t%1, 0(%3)\n\t" 228 - "addu\t%0, $1\n\t" 229 - "addu\t%0, %1\n\t" 230 - "sltu\t$1, %0, %1\n\t" 225 + " lw %1, 0(%3) \n" 226 + " addu %0, $1 \n" 227 + " addu %0, %1 \n" 228 + " sltu $1, %0, %1 \n" 231 229 232 - "lw\t%1, 4(%3)\n\t" 233 - "addu\t%0, $1\n\t" 234 - "addu\t%0, %1\n\t" 235 - "sltu\t$1, %0, %1\n\t" 230 + " lw %1, 4(%3) \n" 231 + " addu %0, $1 \n" 232 + " addu %0, %1 \n" 233 + " sltu $1, %0, %1 \n" 236 234 237 - "lw\t%1, 8(%3)\n\t" 238 - "addu\t%0, $1\n\t" 239 - "addu\t%0, %1\n\t" 240 - "sltu\t$1, %0, %1\n\t" 235 + " lw %1, 8(%3) \n" 236 + " addu %0, $1 \n" 237 + " addu %0, %1 \n" 238 + " sltu $1, %0, %1 \n" 241 239 242 - "lw\t%1, 12(%3)\n\t" 243 - "addu\t%0, $1\n\t" 244 - "addu\t%0, %1\n\t" 245 - "sltu\t$1, %0, %1\n\t" 240 + " lw %1, 12(%3) \n" 241 + " addu %0, $1 \n" 242 + " addu %0, %1 \n" 243 + " sltu $1, %0, %1 \n" 246 244 247 - "addu\t%0, $1\t\t\t# Add final carry\n\t" 248 - ".set\tpop" 245 + " addu %0, $1 # Add final carry\n" 246 + " .set pop" 249 247 : "=r" (sum), "=r" (proto) 250 248 : "r" (saddr), "r" (daddr), 251 249 "0" (htonl(len)), "1" (htonl(proto)), "r" (sum));