]> Pileus Git - ~andy/linux/commitdiff
CRIS: Add missing syscalls
authorJesper Nilsson <jespern@axis.com>
Thu, 9 Jan 2014 10:16:37 +0000 (11:16 +0100)
committerJesper Nilsson <jespern@axis.com>
Thu, 9 Jan 2014 11:48:17 +0000 (12:48 +0100)
Complete list of syscalls for CRISv10 and CRISv32.
Clean up some whitespace at the same time.

Signed-off-by: Jesper Nilsson <jesper.nilsson@axis.com>
arch/cris/arch-v10/kernel/entry.S
arch/cris/arch-v32/kernel/entry.S
arch/cris/include/asm/unistd.h
arch/cris/include/uapi/asm/unistd.h

index 897bba67bf7afed9a0b392db5d652349ae352f6c..def0a530e9d4e35a82825a4a43471e3be76ab781 100644 (file)
@@ -13,8 +13,8 @@
  * after a timer-interrupt and after each system call.
  *
  * Stack layout in 'ret_from_system_call':
- *     ptrace needs to have all regs on the stack.
- *     if the order here is changed, it needs to be 
+ *     ptrace needs to have all regs on the stack.
+ *     if the order here is changed, it needs to be
  *     updated in fork.c:copy_process, signal.c:do_signal,
  *     ptrace.c and ptrace.h
  *
@@ -31,7 +31,7 @@
 #include <asm/pgtable.h>
 
        ;; functions exported from this file
-       
+
        .globl system_call
        .globl ret_from_intr
        .globl ret_from_fork
        .globl do_sigtrap
        .globl gdb_handle_breakpoint
        .globl sys_call_table
-       
+
        ;; below are various parts of system_call which are not in the fast-path
-       
-#ifdef CONFIG_PREEMPT  
+
+#ifdef CONFIG_PREEMPT
        ; Check if preemptive kernel scheduling should be done
 _resume_kernel:
        di
@@ -74,7 +74,7 @@ _need_resched:
        nop
 #else
 #define _resume_kernel _Rexit
-#endif 
+#endif
 
        ; Called at exit from fork. schedule_tail must be called to drop
        ; spinlock if CONFIG_PREEMPT
@@ -91,16 +91,16 @@ ret_from_kernel_thread:
        ba  ret_from_sys_call
 
 ret_from_intr:
-       ;; check for resched if preemptive kernel or if we're going back to user-mode 
+       ;; check for resched if preemptive kernel or if we're going back to user-mode
        ;; this test matches the user_regs(regs) macro
        ;; we cannot simply test $dccr, because that does not necessarily
        ;; reflect what mode we'll return into.
-       
+
        move.d  [$sp + PT_dccr], $r0; regs->dccr
        btstq   8, $r0          ; U-flag
        bpl     _resume_kernel
-       ; Note that di below is in delay slot 
-       
+       ; Note that di below is in delay slot
+
 _resume_userspace:
        di                      ; so need_resched and sigpending don't change
 
@@ -113,7 +113,7 @@ _resume_userspace:
        nop
        ba      _Rexit
        nop
