Message ID | 20190829154834.26547-6-will@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | arm64: avoid out-of-line ll/sc atomics | expand |
On Thu, Aug 29, 2019 at 8:48 AM Will Deacon <will@kernel.org> wrote: > > From: Andrew Murray <andrew.murray@arm.com> > > We no longer fall back to out-of-line atomics on systems with > CONFIG_ARM64_LSE_ATOMICS where ARM64_HAS_LSE_ATOMICS is not set. > > Remove the unused compilation unit which provided these symbols. > > Signed-off-by: Andrew Murray <andrew.murray@arm.com> > Signed-off-by: Will Deacon <will@kernel.org> > --- > arch/arm64/lib/Makefile | 19 ------------------- > arch/arm64/lib/atomic_ll_sc.c | 3 --- > 2 files changed, 22 deletions(-) > delete mode 100644 arch/arm64/lib/atomic_ll_sc.c > > diff --git a/arch/arm64/lib/Makefile b/arch/arm64/lib/Makefile > index 33c2a4abda04..f10809ef1690 100644 > --- a/arch/arm64/lib/Makefile > +++ b/arch/arm64/lib/Makefile > @@ -11,25 +11,6 @@ CFLAGS_REMOVE_xor-neon.o += -mgeneral-regs-only > CFLAGS_xor-neon.o += -ffreestanding > endif > > -# Tell the compiler to treat all general purpose registers (with the > -# exception of the IP registers, which are already handled by the caller > -# in case of a PLT) as callee-saved, which allows for efficient runtime > -# patching of the bl instruction in the caller with an atomic instruction > -# when supported by the CPU. Result and argument registers are handled > -# correctly, based on the function prototype. > -lib-$(CONFIG_ARM64_LSE_ATOMICS) += atomic_ll_sc.o > -CFLAGS_atomic_ll_sc.o := -ffixed-x1 -ffixed-x2 \ > - -ffixed-x3 -ffixed-x4 -ffixed-x5 -ffixed-x6 \ > - -ffixed-x7 -fcall-saved-x8 -fcall-saved-x9 \ > - -fcall-saved-x10 -fcall-saved-x11 -fcall-saved-x12 \ > - -fcall-saved-x13 -fcall-saved-x14 -fcall-saved-x15 \ > - -fcall-saved-x18 -fomit-frame-pointer + Tri (who implemented support for -fcall-saved-x*, -ffixed-x* in Clang). I won't be sad to see the use of these flags go. > -CFLAGS_REMOVE_atomic_ll_sc.o := $(CC_FLAGS_FTRACE) > -GCOV_PROFILE_atomic_ll_sc.o := n > -KASAN_SANITIZE_atomic_ll_sc.o := n > -KCOV_INSTRUMENT_atomic_ll_sc.o := n > -UBSAN_SANITIZE_atomic_ll_sc.o := n > - > lib-$(CONFIG_ARCH_HAS_UACCESS_FLUSHCACHE) += uaccess_flushcache.o > > obj-$(CONFIG_CRC32) += crc32.o > diff --git a/arch/arm64/lib/atomic_ll_sc.c b/arch/arm64/lib/atomic_ll_sc.c > deleted file mode 100644 > index b0c538b0da28..000000000000 > --- a/arch/arm64/lib/atomic_ll_sc.c > +++ /dev/null > @@ -1,3 +0,0 @@ > -#include <asm/atomic.h> > -#define __ARM64_IN_ATOMIC_IMPL > -#include <asm/atomic_ll_sc.h> > -- > 2.11.0 >
On Thu, Aug 29, 2019 at 10:47 AM Nick Desaulniers <ndesaulniers@google.com> wrote: > > On Thu, Aug 29, 2019 at 8:48 AM Will Deacon <will@kernel.org> wrote: > > > > From: Andrew Murray <andrew.murray@arm.com> > > > > We no longer fall back to out-of-line atomics on systems with > > CONFIG_ARM64_LSE_ATOMICS where ARM64_HAS_LSE_ATOMICS is not set. > > > > Remove the unused compilation unit which provided these symbols. > > > > Signed-off-by: Andrew Murray <andrew.murray@arm.com> > > Signed-off-by: Will Deacon <will@kernel.org> > > --- > > arch/arm64/lib/Makefile | 19 ------------------- > > arch/arm64/lib/atomic_ll_sc.c | 3 --- > > 2 files changed, 22 deletions(-) > > delete mode 100644 arch/arm64/lib/atomic_ll_sc.c > > > > diff --git a/arch/arm64/lib/Makefile b/arch/arm64/lib/Makefile > > index 33c2a4abda04..f10809ef1690 100644 > > --- a/arch/arm64/lib/Makefile > > +++ b/arch/arm64/lib/Makefile > > @@ -11,25 +11,6 @@ CFLAGS_REMOVE_xor-neon.o += -mgeneral-regs-only > > CFLAGS_xor-neon.o += -ffreestanding > > endif > > > > -# Tell the compiler to treat all general purpose registers (with the > > -# exception of the IP registers, which are already handled by the caller > > -# in case of a PLT) as callee-saved, which allows for efficient runtime > > -# patching of the bl instruction in the caller with an atomic instruction > > -# when supported by the CPU. Result and argument registers are handled > > -# correctly, based on the function prototype. > > -lib-$(CONFIG_ARM64_LSE_ATOMICS) += atomic_ll_sc.o > > -CFLAGS_atomic_ll_sc.o := -ffixed-x1 -ffixed-x2 \ > > - -ffixed-x3 -ffixed-x4 -ffixed-x5 -ffixed-x6 \ > > - -ffixed-x7 -fcall-saved-x8 -fcall-saved-x9 \ > > - -fcall-saved-x10 -fcall-saved-x11 -fcall-saved-x12 \ > > - -fcall-saved-x13 -fcall-saved-x14 -fcall-saved-x15 \ > > - -fcall-saved-x18 -fomit-frame-pointer > > + Tri (who implemented support for -fcall-saved-x*, -ffixed-x* in > Clang). I won't be sad to see the use of these flags go. Nice! IMO these flags made the code hard to read.
On Thu, Aug 29, 2019 at 01:07:04PM -0700, Tri Vo wrote: > On Thu, Aug 29, 2019 at 10:47 AM Nick Desaulniers > <ndesaulniers@google.com> wrote: > > > > On Thu, Aug 29, 2019 at 8:48 AM Will Deacon <will@kernel.org> wrote: > > > > > > From: Andrew Murray <andrew.murray@arm.com> > > > > > > We no longer fall back to out-of-line atomics on systems with > > > CONFIG_ARM64_LSE_ATOMICS where ARM64_HAS_LSE_ATOMICS is not set. > > > > > > Remove the unused compilation unit which provided these symbols. > > > > > > Signed-off-by: Andrew Murray <andrew.murray@arm.com> > > > Signed-off-by: Will Deacon <will@kernel.org> > > > --- > > > arch/arm64/lib/Makefile | 19 ------------------- > > > arch/arm64/lib/atomic_ll_sc.c | 3 --- > > > 2 files changed, 22 deletions(-) > > > delete mode 100644 arch/arm64/lib/atomic_ll_sc.c > > > > > > diff --git a/arch/arm64/lib/Makefile b/arch/arm64/lib/Makefile > > > index 33c2a4abda04..f10809ef1690 100644 > > > --- a/arch/arm64/lib/Makefile > > > +++ b/arch/arm64/lib/Makefile > > > @@ -11,25 +11,6 @@ CFLAGS_REMOVE_xor-neon.o += -mgeneral-regs-only > > > CFLAGS_xor-neon.o += -ffreestanding > > > endif > > > > > > -# Tell the compiler to treat all general purpose registers (with the > > > -# exception of the IP registers, which are already handled by the caller > > > -# in case of a PLT) as callee-saved, which allows for efficient runtime > > > -# patching of the bl instruction in the caller with an atomic instruction > > > -# when supported by the CPU. Result and argument registers are handled > > > -# correctly, based on the function prototype. > > > -lib-$(CONFIG_ARM64_LSE_ATOMICS) += atomic_ll_sc.o > > > -CFLAGS_atomic_ll_sc.o := -ffixed-x1 -ffixed-x2 \ > > > - -ffixed-x3 -ffixed-x4 -ffixed-x5 -ffixed-x6 \ > > > - -ffixed-x7 -fcall-saved-x8 -fcall-saved-x9 \ > > > - -fcall-saved-x10 -fcall-saved-x11 -fcall-saved-x12 \ > > > - -fcall-saved-x13 -fcall-saved-x14 -fcall-saved-x15 \ > > > - -fcall-saved-x18 -fomit-frame-pointer > > > > + Tri (who implemented support for -fcall-saved-x*, -ffixed-x* in > > Clang). I won't be sad to see the use of these flags go. > > Nice! IMO these flags made the code hard to read. Well, we didn't do it like that because it looked pretty ;) Will
diff --git a/arch/arm64/lib/Makefile b/arch/arm64/lib/Makefile index 33c2a4abda04..f10809ef1690 100644 --- a/arch/arm64/lib/Makefile +++ b/arch/arm64/lib/Makefile @@ -11,25 +11,6 @@ CFLAGS_REMOVE_xor-neon.o += -mgeneral-regs-only CFLAGS_xor-neon.o += -ffreestanding endif -# Tell the compiler to treat all general purpose registers (with the -# exception of the IP registers, which are already handled by the caller -# in case of a PLT) as callee-saved, which allows for efficient runtime -# patching of the bl instruction in the caller with an atomic instruction -# when supported by the CPU. Result and argument registers are handled -# correctly, based on the function prototype. -lib-$(CONFIG_ARM64_LSE_ATOMICS) += atomic_ll_sc.o -CFLAGS_atomic_ll_sc.o := -ffixed-x1 -ffixed-x2 \ - -ffixed-x3 -ffixed-x4 -ffixed-x5 -ffixed-x6 \ - -ffixed-x7 -fcall-saved-x8 -fcall-saved-x9 \ - -fcall-saved-x10 -fcall-saved-x11 -fcall-saved-x12 \ - -fcall-saved-x13 -fcall-saved-x14 -fcall-saved-x15 \ - -fcall-saved-x18 -fomit-frame-pointer -CFLAGS_REMOVE_atomic_ll_sc.o := $(CC_FLAGS_FTRACE) -GCOV_PROFILE_atomic_ll_sc.o := n -KASAN_SANITIZE_atomic_ll_sc.o := n -KCOV_INSTRUMENT_atomic_ll_sc.o := n -UBSAN_SANITIZE_atomic_ll_sc.o := n - lib-$(CONFIG_ARCH_HAS_UACCESS_FLUSHCACHE) += uaccess_flushcache.o obj-$(CONFIG_CRC32) += crc32.o diff --git a/arch/arm64/lib/atomic_ll_sc.c b/arch/arm64/lib/atomic_ll_sc.c deleted file mode 100644 index b0c538b0da28..000000000000 --- a/arch/arm64/lib/atomic_ll_sc.c +++ /dev/null @@ -1,3 +0,0 @@ -#include <asm/atomic.h> -#define __ARM64_IN_ATOMIC_IMPL -#include <asm/atomic_ll_sc.h>