diff options
Diffstat (limited to 'arch/x86/ia32/ia32entry.S')
-rw-r--r-- | arch/x86/ia32/ia32entry.S | 19 |
1 files changed, 6 insertions, 13 deletions
diff --git a/arch/x86/ia32/ia32entry.S b/arch/x86/ia32/ia32entry.S index 18b231810908..df588f0f76e1 100644 --- a/arch/x86/ia32/ia32entry.S +++ b/arch/x86/ia32/ia32entry.S | |||
@@ -159,20 +159,16 @@ sysenter_do_call: | |||
159 | 159 | ||
160 | sysenter_tracesys: | 160 | sysenter_tracesys: |
161 | CFI_RESTORE_STATE | 161 | CFI_RESTORE_STATE |
162 | xchgl %r9d,%ebp | ||
162 | SAVE_REST | 163 | SAVE_REST |
163 | CLEAR_RREGS | 164 | CLEAR_RREGS |
165 | movq %r9,R9(%rsp) | ||
164 | movq $-ENOSYS,RAX(%rsp) /* really needed? */ | 166 | movq $-ENOSYS,RAX(%rsp) /* really needed? */ |
165 | movq %rsp,%rdi /* &pt_regs -> arg1 */ | 167 | movq %rsp,%rdi /* &pt_regs -> arg1 */ |
166 | call syscall_trace_enter | 168 | call syscall_trace_enter |
167 | LOAD_ARGS32 ARGOFFSET /* reload args from stack in case ptrace changed it */ | 169 | LOAD_ARGS32 ARGOFFSET /* reload args from stack in case ptrace changed it */ |
168 | RESTORE_REST | 170 | RESTORE_REST |
169 | movl %ebp, %ebp | 171 | xchgl %ebp,%r9d |
170 | /* no need to do an access_ok check here because rbp has been | ||
171 | 32bit zero extended */ | ||
172 | 1: movl (%rbp),%r9d | ||
173 | .section __ex_table,"a" | ||
174 | .quad 1b,ia32_badarg | ||
175 | .previous | ||
176 | jmp sysenter_do_call | 172 | jmp sysenter_do_call |
177 | CFI_ENDPROC | 173 | CFI_ENDPROC |
178 | ENDPROC(ia32_sysenter_target) | 174 | ENDPROC(ia32_sysenter_target) |
@@ -262,20 +258,17 @@ cstar_do_call: | |||
262 | 258 | ||
263 | cstar_tracesys: | 259 | cstar_tracesys: |
264 | CFI_RESTORE_STATE | 260 | CFI_RESTORE_STATE |
261 | xchgl %r9d,%ebp | ||
265 | SAVE_REST | 262 | SAVE_REST |
266 | CLEAR_RREGS | 263 | CLEAR_RREGS |
264 | movq %r9,R9(%rsp) | ||
267 | movq $-ENOSYS,RAX(%rsp) /* really needed? */ | 265 | movq $-ENOSYS,RAX(%rsp) /* really needed? */ |
268 | movq %rsp,%rdi /* &pt_regs -> arg1 */ | 266 | movq %rsp,%rdi /* &pt_regs -> arg1 */ |
269 | call syscall_trace_enter | 267 | call syscall_trace_enter |
270 | LOAD_ARGS32 ARGOFFSET /* reload args from stack in case ptrace changed it */ | 268 | LOAD_ARGS32 ARGOFFSET /* reload args from stack in case ptrace changed it */ |
271 | RESTORE_REST | 269 | RESTORE_REST |
270 | xchgl %ebp,%r9d | ||
272 | movl RSP-ARGOFFSET(%rsp), %r8d | 271 | movl RSP-ARGOFFSET(%rsp), %r8d |
273 | /* no need to do an access_ok check here because r8 has been | ||
274 | 32bit zero extended */ | ||
275 | 1: movl (%r8),%r9d | ||
276 | .section __ex_table,"a" | ||
277 | .quad 1b,ia32_badarg | ||
278 | .previous | ||
279 | jmp cstar_do_call | 272 | jmp cstar_do_call |
280 | END(ia32_cstar_target) | 273 | END(ia32_cstar_target) |
281 | 274 | ||