-       
+
        ;; The system_call is called by a BREAK instruction, which works like
        ;; an interrupt call but it stores the return PC in BRP instead of IRP.
        ;; Since we dont really want to have two epilogues (one for system calls
@@ -123,7 +123,7 @@ _resume_userspace:
        ;;
        ;; Since we can't have system calls inside interrupts, it should not matter
        ;; that we don't stack IRP.
-       ;; 
+       ;;
        ;; In r9 we have the wanted syscall number. Arguments come in r10,r11,r12,r13,mof,srp
        ;;
        ;; This function looks on the _surface_ like spaghetti programming, but it's
@@ -140,7 +140,7 @@ system_call:
        movem   $r13, [$sp]     ; push r0-r13
        push    $r10            ; push orig_r10
        clear.d [$sp=$sp-4]     ; frametype == 0, normal stackframe
-       
+
        movs.w  -ENOSYS, $r0
        move.d  $r0, [$sp+PT_r10]       ; put the default return value in r10 in the frame
 
@@ -148,17 +148,17 @@ system_call:
 
        movs.w  -8192, $r0      ; THREAD_SIZE == 8192
        and.d   $sp, $r0
-       
+
        move.d  [$r0+TI_flags], $r0
        btstq   TIF_SYSCALL_TRACE, $r0
        bmi     _syscall_trace_entry
-       nop     
+       nop
 
-_syscall_traced:       
+_syscall_traced:
 
        ;; check for sanity in the requested syscall number
-       
-       cmpu.w  NR_syscalls, $r9        
+
+       cmpu.w  NR_syscalls, $r9
        bcc     ret_from_sys_call
        lslq    2, $r9          ;  multiply by 4, in the delay slot
 
@@ -166,28 +166,28 @@ _syscall_traced:
        ;; of the register structure itself. some syscalls need this.
 
        push    $sp
-       
+
        ;; the parameter carrying registers r10, r11, r12 and 13 are intact.
-       ;; the fifth and sixth parameters (if any) was in mof and srp 
+       ;; the fifth and sixth parameters (if any) was in mof and srp
        ;; respectively, and we need to put them on the stack.
 
        push    $srp
        push    $mof
-       
+
        jsr     [$r9+sys_call_table]    ; actually do the system call
        addq    3*4, $sp                ; pop the mof, srp and regs parameters
        move.d  $r10, [$sp+PT_r10]      ; save the return value
 
        moveq   1, $r9          ; "parameter" to ret_from_sys_call to show it was a sys call
-       
+
        ;; fall through into ret_from_sys_call to return
-       
+
 ret_from_sys_call:
        ;; r9 is a parameter - if >=1 we came from a syscall, if 0, from an irq
-               
+
        ;; get the current task-struct pointer (see top for defs)
 
-       movs.w  -8192, $r0      ; THREAD_SIZE == 8192 
+       movs.w  -8192, $r0      ; THREAD_SIZE == 8192
        and.d   $sp, $r0
 
        di                      ; make sure need_resched and sigpending don't change
@@ -202,7 +202,7 @@ _Rexit:
        bne     _RBFexit        ; was not CRIS_FRAME_NORMAL, handle otherwise
        addq    4, $sp          ; skip orig_r10, in delayslot
        movem   [$sp+], $r13    ; registers r0-r13
-       pop     $mof            ; multiply overflow register 
+       pop     $mof            ; multiply overflow register
        pop     $dccr           ; condition codes
        pop     $srp            ; subroutine return pointer
        ;; now we have a 4-word SBFS frame which we do not want to restore
@@ -216,14 +216,14 @@ _Rexit:
 
 _RBFexit:
        movem   [$sp+], $r13    ; registers r0-r13, in delay slot
-       pop     $mof            ; multiply overflow register 
+       pop     $mof            ; multiply overflow register
        pop     $dccr           ; condition codes
        pop     $srp            ; subroutine return pointer
        rbf     [$sp+]          ; return by popping the CPU status
 
        ;; We get here after doing a syscall if extra work might need to be done
        ;; perform syscall exit tracing if needed
-       
+
 _syscall_exit_work:
        ;; $r0 contains current at this point and irq's are disabled
 
@@ -231,22 +231,22 @@ _syscall_exit_work:
        btstq   TIF_SYSCALL_TRACE, $r1
        bpl     _work_pending
        nop
-       
+
        ei
 
        move.d  $r9, $r1        ; preserve r9
        jsr     do_syscall_trace
        move.d  $r1, $r9
-       
+
        ba      _resume_userspace
        nop
-       
+
 _work_pending:
        move.d  [$r0+TI_flags], $r1
        btstq   TIF_NEED_RESCHED, $r1
        bpl     _work_notifysig ; was neither trace nor sched, must be signal/notify
        nop
-       
+
 _work_resched:
        move.d  $r9, $r1        ; preserve r9
        jsr     schedule
@@ -268,17 +268,17 @@ _work_notifysig:
        move.d  $sp, $r11       ; the regs param
        move.d  $r1, $r12       ; the thread_info_flags parameter
        jsr     do_notify_resume
-       
+
        ba _Rexit
        nop
 
        ;; We get here as a sidetrack when we've entered a syscall with the
        ;; trace-bit set. We need to call do_syscall_trace and then continue
        ;; with the call.
-       
+
 _syscall_trace_entry:
        ;; PT_r10 in the frame contains -ENOSYS as required, at this point
-       
+
        jsr     do_syscall_trace
 
        ;; now re-enter the syscall code to do the syscall itself
@@ -292,10 +292,10 @@ _syscall_trace_entry:
        move.d  [$sp+PT_r13],      $r13
        move    [$sp+PT_mof],      $mof
        move    [$sp+PT_srp],      $srp
-       
+
        ba      _syscall_traced
        nop
-       
+
        ;; resume performs the actual task-switching, by switching stack pointers
        ;; input arguments: r10 = prev, r11 = next, r12 = thread offset in task struct
        ;; returns old current in r10
@@ -303,29 +303,29 @@ _syscall_trace_entry:
        ;; TODO:  see the i386 version. The switch_to which calls resume in our version
        ;;        could really be an inline asm of this.
 
-resume:        
-       push    $srp                     ; we keep the old/new PC on the stack 
+resume:
+       push    $srp                     ; we keep the old/new PC on the stack
        add.d   $r12, $r10               ; r10 = current tasks tss
        move    $dccr, [$r10+THREAD_dccr]; save irq enable state
        di
 
        move    $usp, [$r10+ THREAD_usp] ; save user-mode stackpointer
-       
+
        ;; See copy_thread for the reason why register R9 is saved.
        subq    10*4, $sp
        movem   $r9, [$sp]               ; save non-scratch registers and R9.
-       
+
        move.d  $sp, [$r10+THREAD_ksp]   ; save the kernel stack pointer for the old task
        move.d  $sp, $r10                ; return last running task in r10
        and.d   -8192, $r10              ; get thread_info from stackpointer
-       move.d  [$r10+TI_task], $r10     ; get task  
+       move.d  [$r10+TI_task], $r10     ; get task
        add.d   $r12, $r11               ; find the new tasks tss
        move.d  [$r11+THREAD_ksp], $sp   ; switch into the new stackframe by restoring kernel sp
 
        movem   [$sp+], $r9              ; restore non-scratch registers and R9.
 
        move    [$r11+THREAD_usp], $usp ; restore user-mode stackpointer
-       
+
        move    [$r11+THREAD_dccr], $dccr ; restore irq enable status
        jump    [$sp+]                   ; restore PC
 
@@ -401,7 +401,7 @@ mmu_bus_fault:
        push    $r10            ; frametype == 1, BUSFAULT frame type
 
        move.d  $sp, $r10       ; pt_regs argument to handle_mmu_bus_fault
-               
+
        jsr     handle_mmu_bus_fault  ; in arch/cris/arch-v10/mm/fault.c
 
        ;; now we need to return through the normal path, we cannot just
@@ -410,10 +410,10 @@ mmu_bus_fault:
        ;; whatever.
 
        moveq   0, $r9          ; busfault is equivalent to an irq
-               
+
        ba      ret_from_intr
        nop
-               
+
        ;; special handlers for breakpoint and NMI
 hwbreakpoint:
        push    $dccr
@@ -429,7 +429,7 @@ hwbreakpoint:
        pop     $dccr
        retb
        nop
-       
+
 IRQ1_interrupt:
        ;; this prologue MUST match the one in irq.h and the struct in ptregs.h!!!
        move    $brp,[$sp=$sp-16]; instruction pointer and room for a fake SBFS frame
@@ -500,7 +500,7 @@ Watchdog_bite:
        move.d  $r10, [$r11]
 
 #endif
-       
+
 ;; Note that we don't do "setf m" here (or after two necessary NOPs),
 ;; since *not* doing that saves us from re-entrancy checks.  We don't want
 ;; to get here again due to possible subsequent NMIs; we want the watchdog
@@ -525,14 +525,14 @@ _watchdogmsg:
 
 #endif /* CONFIG_ETRAX_WATCHDOG and not CONFIG_SVINTO_SIM */
 
-spurious_interrupt:    
+spurious_interrupt:
        di
        jump hard_reset_now
 
        ;; this handles the case when multiple interrupts arrive at the same time
        ;; we jump to the first set interrupt bit in a priority fashion
        ;; the hardware will call the unserved interrupts after the handler finishes
-       
+
 multiple_interrupt:
        ;; this prologue MUST match the one in irq.h and the struct in ptregs.h!!!
        move    $irp,[$sp=$sp-16]; instruction pointer and room for a fake SBFS frame
@@ -551,7 +551,7 @@ multiple_interrupt:
        jump    ret_from_intr
 
 do_sigtrap:
-       ;; 
+       ;;
        ;; SIGTRAP the process that executed the break instruction.
        ;; Make a frame that Rexit in entry.S expects.
        ;;
@@ -568,30 +568,30 @@ do_sigtrap:
        movs.w  -8192,$r9               ; THREAD_SIZE == 8192
        and.d   $sp, $r9
        move.d  [$r9+TI_task], $r10
-       move.d  [$r10+TASK_pid], $r10   ; current->pid as arg1. 
+       move.d  [$r10+TASK_pid], $r10   ; current->pid as arg1.
        moveq   5, $r11                 ; SIGTRAP as arg2.
-       jsr     sys_kill       
+       jsr     sys_kill
        jump    ret_from_intr           ; Use the return routine for interrupts.
 
-gdb_handle_breakpoint: 
+gdb_handle_breakpoint:
        push    $dccr
        push    $r0
 #ifdef CONFIG_ETRAX_KGDB
-       move    $dccr, $r0              ; U-flag not affected by previous insns. 
+       move    $dccr, $r0              ; U-flag not affected by previous insns.
        btstq   8, $r0                  ; Test the U-flag.
-       bmi     _ugdb_handle_breakpoint ; Go to user mode debugging. 
-       nop                             ; Empty delay slot (cannot pop r0 here). 
+       bmi     _ugdb_handle_breakpoint ; Go to user mode debugging.
+       nop                             ; Empty delay slot (cannot pop r0 here).
        pop     $r0                     ; Restore r0.
-       ba      kgdb_handle_breakpoint  ; Go to kernel debugging. 
+       ba      kgdb_handle_breakpoint  ; Go to kernel debugging.
        pop     $dccr                   ; Restore dccr in delay slot.
 #endif
-       
-_ugdb_handle_breakpoint:       
+
+_ugdb_handle_breakpoint:
        move    $brp, $r0               ; Use r0 temporarily for calculation.
        subq    2, $r0                  ; Set to address of previous instruction.
        move    $r0, $brp
-       pop     $r0                     ; Restore r0. 
-       ba      do_sigtrap              ; SIGTRAP the offending process. 
+       pop     $r0                     ; Restore r0.
+       ba      do_sigtrap              ; SIGTRAP the offending process.
        pop     $dccr                   ; Restore dccr in delay slot.
 
        .data
@@ -602,7 +602,7 @@ hw_bp_trig_ptr:
        .dword hw_bp_trigs
 
        .section .rodata,"a"
-sys_call_table:        
+sys_call_table:
        .long sys_restart_syscall       /* 0 - old "setup()" system call, used for restarting */
        .long sys_exit
        .long sys_fork
@@ -713,7 +713,7 @@ sys_call_table:
        .long sys_newlstat
        .long sys_newfstat
        .long sys_ni_syscall    /* old sys_uname holder */
-       .long sys_ni_syscall    /* sys_iopl in i386 */
+       .long sys_ni_syscall    /* 110 */ /* sys_iopl in i386 */
        .long sys_vhangup
        .long sys_ni_syscall    /* old "idle" system call */
        .long sys_ni_syscall    /* vm86old in i386 */
@@ -730,7 +730,7 @@ sys_call_table:
        .long sys_adjtimex
        .long sys_mprotect      /* 125 */
        .long sys_sigprocmask
-       .long sys_ni_syscall    /* old "create_module" */ 
+       .long sys_ni_syscall    /* old "create_module" */
        .long sys_init_module
        .long sys_delete_module
        .long sys_ni_syscall    /* 130: old "get_kernel_syms" */
@@ -795,7 +795,7 @@ sys_call_table:
        .long sys_ni_syscall    /* streams2 */
        .long sys_vfork         /* 190 */
        .long sys_getrlimit
-       .long sys_mmap2
+       .long sys_mmap2         /* mmap_pgoff */
        .long sys_truncate64
        .long sys_ftruncate64
        .long sys_stat64        /* 195 */
@@ -861,21 +861,21 @@ sys_call_table:
        .long sys_epoll_ctl     /* 255 */
        .long sys_epoll_wait
        .long sys_remap_file_pages
-       .long sys_set_tid_address
-       .long sys_timer_create
-       .long sys_timer_settime         /* 260 */
-       .long sys_timer_gettime
-       .long sys_timer_getoverrun
-       .long sys_timer_delete
-       .long sys_clock_settime
-       .long sys_clock_gettime         /* 265 */
-       .long sys_clock_getres
-       .long sys_clock_nanosleep
+       .long sys_set_tid_address
+       .long sys_timer_create
+       .long sys_timer_settime         /* 260 */
+       .long sys_timer_gettime
+       .long sys_timer_getoverrun
+       .long sys_timer_delete
+       .long sys_clock_settime
+       .long sys_clock_gettime         /* 265 */
+       .long sys_clock_getres
+       .long sys_clock_nanosleep
        .long sys_statfs64
-       .long sys_fstatfs64     
-       .long sys_tgkill        /* 270 */
+       .long sys_fstatfs64
+       .long sys_tgkill                /* 270 */
        .long sys_utimes
-       .long sys_fadvise64_64
+       .long sys_fadvise64_64
        .long sys_ni_syscall    /* sys_vserver */
        .long sys_ni_syscall    /* sys_mbind */
        .long sys_ni_syscall    /* 275 sys_get_mempolicy */
@@ -886,7 +886,7 @@ sys_call_table:
        .long sys_mq_timedreceive       /* 280 */
        .long sys_mq_notify
        .long sys_mq_getsetattr
-       .long sys_ni_syscall            /* reserved for kexec */
+       .long sys_ni_syscall
        .long sys_waitid
        .long sys_ni_syscall            /* 285 */ /* available */
        .long sys_add_key
@@ -939,6 +939,22 @@ sys_call_table:
        .long sys_preadv
        .long sys_pwritev
        .long sys_setns                 /* 335 */
+       .long sys_name_to_handle_at
+       .long sys_open_by_handle_at
+       .long sys_rt_tgsigqueueinfo
+       .long sys_perf_event_open
+       .long sys_recvmmsg              /* 340 */
+       .long sys_accept4
+       .long sys_fanotify_init
+       .long sys_fanotify_mark
+       .long sys_prlimit64
+       .long sys_clock_adjtime         /* 345 */
+       .long sys_syncfs
+       .long sys_sendmmsg
+       .long sys_process_vm_readv
+       .long sys_process_vm_writev
+       .long sys_kcmp                  /* 350 */
+       .long sys_finit_module
 
         /*
          * NOTE!! This doesn't have to be exact - we just have
@@ -950,4 +966,4 @@ sys_call_table:
        .rept NR_syscalls-(.-sys_call_table)/4
                .long sys_ni_syscall
        .endr
-       
+
index faa644111feb7f4acb1eb87929177fdc3cdc3dc6..2f19ac6217aafd2754d7f423b5441d988aacbae7 100644 (file)
@@ -424,7 +424,7 @@ nmi_interrupt:
        bpl     1f
        nop
        jsr     handle_watchdog_bite    ; In time.c.
-        move.d $sp, $r10               ; Pointer to registers
+       move.d  $sp, $r10               ; Pointer to registers
 1:     btstq   REG_BIT(intr_vect, r_nmi, ext), $r0
        bpl     1f
        nop
@@ -452,7 +452,7 @@ spurious_interrupt:
        nop
 
        ;; This handles the case when multiple interrupts arrive at the same
-       ;; time. Jump to the first set interrupt bit in a priotiry fashion. The
+       ;; time. Jump to the first set interrupt bit in a priority fashion. The
        ;; hardware will call the unserved interrupts after the handler
        ;; finishes.
        .type   multiple_interrupt, @function
@@ -885,13 +885,29 @@ sys_call_table:
        .long sys_preadv
        .long sys_pwritev
        .long sys_setns                 /* 335 */
-
-        /*
-         * NOTE!! This doesn't have to be exact - we just have
-         * to make sure we have _enough_ of the "sys_ni_syscall"
-         * entries. Don't panic if you notice that this hasn't
-         * been shrunk every time we add a new system call.
-         */
+       .long sys_name_to_handle_at
+       .long sys_open_by_handle_at
+       .long sys_rt_tgsigqueueinfo
+       .long sys_perf_event_open
+       .long sys_recvmmsg              /* 340 */
+       .long sys_accept4
+       .long sys_fanotify_init
+       .long sys_fanotify_mark
+       .long sys_prlimit64
+       .long sys_clock_adjtime         /* 345 */
+       .long sys_syncfs
+       .long sys_sendmmsg
+       .long sys_process_vm_readv
+       .long sys_process_vm_writev
+       .long sys_kcmp                  /* 350 */
+       .long sys_finit_module
+
+       /*
+        * NOTE!! This doesn't have to be exact - we just have
+        * to make sure we have _enough_ of the "sys_ni_syscall"
+        * entries. Don't panic if you notice that this hasn't
+        * been shrunk every time we add a new system call.
+        */
 
        .rept NR_syscalls - (.-sys_call_table) / 4
                .long sys_ni_syscall
index 0ff3f6889842b7bb0922ec2b777595719556f004..5cc7d1991e482bf0e3eef50e598877595c15b69a 100644 (file)
@@ -4,7 +4,7 @@
 #include <uapi/asm/unistd.h>
 
 
-#define NR_syscalls 336
+#define NR_syscalls 360
 
 #include <arch/unistd.h>
 
index 48842896f6c2fbe418a42260dc33486b54ff71a8..f3287face443b4094a35231c972912970178e1ec 100644 (file)
 #define __NR_preadv            333
 #define __NR_pwritev           334
 #define __NR_setns             335
+#define __NR_name_to_handle_at 336
+#define __NR_open_by_handle_at 337
+#define __NR_rt_tgsigqueueinfo 338
+#define __NR_perf_event_open   339
+#define __NR_recvmmsg          340
+#define __NR_accept4           341
+#define __NR_fanotify_init     342
+#define __NR_fanotify_mark     343
+#define __NR_prlimit64         344
+#define __NR_clock_adjtime     345
+#define __NR_syncfs            346
+#define __NR_sendmmsg          347
+#define __NR_process_vm_readv  348
+#define __NR_process_vm_writev 349
+#define __NR_kcmp              350
+#define __NR_finit_module      351
 
 #endif /* _UAPI_ASM_CRIS_UNISTD_H_ */