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

sparc32: remove cast from output constraints in math asm statements

The following asm statements generated a sparse warning:

asm("addcc \n\t" : "=r" (((USItype)(r2)))

warning: asm output is not an lvalue

When asking on the sparse mailing list Linus replyed:

"
Those casts to (USItype) are all pointless to begin with (since the
values are of that type already!) and they mean that the expression
isn't something you can assign to (lvalue).
"

In the math emulation code drop all casts in the output
parts of the asm statements.

This fixes a lot of "warning: asm output is not an lvalue" sparse
warnings in math_32.c.

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Sam Ravnborg and committed by
David S. Miller
347b0cf0 958b7b07

+24 -24
+14 -14
arch/sparc/include/asm/sfp-machine_32.h
··· 79 79 __asm__ ("addcc %r7,%8,%2\n\t" \ 80 80 "addxcc %r5,%6,%1\n\t" \ 81 81 "addx %r3,%4,%0\n" \ 82 - : "=r" ((USItype)(r2)), \ 83 - "=&r" ((USItype)(r1)), \ 84 - "=&r" ((USItype)(r0)) \ 82 + : "=r" (r2), \ 83 + "=&r" (r1), \ 84 + "=&r" (r0) \ 85 85 : "%rJ" ((USItype)(x2)), \ 86 86 "rI" ((USItype)(y2)), \ 87 87 "%rJ" ((USItype)(x1)), \ ··· 94 94 __asm__ ("subcc %r7,%8,%2\n\t" \ 95 95 "subxcc %r5,%6,%1\n\t" \ 96 96 "subx %r3,%4,%0\n" \ 97 - : "=r" ((USItype)(r2)), \ 98 - "=&r" ((USItype)(r1)), \ 99 - "=&r" ((USItype)(r0)) \ 97 + : "=r" (r2), \ 98 + "=&r" (r1), \ 99 + "=&r" (r0) \ 100 100 : "%rJ" ((USItype)(x2)), \ 101 101 "rI" ((USItype)(y2)), \ 102 102 "%rJ" ((USItype)(x1)), \ ··· 115 115 "addxcc %r6,%7,%0\n\t" \ 116 116 "addxcc %r4,%5,%%g2\n\t" \ 117 117 "addx %r2,%3,%%g1\n\t" \ 118 - : "=&r" ((USItype)(r1)), \ 119 - "=&r" ((USItype)(r0)) \ 118 + : "=&r" (r1), \ 119 + "=&r" (r0) \ 120 120 : "%rJ" ((USItype)(x3)), \ 121 121 "rI" ((USItype)(y3)), \ 122 122 "%rJ" ((USItype)(x2)), \ ··· 140 140 "subxcc %r6,%7,%0\n\t" \ 141 141 "subxcc %r4,%5,%%g2\n\t" \ 142 142 "subx %r2,%3,%%g1\n\t" \ 143 - : "=&r" ((USItype)(r1)), \ 144 - "=&r" ((USItype)(r0)) \ 143 + : "=&r" (r1), \ 144 + "=&r" (r0) \ 145 145 : "%rJ" ((USItype)(x3)), \ 146 146 "rI" ((USItype)(y3)), \ 147 147 "%rJ" ((USItype)(x2)), \ ··· 164 164 "addxcc %2,%%g0,%2\n\t" \ 165 165 "addxcc %1,%%g0,%1\n\t" \ 166 166 "addx %0,%%g0,%0\n\t" \ 167 - : "=&r" ((USItype)(x3)), \ 168 - "=&r" ((USItype)(x2)), \ 169 - "=&r" ((USItype)(x1)), \ 170 - "=&r" ((USItype)(x0)) \ 167 + : "=&r" (x3), \ 168 + "=&r" (x2), \ 169 + "=&r" (x1), \ 170 + "=&r" (x0) \ 171 171 : "rI" ((USItype)(i)), \ 172 172 "0" ((USItype)(x3)), \ 173 173 "1" ((USItype)(x2)), \
+10 -10
arch/sparc/math-emu/sfp-util_32.h
··· 4 4 #include <asm/byteorder.h> 5 5 6 6 #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ 7 - __asm__ ("addcc %r4,%5,%1\n\t" \ 7 + __asm__ ("addcc %r4,%5,%1\n\t" \ 8 8 "addx %r2,%3,%0\n" \ 9 - : "=r" ((USItype)(sh)), \ 10 - "=&r" ((USItype)(sl)) \ 9 + : "=r" (sh), \ 10 + "=&r" (sl) \ 11 11 : "%rJ" ((USItype)(ah)), \ 12 12 "rI" ((USItype)(bh)), \ 13 13 "%rJ" ((USItype)(al)), \ 14 14 "rI" ((USItype)(bl)) \ 15 15 : "cc") 16 16 #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ 17 - __asm__ ("subcc %r4,%5,%1\n\t" \ 17 + __asm__ ("subcc %r4,%5,%1\n\t" \ 18 18 "subx %r2,%3,%0\n" \ 19 - : "=r" ((USItype)(sh)), \ 20 - "=&r" ((USItype)(sl)) \ 19 + : "=r" (sh), \ 20 + "=&r" (sl) \ 21 21 : "rJ" ((USItype)(ah)), \ 22 22 "rI" ((USItype)(bh)), \ 23 23 "rJ" ((USItype)(al)), \ ··· 65 65 "mulscc %%g1,0,%%g1\n\t" \ 66 66 "add %%g1,%%g2,%0\n\t" \ 67 67 "rd %%y,%1\n" \ 68 - : "=r" ((USItype)(w1)), \ 69 - "=r" ((USItype)(w0)) \ 68 + : "=r" (w1), \ 69 + "=r" (w0) \ 70 70 : "%rI" ((USItype)(u)), \ 71 71 "r" ((USItype)(v)) \ 72 72 : "%g1", "%g2", "cc") ··· 98 98 "sub %1,%2,%1\n\t" \ 99 99 "3: xnor %0,0,%0\n\t" \ 100 100 "! End of inline udiv_qrnnd\n" \ 101 - : "=&r" ((USItype)(q)), \ 102 - "=&r" ((USItype)(r)) \ 101 + : "=&r" (q), \ 102 + "=&r" (r) \ 103 103 : "r" ((USItype)(d)), \ 104 104 "1" ((USItype)(n1)), \ 105 105 "0" ((USItype)(n0)) : "%g1", "cc")