work around gcc bugs with 'asm goto' with outputs
We've had issues with gcc and 'asm goto' before, and we created a 'asm_volatile_goto()' macro for that in the past: see commits 3f0116c3 ("compiler/gcc4: Add quirk for 'asm goto' miscompilation bug") and a9f18034 ("compiler/gcc4: Make quirk for asm_volatile_goto() unconditional"). Then, much later, we ended up removing the workaround in commit 43c249ea ("compiler-gcc.h: remove ancient workaround for gcc PR 58670") because we no longer supported building the kernel with the affected gcc versions, but we left the macro uses around. Now, Sean Christopherson reports a new version of a very similar problem, which is fixed by re-applying that ancient workaround. But the problem in question is limited to only the 'asm goto with outputs' cases, so instead of re-introducing the old workaround as-is, let's rename and limit the workaround to just that much less common case. It looks like there are at least two separate issues that all hit in this area...
Showing
- arch/arc/include/asm/jump_label.h 2 additions, 2 deletionsarch/arc/include/asm/jump_label.h
- arch/arm/include/asm/jump_label.h 2 additions, 2 deletionsarch/arm/include/asm/jump_label.h
- arch/arm64/include/asm/alternative-macros.h 2 additions, 2 deletionsarch/arm64/include/asm/alternative-macros.h
- arch/arm64/include/asm/jump_label.h 2 additions, 2 deletionsarch/arm64/include/asm/jump_label.h
- arch/csky/include/asm/jump_label.h 2 additions, 2 deletionsarch/csky/include/asm/jump_label.h
- arch/loongarch/include/asm/jump_label.h 2 additions, 2 deletionsarch/loongarch/include/asm/jump_label.h
- arch/mips/include/asm/jump_label.h 2 additions, 2 deletionsarch/mips/include/asm/jump_label.h
- arch/parisc/include/asm/jump_label.h 2 additions, 2 deletionsarch/parisc/include/asm/jump_label.h
- arch/powerpc/include/asm/jump_label.h 2 additions, 2 deletionsarch/powerpc/include/asm/jump_label.h
- arch/powerpc/include/asm/uaccess.h 6 additions, 6 deletionsarch/powerpc/include/asm/uaccess.h
- arch/powerpc/kernel/irq_64.c 1 addition, 1 deletionarch/powerpc/kernel/irq_64.c
- arch/riscv/include/asm/arch_hweight.h 2 additions, 2 deletionsarch/riscv/include/asm/arch_hweight.h
- arch/riscv/include/asm/bitops.h 4 additions, 4 deletionsarch/riscv/include/asm/bitops.h
- arch/riscv/include/asm/checksum.h 1 addition, 1 deletionarch/riscv/include/asm/checksum.h
- arch/riscv/include/asm/cpufeature.h 2 additions, 2 deletionsarch/riscv/include/asm/cpufeature.h
- arch/riscv/include/asm/jump_label.h 2 additions, 2 deletionsarch/riscv/include/asm/jump_label.h
- arch/riscv/lib/csum.c 5 additions, 5 deletionsarch/riscv/lib/csum.c
- arch/s390/include/asm/jump_label.h 2 additions, 2 deletionsarch/s390/include/asm/jump_label.h
- arch/sparc/include/asm/jump_label.h 2 additions, 2 deletionsarch/sparc/include/asm/jump_label.h
- arch/um/include/asm/cpufeature.h 1 addition, 1 deletionarch/um/include/asm/cpufeature.h
Please register or sign in to comment