Loading arch/arc/kernel/entry.S +20 −26 Original line number Diff line number Diff line Loading @@ -322,13 +322,8 @@ ENTRY(EV_TLBProtV) EXCEPTION_PROLOGUE ;---------(3) Save some more regs----------------- ; vineetg: Mar 6th: Random Seg Fault issue #1 ; ecr and efa were not saved in case an Intr sneaks in ; after fake rtie lr r2, [ecr] lr r0, [efa] ; Faulting Data address lr r0, [efa] ; Faulting Data addr (not part of pt_regs saved above) ; Exception auto-disables further Intr/exceptions. ; Re-enable them by pretending to return from exception Loading @@ -336,7 +331,7 @@ ENTRY(EV_TLBProtV) FAKE_RET_FROM_EXCPN mov r1, sp mov r1, sp ; Handle to pt_regs ;------ (5) Type of Protection Violation? ---------- ; Loading Loading @@ -415,8 +410,11 @@ ENTRY(EV_Extension) b ret_from_exception END(EV_Extension) ;######################### System Call Tracing ######################### ;################ Trap Handling (Syscall, Breakpoint) ################## ; --------------------------------------------- ; syscall Tracing ; --------------------------------------------- tracesys: ; save EFA in case tracer wants the PC of traced task ; using ERET won't work since next-PC has already committed Loading Loading @@ -459,10 +457,9 @@ tracesys_exit: b ret_from_exception ; NOT ret_from_system_call at is saves r0 which ; we'd done before calling post hook above ;################### Break Point TRAP ########################## ; ======= (5b) Trap is due to Break-Point ========= ; --------------------------------------------- ; Breakpoint TRAP ; --------------------------------------------- trap_with_param: ; stop_pc info by gdb needs this info Loading Loading @@ -490,36 +487,33 @@ trap_with_param: b ret_from_exception ;##################### Trap Handling ############################## ; ; EV_Trap caused by TRAP_S and TRAP0 instructions. ;------------------------------------------------------------------ ; (1) System Calls ; :parameters in r0-r7. ; :r8 has the system call number ; (2) Break Points ;------------------------------------------------------------------ ; --------------------------------------------- ; syscall TRAP ; ABI: (r0-r7) upto 8 args, (r8) syscall number ; --------------------------------------------- ENTRY(EV_Trap) EXCEPTION_PROLOGUE ;------- (4) What caused the Trap -------------- ;============ TRAP 1 :breakpoints lr r10, [ecr] bmsk.f 0, r10, 7 bnz trap_with_param ; ======= (5a) Trap is due to System Call ======== ;============ TRAP (no param): syscall top level ; First return from Exception to pure K mode (Exception/IRQs renabled) FAKE_RET_FROM_EXCPN ; If syscall tracing ongoing, invoke pre-pos-hooks ; If syscall tracing ongoing, invoke pre-post-hooks GET_CURR_THR_INFO_FLAGS r10 btst r10, TIF_SYSCALL_TRACE bnz tracesys ; this never comes back ;============ This is normal System Call case ========== ; Sys-call num shd not exceed the total system calls avail ;============ Normal syscall case ; syscall num shd not exceed the total system calls avail cmp r8, NR_syscalls mov.hi r0, -ENOSYS bhi ret_from_system_call Loading Loading
arch/arc/kernel/entry.S +20 −26 Original line number Diff line number Diff line Loading @@ -322,13 +322,8 @@ ENTRY(EV_TLBProtV) EXCEPTION_PROLOGUE ;---------(3) Save some more regs----------------- ; vineetg: Mar 6th: Random Seg Fault issue #1 ; ecr and efa were not saved in case an Intr sneaks in ; after fake rtie lr r2, [ecr] lr r0, [efa] ; Faulting Data address lr r0, [efa] ; Faulting Data addr (not part of pt_regs saved above) ; Exception auto-disables further Intr/exceptions. ; Re-enable them by pretending to return from exception Loading @@ -336,7 +331,7 @@ ENTRY(EV_TLBProtV) FAKE_RET_FROM_EXCPN mov r1, sp mov r1, sp ; Handle to pt_regs ;------ (5) Type of Protection Violation? ---------- ; Loading Loading @@ -415,8 +410,11 @@ ENTRY(EV_Extension) b ret_from_exception END(EV_Extension) ;######################### System Call Tracing ######################### ;################ Trap Handling (Syscall, Breakpoint) ################## ; --------------------------------------------- ; syscall Tracing ; --------------------------------------------- tracesys: ; save EFA in case tracer wants the PC of traced task ; using ERET won't work since next-PC has already committed Loading Loading @@ -459,10 +457,9 @@ tracesys_exit: b ret_from_exception ; NOT ret_from_system_call at is saves r0 which ; we'd done before calling post hook above ;################### Break Point TRAP ########################## ; ======= (5b) Trap is due to Break-Point ========= ; --------------------------------------------- ; Breakpoint TRAP ; --------------------------------------------- trap_with_param: ; stop_pc info by gdb needs this info Loading Loading @@ -490,36 +487,33 @@ trap_with_param: b ret_from_exception ;##################### Trap Handling ############################## ; ; EV_Trap caused by TRAP_S and TRAP0 instructions. ;------------------------------------------------------------------ ; (1) System Calls ; :parameters in r0-r7. ; :r8 has the system call number ; (2) Break Points ;------------------------------------------------------------------ ; --------------------------------------------- ; syscall TRAP ; ABI: (r0-r7) upto 8 args, (r8) syscall number ; --------------------------------------------- ENTRY(EV_Trap) EXCEPTION_PROLOGUE ;------- (4) What caused the Trap -------------- ;============ TRAP 1 :breakpoints lr r10, [ecr] bmsk.f 0, r10, 7 bnz trap_with_param ; ======= (5a) Trap is due to System Call ======== ;============ TRAP (no param): syscall top level ; First return from Exception to pure K mode (Exception/IRQs renabled) FAKE_RET_FROM_EXCPN ; If syscall tracing ongoing, invoke pre-pos-hooks ; If syscall tracing ongoing, invoke pre-post-hooks GET_CURR_THR_INFO_FLAGS r10 btst r10, TIF_SYSCALL_TRACE bnz tracesys ; this never comes back ;============ This is normal System Call case ========== ; Sys-call num shd not exceed the total system calls avail ;============ Normal syscall case ; syscall num shd not exceed the total system calls avail cmp r8, NR_syscalls mov.hi r0, -ENOSYS bhi ret_from_system_call Loading