aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/i386/kernel/entry.S18
-rw-r--r--include/asm-i386/dwarf2.h2
2 files changed, 17 insertions, 3 deletions
diff --git a/arch/i386/kernel/entry.S b/arch/i386/kernel/entry.S
index 0928f70639aa..4b0845249222 100644
--- a/arch/i386/kernel/entry.S
+++ b/arch/i386/kernel/entry.S
@@ -701,9 +701,15 @@ device_not_available_emulate:
701 jne ok; \ 701 jne ok; \
702label: \ 702label: \
703 movl TSS_sysenter_esp0+offset(%esp),%esp; \ 703 movl TSS_sysenter_esp0+offset(%esp),%esp; \
704 CFI_DEF_CFA esp, 0; \
705 CFI_UNDEFINED eip; \
704 pushfl; \ 706 pushfl; \
707 CFI_ADJUST_CFA_OFFSET 4; \
705 pushl $__KERNEL_CS; \ 708 pushl $__KERNEL_CS; \
706 pushl $sysenter_past_esp 709 CFI_ADJUST_CFA_OFFSET 4; \
710 pushl $sysenter_past_esp; \
711 CFI_ADJUST_CFA_OFFSET 4; \
712 CFI_REL_OFFSET eip, 0
707 713
708KPROBE_ENTRY(debug) 714KPROBE_ENTRY(debug)
709 RING0_INT_FRAME 715 RING0_INT_FRAME
@@ -754,6 +760,7 @@ KPROBE_ENTRY(nmi)
754 cmpl $sysenter_entry,12(%esp) 760 cmpl $sysenter_entry,12(%esp)
755 je nmi_debug_stack_check 761 je nmi_debug_stack_check
756nmi_stack_correct: 762nmi_stack_correct:
763 /* We have a RING0_INT_FRAME here */
757 pushl %eax 764 pushl %eax
758 CFI_ADJUST_CFA_OFFSET 4 765 CFI_ADJUST_CFA_OFFSET 4
759 SAVE_ALL 766 SAVE_ALL
@@ -764,9 +771,12 @@ nmi_stack_correct:
764 CFI_ENDPROC 771 CFI_ENDPROC
765 772
766nmi_stack_fixup: 773nmi_stack_fixup:
774 RING0_INT_FRAME
767 FIX_STACK(12,nmi_stack_correct, 1) 775 FIX_STACK(12,nmi_stack_correct, 1)
768 jmp nmi_stack_correct 776 jmp nmi_stack_correct
777
769nmi_debug_stack_check: 778nmi_debug_stack_check:
779 /* We have a RING0_INT_FRAME here */
770 cmpw $__KERNEL_CS,16(%esp) 780 cmpw $__KERNEL_CS,16(%esp)
771 jne nmi_stack_correct 781 jne nmi_stack_correct
772 cmpl $debug,(%esp) 782 cmpl $debug,(%esp)
@@ -777,8 +787,10 @@ nmi_debug_stack_check:
777 jmp nmi_stack_correct 787 jmp nmi_stack_correct
778 788
779nmi_16bit_stack: 789nmi_16bit_stack:
780 RING0_INT_FRAME 790 /* We have a RING0_INT_FRAME here.
781 /* create the pointer to lss back */ 791 *
792 * create the pointer to lss back
793 */
782 pushl %ss 794 pushl %ss
783 CFI_ADJUST_CFA_OFFSET 4 795 CFI_ADJUST_CFA_OFFSET 4
784 pushl %esp 796 pushl %esp
diff --git a/include/asm-i386/dwarf2.h b/include/asm-i386/dwarf2.h
index fe2392f361ee..5d1a8db5a9b0 100644
--- a/include/asm-i386/dwarf2.h
+++ b/include/asm-i386/dwarf2.h
@@ -26,6 +26,7 @@
26#define CFI_RESTORE .cfi_restore 26#define CFI_RESTORE .cfi_restore
27#define CFI_REMEMBER_STATE .cfi_remember_state 27#define CFI_REMEMBER_STATE .cfi_remember_state
28#define CFI_RESTORE_STATE .cfi_restore_state 28#define CFI_RESTORE_STATE .cfi_restore_state
29#define CFI_UNDEFINED .cfi_undefined
29 30
30#else 31#else
31 32
@@ -46,6 +47,7 @@
46#define CFI_RESTORE ignore 47#define CFI_RESTORE ignore
47#define CFI_REMEMBER_STATE ignore 48#define CFI_REMEMBER_STATE ignore
48#define CFI_RESTORE_STATE ignore 49#define CFI_RESTORE_STATE ignore
50#define CFI_UNDEFINED ignore
49 51
50#endif 52#endif
51 53