• Joel Stanley's avatar
    powerpc/math-emu: Update macros from GCC · b682c869
    Joel Stanley authored
    The add_ssaaaa, sub_ddmmss, umul_ppmm and udiv_qrnnd macros originate
    from GCC's longlong.h which in turn was copied from GMP's longlong.h a
    few decades ago.
    
    This was found when compiling with clang:
    
       arch/powerpc/math-emu/fnmsub.c:46:2: error: invalid use of a cast in a
       inline asm context requiring an l-value: remove the cast or build with
       -fheinous-gnu-extensions
               FP_ADD_D(R, T, B);
               ^~~~~~~~~~~~~~~~~
       ...
    
       ./arch/powerpc/include/asm/sfp-machine.h:283:27: note: expanded from
       macro 'sub_ddmmss'
                      : "=r" ((USItype)(sh)),                                  \
                              ~~~~~~~~~~^~~
    
    Segher points out: this was fixed in GCC over 16 years ago
    ( https://gcc.gnu.org/r56600 ), and in GMP (where it comes from)
    presumably before that.
    
    Update the add_ssaaaa, sub_ddmmss, umul_ppmm and udiv_qrnnd macros to
    the latest GCC version in order to git rid of the invalid casts. These
    were taken as-is from GCC's longlong in order to make future syncs
    obvious. Other parts of sfp-machine.h were left as-is as the file
    contains more features than present in longlong.h.
    
    Link: https://github.com/ClangBuiltLinux/linux/issues/260Signed-off-by: default avatarJoel Stanley <joel@jms.id.au>
    Reviewed-by: default avatarNick Desaulniers <ndesaulniers@google.com>
    Reviewed-by: default avatarSegher Boessenkool <segher@kernel.crashing.org>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    b682c869
sfp-machine.h 12.4 KB