diff options
author | Jeremy Fitzhardinge <jeremy@goop.org> | 2008-07-12 05:22:12 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-07-16 05:08:58 -0400 |
commit | 094029479be8eb380447f42eff1b35362ef1a464 (patch) | |
tree | 63600b21464813881e05aaf4709b828c2eb4544b /arch/x86/kernel/entry_64.S | |
parent | d5303b811b9d6dad2e7396d545eb7db414d42a61 (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/kernel/entry_64.S')
-rw-r--r-- | arch/x86/kernel/entry_64.S | 6 |
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 */ |
1190 | KPROBE_ENTRY(debug) | 1190 | KPROBE_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 */ |
1199 | KPROBE_ENTRY(nmi) | 1200 | KPROBE_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 | ||
1212 | KPROBE_ENTRY(int3) | 1214 | KPROBE_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 */ |
1238 | ENTRY(double_fault) | 1241 | ENTRY(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 */ |
1254 | ENTRY(stack_segment) | 1258 | ENTRY(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 */ |
1279 | ENTRY(machine_check) | 1284 | ENTRY(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 |