Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 42595
b: refs/heads/master
c: e0969e0
h: refs/heads/master
i:
  42593: e7a5f3f
  42591: 884998a
v: v3
  • Loading branch information
Stuart Menefy authored and Paul Mundt committed Dec 6, 2006
1 parent 70675d5 commit d3417d5
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 24 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: c9f0b1c1410e9e637b819c5050fc8c1f1971e178
refs/heads/master: e0969e0c9b609fdfe217e34f3e046179ffe88eb6
45 changes: 22 additions & 23 deletions trunk/arch/sh/kernel/entry-common.S
Original file line number Diff line number Diff line change
Expand Up @@ -256,8 +256,7 @@ syscall_trace_entry:
mov.l @(OFF_R6,r15), r6
mov.l @(OFF_R7,r15), r7 ! arg3
mov.l @(OFF_R3,r15), r3 ! syscall_nr
! Arrange for do_syscall_trace to be called
! again as the system call returns.
!
mov.l 2f, r10 ! Number of syscalls
cmp/hs r10, r3
bf syscall_call
Expand All @@ -273,6 +272,18 @@ __restore_all:
.align 2
1: .long restore_all

.align 2
not_syscall_tra:
bra debug_trap
nop

.align 2
syscall_badsys: ! Bad syscall number
mov #-ENOSYS, r0
bra resume_userspace
mov.l r0, @(OFF_R0,r15) ! Return value

/*
* Syscall interface:
*
Expand Down Expand Up @@ -316,39 +327,27 @@ ENTRY(system_call)
! Is the trap argument >= 0x20? (TRA will be >= 0x80)
mov #0x7f, r9
cmp/hi r9, r8
bt/s 0f
bt/s not_syscall_tra
mov #OFF_TRA, r9
add r15, r9
!
mov.l r8, @r9 ! set TRA value to tra
sti
! Call the system call handler through the table.
! First check for bad syscall number
mov r3, r9
mov.l 2f, r8 ! Number of syscalls
cmp/hs r8, r9
get_current_thread_info r8, r10
bf good_system_call
syscall_badsys: ! Bad syscall number
mov #-ENOSYS, r0
bra resume_userspace
mov.l r0, @(OFF_R0,r15) ! Return value
!
0:
bra debug_trap
nop
!
good_system_call: ! Good syscall number
get_current_thread_info r8, r10
mov.l @(TI_FLAGS,r8), r8
mov #_TIF_SYSCALL_TRACE, r10
tst r10, r8
bf syscall_trace_entry
!
mov.l 2f, r8 ! Number of syscalls
cmp/hs r8, r3
bt syscall_badsys
!
syscall_call:
shll2 r9 ! x4
shll2 r3 ! x4
mov.l 3f, r8 ! Load the address of sys_call_table
add r8, r9
mov.l @r9, r8
add r8, r3
mov.l @r3, r8
jsr @r8 ! jump to specific syscall handler
nop
mov.l @(OFF_R0,r15), r12 ! save r0
Expand Down

0 comments on commit d3417d5

Please sign in to comment.