tree e982392c93dca9dbdb8aa5bd587a8f6e07bb0ccf
parent 36c1104e309fe93375e67cdbdb2a980f23965f3b
author Andi Kleen <[EMAIL PROTECTED]> Sun, 17 Apr 2005 05:25:02 -0700
committer Linus Torvalds <[EMAIL PROTECTED]> Sun, 17 Apr 2005 05:25:02 -0700

[PATCH] x86_64: Call do_notify_resume unconditionally in entry.S

This removes some unnecessary code in the assembly files.

Matches i386 behaviour.

In addition don't clear the work check mask after work has been done.
This fixes some theoretical signal/other event losses.

Signed-off-by: Andi Kleen <[EMAIL PROTECTED]>
Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]>

 x86_64/kernel/entry.S |   26 ++++++++------------------
 1 files changed, 8 insertions(+), 18 deletions(-)

Index: arch/x86_64/kernel/entry.S
===================================================================
--- 8efee0a8cbc23668bd9735b67e2674c64914a56c/arch/x86_64/kernel/entry.S  
(mode:100644 sha1:053d6e80c31f6e523841fb0f63dd59aa2886e848)
+++ e982392c93dca9dbdb8aa5bd587a8f6e07bb0ccf/arch/x86_64/kernel/entry.S  
(mode:100644 sha1:12a307100929a7dd5225c5ff53ff1c427aff6bc1)
@@ -197,7 +197,7 @@
  */            
        .globl ret_from_sys_call
 ret_from_sys_call:
-       movl $_TIF_WORK_MASK,%edi
+       movl $_TIF_ALLWORK_MASK,%edi
        /* edi: flagmask */
 sysret_check:          
        GET_THREAD_INFO(%rcx)
@@ -223,18 +223,13 @@
        jmp sysret_check
 
        /* Handle a signal */ 
+       /* edx: work flags (arg3) */
 sysret_signal:
        sti
-       testl $(_TIF_SIGPENDING|_TIF_NOTIFY_RESUME|_TIF_SINGLESTEP),%edx
-       jz    1f
-
-       /* Really a signal */
-       /* edx: work flags (arg3) */
        leaq do_notify_resume(%rip),%rax
        leaq -ARGOFFSET(%rsp),%rdi # &pt_regs -> arg1
        xorl %esi,%esi # oldset -> arg2
        call ptregscall_common
-1:     movl $_TIF_NEED_RESCHED,%edi
        jmp sysret_check
        
        /* Do syscall tracing */
@@ -490,8 +485,6 @@
        jmp retint_check
        
 retint_signal:
-       testl $(_TIF_SIGPENDING|_TIF_NOTIFY_RESUME|_TIF_SINGLESTEP),%edx
-       jz    retint_swapgs
        sti
        SAVE_REST
        movq $-1,ORIG_RAX(%rsp)                         
@@ -500,7 +493,6 @@
        call do_notify_resume
        RESTORE_REST
        cli
-       movl $_TIF_NEED_RESCHED,%edi
        GET_THREAD_INFO(%rcx)   
        jmp retint_check
 
@@ -829,21 +821,19 @@
        cli
        GET_THREAD_INFO(%rcx)
        movl threadinfo_flags(%rcx),%edx
+       testl $_TIF_WORK_MASK,%edx
+       jz paranoid_swapgs
        testl $_TIF_NEED_RESCHED,%edx
        jnz paranoid_resched
-       testl $(_TIF_SIGPENDING|_TIF_NOTIFY_RESUME|_TIF_SINGLESTEP),%edx
-       jnz paranoid_signal
-       jmp paranoid_swapgs
-paranoid_resched:              
-       sti
-       call schedule
-       jmp paranoid_exit
-paranoid_signal:               
        sti
        xorl %esi,%esi /* oldset */
        movq %rsp,%rdi /* &pt_regs */
        call do_notify_resume
        jmp paranoid_exit
+paranoid_resched:
+       sti
+       call schedule
+       jmp paranoid_exit
        CFI_ENDPROC
        
 ENTRY(int3)
-
To unsubscribe from this list: send the line "unsubscribe bk-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to