selftests/powerpc: Fix earlyclobber in tm-vmxcopy
authorGustavo Romero <gromero@linux.vnet.ibm.com>
Mon, 17 Jun 2019 21:24:58 +0000 (17:24 -0400)
committerMichael Ellerman <mpe@ellerman.id.au>
Wed, 19 Jun 2019 10:05:07 +0000 (20:05 +1000)
In some cases, compiler can allocate the same register for operand 'res'
and 'vecoutptr', resulting in segfault at 'stxvd2x 40,0,%[vecoutptr]'
because base register will contain 1, yielding a false-positive.

This is because output 'res' must be marked as an earlyclobber operand so
it may not overlap an input operand ('vecoutptr').

Signed-off-by: Gustavo Romero <gromero@linux.vnet.ibm.com>
Reviewed-by: Segher Boessenkool <segher@kernel.crashing.org>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
tools/testing/selftests/powerpc/tm/tm-vmxcopy.c

index fe52811..0815f06 100644 (file)
@@ -79,7 +79,7 @@ int test_vmxcopy()
 
                "5:;"
                "stxvd2x 40,0,%[vecoutptr];"
-               : [res]"=r"(aborted)
+               : [res]"=&r"(aborted)
                : [vecinptr]"r"(&vecin),
                  [vecoutptr]"r"(&vecout),
                  [map]"r"(a)