From f5a2c8a44fdf96e434df968667454759b2a2898a Mon Sep 17 00:00:00 2001 From: Will Deacon Date: Mon, 7 Oct 2019 13:03:12 +0100 Subject: [PATCH] BACKPORT: arm64: Kconfig: Make CONFIG_COMPAT_VDSO a proper Kconfig option CONFIG_COMPAT_VDSO is defined by passing '-DCONFIG_COMPAT_VDSO' to the compiler when the generic compat vDSO code is in use. It's much cleaner and simpler to expose this as a proper Kconfig option (like x86 does), so do that and remove the bodge. Acked-by: Catalin Marinas Signed-off-by: Will Deacon (cherry picked from commit 7c4791c9efca8c105a86022f7d5532aeaa819125) Signed-off-by: Mark Salyzyn Bug: 154668398 Change-Id: I33c90b5bee896a41cfd38738a5d19f590a6010c4 --- arch/arm64/Kconfig | 14 +++++++++++++- arch/arm64/Makefile | 5 ----- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index 580af613c91e..e04f494e5843 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig @@ -101,7 +101,6 @@ config ARM64 select GENERIC_STRNLEN_USER select GENERIC_TIME_VSYSCALL select GENERIC_GETTIMEOFDAY - select GENERIC_COMPAT_VDSO if (!CPU_BIG_ENDIAN && COMPAT && "$(CROSS_COMPILE_COMPAT)" != "") select HANDLE_DOMAIN_IRQ select HARDIRQS_SW_RESEND select HAVE_ACPI_APEI if (ACPI && EFI) @@ -984,6 +983,19 @@ config ARM64_TAGGED_ADDR_ABI to system calls as pointer arguments. For details, see Documentation/arm64/tagged-address-abi.rst. +config COMPAT_VDSO + bool "Enable vDSO for 32-bit applications" + depends on !CPU_BIG_ENDIAN && "$(CROSS_COMPILE_COMPAT)" != "" + select GENERIC_COMPAT_VDSO + default y + help + Place in the process address space of 32-bit applications an + ELF shared object providing fast implementations of gettimeofday + and clock_gettime. + + You must have a 32-bit build of glibc 2.22 or later for programs + to seamlessly take advantage of this. + menuconfig ARMV8_DEPRECATED bool "Emulate deprecated/obsolete ARMv8 instructions" depends on COMPAT diff --git a/arch/arm64/Makefile b/arch/arm64/Makefile index f502570c6159..098c39e17582 100644 --- a/arch/arm64/Makefile +++ b/arch/arm64/Makefile @@ -49,11 +49,6 @@ $(warning Detected assembler with broken .inst; disassembly will be unreliable) endif endif -ifeq ($(CONFIG_GENERIC_COMPAT_VDSO), y) - export CONFIG_COMPAT_VDSO := y - compat_vdso := -DCONFIG_COMPAT_VDSO=1 -endif - KBUILD_CFLAGS += -mgeneral-regs-only $(lseinstr) $(brokengasinst) $(compat_vdso) KBUILD_CFLAGS += -fno-asynchronous-unwind-tables KBUILD_CFLAGS += $(call cc-disable-warning, psabi)