diff options
Diffstat (limited to 'arch/x86/ia32/ia32entry.S')
-rw-r--r-- | arch/x86/ia32/ia32entry.S | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/arch/x86/ia32/ia32entry.S b/arch/x86/ia32/ia32entry.S index df588f0f76e1..2499a324feaa 100644 --- a/arch/x86/ia32/ia32entry.S +++ b/arch/x86/ia32/ia32entry.S | |||
@@ -12,7 +12,6 @@ | |||
12 | #include <asm/ia32_unistd.h> | 12 | #include <asm/ia32_unistd.h> |
13 | #include <asm/thread_info.h> | 13 | #include <asm/thread_info.h> |
14 | #include <asm/segment.h> | 14 | #include <asm/segment.h> |
15 | #include <asm/vsyscall32.h> | ||
16 | #include <asm/irqflags.h> | 15 | #include <asm/irqflags.h> |
17 | #include <linux/linkage.h> | 16 | #include <linux/linkage.h> |
18 | 17 | ||
@@ -104,7 +103,7 @@ ENTRY(ia32_sysenter_target) | |||
104 | pushfq | 103 | pushfq |
105 | CFI_ADJUST_CFA_OFFSET 8 | 104 | CFI_ADJUST_CFA_OFFSET 8 |
106 | /*CFI_REL_OFFSET rflags,0*/ | 105 | /*CFI_REL_OFFSET rflags,0*/ |
107 | movl $VSYSCALL32_SYSEXIT, %r10d | 106 | movl 8*3-THREAD_SIZE+threadinfo_sysenter_return(%rsp), %r10d |
108 | CFI_REGISTER rip,r10 | 107 | CFI_REGISTER rip,r10 |
109 | pushq $__USER32_CS | 108 | pushq $__USER32_CS |
110 | CFI_ADJUST_CFA_OFFSET 8 | 109 | CFI_ADJUST_CFA_OFFSET 8 |
@@ -142,6 +141,8 @@ sysenter_do_call: | |||
142 | andl $~TS_COMPAT,threadinfo_status(%r10) | 141 | andl $~TS_COMPAT,threadinfo_status(%r10) |
143 | /* clear IF, that popfq doesn't enable interrupts early */ | 142 | /* clear IF, that popfq doesn't enable interrupts early */ |
144 | andl $~0x200,EFLAGS-R11(%rsp) | 143 | andl $~0x200,EFLAGS-R11(%rsp) |
144 | movl RIP-R11(%rsp),%edx /* User %eip */ | ||
145 | CFI_REGISTER rip,rdx | ||
145 | RESTORE_ARGS 1,24,1,1,1,1 | 146 | RESTORE_ARGS 1,24,1,1,1,1 |
146 | popfq | 147 | popfq |
147 | CFI_ADJUST_CFA_OFFSET -8 | 148 | CFI_ADJUST_CFA_OFFSET -8 |
@@ -149,8 +150,6 @@ sysenter_do_call: | |||
149 | popq %rcx /* User %esp */ | 150 | popq %rcx /* User %esp */ |
150 | CFI_ADJUST_CFA_OFFSET -8 | 151 | CFI_ADJUST_CFA_OFFSET -8 |
151 | CFI_REGISTER rsp,rcx | 152 | CFI_REGISTER rsp,rcx |
152 | movl $VSYSCALL32_SYSEXIT,%edx /* User %eip */ | ||
153 | CFI_REGISTER rip,rdx | ||
154 | TRACE_IRQS_ON | 153 | TRACE_IRQS_ON |
155 | swapgs | 154 | swapgs |
156 | sti /* sti only takes effect after the next instruction */ | 155 | sti /* sti only takes effect after the next instruction */ |