MIPS: Merge the identical "return from syscall" per-ABI code
authorAl Viro <viro@zeniv.linux.org.uk>
Sat, 5 May 2012 20:11:35 +0000 (16:11 -0400)
committerRalf Baechle <ralf@linux-mips.org>
Sat, 22 Sep 2012 13:47:31 +0000 (15:47 +0200)
No need to keep 4 copies of that stuff; merged and taken to
entry.S, unused public symbols there killed off.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
arch/mips/kernel/entry.S
arch/mips/kernel/scall32-o32.S
arch/mips/kernel/scall64-64.S
arch/mips/kernel/scall64-n32.S
arch/mips/kernel/scall64-o32.S

index 4b0937f198620d0ceb195de55ea4d4b967268d70..a6c133212003ed96537e6f950ec71c59d98559fb 100644 (file)
@@ -77,7 +77,7 @@ FEXPORT(syscall_exit)
        and     t0, a2, t0
        bnez    t0, syscall_exit_work
 
-FEXPORT(restore_all)                   # restore full frame
+restore_all:                           # restore full frame
 #ifdef CONFIG_MIPS_MT_SMTC
 #ifdef CONFIG_MIPS_MT_SMTC_IM_BACKSTOP
 /* Re-arm any temporarily masked interrupts not explicitly "acked" */
@@ -117,7 +117,7 @@ FEXPORT(restore_all)                        # restore full frame
        RESTORE_TEMP
        RESTORE_AT
        RESTORE_STATIC
-FEXPORT(restore_partial)               # restore partial frame
+restore_partial:               # restore partial frame
 #ifdef CONFIG_TRACE_IRQFLAGS
        SAVE_STATIC
        SAVE_AT
@@ -164,7 +164,13 @@ work_notifysig:                            # deal with pending signals and
        jal     do_notify_resume        # a2 already loaded
        j       resume_userspace
 
-FEXPORT(syscall_exit_work_partial)
+FEXPORT(syscall_exit_partial)
+       local_irq_disable               # make sure need_resched doesn't
+                                       # change between and return
+       LONG_L  a2, TI_FLAGS($28)       # current->work
+       li      t0, _TIF_ALLWORK_MASK
+       and     t0, a2
+       beqz    t0, restore_partial
        SAVE_STATIC
 syscall_exit_work:
        LONG_L  t0, PT_STATUS(sp)               # returning to kernel mode?
index a632bc144efa1b9ca977a582864530e33ee039cb..dfd47dcbd96cdb5d880f6ef0b33a5a14d06522f6 100644 (file)
@@ -69,18 +69,7 @@ stack_done:
 1:     sw      v0, PT_R2(sp)           # result
 
 o32_syscall_exit:
-       local_irq_disable               # make sure need_resched and
-                                       # signals dont change between
-                                       # sampling and return
-       lw      a2, TI_FLAGS($28)       # current->work
-       li      t0, _TIF_ALLWORK_MASK
-       and     t0, a2
-       bnez    t0, o32_syscall_exit_work
-
-       j       restore_partial
-
-o32_syscall_exit_work:
-       j       syscall_exit_work_partial
+       j       syscall_exit_partial
 
 /* ------------------------------------------------------------------------ */
 
index 3b5a5e9ae49c132640c95a87037e48ac95e5b932..b83dc8b2832c65216bee4e69035ca7176a7254cc 100644 (file)
@@ -72,18 +72,7 @@ NESTED(handle_sys64, PT_SIZE, sp)
 1:     sd      v0, PT_R2(sp)           # result
 
 n64_syscall_exit:
-       local_irq_disable               # make sure need_resched and
-                                       # signals dont change between
-                                       # sampling and return
-       LONG_L  a2, TI_FLAGS($28)       # current->work
-       li      t0, _TIF_ALLWORK_MASK
-       and     t0, a2, t0
-       bnez    t0, n64_syscall_exit_work
-
-       j       restore_partial
-
-n64_syscall_exit_work:
-       j       syscall_exit_work_partial
+       j       syscall_exit_partial
 
 /* ------------------------------------------------------------------------ */
 
index 6be6f7020923f1224260a0bf4df420a2d951db7a..0cff8a30475e31d8421661f02af67c95b01b9977 100644 (file)
@@ -70,18 +70,7 @@ NESTED(handle_sysn32, PT_SIZE, sp)
        sd      t1, PT_R0(sp)           # save it for syscall restarting
 1:     sd      v0, PT_R2(sp)           # result
 
-       local_irq_disable               # make sure need_resched and
-                                       # signals dont change between
-                                       # sampling and return
-       LONG_L  a2, TI_FLAGS($28)       # current->work
-       li      t0, _TIF_ALLWORK_MASK
-       and     t0, a2, t0
-       bnez    t0, n32_syscall_exit_work
-
-       j       restore_partial
-
-n32_syscall_exit_work:
-       j       syscall_exit_work_partial
+       j       syscall_exit_partial
 
 /* ------------------------------------------------------------------------ */
 
index 54228553691d60903559706c00bc8a0d16a05b86..9b040e4b84d457d7b714d5f6e65ef6e1a74fbc74 100644 (file)
@@ -99,18 +99,7 @@ NESTED(handle_sys, PT_SIZE, sp)
 1:     sd      v0, PT_R2(sp)           # result
 
 o32_syscall_exit:
-       local_irq_disable               # make need_resched and
-                                       # signals dont change between
-                                       # sampling and return
-       LONG_L  a2, TI_FLAGS($28)
-       li      t0, _TIF_ALLWORK_MASK
-       and     t0, a2, t0
-       bnez    t0, o32_syscall_exit_work
-
-       j       restore_partial
-
-o32_syscall_exit_work:
-       j       syscall_exit_work_partial
+       j       syscall_exit_partial
 
 /* ------------------------------------------------------------------------ */