All of lore.kernel.org
 help / color / mirror / Atom feed
From: Brian Gerst <brgerst@gmail.com>
To: linux-kernel@vger.kernel.org, x86@kernel.org
Cc: Thomas Gleixner <tglx@linutronix.de>,
	Ingo Molnar <mingo@kernel.org>, Borislav Petkov <bp@alien8.de>,
	"H . Peter Anvin" <hpa@zytor.com>,
	Andy Lutomirski <luto@kernel.org>,
	Dominik Brodowski <linux@dominikbrodowski.net>,
	Brian Gerst <brgerst@gmail.com>
Subject: [PATCH v4 17/18] x86: Drop asmlinkage from syscalls
Date: Fri, 13 Mar 2020 15:51:43 -0400	[thread overview]
Message-ID: <20200313195144.164260-18-brgerst@gmail.com> (raw)
In-Reply-To: <20200313195144.164260-1-brgerst@gmail.com>

asmlinkage is no longer required since the syscall ABI is now fully under
x86 architecture control.  This makes the 32-bit native syscalls a bit more
effecient by passing in regs via EAX instead of on the stack.

Signed-off-by: Brian Gerst <brgerst@gmail.com>
Reviewed-by: Dominik Brodowski <linux@dominikbrodowski.net>
Reviewed-by: Andy Lutomirski <luto@kernel.org>
---
 arch/x86/entry/syscall_32.c            |  2 +-
 arch/x86/entry/syscall_64.c            |  2 +-
 arch/x86/entry/syscall_x32.c           |  4 ++--
 arch/x86/include/asm/syscall.h         |  2 +-
 arch/x86/include/asm/syscall_wrapper.h | 31 ++++++++++++--------------
 5 files changed, 19 insertions(+), 22 deletions(-)

diff --git a/arch/x86/entry/syscall_32.c b/arch/x86/entry/syscall_32.c
index 097413c705ad..86eb0d89d46f 100644
--- a/arch/x86/entry/syscall_32.c
+++ b/arch/x86/entry/syscall_32.c
@@ -8,7 +8,7 @@
 #include <asm/unistd.h>
 #include <asm/syscall.h>
 
-#define __SYSCALL_I386(nr, sym) extern asmlinkage long __ia32_##sym(const struct pt_regs *);
+#define __SYSCALL_I386(nr, sym) extern long __ia32_##sym(const struct pt_regs *);
 
 #include <asm/syscalls_32.h>
 #undef __SYSCALL_I386
diff --git a/arch/x86/entry/syscall_64.c b/arch/x86/entry/syscall_64.c
index 66d3e65e3b6b..1594ec72bcbb 100644
--- a/arch/x86/entry/syscall_64.c
+++ b/arch/x86/entry/syscall_64.c
@@ -11,7 +11,7 @@
 #define __SYSCALL_X32(nr, sym)
 #define __SYSCALL_COMMON(nr, sym) __SYSCALL_64(nr, sym)
 
-#define __SYSCALL_64(nr, sym) extern asmlinkage long __x64_##sym(const struct pt_regs *);
+#define __SYSCALL_64(nr, sym) extern long __x64_##sym(const struct pt_regs *);
 #include <asm/syscalls_64.h>
 #undef __SYSCALL_64
 
diff --git a/arch/x86/entry/syscall_x32.c b/arch/x86/entry/syscall_x32.c
index 2fb09efd7b40..3d8d70d3896c 100644
--- a/arch/x86/entry/syscall_x32.c
+++ b/arch/x86/entry/syscall_x32.c
@@ -10,8 +10,8 @@
 
 #define __SYSCALL_64(nr, sym)
 
-#define __SYSCALL_X32(nr, sym) extern asmlinkage long __x32_##sym(const struct pt_regs *);
-#define __SYSCALL_COMMON(nr, sym) extern asmlinkage long __x64_##sym(const struct pt_regs *);
+#define __SYSCALL_X32(nr, sym) extern long __x32_##sym(const struct pt_regs *);
+#define __SYSCALL_COMMON(nr, sym) extern long __x64_##sym(const struct pt_regs *);
 #include <asm/syscalls_64.h>
 #undef __SYSCALL_X32
 #undef __SYSCALL_COMMON
diff --git a/arch/x86/include/asm/syscall.h b/arch/x86/include/asm/syscall.h
index bb427d8cb1ef..7cbf733d11af 100644
--- a/arch/x86/include/asm/syscall.h
+++ b/arch/x86/include/asm/syscall.h
@@ -16,7 +16,7 @@
 #include <asm/thread_info.h>	/* for TS_COMPAT */
 #include <asm/unistd.h>
 
-typedef asmlinkage long (*sys_call_ptr_t)(const struct pt_regs *);
+typedef long (*sys_call_ptr_t)(const struct pt_regs *);
 extern const sys_call_ptr_t sys_call_table[];
 
 #if defined(CONFIG_X86_32)
diff --git a/arch/x86/include/asm/syscall_wrapper.h b/arch/x86/include/asm/syscall_wrapper.h
index 5e13e2caf2e4..e10efa1454bc 100644
--- a/arch/x86/include/asm/syscall_wrapper.h
+++ b/arch/x86/include/asm/syscall_wrapper.h
@@ -8,8 +8,8 @@
 
 struct pt_regs;
 
-extern asmlinkage long __x64_sys_ni_syscall(const struct pt_regs *regs);
-extern asmlinkage long __ia32_sys_ni_syscall(const struct pt_regs *regs);
+extern long __x64_sys_ni_syscall(const struct pt_regs *regs);
+extern long __ia32_sys_ni_syscall(const struct pt_regs *regs);
 
 /*
  * Instead of the generic __SYSCALL_DEFINEx() definition, the x86 version takes
@@ -66,22 +66,21 @@ extern asmlinkage long __ia32_sys_ni_syscall(const struct pt_regs *regs);
 	      ,,(unsigned int)regs->di,,(unsigned int)regs->bp)
 
 #define __SYS_STUB0(abi, name)						\
-	asmlinkage long __##abi##_##name(const struct pt_regs *regs);	\
+	long __##abi##_##name(const struct pt_regs *regs);		\
 	ALLOW_ERROR_INJECTION(__##abi##_##name, ERRNO);			\
-	asmlinkage long __##abi##_##name(const struct pt_regs *regs)	\
+	long __##abi##_##name(const struct pt_regs *regs)		\
 		__alias(__do_##name);
 
 #define __SYS_STUBx(abi, name, ...)					\
-	asmlinkage long __##abi##_##name(const struct pt_regs *regs);	\
+	long __##abi##_##name(const struct pt_regs *regs);		\
 	ALLOW_ERROR_INJECTION(__##abi##_##name, ERRNO);			\
-	asmlinkage long __##abi##_##name(const struct pt_regs *regs)	\
+	long __##abi##_##name(const struct pt_regs *regs)		\
 	{								\
 		return __se_##name(__VA_ARGS__);			\
 	}
 
 #define __COND_SYSCALL(abi, name)					\
-	asmlinkage __weak long						\
-	__##abi##_##name(const struct pt_regs *__unused)		\
+	__weak long __##abi##_##name(const struct pt_regs *__unused)	\
 	{								\
 		return sys_ni_syscall();				\
 	}
@@ -192,11 +191,11 @@ extern asmlinkage long __ia32_sys_ni_syscall(const struct pt_regs *regs);
  * of them.
  */
 #define COMPAT_SYSCALL_DEFINE0(name)					\
-	static asmlinkage long						\
+	static long							\
 	__do_compat_sys_##name(const struct pt_regs *__unused);		\
 	__IA32_COMPAT_SYS_STUB0(name)					\
 	__X32_COMPAT_SYS_STUB0(name)					\
-	static asmlinkage long						\
+	static long							\
 	__do_compat_sys_##name(const struct pt_regs *__unused)
 
 #define COMPAT_SYSCALL_DEFINEx(x, name, ...)					\
@@ -248,12 +247,10 @@ extern asmlinkage long __ia32_sys_ni_syscall(const struct pt_regs *regs);
  */
 #define SYSCALL_DEFINE0(sname)						\
 	SYSCALL_METADATA(_##sname, 0);					\
-	static asmlinkage long						\
-	__do_sys_##sname(const struct pt_regs *__unused);		\
+	static long __do_sys_##sname(const struct pt_regs *__unused);	\
 	__X64_SYS_STUB0(sname)						\
 	__IA32_SYS_STUB0(sname)						\
-	static asmlinkage long						\
-	__do_sys_##sname(const struct pt_regs *__unused)
+	static long __do_sys_##sname(const struct pt_regs *__unused)
 
 #define COND_SYSCALL(name)						\
 	__X64_COND_SYSCALL(name)					\
@@ -268,8 +265,8 @@ extern asmlinkage long __ia32_sys_ni_syscall(const struct pt_regs *regs);
  * For VSYSCALLS, we need to declare these three syscalls with the new
  * pt_regs-based calling convention for in-kernel use.
  */
-asmlinkage long __x64_sys_getcpu(const struct pt_regs *regs);
-asmlinkage long __x64_sys_gettimeofday(const struct pt_regs *regs);
-asmlinkage long __x64_sys_time(const struct pt_regs *regs);
+long __x64_sys_getcpu(const struct pt_regs *regs);
+long __x64_sys_gettimeofday(const struct pt_regs *regs);
+long __x64_sys_time(const struct pt_regs *regs);
 
 #endif /* _ASM_X86_SYSCALL_WRAPPER_H */
-- 
2.24.1


  parent reply	other threads:[~2020-03-13 19:52 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-03-13 19:51 [PATCH v4 00/18] x86: syscall wrapper cleanups Brian Gerst
2020-03-13 19:51 ` [PATCH v4 01/18] x86, syscalls: Refactor SYSCALL_DEFINEx macros Brian Gerst
2020-03-21 15:30   ` [tip: x86/entry] x86/entry: " tip-bot2 for Brian Gerst
2020-03-13 19:51 ` [PATCH v4 02/18] x86, syscalls: Refactor SYSCALL_DEFINE0 macros Brian Gerst
2020-03-21 15:30   ` [tip: x86/entry] x86/entry: " tip-bot2 for Brian Gerst
2020-03-13 19:51 ` [PATCH v4 03/18] x86, syscalls: Refactor COND_SYSCALL macros Brian Gerst
2020-03-21 15:30   ` [tip: x86/entry] x86/entry: " tip-bot2 for Brian Gerst
2020-03-13 19:51 ` [PATCH v4 04/18] x86, syscalls: Refactor SYS_NI macros Brian Gerst
2020-03-21 15:30   ` [tip: x86/entry] x86/entry: " tip-bot2 for Brian Gerst
2020-03-23  8:11   ` [PATCH] x86/entry: Fix SYS_NI() build failure Ingo Molnar
2020-03-23 21:11     ` Brian Gerst
2020-03-13 19:51 ` [PATCH v4 05/18] x86-64: Use syscall wrappers for x32_rt_sigreturn Brian Gerst
2020-03-21 15:30   ` [tip: x86/entry] x86/entry/64: " tip-bot2 for Brian Gerst
2020-03-13 19:51 ` [PATCH v4 06/18] x86-64: Move sys_ni_syscall stub to common.c Brian Gerst
2020-03-21 15:30   ` [tip: x86/entry] x86/entry/64: " tip-bot2 for Brian Gerst
2020-03-13 19:51 ` [PATCH v4 07/18] x86-64: Split X32 syscall table into its own file Brian Gerst
2020-03-14 13:39   ` Dominik Brodowski
2020-03-21 15:30   ` [tip: x86/entry] x86/entry/64: " tip-bot2 for Brian Gerst
2020-03-13 19:51 ` [PATCH v4 08/18] x86: Move max syscall number calculation to syscallhdr.sh Brian Gerst
2020-03-21 15:30   ` [tip: x86/entry] x86/entry: " tip-bot2 for Brian Gerst
2020-03-13 19:51 ` [PATCH v4 09/18] x86-64: Remove ptregs qualifier from syscall table Brian Gerst
2020-03-14 13:42   ` Dominik Brodowski
2020-03-21 15:30   ` [tip: x86/entry] x86/entry/64: " tip-bot2 for Brian Gerst
2020-03-13 19:51 ` [PATCH v4 10/18] x86: Remove syscall qualifier support Brian Gerst
2020-03-14 13:43   ` Dominik Brodowski
2020-03-21 15:30   ` [tip: x86/entry] x86/entry: " tip-bot2 for Brian Gerst
2020-03-13 19:51 ` [PATCH v4 11/18] x86-64: Add __SYSCALL_COMMON() Brian Gerst
2020-03-21 15:30   ` [tip: x86/entry] x86/entry/64: " tip-bot2 for Brian Gerst
2020-03-13 19:51 ` [PATCH v4 12/18] x86: Remove ABI prefixes from functions in syscall tables Brian Gerst
2020-03-21 15:30   ` [tip: x86/entry] x86/entry: " tip-bot2 for Brian Gerst
2020-03-13 19:51 ` [PATCH v4 13/18] x86: Clean up syscall_32.tbl Brian Gerst
2020-03-21 15:30   ` [tip: x86/entry] x86/entry/32: " tip-bot2 for Brian Gerst
2020-03-13 19:51 ` [PATCH v4 14/18] x86, syscalls: Rename 32-bit specific syscalls Brian Gerst
2020-03-14 13:45   ` Dominik Brodowski
2020-03-21 15:30   ` [tip: x86/entry] x86/entry/32: " tip-bot2 for Brian Gerst
2020-03-13 19:51 ` [PATCH v4 15/18] x86: Use IA32-specific wrappers for syscalls taking 64-bit arguments Brian Gerst
2020-03-21 15:30   ` [tip: x86/entry] x86/entry/32: " tip-bot2 for Brian Gerst
2020-06-10 11:29     ` Jiri Slaby
2020-06-10 11:42       ` Jiri Slaby
2020-03-13 19:51 ` [PATCH v4 16/18] x86-32: Enable pt_regs based syscalls Brian Gerst
2020-03-21 15:30   ` [tip: x86/entry] x86/entry/32: " tip-bot2 for Brian Gerst
2020-03-13 19:51 ` Brian Gerst [this message]
2020-03-21 15:30   ` [tip: x86/entry] x86/entry: Drop asmlinkage from syscalls tip-bot2 for Brian Gerst
2020-03-13 19:51 ` [PATCH v4 18/18] x86: Remove unneeded includes Brian Gerst
2020-03-21 15:30   ` [tip: x86/entry] " tip-bot2 for Brian Gerst

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=20200313195144.164260-18-brgerst@gmail.com \
    --to=brgerst@gmail.com \
    --cc=bp@alien8.de \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@dominikbrodowski.net \
    --cc=luto@kernel.org \
    --cc=mingo@kernel.org \
    --cc=tglx@linutronix.de \
    --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: link
Be 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.