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 v2 8/8] x86: Drop asmlinkage from syscalls
Date: Mon, 24 Feb 2020 13:17:57 -0500 [thread overview]
Message-ID: <20200224181757.724961-9-brgerst@gmail.com> (raw)
In-Reply-To: <20200224181757.724961-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>
---
arch/x86/entry/syscall_32.c | 2 +-
arch/x86/entry/syscall_64.c | 2 +-
arch/x86/include/asm/syscall.h | 2 +-
arch/x86/include/asm/syscall_wrapper.h | 31 ++++++++++++--------------
4 files changed, 17 insertions(+), 20 deletions(-)
diff --git a/arch/x86/entry/syscall_32.c b/arch/x86/entry/syscall_32.c
index 7af944b686ef..4e0113f3d4e8 100644
--- a/arch/x86/entry/syscall_32.c
+++ b/arch/x86/entry/syscall_32.c
@@ -8,7 +8,7 @@
#include <asm/asm-offsets.h>
#include <asm/syscall.h>
-#define __SYSCALL_I386(nr, sym, qual) extern asmlinkage long sym(const struct pt_regs *);
+#define __SYSCALL_I386(nr, sym, qual) extern long 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 058dc1b73e96..3331a71eec77 100644
--- a/arch/x86/entry/syscall_64.c
+++ b/arch/x86/entry/syscall_64.c
@@ -8,7 +8,7 @@
#include <asm/asm-offsets.h>
#include <asm/syscall.h>
-#define __SYSCALL_64(nr, sym, qual) extern asmlinkage long sym(const struct pt_regs *);
+#define __SYSCALL_64(nr, sym, qual) extern long sym(const struct pt_regs *);
#define __SYSCALL_X32(nr, sym, qual) __SYSCALL_64(nr, sym, qual)
#include <asm/syscalls_64.h>
#undef __SYSCALL_64
diff --git a/arch/x86/include/asm/syscall.h b/arch/x86/include/asm/syscall.h
index 576178aefa01..a0b189714bac 100644
--- a/arch/x86/include/asm/syscall.h
+++ b/arch/x86/include/asm/syscall.h
@@ -17,7 +17,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 f793f3b990a8..9b399f073642 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(); \
}
@@ -183,11 +182,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(compat_sys_##name) \
__X32_COMPAT_SYS_STUB0(compat_sys_##name) \
- static asmlinkage long \
+ static long \
__do_compat_sys_##name(const struct pt_regs *__unused)
#define COMPAT_SYSCALL_DEFINEx(x, name, ...) \
@@ -244,12 +243,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(sys_##sname) \
__IA32_SYS_STUB0(sys_##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(sys_##name) \
@@ -264,8 +261,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
prev parent reply other threads:[~2020-02-24 18:18 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-02-24 18:17 [PATCH v2 0/8] Enable pt_regs based syscalls for x86-32 native Brian Gerst
2020-02-24 18:17 ` [PATCH v2 1/8] x86, syscalls: Refactor SYSCALL_DEFINEx macros Brian Gerst
2020-02-25 19:42 ` Dominik Brodowski
2020-02-24 18:17 ` [PATCH v2 2/8] x86, syscalls: Refactor SYSCALL_DEFINE0 macros Brian Gerst
2020-02-25 19:47 ` Dominik Brodowski
2020-02-24 18:17 ` [PATCH v2 3/8] x86, syscalls: Refactor COND_SYSCALL macros Brian Gerst
2020-02-25 19:49 ` Dominik Brodowski
2020-02-24 18:17 ` [PATCH v2 4/8] x86, syscalls: Refactor SYS_NI macros Brian Gerst
2020-02-25 21:11 ` Dominik Brodowski
2020-02-24 18:17 ` [PATCH v2 5/8] x86: Move 32-bit compat syscalls to common location Brian Gerst
2020-02-25 21:18 ` Dominik Brodowski
2020-02-24 18:17 ` [PATCH v2 6/8] x86-32: Enable syscall wrappers Brian Gerst
2020-02-24 18:17 ` [PATCH v2 7/8] x86-64: Use syscall wrappers for x32_rt_sigreturn Brian Gerst
2020-02-24 18:17 ` Brian Gerst [this message]
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=20200224181757.724961-9-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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome