|
@@ -159,20 +159,16 @@ sysenter_do_call:
|
|
|
|
|
|
sysenter_tracesys:
|
|
|
CFI_RESTORE_STATE
|
|
|
+ xchgl %r9d,%ebp
|
|
|
SAVE_REST
|
|
|
CLEAR_RREGS
|
|
|
+ movq %r9,R9(%rsp)
|
|
|
movq $-ENOSYS,RAX(%rsp) /* really needed? */
|
|
|
movq %rsp,%rdi /* &pt_regs -> arg1 */
|
|
|
call syscall_trace_enter
|
|
|
LOAD_ARGS32 ARGOFFSET /* reload args from stack in case ptrace changed it */
|
|
|
RESTORE_REST
|
|
|
- movl %ebp, %ebp
|
|
|
- /* no need to do an access_ok check here because rbp has been
|
|
|
- 32bit zero extended */
|
|
|
-1: movl (%rbp),%r9d
|
|
|
- .section __ex_table,"a"
|
|
|
- .quad 1b,ia32_badarg
|
|
|
- .previous
|
|
|
+ xchgl %ebp,%r9d
|
|
|
jmp sysenter_do_call
|
|
|
CFI_ENDPROC
|
|
|
ENDPROC(ia32_sysenter_target)
|
|
@@ -262,20 +258,17 @@ cstar_do_call:
|
|
|
|
|
|
cstar_tracesys:
|
|
|
CFI_RESTORE_STATE
|
|
|
+ xchgl %r9d,%ebp
|
|
|
SAVE_REST
|
|
|
CLEAR_RREGS
|
|
|
+ movq %r9,R9(%rsp)
|
|
|
movq $-ENOSYS,RAX(%rsp) /* really needed? */
|
|
|
movq %rsp,%rdi /* &pt_regs -> arg1 */
|
|
|
call syscall_trace_enter
|
|
|
LOAD_ARGS32 ARGOFFSET /* reload args from stack in case ptrace changed it */
|
|
|
RESTORE_REST
|
|
|
+ xchgl %ebp,%r9d
|
|
|
movl RSP-ARGOFFSET(%rsp), %r8d
|
|
|
- /* no need to do an access_ok check here because r8 has been
|
|
|
- 32bit zero extended */
|
|
|
-1: movl (%r8),%r9d
|
|
|
- .section __ex_table,"a"
|
|
|
- .quad 1b,ia32_badarg
|
|
|
- .previous
|
|
|
jmp cstar_do_call
|
|
|
END(ia32_cstar_target)
|
|
|
|