* [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
* 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
* [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
* [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
* 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
* [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
* [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 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/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