* [PATCH 0/3] Misc x86 cleanups
@ 2016-05-05 2:44 Brian Gerst
2016-05-05 2:44 ` [PATCH 1/3] x86: Don't save/restore EFLAGS on task switch Brian Gerst
` (2 more replies)
0 siblings, 3 replies; 10+ messages in thread
From: Brian Gerst @ 2016-05-05 2:44 UTC (permalink / raw)
To: x86, linux-kernel
Cc: Ingo Molnar, H. Peter Anvin, Denys Vlasenko, Andy Lutomirski,
Borislav Petkov
Here are a few cleanups from the recent x86 entry code rewrite.
[PATCH 1/3] x86: Don't save/restore EFLAGS on task switch
[PATCH 2/3] x86-32: Remove GET_THREAD_INFO from entry code
[PATCH 3/3] x86-32: Remove asmlinkage_protect
arch/x86/entry/entry_32.S | 7 -------
arch/x86/entry/entry_64.S | 3 ---
arch/x86/include/asm/linkage.h | 34 ----------------------------------
arch/x86/include/asm/switch_to.h | 4 +---
4 files changed, 1 insertion(+), 47 deletions(-)
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 1/3] x86: Don't save/restore EFLAGS on task switch
2016-05-05 2:44 [PATCH 0/3] Misc x86 cleanups Brian Gerst
@ 2016-05-05 2:44 ` Brian Gerst
2016-05-05 3:27 ` Andy Lutomirski
2016-05-05 9:36 ` [tip:x86/asm] x86/entry, sched/x86: " tip-bot for Brian Gerst
2016-05-05 2:44 ` [PATCH 2/3] x86-32: Remove GET_THREAD_INFO from entry code Brian Gerst
2016-05-05 2:44 ` [PATCH 3/3] x86-32: Remove asmlinkage_protect Brian Gerst
2 siblings, 2 replies; 10+ messages in thread
From: Brian Gerst @ 2016-05-05 2:44 UTC (permalink / raw)
To: x86, linux-kernel
Cc: Ingo Molnar, H. Peter Anvin, Denys Vlasenko, Andy Lutomirski,
Borislav Petkov
Now that NT is filtered by the SYSENTER entry code, it is safe to skip saving and
restoring flags on task switch. Also remove a leftover reset of flags on 64-bit
fork.
Signed-off-by: Brian Gerst <brgerst@gmail.com>
---
arch/x86/entry/entry_32.S | 4 ----
arch/x86/entry/entry_64.S | 3 ---
arch/x86/include/asm/switch_to.h | 4 +---
3 files changed, 1 insertion(+), 10 deletions(-)
diff --git a/arch/x86/entry/entry_32.S b/arch/x86/entry/entry_32.S
index 10868aa..c84d99b 100644
--- a/arch/x86/entry/entry_32.S
+++ b/arch/x86/entry/entry_32.S
@@ -209,8 +209,6 @@ ENTRY(ret_from_fork)
call schedule_tail
GET_THREAD_INFO(%ebp)
popl %eax
- pushl $0x0202 # Reset kernel eflags
- popfl
/* When we fork, we trace the syscall return in the child, too. */
movl %esp, %eax
@@ -223,8 +221,6 @@ ENTRY(ret_from_kernel_thread)
call schedule_tail
GET_THREAD_INFO(%ebp)
popl %eax
- pushl $0x0202 # Reset kernel eflags
- popfl
movl PT_EBP(%esp), %eax
call *PT_EBX(%esp)
movl $0, PT_EAX(%esp)
diff --git a/arch/x86/entry/entry_64.S b/arch/x86/entry/entry_64.S
index 6344629..9ee0da1 100644
--- a/arch/x86/entry/entry_64.S
+++ b/arch/x86/entry/entry_64.S
@@ -372,9 +372,6 @@ END(ptregs_\func)
ENTRY(ret_from_fork)
LOCK ; btr $TIF_FORK, TI_flags(%r8)
- pushq $0x0002
- popfq /* reset kernel eflags */
-
call schedule_tail /* rdi: 'prev' task parameter */
testb $3, CS(%rsp) /* from kernel_thread? */
diff --git a/arch/x86/include/asm/switch_to.h b/arch/x86/include/asm/switch_to.h
index 751bf4b..8f321a1 100644
--- a/arch/x86/include/asm/switch_to.h
+++ b/arch/x86/include/asm/switch_to.h
@@ -39,8 +39,7 @@ do { \
*/ \
unsigned long ebx, ecx, edx, esi, edi; \
\
- asm volatile("pushfl\n\t" /* save flags */ \
- "pushl %%ebp\n\t" /* save EBP */ \
+ asm volatile("pushl %%ebp\n\t" /* save EBP */ \
"movl %%esp,%[prev_sp]\n\t" /* save ESP */ \
"movl %[next_sp],%%esp\n\t" /* restore ESP */ \
"movl $1f,%[prev_ip]\n\t" /* save EIP */ \
@@ -49,7 +48,6 @@ do { \
"jmp __switch_to\n" /* regparm call */ \
"1:\t" \
"popl %%ebp\n\t" /* restore EBP */ \
- "popfl\n" /* restore flags */ \
\
/* output parameters */ \
: [prev_sp] "=m" (prev->thread.sp), \
--
2.5.5
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 2/3] x86-32: Remove GET_THREAD_INFO from entry code
2016-05-05 2:44 [PATCH 0/3] Misc x86 cleanups Brian Gerst
2016-05-05 2:44 ` [PATCH 1/3] x86: Don't save/restore EFLAGS on task switch Brian Gerst
@ 2016-05-05 2:44 ` Brian Gerst
2016-05-05 3:27 ` Andy Lutomirski
2016-05-05 9:37 ` [tip:x86/asm] x86/entry/32: Remove GET_THREAD_INFO() " tip-bot for Brian Gerst
2016-05-05 2:44 ` [PATCH 3/3] x86-32: Remove asmlinkage_protect Brian Gerst
2 siblings, 2 replies; 10+ messages in thread
From: Brian Gerst @ 2016-05-05 2:44 UTC (permalink / raw)
To: x86, linux-kernel
Cc: Ingo Molnar, H. Peter Anvin, Denys Vlasenko, Andy Lutomirski,
Borislav Petkov
The entry code used to cache the thread_info pointer in the EBP register, but
all the code that used it has been moved to C. Remove the unused code to
get the pointer.
Signed-off-by: Brian Gerst <brgerst@gmail.com>
---
arch/x86/entry/entry_32.S | 3 ---
1 file changed, 3 deletions(-)
diff --git a/arch/x86/entry/entry_32.S b/arch/x86/entry/entry_32.S
index c84d99b..983e5d3 100644
--- a/arch/x86/entry/entry_32.S
+++ b/arch/x86/entry/entry_32.S
@@ -207,7 +207,6 @@
ENTRY(ret_from_fork)
pushl %eax
call schedule_tail
- GET_THREAD_INFO(%ebp)
popl %eax
/* When we fork, we trace the syscall return in the child, too. */
@@ -219,7 +218,6 @@ END(ret_from_fork)
ENTRY(ret_from_kernel_thread)
pushl %eax
call schedule_tail
- GET_THREAD_INFO(%ebp)
popl %eax
movl PT_EBP(%esp), %eax
call *PT_EBX(%esp)
@@ -247,7 +245,6 @@ ENDPROC(ret_from_kernel_thread)
ret_from_exception:
preempt_stop(CLBR_ANY)
ret_from_intr:
- GET_THREAD_INFO(%ebp)
#ifdef CONFIG_VM86
movl PT_EFLAGS(%esp), %eax # mix EFLAGS and CS
movb PT_CS(%esp), %al
--
2.5.5
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 3/3] x86-32: Remove asmlinkage_protect
2016-05-05 2:44 [PATCH 0/3] Misc x86 cleanups Brian Gerst
2016-05-05 2:44 ` [PATCH 1/3] x86: Don't save/restore EFLAGS on task switch Brian Gerst
2016-05-05 2:44 ` [PATCH 2/3] x86-32: Remove GET_THREAD_INFO from entry code Brian Gerst
@ 2016-05-05 2:44 ` Brian Gerst
2016-05-05 3:29 ` Andy Lutomirski
2016-05-05 9:37 ` [tip:x86/asm] x86/entry/32: Remove asmlinkage_protect() tip-bot for Brian Gerst
2 siblings, 2 replies; 10+ messages in thread
From: Brian Gerst @ 2016-05-05 2:44 UTC (permalink / raw)
To: x86, linux-kernel
Cc: Ingo Molnar, H. Peter Anvin, Denys Vlasenko, Andy Lutomirski,
Borislav Petkov
Now that syscalls are called from C code, which copies the args to new stack
slots instead of overlaying pt_regs, asmlinkage_protect is no longer needed.
Signed-off-by: Brian Gerst <brgerst@gmail.com>
---
arch/x86/include/asm/linkage.h | 34 ----------------------------------
1 file changed, 34 deletions(-)
diff --git a/arch/x86/include/asm/linkage.h b/arch/x86/include/asm/linkage.h
index 79327e9..0ccb26d 100644
--- a/arch/x86/include/asm/linkage.h
+++ b/arch/x86/include/asm/linkage.h
@@ -8,40 +8,6 @@
#ifdef CONFIG_X86_32
#define asmlinkage CPP_ASMLINKAGE __attribute__((regparm(0)))
-
-/*
- * Make sure the compiler doesn't do anything stupid with the
- * arguments on the stack - they are owned by the *caller*, not
- * the callee. This just fools gcc into not spilling into them,
- * and keeps it from doing tailcall recursion and/or using the
- * stack slots for temporaries, since they are live and "used"
- * all the way to the end of the function.
- *
- * NOTE! On x86-64, all the arguments are in registers, so this
- * only matters on a 32-bit kernel.
- */
-#define asmlinkage_protect(n, ret, args...) \
- __asmlinkage_protect##n(ret, ##args)
-#define __asmlinkage_protect_n(ret, args...) \
- __asm__ __volatile__ ("" : "=r" (ret) : "0" (ret), ##args)
-#define __asmlinkage_protect0(ret) \
- __asmlinkage_protect_n(ret)
-#define __asmlinkage_protect1(ret, arg1) \
- __asmlinkage_protect_n(ret, "m" (arg1))
-#define __asmlinkage_protect2(ret, arg1, arg2) \
- __asmlinkage_protect_n(ret, "m" (arg1), "m" (arg2))
-#define __asmlinkage_protect3(ret, arg1, arg2, arg3) \
- __asmlinkage_protect_n(ret, "m" (arg1), "m" (arg2), "m" (arg3))
-#define __asmlinkage_protect4(ret, arg1, arg2, arg3, arg4) \
- __asmlinkage_protect_n(ret, "m" (arg1), "m" (arg2), "m" (arg3), \
- "m" (arg4))
-#define __asmlinkage_protect5(ret, arg1, arg2, arg3, arg4, arg5) \
- __asmlinkage_protect_n(ret, "m" (arg1), "m" (arg2), "m" (arg3), \
- "m" (arg4), "m" (arg5))
-#define __asmlinkage_protect6(ret, arg1, arg2, arg3, arg4, arg5, arg6) \
- __asmlinkage_protect_n(ret, "m" (arg1), "m" (arg2), "m" (arg3), \
- "m" (arg4), "m" (arg5), "m" (arg6))
-
#endif /* CONFIG_X86_32 */
#ifdef __ASSEMBLY__
--
2.5.5
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH 1/3] x86: Don't save/restore EFLAGS on task switch
2016-05-05 2:44 ` [PATCH 1/3] x86: Don't save/restore EFLAGS on task switch Brian Gerst
@ 2016-05-05 3:27 ` Andy Lutomirski
2016-05-05 9:36 ` [tip:x86/asm] x86/entry, sched/x86: " tip-bot for Brian Gerst
1 sibling, 0 replies; 10+ messages in thread
From: Andy Lutomirski @ 2016-05-05 3:27 UTC (permalink / raw)
To: Brian Gerst
Cc: X86 ML, linux-kernel@vger.kernel.org, Ingo Molnar, H. Peter Anvin,
Denys Vlasenko, Borislav Petkov
On Wed, May 4, 2016 at 7:44 PM, Brian Gerst <brgerst@gmail.com> wrote:
> Now that NT is filtered by the SYSENTER entry code, it is safe to skip saving and
> restoring flags on task switch. Also remove a leftover reset of flags on 64-bit
> fork.
Acked-by: Andy Lutomirski <luto@kernel.org>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/3] x86-32: Remove GET_THREAD_INFO from entry code
2016-05-05 2:44 ` [PATCH 2/3] x86-32: Remove GET_THREAD_INFO from entry code Brian Gerst
@ 2016-05-05 3:27 ` Andy Lutomirski
2016-05-05 9:37 ` [tip:x86/asm] x86/entry/32: Remove GET_THREAD_INFO() " tip-bot for Brian Gerst
1 sibling, 0 replies; 10+ messages in thread
From: Andy Lutomirski @ 2016-05-05 3:27 UTC (permalink / raw)
To: Brian Gerst
Cc: X86 ML, linux-kernel@vger.kernel.org, Ingo Molnar, H. Peter Anvin,
Denys Vlasenko, Borislav Petkov
On Wed, May 4, 2016 at 7:44 PM, Brian Gerst <brgerst@gmail.com> wrote:
> The entry code used to cache the thread_info pointer in the EBP register, but
> all the code that used it has been moved to C. Remove the unused code to
> get the pointer.
Acked-by: Andy Lutomirski <luto@kernel.org>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 3/3] x86-32: Remove asmlinkage_protect
2016-05-05 2:44 ` [PATCH 3/3] x86-32: Remove asmlinkage_protect Brian Gerst
@ 2016-05-05 3:29 ` Andy Lutomirski
2016-05-05 9:37 ` [tip:x86/asm] x86/entry/32: Remove asmlinkage_protect() tip-bot for Brian Gerst
1 sibling, 0 replies; 10+ messages in thread
From: Andy Lutomirski @ 2016-05-05 3:29 UTC (permalink / raw)
To: Brian Gerst
Cc: X86 ML, linux-kernel@vger.kernel.org, Ingo Molnar, H. Peter Anvin,
Denys Vlasenko, Borislav Petkov
On Wed, May 4, 2016 at 7:44 PM, Brian Gerst <brgerst@gmail.com> wrote:
> Now that syscalls are called from C code, which copies the args to new stack
> slots instead of overlaying pt_regs, asmlinkage_protect is no longer needed.
Acked-by: Andy Lutomirski <luto@kernel.org>
asmlinkage_protect was pretty gross...
--Andy
^ permalink raw reply [flat|nested] 10+ messages in thread
* [tip:x86/asm] x86/entry, sched/x86: Don't save/restore EFLAGS on task switch
2016-05-05 2:44 ` [PATCH 1/3] x86: Don't save/restore EFLAGS on task switch Brian Gerst
2016-05-05 3:27 ` Andy Lutomirski
@ 2016-05-05 9:36 ` tip-bot for Brian Gerst
1 sibling, 0 replies; 10+ messages in thread
From: tip-bot for Brian Gerst @ 2016-05-05 9:36 UTC (permalink / raw)
To: linux-tip-commits
Cc: linux-kernel, hpa, torvalds, tglx, peterz, bp, luto, luto,
dvlasenk, bp, brgerst, mingo
Commit-ID: 092c74e420952c7cb68141731f2b562245b51eeb
Gitweb: http://git.kernel.org/tip/092c74e420952c7cb68141731f2b562245b51eeb
Author: Brian Gerst <brgerst@gmail.com>
AuthorDate: Wed, 4 May 2016 22:44:36 -0400
Committer: Ingo Molnar <mingo@kernel.org>
CommitDate: Thu, 5 May 2016 08:37:30 +0200
x86/entry, sched/x86: Don't save/restore EFLAGS on task switch
Now that NT is filtered by the SYSENTER entry code, it is safe to skip saving and
restoring flags on task switch. Also remove a leftover reset of flags on 64-bit
fork.
Signed-off-by: Brian Gerst <brgerst@gmail.com>
Acked-by: Andy Lutomirski <luto@kernel.org>
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Borislav Petkov <bp@suse.de>
Cc: Denys Vlasenko <dvlasenk@redhat.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/1462416278-11974-2-git-send-email-brgerst@gmail.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
arch/x86/entry/entry_32.S | 4 ----
arch/x86/entry/entry_64.S | 3 ---
arch/x86/include/asm/switch_to.h | 4 +---
3 files changed, 1 insertion(+), 10 deletions(-)
diff --git a/arch/x86/entry/entry_32.S b/arch/x86/entry/entry_32.S
index 10868aa..c84d99b 100644
--- a/arch/x86/entry/entry_32.S
+++ b/arch/x86/entry/entry_32.S
@@ -209,8 +209,6 @@ ENTRY(ret_from_fork)
call schedule_tail
GET_THREAD_INFO(%ebp)
popl %eax
- pushl $0x0202 # Reset kernel eflags
- popfl
/* When we fork, we trace the syscall return in the child, too. */
movl %esp, %eax
@@ -223,8 +221,6 @@ ENTRY(ret_from_kernel_thread)
call schedule_tail
GET_THREAD_INFO(%ebp)
popl %eax
- pushl $0x0202 # Reset kernel eflags
- popfl
movl PT_EBP(%esp), %eax
call *PT_EBX(%esp)
movl $0, PT_EAX(%esp)
diff --git a/arch/x86/entry/entry_64.S b/arch/x86/entry/entry_64.S
index 6344629..9ee0da1 100644
--- a/arch/x86/entry/entry_64.S
+++ b/arch/x86/entry/entry_64.S
@@ -372,9 +372,6 @@ END(ptregs_\func)
ENTRY(ret_from_fork)
LOCK ; btr $TIF_FORK, TI_flags(%r8)
- pushq $0x0002
- popfq /* reset kernel eflags */
-
call schedule_tail /* rdi: 'prev' task parameter */
testb $3, CS(%rsp) /* from kernel_thread? */
diff --git a/arch/x86/include/asm/switch_to.h b/arch/x86/include/asm/switch_to.h
index 751bf4b..8f321a1 100644
--- a/arch/x86/include/asm/switch_to.h
+++ b/arch/x86/include/asm/switch_to.h
@@ -39,8 +39,7 @@ do { \
*/ \
unsigned long ebx, ecx, edx, esi, edi; \
\
- asm volatile("pushfl\n\t" /* save flags */ \
- "pushl %%ebp\n\t" /* save EBP */ \
+ asm volatile("pushl %%ebp\n\t" /* save EBP */ \
"movl %%esp,%[prev_sp]\n\t" /* save ESP */ \
"movl %[next_sp],%%esp\n\t" /* restore ESP */ \
"movl $1f,%[prev_ip]\n\t" /* save EIP */ \
@@ -49,7 +48,6 @@ do { \
"jmp __switch_to\n" /* regparm call */ \
"1:\t" \
"popl %%ebp\n\t" /* restore EBP */ \
- "popfl\n" /* restore flags */ \
\
/* output parameters */ \
: [prev_sp] "=m" (prev->thread.sp), \
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [tip:x86/asm] x86/entry/32: Remove GET_THREAD_INFO() from entry code
2016-05-05 2:44 ` [PATCH 2/3] x86-32: Remove GET_THREAD_INFO from entry code Brian Gerst
2016-05-05 3:27 ` Andy Lutomirski
@ 2016-05-05 9:37 ` tip-bot for Brian Gerst
1 sibling, 0 replies; 10+ messages in thread
From: tip-bot for Brian Gerst @ 2016-05-05 9:37 UTC (permalink / raw)
To: linux-tip-commits
Cc: bp, torvalds, tglx, mingo, luto, brgerst, hpa, luto, dvlasenk,
peterz, bp, linux-kernel
Commit-ID: 1e17880371f85d3d866962e04ba3567c0654a125
Gitweb: http://git.kernel.org/tip/1e17880371f85d3d866962e04ba3567c0654a125
Author: Brian Gerst <brgerst@gmail.com>
AuthorDate: Wed, 4 May 2016 22:44:37 -0400
Committer: Ingo Molnar <mingo@kernel.org>
CommitDate: Thu, 5 May 2016 08:37:30 +0200
x86/entry/32: Remove GET_THREAD_INFO() from entry code
The entry code used to cache the thread_info pointer in the EBP register,
but all the code that used it has been moved to C. Remove the unused
code to get the pointer.
Signed-off-by: Brian Gerst <brgerst@gmail.com>
Acked-by: Andy Lutomirski <luto@kernel.org>
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Borislav Petkov <bp@suse.de>
Cc: Denys Vlasenko <dvlasenk@redhat.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/1462416278-11974-3-git-send-email-brgerst@gmail.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
arch/x86/entry/entry_32.S | 3 ---
1 file changed, 3 deletions(-)
diff --git a/arch/x86/entry/entry_32.S b/arch/x86/entry/entry_32.S
index c84d99b..983e5d3 100644
--- a/arch/x86/entry/entry_32.S
+++ b/arch/x86/entry/entry_32.S
@@ -207,7 +207,6 @@
ENTRY(ret_from_fork)
pushl %eax
call schedule_tail
- GET_THREAD_INFO(%ebp)
popl %eax
/* When we fork, we trace the syscall return in the child, too. */
@@ -219,7 +218,6 @@ END(ret_from_fork)
ENTRY(ret_from_kernel_thread)
pushl %eax
call schedule_tail
- GET_THREAD_INFO(%ebp)
popl %eax
movl PT_EBP(%esp), %eax
call *PT_EBX(%esp)
@@ -247,7 +245,6 @@ ENDPROC(ret_from_kernel_thread)
ret_from_exception:
preempt_stop(CLBR_ANY)
ret_from_intr:
- GET_THREAD_INFO(%ebp)
#ifdef CONFIG_VM86
movl PT_EFLAGS(%esp), %eax # mix EFLAGS and CS
movb PT_CS(%esp), %al
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [tip:x86/asm] x86/entry/32: Remove asmlinkage_protect()
2016-05-05 2:44 ` [PATCH 3/3] x86-32: Remove asmlinkage_protect Brian Gerst
2016-05-05 3:29 ` Andy Lutomirski
@ 2016-05-05 9:37 ` tip-bot for Brian Gerst
1 sibling, 0 replies; 10+ messages in thread
From: tip-bot for Brian Gerst @ 2016-05-05 9:37 UTC (permalink / raw)
To: linux-tip-commits
Cc: luto, dvlasenk, bp, peterz, linux-kernel, brgerst, luto, bp,
torvalds, tglx, hpa, mingo
Commit-ID: 0676b4e0a1940a6b7ae3156bd212ca9032a29c30
Gitweb: http://git.kernel.org/tip/0676b4e0a1940a6b7ae3156bd212ca9032a29c30
Author: Brian Gerst <brgerst@gmail.com>
AuthorDate: Wed, 4 May 2016 22:44:38 -0400
Committer: Ingo Molnar <mingo@kernel.org>
CommitDate: Thu, 5 May 2016 08:37:31 +0200
x86/entry/32: Remove asmlinkage_protect()
Now that syscalls are called from C code, which copies the args to
new stack slots instead of overlaying pt_regs, asmlinkage_protect()
is no longer needed.
Signed-off-by: Brian Gerst <brgerst@gmail.com>
Acked-by: Andy Lutomirski <luto@kernel.org>
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Borislav Petkov <bp@suse.de>
Cc: Denys Vlasenko <dvlasenk@redhat.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/1462416278-11974-4-git-send-email-brgerst@gmail.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
arch/x86/include/asm/linkage.h | 34 ----------------------------------
1 file changed, 34 deletions(-)
diff --git a/arch/x86/include/asm/linkage.h b/arch/x86/include/asm/linkage.h
index 79327e9..0ccb26d 100644
--- a/arch/x86/include/asm/linkage.h
+++ b/arch/x86/include/asm/linkage.h
@@ -8,40 +8,6 @@
#ifdef CONFIG_X86_32
#define asmlinkage CPP_ASMLINKAGE __attribute__((regparm(0)))
-
-/*
- * Make sure the compiler doesn't do anything stupid with the
- * arguments on the stack - they are owned by the *caller*, not
- * the callee. This just fools gcc into not spilling into them,
- * and keeps it from doing tailcall recursion and/or using the
- * stack slots for temporaries, since they are live and "used"
- * all the way to the end of the function.
- *
- * NOTE! On x86-64, all the arguments are in registers, so this
- * only matters on a 32-bit kernel.
- */
-#define asmlinkage_protect(n, ret, args...) \
- __asmlinkage_protect##n(ret, ##args)
-#define __asmlinkage_protect_n(ret, args...) \
- __asm__ __volatile__ ("" : "=r" (ret) : "0" (ret), ##args)
-#define __asmlinkage_protect0(ret) \
- __asmlinkage_protect_n(ret)
-#define __asmlinkage_protect1(ret, arg1) \
- __asmlinkage_protect_n(ret, "m" (arg1))
-#define __asmlinkage_protect2(ret, arg1, arg2) \
- __asmlinkage_protect_n(ret, "m" (arg1), "m" (arg2))
-#define __asmlinkage_protect3(ret, arg1, arg2, arg3) \
- __asmlinkage_protect_n(ret, "m" (arg1), "m" (arg2), "m" (arg3))
-#define __asmlinkage_protect4(ret, arg1, arg2, arg3, arg4) \
- __asmlinkage_protect_n(ret, "m" (arg1), "m" (arg2), "m" (arg3), \
- "m" (arg4))
-#define __asmlinkage_protect5(ret, arg1, arg2, arg3, arg4, arg5) \
- __asmlinkage_protect_n(ret, "m" (arg1), "m" (arg2), "m" (arg3), \
- "m" (arg4), "m" (arg5))
-#define __asmlinkage_protect6(ret, arg1, arg2, arg3, arg4, arg5, arg6) \
- __asmlinkage_protect_n(ret, "m" (arg1), "m" (arg2), "m" (arg3), \
- "m" (arg4), "m" (arg5), "m" (arg6))
-
#endif /* CONFIG_X86_32 */
#ifdef __ASSEMBLY__
^ permalink raw reply related [flat|nested] 10+ messages in thread
end of thread, other threads:[~2016-05-05 9:38 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-05-05 2:44 [PATCH 0/3] Misc x86 cleanups Brian Gerst
2016-05-05 2:44 ` [PATCH 1/3] x86: Don't save/restore EFLAGS on task switch Brian Gerst
2016-05-05 3:27 ` Andy Lutomirski
2016-05-05 9:36 ` [tip:x86/asm] x86/entry, sched/x86: " tip-bot for Brian Gerst
2016-05-05 2:44 ` [PATCH 2/3] x86-32: Remove GET_THREAD_INFO from entry code Brian Gerst
2016-05-05 3:27 ` Andy Lutomirski
2016-05-05 9:37 ` [tip:x86/asm] x86/entry/32: Remove GET_THREAD_INFO() " tip-bot for Brian Gerst
2016-05-05 2:44 ` [PATCH 3/3] x86-32: Remove asmlinkage_protect Brian Gerst
2016-05-05 3:29 ` Andy Lutomirski
2016-05-05 9:37 ` [tip:x86/asm] x86/entry/32: Remove asmlinkage_protect() tip-bot for Brian Gerst
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox