diff options
Diffstat (limited to 'arch/i386/kernel/entry.S')
-rw-r--r-- | arch/i386/kernel/entry.S | 36 |
1 files changed, 4 insertions, 32 deletions
diff --git a/arch/i386/kernel/entry.S b/arch/i386/kernel/entry.S index de34b7fed3c1..5e47683fc63a 100644 --- a/arch/i386/kernel/entry.S +++ b/arch/i386/kernel/entry.S | |||
@@ -302,12 +302,16 @@ sysenter_past_esp: | |||
302 | pushl $(__USER_CS) | 302 | pushl $(__USER_CS) |
303 | CFI_ADJUST_CFA_OFFSET 4 | 303 | CFI_ADJUST_CFA_OFFSET 4 |
304 | /*CFI_REL_OFFSET cs, 0*/ | 304 | /*CFI_REL_OFFSET cs, 0*/ |
305 | #ifndef CONFIG_COMPAT_VDSO | ||
305 | /* | 306 | /* |
306 | * Push current_thread_info()->sysenter_return to the stack. | 307 | * Push current_thread_info()->sysenter_return to the stack. |
307 | * A tiny bit of offset fixup is necessary - 4*4 means the 4 words | 308 | * A tiny bit of offset fixup is necessary - 4*4 means the 4 words |
308 | * pushed above; +8 corresponds to copy_thread's esp0 setting. | 309 | * pushed above; +8 corresponds to copy_thread's esp0 setting. |
309 | */ | 310 | */ |
310 | pushl (TI_sysenter_return-THREAD_SIZE+8+4*4)(%esp) | 311 | pushl (TI_sysenter_return-THREAD_SIZE+8+4*4)(%esp) |
312 | #else | ||
313 | pushl $SYSENTER_RETURN | ||
314 | #endif | ||
311 | CFI_ADJUST_CFA_OFFSET 4 | 315 | CFI_ADJUST_CFA_OFFSET 4 |
312 | CFI_REL_OFFSET eip, 0 | 316 | CFI_REL_OFFSET eip, 0 |
313 | 317 | ||
@@ -979,38 +983,6 @@ ENTRY(spurious_interrupt_bug) | |||
979 | jmp error_code | 983 | jmp error_code |
980 | CFI_ENDPROC | 984 | CFI_ENDPROC |
981 | 985 | ||
982 | #ifdef CONFIG_STACK_UNWIND | ||
983 | ENTRY(arch_unwind_init_running) | ||
984 | CFI_STARTPROC | ||
985 | movl 4(%esp), %edx | ||
986 | movl (%esp), %ecx | ||
987 | leal 4(%esp), %eax | ||
988 | movl %ebx, PT_EBX(%edx) | ||
989 | xorl %ebx, %ebx | ||
990 | movl %ebx, PT_ECX(%edx) | ||
991 | movl %ebx, PT_EDX(%edx) | ||
992 | movl %esi, PT_ESI(%edx) | ||
993 | movl %edi, PT_EDI(%edx) | ||
994 | movl %ebp, PT_EBP(%edx) | ||
995 | movl %ebx, PT_EAX(%edx) | ||
996 | movl $__USER_DS, PT_DS(%edx) | ||
997 | movl $__USER_DS, PT_ES(%edx) | ||
998 | movl $0, PT_GS(%edx) | ||
999 | movl %ebx, PT_ORIG_EAX(%edx) | ||
1000 | movl %ecx, PT_EIP(%edx) | ||
1001 | movl 12(%esp), %ecx | ||
1002 | movl $__KERNEL_CS, PT_CS(%edx) | ||
1003 | movl %ebx, PT_EFLAGS(%edx) | ||
1004 | movl %eax, PT_OLDESP(%edx) | ||
1005 | movl 8(%esp), %eax | ||
1006 | movl %ecx, 8(%esp) | ||
1007 | movl PT_EBX(%edx), %ebx | ||
1008 | movl $__KERNEL_DS, PT_OLDSS(%edx) | ||
1009 | jmpl *%eax | ||
1010 | CFI_ENDPROC | ||
1011 | ENDPROC(arch_unwind_init_running) | ||
1012 | #endif | ||
1013 | |||
1014 | ENTRY(kernel_thread_helper) | 986 | ENTRY(kernel_thread_helper) |
1015 | pushl $0 # fake return address for unwinder | 987 | pushl $0 # fake return address for unwinder |
1016 | CFI_STARTPROC | 988 | CFI_STARTPROC |