aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/entry_32.S
diff options
context:
space:
mode:
authorGrant Likely <grant.likely@secretlab.ca>2012-11-15 10:34:22 +0000
committerGrant Likely <grant.likely@secretlab.ca>2012-11-15 10:34:22 +0000
commitda63d20bfb12827dd7747a841ea27348af3abc0a (patch)
treeba275a74d068f91b453c08b9bacf8afe9577db9b /arch/x86/kernel/entry_32.S
parentof: Add vendor prefix for ON Semiconductor Corp. (diff)
parentLinux 3.7-rc5 (diff)
downloadlinux-dev-da63d20bfb12827dd7747a841ea27348af3abc0a.tar.xz
linux-dev-da63d20bfb12827dd7747a841ea27348af3abc0a.zip
Merge tag 'v3.7-rc5' into devicetree/next
Linux 3.7-rc5
Diffstat (limited to 'arch/x86/kernel/entry_32.S')
-rw-r--r--arch/x86/kernel/entry_32.S8
1 files changed, 5 insertions, 3 deletions
diff --git a/arch/x86/kernel/entry_32.S b/arch/x86/kernel/entry_32.S
index a1193aef6d7d..88b725aa1d52 100644
--- a/arch/x86/kernel/entry_32.S
+++ b/arch/x86/kernel/entry_32.S
@@ -1035,7 +1035,7 @@ ENTRY(xen_sysenter_target)
ENTRY(xen_hypervisor_callback)
CFI_STARTPROC
- pushl_cfi $0
+ pushl_cfi $-1 /* orig_ax = -1 => not a system call */
SAVE_ALL
TRACE_IRQS_OFF
@@ -1077,14 +1077,16 @@ ENTRY(xen_failsafe_callback)
2: mov 8(%esp),%es
3: mov 12(%esp),%fs
4: mov 16(%esp),%gs
+ /* EAX == 0 => Category 1 (Bad segment)
+ EAX != 0 => Category 2 (Bad IRET) */
testl %eax,%eax
popl_cfi %eax
lea 16(%esp),%esp
CFI_ADJUST_CFA_OFFSET -16
jz 5f
addl $16,%esp
- jmp iret_exc # EAX != 0 => Category 2 (Bad IRET)
-5: pushl_cfi $0 # EAX == 0 => Category 1 (Bad segment)
+ jmp iret_exc
+5: pushl_cfi $-1 /* orig_ax = -1 => not a system call */
SAVE_ALL
jmp ret_from_exception
CFI_ENDPROC