diff options
Diffstat (limited to 'arch/x86/ia32/ia32entry.S')
-rw-r--r-- | arch/x86/ia32/ia32entry.S | 33 |
1 files changed, 15 insertions, 18 deletions
diff --git a/arch/x86/ia32/ia32entry.S b/arch/x86/ia32/ia32entry.S index 518bb99c3394..849a9d23c71d 100644 --- a/arch/x86/ia32/ia32entry.S +++ b/arch/x86/ia32/ia32entry.S | |||
@@ -25,6 +25,8 @@ | |||
25 | #define sysretl_audit ia32_ret_from_sys_call | 25 | #define sysretl_audit ia32_ret_from_sys_call |
26 | #endif | 26 | #endif |
27 | 27 | ||
28 | .section .entry.text, "ax" | ||
29 | |||
28 | #define IA32_NR_syscalls ((ia32_syscall_end - ia32_sys_call_table)/8) | 30 | #define IA32_NR_syscalls ((ia32_syscall_end - ia32_sys_call_table)/8) |
29 | 31 | ||
30 | .macro IA32_ARG_FIXUP noebp=0 | 32 | .macro IA32_ARG_FIXUP noebp=0 |
@@ -126,26 +128,20 @@ ENTRY(ia32_sysenter_target) | |||
126 | */ | 128 | */ |
127 | ENABLE_INTERRUPTS(CLBR_NONE) | 129 | ENABLE_INTERRUPTS(CLBR_NONE) |
128 | movl %ebp,%ebp /* zero extension */ | 130 | movl %ebp,%ebp /* zero extension */ |
129 | pushq $__USER32_DS | 131 | pushq_cfi $__USER32_DS |
130 | CFI_ADJUST_CFA_OFFSET 8 | ||
131 | /*CFI_REL_OFFSET ss,0*/ | 132 | /*CFI_REL_OFFSET ss,0*/ |
132 | pushq %rbp | 133 | pushq_cfi %rbp |
133 | CFI_ADJUST_CFA_OFFSET 8 | ||
134 | CFI_REL_OFFSET rsp,0 | 134 | CFI_REL_OFFSET rsp,0 |
135 | pushfq | 135 | pushfq_cfi |
136 | CFI_ADJUST_CFA_OFFSET 8 | ||
137 | /*CFI_REL_OFFSET rflags,0*/ | 136 | /*CFI_REL_OFFSET rflags,0*/ |
138 | movl 8*3-THREAD_SIZE+TI_sysenter_return(%rsp), %r10d | 137 | movl 8*3-THREAD_SIZE+TI_sysenter_return(%rsp), %r10d |
139 | CFI_REGISTER rip,r10 | 138 | CFI_REGISTER rip,r10 |
140 | pushq $__USER32_CS | 139 | pushq_cfi $__USER32_CS |
141 | CFI_ADJUST_CFA_OFFSET 8 | ||
142 | /*CFI_REL_OFFSET cs,0*/ | 140 | /*CFI_REL_OFFSET cs,0*/ |
143 | movl %eax, %eax | 141 | movl %eax, %eax |
144 | pushq %r10 | 142 | pushq_cfi %r10 |
145 | CFI_ADJUST_CFA_OFFSET 8 | ||
146 | CFI_REL_OFFSET rip,0 | 143 | CFI_REL_OFFSET rip,0 |
147 | pushq %rax | 144 | pushq_cfi %rax |
148 | CFI_ADJUST_CFA_OFFSET 8 | ||
149 | cld | 145 | cld |
150 | SAVE_ARGS 0,0,1 | 146 | SAVE_ARGS 0,0,1 |
151 | /* no need to do an access_ok check here because rbp has been | 147 | /* no need to do an access_ok check here because rbp has been |
@@ -182,11 +178,9 @@ sysexit_from_sys_call: | |||
182 | xorq %r9,%r9 | 178 | xorq %r9,%r9 |
183 | xorq %r10,%r10 | 179 | xorq %r10,%r10 |
184 | xorq %r11,%r11 | 180 | xorq %r11,%r11 |
185 | popfq | 181 | popfq_cfi |
186 | CFI_ADJUST_CFA_OFFSET -8 | ||
187 | /*CFI_RESTORE rflags*/ | 182 | /*CFI_RESTORE rflags*/ |
188 | popq %rcx /* User %esp */ | 183 | popq_cfi %rcx /* User %esp */ |
189 | CFI_ADJUST_CFA_OFFSET -8 | ||
190 | CFI_REGISTER rsp,rcx | 184 | CFI_REGISTER rsp,rcx |
191 | TRACE_IRQS_ON | 185 | TRACE_IRQS_ON |
192 | ENABLE_INTERRUPTS_SYSEXIT32 | 186 | ENABLE_INTERRUPTS_SYSEXIT32 |
@@ -421,8 +415,7 @@ ENTRY(ia32_syscall) | |||
421 | */ | 415 | */ |
422 | ENABLE_INTERRUPTS(CLBR_NONE) | 416 | ENABLE_INTERRUPTS(CLBR_NONE) |
423 | movl %eax,%eax | 417 | movl %eax,%eax |
424 | pushq %rax | 418 | pushq_cfi %rax |
425 | CFI_ADJUST_CFA_OFFSET 8 | ||
426 | cld | 419 | cld |
427 | /* note the registers are not zero extended to the sf. | 420 | /* note the registers are not zero extended to the sf. |
428 | this could be a problem. */ | 421 | this could be a problem. */ |
@@ -851,4 +844,8 @@ ia32_sys_call_table: | |||
851 | .quad sys_fanotify_init | 844 | .quad sys_fanotify_init |
852 | .quad sys32_fanotify_mark | 845 | .quad sys32_fanotify_mark |
853 | .quad sys_prlimit64 /* 340 */ | 846 | .quad sys_prlimit64 /* 340 */ |
847 | .quad sys_name_to_handle_at | ||
848 | .quad compat_sys_open_by_handle_at | ||
849 | .quad compat_sys_clock_adjtime | ||
850 | .quad sys_syncfs | ||
854 | ia32_syscall_end: | 851 | ia32_syscall_end: |