aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86
diff options
context:
space:
mode:
authorJeremy Fitzhardinge <jeremy@goop.org>2008-07-12 05:22:12 -0400
committerIngo Molnar <mingo@elte.hu>2008-07-16 05:08:58 -0400
commit094029479be8eb380447f42eff1b35362ef1a464 (patch)
tree63600b21464813881e05aaf4709b828c2eb4544b /arch/x86
parentd5303b811b9d6dad2e7396d545eb7db414d42a61 (diff)
x86_64: adjust exception frame on paranoid exceptions
Exceptions using paranoidentry need to have their exception frames adjusted explicitly. Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com> Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Diffstat (limited to 'arch/x86')
-rw-r--r--arch/x86/kernel/entry_64.S6
1 files changed, 6 insertions, 0 deletions
diff --git a/arch/x86/kernel/entry_64.S b/arch/x86/kernel/entry_64.S
index 6aa6932e21b1..80d5663db3bc 100644
--- a/arch/x86/kernel/entry_64.S
+++ b/arch/x86/kernel/entry_64.S
@@ -1189,6 +1189,7 @@ END(device_not_available)
1189 /* runs on exception stack */ 1189 /* runs on exception stack */
1190KPROBE_ENTRY(debug) 1190KPROBE_ENTRY(debug)
1191 INTR_FRAME 1191 INTR_FRAME
1192 PARAVIRT_ADJUST_EXCEPTION_FRAME
1192 pushq $0 1193 pushq $0
1193 CFI_ADJUST_CFA_OFFSET 8 1194 CFI_ADJUST_CFA_OFFSET 8
1194 paranoidentry do_debug, DEBUG_STACK 1195 paranoidentry do_debug, DEBUG_STACK
@@ -1198,6 +1199,7 @@ KPROBE_END(debug)
1198 /* runs on exception stack */ 1199 /* runs on exception stack */
1199KPROBE_ENTRY(nmi) 1200KPROBE_ENTRY(nmi)
1200 INTR_FRAME 1201 INTR_FRAME
1202 PARAVIRT_ADJUST_EXCEPTION_FRAME
1201 pushq $-1 1203 pushq $-1
1202 CFI_ADJUST_CFA_OFFSET 8 1204 CFI_ADJUST_CFA_OFFSET 8
1203 paranoidentry do_nmi, 0, 0 1205 paranoidentry do_nmi, 0, 0
@@ -1211,6 +1213,7 @@ KPROBE_END(nmi)
1211 1213
1212KPROBE_ENTRY(int3) 1214KPROBE_ENTRY(int3)
1213 INTR_FRAME 1215 INTR_FRAME
1216 PARAVIRT_ADJUST_EXCEPTION_FRAME
1214 pushq $0 1217 pushq $0
1215 CFI_ADJUST_CFA_OFFSET 8 1218 CFI_ADJUST_CFA_OFFSET 8
1216 paranoidentry do_int3, DEBUG_STACK 1219 paranoidentry do_int3, DEBUG_STACK
@@ -1237,6 +1240,7 @@ END(coprocessor_segment_overrun)
1237 /* runs on exception stack */ 1240 /* runs on exception stack */
1238ENTRY(double_fault) 1241ENTRY(double_fault)
1239 XCPT_FRAME 1242 XCPT_FRAME
1243 PARAVIRT_ADJUST_EXCEPTION_FRAME
1240 paranoidentry do_double_fault 1244 paranoidentry do_double_fault
1241 jmp paranoid_exit1 1245 jmp paranoid_exit1
1242 CFI_ENDPROC 1246 CFI_ENDPROC
@@ -1253,6 +1257,7 @@ END(segment_not_present)
1253 /* runs on exception stack */ 1257 /* runs on exception stack */
1254ENTRY(stack_segment) 1258ENTRY(stack_segment)
1255 XCPT_FRAME 1259 XCPT_FRAME
1260 PARAVIRT_ADJUST_EXCEPTION_FRAME
1256 paranoidentry do_stack_segment 1261 paranoidentry do_stack_segment
1257 jmp paranoid_exit1 1262 jmp paranoid_exit1
1258 CFI_ENDPROC 1263 CFI_ENDPROC
@@ -1278,6 +1283,7 @@ END(spurious_interrupt_bug)
1278 /* runs on exception stack */ 1283 /* runs on exception stack */
1279ENTRY(machine_check) 1284ENTRY(machine_check)
1280 INTR_FRAME 1285 INTR_FRAME
1286 PARAVIRT_ADJUST_EXCEPTION_FRAME
1281 pushq $0 1287 pushq $0
1282 CFI_ADJUST_CFA_OFFSET 8 1288 CFI_ADJUST_CFA_OFFSET 8
1283 paranoidentry do_machine_check 1289 paranoidentry do_machine_check