Commit ffc8b00d authored by Jesper Nilsson's avatar Jesper Nilsson

CRIS v32: Update entry.S to working order.

- Remove oldset parameter.
- Utilise delay-slot for parameter moving.
- Add kernel_execve as break 13.
- Add new kernel syscalls.
parent e8a8abf2
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
* after a timer-interrupt and after each system call. * after a timer-interrupt and after each system call.
* *
* Stack layout in 'ret_from_system_call': * Stack layout in 'ret_from_system_call':
* ptrace needs to have all regs on the stack. * ptrace needs to have all regs on the stack.
* if the order here is changed, it needs to be * if the order here is changed, it needs to be
* updated in fork.c:copy_process, signal.c:do_signal, * updated in fork.c:copy_process, signal.c:do_signal,
* ptrace.c and ptrace.h * ptrace.c and ptrace.h
...@@ -281,12 +281,10 @@ _work_notifysig: ...@@ -281,12 +281,10 @@ _work_notifysig:
;; Deal with pending signals and notify-resume requests. ;; Deal with pending signals and notify-resume requests.
addoq +TI_flags, $r0, $acr addoq +TI_flags, $r0, $acr
move.d [$acr], $r13 ; The thread_info_flags parameter. move.d [$acr], $r12 ; The thread_info_flags parameter.
move.d $r9, $r10 ; do_notify_resume syscall/irq param. move.d $sp, $r11 ; The regs param.
moveq 0, $r11 ; oldset param - 0 in this case.
move.d $sp, $r12 ; The regs param.
jsr do_notify_resume jsr do_notify_resume
nop move.d $r9, $r10 ; do_notify_resume syscall/irq param.
ba _Rexit ba _Rexit
nop nop
...@@ -396,7 +394,7 @@ nmi_interrupt: ...@@ -396,7 +394,7 @@ nmi_interrupt:
btstq REG_BIT(intr_vect, r_nmi, watchdog), $r0 btstq REG_BIT(intr_vect, r_nmi, watchdog), $r0
bpl 1f bpl 1f
nop nop
jsr handle_watchdog_bite ; In time.c. 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 1: btstq REG_BIT(intr_vect, r_nmi, ext), $r0
bpl 1f bpl 1f
...@@ -515,6 +513,13 @@ _ugdb_handle_exception: ...@@ -515,6 +513,13 @@ _ugdb_handle_exception:
ba do_sigtrap ; SIGTRAP the offending process. ba do_sigtrap ; SIGTRAP the offending process.
move.d [$sp+], $r0 ; Restore R0 in delay slot. move.d [$sp+], $r0 ; Restore R0 in delay slot.
.global kernel_execve
kernel_execve:
move.d __NR_execve, $r9
break 13
ret
nop
.data .data
.section .rodata,"a" .section .rodata,"a"
...@@ -778,21 +783,21 @@ sys_call_table: ...@@ -778,21 +783,21 @@ sys_call_table:
.long sys_epoll_ctl /* 255 */ .long sys_epoll_ctl /* 255 */
.long sys_epoll_wait .long sys_epoll_wait
.long sys_remap_file_pages .long sys_remap_file_pages
.long sys_set_tid_address .long sys_set_tid_address
.long sys_timer_create .long sys_timer_create
.long sys_timer_settime /* 260 */ .long sys_timer_settime /* 260 */
.long sys_timer_gettime .long sys_timer_gettime
.long sys_timer_getoverrun .long sys_timer_getoverrun
.long sys_timer_delete .long sys_timer_delete
.long sys_clock_settime .long sys_clock_settime
.long sys_clock_gettime /* 265 */ .long sys_clock_gettime /* 265 */
.long sys_clock_getres .long sys_clock_getres
.long sys_clock_nanosleep .long sys_clock_nanosleep
.long sys_statfs64 .long sys_statfs64
.long sys_fstatfs64 .long sys_fstatfs64
.long sys_tgkill /* 270 */ .long sys_tgkill /* 270 */
.long sys_utimes .long sys_utimes
.long sys_fadvise64_64 .long sys_fadvise64_64
.long sys_ni_syscall /* sys_vserver */ .long sys_ni_syscall /* sys_vserver */
.long sys_ni_syscall /* sys_mbind */ .long sys_ni_syscall /* sys_mbind */
.long sys_ni_syscall /* 275 sys_get_mempolicy */ .long sys_ni_syscall /* 275 sys_get_mempolicy */
...@@ -805,6 +810,46 @@ sys_call_table: ...@@ -805,6 +810,46 @@ sys_call_table:
.long sys_mq_getsetattr .long sys_mq_getsetattr
.long sys_ni_syscall /* reserved for kexec */ .long sys_ni_syscall /* reserved for kexec */
.long sys_waitid .long sys_waitid
.long sys_ni_syscall /* 285 */ /* available */
.long sys_add_key
.long sys_request_key
.long sys_keyctl
.long sys_ioprio_set
.long sys_ioprio_get /* 290 */
.long sys_inotify_init
.long sys_inotify_add_watch
.long sys_inotify_rm_watch
.long sys_migrate_pages
.long sys_openat /* 295 */
.long sys_mkdirat
.long sys_mknodat
.long sys_fchownat
.long sys_futimesat
.long sys_fstatat64 /* 300 */
.long sys_unlinkat
.long sys_renameat
.long sys_linkat
.long sys_symlinkat
.long sys_readlinkat /* 305 */
.long sys_fchmodat
.long sys_faccessat
.long sys_pselect6
.long sys_ppoll
.long sys_unshare /* 310 */
.long sys_set_robust_list
.long sys_get_robust_list
.long sys_splice
.long sys_sync_file_range
.long sys_tee /* 315 */
.long sys_vmsplice
.long sys_move_pages
.long sys_getcpu
.long sys_epoll_pwait
.long sys_utimensat /* 320 */
.long sys_signalfd
.long sys_timerfd
.long sys_eventfd
.long sys_fallocate
/* /*
* NOTE!! This doesn't have to be exact - we just have * NOTE!! This doesn't have to be exact - we just have
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment