On Sun, Mar 17, 2019 at 4:05 PM Stefan Agner <ste...@agner.ch> wrote: > > Currently LLVM's integrated assembler does not recognize .w form > of the pld instructions (LLVM Bug 40972 [0]): > > ./arch/arm/include/asm/processor.h:133:5: error: invalid instruction > "pldw.w\t%a0 \n" > ^ > <inline asm>:2:1: note: instantiated into assembly here > pldw.w [r0] > ^ > 1 error generated. > > The W macro for generating wide instructions when targeting Thumb-2 > is not strictly required for the preload data instructions (pld, pldw) > since they are only available as wide instructions. The GNU assembler > works with or without the .w appended when compiling an Thumb-2 kernel. > > Drop the macro to work around LLVM Bug 40972 issue. > > [0] https://bugs.llvm.org/show_bug.cgi?id=40972 > > Signed-off-by: Stefan Agner <ste...@agner.ch>
Thanks for the bug report and patch. Reviewed-by: Nick Desaulniers <ndesaulni...@google.com> Just curious, there are only 3 other expansion sites of this macro. Are any of those problematic? Looks like nop.w, sev.w and b.w? > --- > Changes in v2: > - Reword commit message to reflect the fact that this is a work around > for LLVM. > > arch/arm/include/asm/processor.h | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/arch/arm/include/asm/processor.h > b/arch/arm/include/asm/processor.h > index 57fe73ea0f72..5d06f75ffad4 100644 > --- a/arch/arm/include/asm/processor.h > +++ b/arch/arm/include/asm/processor.h > @@ -135,8 +135,8 @@ static inline void prefetchw(const void *ptr) > __asm__ __volatile__( > ".arch_extension mp\n" > __ALT_SMP_ASM( > - WASM(pldw) "\t%a0", > - WASM(pld) "\t%a0" > + "pldw\t%a0", > + "pld\t%a0" > ) > :: "p" (ptr)); > } > -- > 2.21.0 > -- Thanks, ~Nick Desaulniers