From: Vincenzo Frascino <vincenzo.frascino@arm.com> To: linux-arch@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-mips@vger.kernel.org, clang-built-linux@googlegroups.com, x86@kernel.org Cc: Vincenzo Frascino <vincenzo.frascino@arm.com>, Catalin Marinas <catalin.marinas@arm.com>, Will Deacon <will.deacon@arm.com>, Arnd Bergmann <arnd@arndb.de>, Russell King <linux@armlinux.org.uk>, Paul Burton <paul.burton@mips.com>, Thomas Gleixner <tglx@linutronix.de>, Andy Lutomirski <luto@kernel.org>, Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>, Stephen Boyd <sboyd@kernel.org>, Mark Salyzyn <salyzyn@android.com>, Kees Cook <keescook@chromium.org>, Peter Collingbourne <pcc@google.com>, Dmitry Safonov <0x7f454c46@gmail.com>, Andrei Vagin <avagin@openvz.org>, Nick Desaulniers <ndesaulniers@google.com> Subject: [PATCH v2 04/20] linux/math64.h: Extract common header for vDSO Date: Fri, 6 Mar 2020 13:32:26 +0000 [thread overview] Message-ID: <20200306133242.26279-5-vincenzo.frascino@arm.com> (raw) In-Reply-To: <20200306133242.26279-1-vincenzo.frascino@arm.com> The vDSO library should only include the necessary headers required for a userspace library (UAPI and a minimal set of kernel headers). To make this possible it is necessary to isolate from the kernel headers the common parts that are strictly necessary to build the library. Split math64.h into linux and common headers to make the latter suitable for inclusion in the vDSO library. Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com> --- include/common/math64.h | 24 ++++++++++++++++++++++++ include/linux/math64.h | 20 +------------------- 2 files changed, 25 insertions(+), 19 deletions(-) create mode 100644 include/common/math64.h diff --git a/include/common/math64.h b/include/common/math64.h new file mode 100644 index 000000000000..4e1870e40182 --- /dev/null +++ b/include/common/math64.h @@ -0,0 +1,24 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef __COMMON_MATH64_H +#define __COMMON_MATH64_H + +static __always_inline u32 +__iter_div_u64_rem(u64 dividend, u32 divisor, u64 *remainder) +{ + u32 ret = 0; + + while (dividend >= divisor) { + /* The following asm() prevents the compiler from + optimising this loop into a modulo operation. */ + asm("" : "+rm"(dividend)); + + dividend -= divisor; + ret++; + } + + *remainder = dividend; + + return ret; +} + +#endif /* __COMMON_MATH64_H */ diff --git a/include/linux/math64.h b/include/linux/math64.h index 65bef21cdddb..54eb486b5d1a 100644 --- a/include/linux/math64.h +++ b/include/linux/math64.h @@ -3,6 +3,7 @@ #define _LINUX_MATH64_H #include <linux/types.h> +#include <common/math64.h> #include <asm/div64.h> #if BITS_PER_LONG == 64 @@ -142,25 +143,6 @@ static inline s64 div_s64(s64 dividend, s32 divisor) u32 iter_div_u64_rem(u64 dividend, u32 divisor, u64 *remainder); -static __always_inline u32 -__iter_div_u64_rem(u64 dividend, u32 divisor, u64 *remainder) -{ - u32 ret = 0; - - while (dividend >= divisor) { - /* The following asm() prevents the compiler from - optimising this loop into a modulo operation. */ - asm("" : "+rm"(dividend)); - - dividend -= divisor; - ret++; - } - - *remainder = dividend; - - return ret; -} - #ifndef mul_u32_u32 /* * Many a GCC version messes this up and generates a 64x64 mult :-( -- 2.25.1
WARNING: multiple messages have this Message-ID (diff)
From: Vincenzo Frascino <vincenzo.frascino@arm.com> To: linux-arch@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-mips@vger.kernel.org, clang-built-linux@googlegroups.com, x86@kernel.org Cc: Nick Desaulniers <ndesaulniers@google.com>, Dmitry Safonov <0x7f454c46@gmail.com>, Kees Cook <keescook@chromium.org>, Arnd Bergmann <arnd@arndb.de>, Stephen Boyd <sboyd@kernel.org>, Catalin Marinas <catalin.marinas@arm.com>, Will Deacon <will.deacon@arm.com>, Russell King <linux@armlinux.org.uk>, Mark Salyzyn <salyzyn@android.com>, Paul Burton <paul.burton@mips.com>, Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>, Andy Lutomirski <luto@kernel.org>, Thomas Gleixner <tglx@linutronix.de>, Vincenzo Frascino <vincenzo.frascino@arm.com>, Peter Collingbourne <pcc@google.com>, Andrei Vagin <avagin@openvz.org> Subject: [PATCH v2 04/20] linux/math64.h: Extract common header for vDSO Date: Fri, 6 Mar 2020 13:32:26 +0000 [thread overview] Message-ID: <20200306133242.26279-5-vincenzo.frascino@arm.com> (raw) In-Reply-To: <20200306133242.26279-1-vincenzo.frascino@arm.com> The vDSO library should only include the necessary headers required for a userspace library (UAPI and a minimal set of kernel headers). To make this possible it is necessary to isolate from the kernel headers the common parts that are strictly necessary to build the library. Split math64.h into linux and common headers to make the latter suitable for inclusion in the vDSO library. Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com> --- include/common/math64.h | 24 ++++++++++++++++++++++++ include/linux/math64.h | 20 +------------------- 2 files changed, 25 insertions(+), 19 deletions(-) create mode 100644 include/common/math64.h diff --git a/include/common/math64.h b/include/common/math64.h new file mode 100644 index 000000000000..4e1870e40182 --- /dev/null +++ b/include/common/math64.h @@ -0,0 +1,24 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef __COMMON_MATH64_H +#define __COMMON_MATH64_H + +static __always_inline u32 +__iter_div_u64_rem(u64 dividend, u32 divisor, u64 *remainder) +{ + u32 ret = 0; + + while (dividend >= divisor) { + /* The following asm() prevents the compiler from + optimising this loop into a modulo operation. */ + asm("" : "+rm"(dividend)); + + dividend -= divisor; + ret++; + } + + *remainder = dividend; + + return ret; +} + +#endif /* __COMMON_MATH64_H */ diff --git a/include/linux/math64.h b/include/linux/math64.h index 65bef21cdddb..54eb486b5d1a 100644 --- a/include/linux/math64.h +++ b/include/linux/math64.h @@ -3,6 +3,7 @@ #define _LINUX_MATH64_H #include <linux/types.h> +#include <common/math64.h> #include <asm/div64.h> #if BITS_PER_LONG == 64 @@ -142,25 +143,6 @@ static inline s64 div_s64(s64 dividend, s32 divisor) u32 iter_div_u64_rem(u64 dividend, u32 divisor, u64 *remainder); -static __always_inline u32 -__iter_div_u64_rem(u64 dividend, u32 divisor, u64 *remainder) -{ - u32 ret = 0; - - while (dividend >= divisor) { - /* The following asm() prevents the compiler from - optimising this loop into a modulo operation. */ - asm("" : "+rm"(dividend)); - - dividend -= divisor; - ret++; - } - - *remainder = dividend; - - return ret; -} - #ifndef mul_u32_u32 /* * Many a GCC version messes this up and generates a 64x64 mult :-( -- 2.25.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2020-03-06 13:33 UTC|newest] Thread overview: 63+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-03-06 13:32 [PATCH v2 00/20] Introduce common headers Vincenzo Frascino 2020-03-06 13:32 ` Vincenzo Frascino 2020-03-06 13:32 ` [PATCH v2 01/20] linux/const.h: Extract common header for vDSO Vincenzo Frascino 2020-03-06 13:32 ` Vincenzo Frascino 2020-03-06 13:32 ` [PATCH v2 02/20] linux/bits.h: " Vincenzo Frascino 2020-03-06 13:32 ` Vincenzo Frascino 2020-03-06 13:32 ` [PATCH v2 03/20] linux/limits.h: " Vincenzo Frascino 2020-03-06 13:32 ` Vincenzo Frascino 2020-03-06 13:32 ` Vincenzo Frascino [this message] 2020-03-06 13:32 ` [PATCH v2 04/20] linux/math64.h: " Vincenzo Frascino 2020-03-06 13:32 ` [PATCH v2 05/20] linux/time.h: " Vincenzo Frascino 2020-03-06 13:32 ` Vincenzo Frascino 2020-03-06 13:32 ` [PATCH v2 06/20] linux/time32.h: " Vincenzo Frascino 2020-03-06 13:32 ` Vincenzo Frascino 2020-03-06 13:32 ` [PATCH v2 07/20] linux/time64.h: " Vincenzo Frascino 2020-03-06 13:32 ` Vincenzo Frascino 2020-03-06 13:32 ` Vincenzo Frascino 2020-03-06 13:32 ` [PATCH v2 08/20] linux/jiffies.h: " Vincenzo Frascino 2020-03-06 13:32 ` Vincenzo Frascino 2020-03-06 13:32 ` [PATCH v2 09/20] linux/ktime.h: " Vincenzo Frascino 2020-03-06 13:32 ` Vincenzo Frascino 2020-03-06 13:32 ` [PATCH v2 10/20] common: Introduce processor.h Vincenzo Frascino 2020-03-06 13:32 ` Vincenzo Frascino 2020-03-06 13:32 ` [PATCH v2 11/20] linux/elfnote.h: Replace elf.h with UAPI equivalent Vincenzo Frascino 2020-03-06 13:32 ` Vincenzo Frascino 2020-03-07 1:21 ` kbuild test robot 2020-03-07 1:21 ` kbuild test robot 2020-03-07 1:21 ` kbuild test robot 2020-03-06 13:32 ` [PATCH v2 12/20] arm64: Introduce asm/common/processor.h Vincenzo Frascino 2020-03-06 13:32 ` Vincenzo Frascino 2020-03-06 13:32 ` [PATCH v2 13/20] arm64: vdso: Include common headers in the vdso library Vincenzo Frascino 2020-03-06 13:32 ` Vincenzo Frascino 2020-03-06 13:32 ` [PATCH v2 14/20] arm64: vdso32: " Vincenzo Frascino 2020-03-06 13:32 ` Vincenzo Frascino 2020-03-06 13:32 ` Vincenzo Frascino 2020-03-06 13:32 ` [PATCH v2 15/20] arm64: Introduce asm/common/arch_timer.h Vincenzo Frascino 2020-03-06 13:32 ` Vincenzo Frascino 2020-03-06 13:32 ` [PATCH v2 16/20] mips: vdso: Enable mips to use common headers Vincenzo Frascino 2020-03-06 13:32 ` Vincenzo Frascino 2020-03-06 13:32 ` [PATCH v2 17/20] x86: vdso: Enable x86 " Vincenzo Frascino 2020-03-06 13:32 ` Vincenzo Frascino 2020-03-06 13:32 ` [PATCH v2 18/20] arm: vdso: Enable arm " Vincenzo Frascino 2020-03-06 13:32 ` Vincenzo Frascino 2020-03-06 13:32 ` [PATCH v2 19/20] lib: vdso: Enable " Vincenzo Frascino 2020-03-06 13:32 ` Vincenzo Frascino 2020-03-06 13:32 ` Vincenzo Frascino 2020-03-06 13:32 ` [PATCH v2 20/20] arm64: vdso32: Enable Clang Compilation Vincenzo Frascino 2020-03-06 13:32 ` Vincenzo Frascino 2020-03-10 1:40 ` Nathan Chancellor 2020-03-10 1:40 ` Nathan Chancellor 2020-03-10 1:40 ` Nathan Chancellor 2020-03-13 12:01 ` Vincenzo Frascino 2020-03-13 12:01 ` Vincenzo Frascino 2020-03-13 12:01 ` Vincenzo Frascino 2020-03-06 16:04 ` [PATCH v2 00/20] Introduce common headers Andy Lutomirski 2020-03-06 16:04 ` Andy Lutomirski 2020-03-09 11:07 ` Vincenzo Frascino 2020-03-09 11:07 ` Vincenzo Frascino 2020-03-09 12:24 ` Mark Rutland 2020-03-09 12:24 ` Mark Rutland 2020-03-09 12:24 ` Mark Rutland 2020-03-09 19:23 ` Thomas Gleixner 2020-03-09 19:23 ` Thomas Gleixner
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20200306133242.26279-5-vincenzo.frascino@arm.com \ --to=vincenzo.frascino@arm.com \ --cc=0x7f454c46@gmail.com \ --cc=arnd@arndb.de \ --cc=avagin@openvz.org \ --cc=bp@alien8.de \ --cc=catalin.marinas@arm.com \ --cc=clang-built-linux@googlegroups.com \ --cc=keescook@chromium.org \ --cc=linux-arch@vger.kernel.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mips@vger.kernel.org \ --cc=linux@armlinux.org.uk \ --cc=luto@kernel.org \ --cc=mingo@redhat.com \ --cc=ndesaulniers@google.com \ --cc=paul.burton@mips.com \ --cc=pcc@google.com \ --cc=salyzyn@android.com \ --cc=sboyd@kernel.org \ --cc=tglx@linutronix.de \ --cc=will.deacon@arm.com \ --cc=x86@kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.