This commit was manufactured by cvs2svn to create tag
[linux-2.6.git] / arch / mips / kernel / scall64-64.S
index d0e60b8..3125b63 100644 (file)
@@ -18,7 +18,6 @@
 #include <asm/sysmips.h>
 #include <asm/thread_info.h>
 #include <asm/unistd.h>
-#include <asm/war.h>
 
 #ifndef CONFIG_BINFMT_ELF32
 /* Neither O32 nor N32, so define handle_sys here */
@@ -38,7 +37,8 @@ NESTED(handle_sys64, PT_SIZE, sp)
        .set    at
 #endif
 
-       dsubu   t0, v0, __NR_64_Linux   # check syscall number
+FEXPORT(__handle_sys64)
+       subu    t0, v0, __NR_64_Linux   # check syscall number
        sltiu   t0, t0, __NR_64_Linux_syscalls + 1
 #if !defined(CONFIG_MIPS32_O32) && !defined(CONFIG_MIPS32_N32)
        ld      t1, PT_EPC(sp)          # skip syscall on return
@@ -63,12 +63,12 @@ NESTED(handle_sys64, PT_SIZE, sp)
        sd      t0, PT_R7(sp)           # set error flag
        beqz    t0, 1f
 
-       dnegu   v0                      # error
+       negu    v0                      # error
        sd      v0, PT_R0(sp)           # set flag for syscall
                                        # restarting
 1:     sd      v0, PT_R2(sp)           # result
 
-n64_syscall_exit:
+syscall_exit:
        local_irq_disable               # make sure need_resched and
                                        # signals dont change between
                                        # sampling and return
@@ -86,25 +86,24 @@ n64_syscall_exit_work:
 
 syscall_trace_entry:
        SAVE_STATIC
-       move    s0, t2
+       sd      t2,PT_R1(sp)
        move    a0, sp
        li      a1, 0
        jal     do_syscall_trace
+       ld      t2,PT_R1(sp)
 
        ld      a0, PT_R4(sp)           # Restore argument registers
        ld      a1, PT_R5(sp)
        ld      a2, PT_R6(sp)
        ld      a3, PT_R7(sp)
-       ld      a4, PT_R8(sp)
-       ld      a5, PT_R9(sp)
-       jalr    s0
+       jalr    t2
 
        li      t0, -EMAXERRNO - 1      # error?
        sltu    t0, t0, v0
        sd      t0, PT_R7(sp)           # set error flag
        beqz    t0, 1f
 
-       dnegu   v0                      # error
+       negu    v0                      # error
        sd      v0, PT_R0(sp)           # set flag for syscall restarting
 1:     sd      v0, PT_R2(sp)           # result
 
@@ -116,7 +115,7 @@ illegal_syscall:
        sd      v0, PT_R2(sp)
        li      t0, 1                           # set error flag
        sd      t0, PT_R7(sp)
-       j       n64_syscall_exit
+       j       syscall_exit
        END(handle_sys64)
 
        LEAF(mips_atomic_set)
@@ -134,11 +133,7 @@ illegal_syscall:
 1:     ll      v0, (a1)
        move    a0, a2
 2:     sc      a0, (a1)
-#if R10000_LLSC_WAR
-       beqzl   a0, 1b
-#else
        beqz    a0, 1b
-#endif
 
        .section __ex_table,"a"
        PTR     1b, bad_stack
@@ -178,7 +173,7 @@ illegal_syscall:
        and     t0, a2, t0
        bnez    t0, 1f
 
-       j       n64_syscall_exit
+       b       syscall_exit
 
 1:     SAVE_STATIC
        move    a0, sp
@@ -203,6 +198,17 @@ bad_alignment:
        j       _sys_sysmips
        END(sys_sysmips)
 
+       LEAF(sys_syscall)                       /* Quick'n'dirty ... */
+       move    v0, a0
+       move    a0, a1
+       move    a1, a2
+       move    a2, a3
+       move    a3, a4
+       move    a4, a5
+       move    a5, a6
+       j       __handle_sys64
+       END(sys_syscall)
+
        .align  3
 sys_call_table:
        PTR     sys_read                        /* 5000 */
@@ -432,7 +438,7 @@ sys_call_table:
        PTR     sys_clock_nanosleep
        PTR     sys_tgkill                      /* 5225 */
        PTR     sys_utimes
-       PTR     sys_mbind
+       PTR     sys_ni_syscall                  /* sys_mbind */
        PTR     sys_ni_syscall                  /* sys_get_mempolicy */
        PTR     sys_ni_syscall                  /* sys_set_mempolicy */
        PTR     sys_mq_open                     /* 5230 */
@@ -442,8 +448,3 @@ sys_call_table:
        PTR     sys_mq_notify
        PTR     sys_mq_getsetattr               /* 5235 */
        PTR     sys_ni_syscall                  /* sys_vserver */
-       PTR     sys_waitid
-       PTR     sys_ni_syscall                  /* available, was setaltroot */
-       PTR     sys_add_key
-       PTR     sys_request_key                 /* 5240 */
-       PTR     sys_keyctl