diff options
author | Jesper Nilsson <jesper.nilsson@axis.com> | 2007-11-30 09:44:07 -0500 |
---|---|---|
committer | Jesper Nilsson <jesper.nilsson@axis.com> | 2008-02-08 05:06:25 -0500 |
commit | ffc8b00d580e26bfde0d57cd41f1f76cf63b1eb3 (patch) | |
tree | 0b7c9ab8af7477eb5d4797d880f3e10654ef711b /arch/cris/arch-v32 | |
parent | e8a8abf20e217465c00fa14fd27321401898654c (diff) |
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.
Diffstat (limited to 'arch/cris/arch-v32')
-rw-r--r-- | arch/cris/arch-v32/kernel/entry.S | 81 |
1 files changed, 63 insertions, 18 deletions
diff --git a/arch/cris/arch-v32/kernel/entry.S b/arch/cris/arch-v32/kernel/entry.S index f9d27807b914..f58e137876f8 100644 --- a/arch/cris/arch-v32/kernel/entry.S +++ b/arch/cris/arch-v32/kernel/entry.S | |||
@@ -10,7 +10,7 @@ | |||
10 | * after a timer-interrupt and after each system call. | 10 | * after a timer-interrupt and after each system call. |
11 | * | 11 | * |
12 | * Stack layout in 'ret_from_system_call': | 12 | * Stack layout in 'ret_from_system_call': |
13 | * ptrace needs to have all regs on the stack. | 13 | * ptrace needs to have all regs on the stack. |
14 | * if the order here is changed, it needs to be | 14 | * if the order here is changed, it needs to be |
15 | * updated in fork.c:copy_process, signal.c:do_signal, | 15 | * updated in fork.c:copy_process, signal.c:do_signal, |
16 | * ptrace.c and ptrace.h | 16 | * ptrace.c and ptrace.h |
@@ -281,12 +281,10 @@ _work_notifysig: | |||
281 | ;; Deal with pending signals and notify-resume requests. | 281 | ;; Deal with pending signals and notify-resume requests. |
282 | 282 | ||
283 | addoq +TI_flags, $r0, $acr | 283 | addoq +TI_flags, $r0, $acr |
284 | move.d [$acr], $r13 ; The thread_info_flags parameter. | 284 | move.d [$acr], $r12 ; The thread_info_flags parameter. |
285 | move.d $r9, $r10 ; do_notify_resume syscall/irq param. | 285 | move.d $sp, $r11 ; The regs param. |
286 | moveq 0, $r11 ; oldset param - 0 in this case. | ||
287 | move.d $sp, $r12 ; The regs param. | ||
288 | jsr do_notify_resume | 286 | jsr do_notify_resume |
289 | nop | 287 | move.d $r9, $r10 ; do_notify_resume syscall/irq param. |
290 | 288 | ||
291 | ba _Rexit | 289 | ba _Rexit |
292 | nop | 290 | nop |
@@ -396,7 +394,7 @@ nmi_interrupt: | |||
396 | btstq REG_BIT(intr_vect, r_nmi, watchdog), $r0 | 394 | btstq REG_BIT(intr_vect, r_nmi, watchdog), $r0 |
397 | bpl 1f | 395 | bpl 1f |
398 | nop | 396 | nop |
399 | jsr handle_watchdog_bite ; In time.c. | 397 | jsr handle_watchdog_bite ; In time.c. |
400 | move.d $sp, $r10 ; Pointer to registers | 398 | move.d $sp, $r10 ; Pointer to registers |
401 | 1: btstq REG_BIT(intr_vect, r_nmi, ext), $r0 | 399 | 1: btstq REG_BIT(intr_vect, r_nmi, ext), $r0 |
402 | bpl 1f | 400 | bpl 1f |
@@ -515,6 +513,13 @@ _ugdb_handle_exception: | |||
515 | ba do_sigtrap ; SIGTRAP the offending process. | 513 | ba do_sigtrap ; SIGTRAP the offending process. |
516 | move.d [$sp+], $r0 ; Restore R0 in delay slot. | 514 | move.d [$sp+], $r0 ; Restore R0 in delay slot. |
517 | 515 | ||
516 | .global kernel_execve | ||
517 | kernel_execve: | ||
518 | move.d __NR_execve, $r9 | ||
519 | break 13 | ||
520 | ret | ||
521 | nop | ||
522 | |||
518 | .data | 523 | .data |
519 | 524 | ||
520 | .section .rodata,"a" | 525 | .section .rodata,"a" |
@@ -778,21 +783,21 @@ sys_call_table: | |||
778 | .long sys_epoll_ctl /* 255 */ | 783 | .long sys_epoll_ctl /* 255 */ |
779 | .long sys_epoll_wait | 784 | .long sys_epoll_wait |
780 | .long sys_remap_file_pages | 785 | .long sys_remap_file_pages |
781 | .long sys_set_tid_address | 786 | .long sys_set_tid_address |
782 | .long sys_timer_create | 787 | .long sys_timer_create |
783 | .long sys_timer_settime /* 260 */ | 788 | .long sys_timer_settime /* 260 */ |
784 | .long sys_timer_gettime | 789 | .long sys_timer_gettime |
785 | .long sys_timer_getoverrun | 790 | .long sys_timer_getoverrun |
786 | .long sys_timer_delete | 791 | .long sys_timer_delete |
787 | .long sys_clock_settime | 792 | .long sys_clock_settime |
788 | .long sys_clock_gettime /* 265 */ | 793 | .long sys_clock_gettime /* 265 */ |
789 | .long sys_clock_getres | 794 | .long sys_clock_getres |
790 | .long sys_clock_nanosleep | 795 | .long sys_clock_nanosleep |
791 | .long sys_statfs64 | 796 | .long sys_statfs64 |
792 | .long sys_fstatfs64 | 797 | .long sys_fstatfs64 |
793 | .long sys_tgkill /* 270 */ | 798 | .long sys_tgkill /* 270 */ |
794 | .long sys_utimes | 799 | .long sys_utimes |
795 | .long sys_fadvise64_64 | 800 | .long sys_fadvise64_64 |
796 | .long sys_ni_syscall /* sys_vserver */ | 801 | .long sys_ni_syscall /* sys_vserver */ |
797 | .long sys_ni_syscall /* sys_mbind */ | 802 | .long sys_ni_syscall /* sys_mbind */ |
798 | .long sys_ni_syscall /* 275 sys_get_mempolicy */ | 803 | .long sys_ni_syscall /* 275 sys_get_mempolicy */ |
@@ -805,6 +810,46 @@ sys_call_table: | |||
805 | .long sys_mq_getsetattr | 810 | .long sys_mq_getsetattr |
806 | .long sys_ni_syscall /* reserved for kexec */ | 811 | .long sys_ni_syscall /* reserved for kexec */ |
807 | .long sys_waitid | 812 | .long sys_waitid |
813 | .long sys_ni_syscall /* 285 */ /* available */ | ||
814 | .long sys_add_key | ||
815 | .long sys_request_key | ||
816 | .long sys_keyctl | ||
817 | .long sys_ioprio_set | ||
818 | .long sys_ioprio_get /* 290 */ | ||
819 | .long sys_inotify_init | ||
820 | .long sys_inotify_add_watch | ||
821 | .long sys_inotify_rm_watch | ||
822 | .long sys_migrate_pages | ||
823 | .long sys_openat /* 295 */ | ||
824 | .long sys_mkdirat | ||
825 | .long sys_mknodat | ||
826 | .long sys_fchownat | ||
827 | .long sys_futimesat | ||
828 | .long sys_fstatat64 /* 300 */ | ||
829 | .long sys_unlinkat | ||
830 | .long sys_renameat | ||
831 | .long sys_linkat | ||
832 | .long sys_symlinkat | ||
833 | .long sys_readlinkat /* 305 */ | ||
834 | .long sys_fchmodat | ||
835 | .long sys_faccessat | ||
836 | .long sys_pselect6 | ||
837 | .long sys_ppoll | ||
838 | .long sys_unshare /* 310 */ | ||
839 | .long sys_set_robust_list | ||
840 | .long sys_get_robust_list | ||
841 | .long sys_splice | ||
842 | .long sys_sync_file_range | ||
843 | .long sys_tee /* 315 */ | ||
844 | .long sys_vmsplice | ||
845 | .long sys_move_pages | ||
846 | .long sys_getcpu | ||
847 | .long sys_epoll_pwait | ||
848 | .long sys_utimensat /* 320 */ | ||
849 | .long sys_signalfd | ||
850 | .long sys_timerfd | ||
851 | .long sys_eventfd | ||
852 | .long sys_fallocate | ||
808 | 853 | ||
809 | /* | 854 | /* |
810 | * NOTE!! This doesn't have to be exact - we just have | 855 | * NOTE!! This doesn't have to be exact - we just have |