On Mon, Oct 19, 2020 at 12:12:46PM +0000, Christophe Leroy wrote:
> GCC 4.9 sometimes fails to build with "m<>" constraint in
> inline assembly.

> --- a/arch/powerpc/include/asm/uaccess.h
> +++ b/arch/powerpc/include/asm/uaccess.h
> @@ -223,7 +223,7 @@ do {                                                      
>         \
>               "1:     " op "%U1%X1 %0,%1      # put_user\n"   \
>               EX_TABLE(1b, %l2)                               \
>               :                                               \
> -             : "r" (x), "m<>" (*addr)                                \
> +             : "r" (x), "m"UPD_CONSTR (*addr)                \
>               :                                               \
>               : label)
>  
> @@ -294,7 +294,7 @@ extern long __get_user_bad(void);
>               ".previous\n"                           \
>               EX_TABLE(1b, 3b)                        \
>               : "=r" (err), "=r" (x)                  \
> -             : "m<>" (*addr), "i" (-EFAULT), "0" (err))
> +             : "m"UPD_CONSTR (*addr), "i" (-EFAULT), "0" (err))

Wow, ugly!  But these are the only two places that use this, so

Acked-by: Segher Boessenkool  <seg...@kernel.crashing.org>

I just hope that we get rid of 4.9 before we would use this a lot more ;-)


Segher

Reply via email to