diff options
Diffstat (limited to 'arch/x86/kernel/head_32.S')
| -rw-r--r-- | arch/x86/kernel/head_32.S | 7 | 
1 files changed, 6 insertions, 1 deletions
diff --git a/arch/x86/kernel/head_32.S b/arch/x86/kernel/head_32.S index 81ba27679f1..f36bd42d6f0 100644 --- a/arch/x86/kernel/head_32.S +++ b/arch/x86/kernel/head_32.S @@ -544,6 +544,10 @@ ENDPROC(early_idt_handlers)  	/* This is global to keep gas from relaxing the jumps */  ENTRY(early_idt_handler)  	cld + +	cmpl $2,(%esp)		# X86_TRAP_NMI +	je is_nmi		# Ignore NMI +  	cmpl $2,%ss:early_recursion_flag  	je hlt_loop  	incl %ss:early_recursion_flag @@ -594,8 +598,9 @@ ex_entry:  	pop %edx  	pop %ecx  	pop %eax -	addl $8,%esp		/* drop vector number and error code */  	decl %ss:early_recursion_flag +is_nmi: +	addl $8,%esp		/* drop vector number and error code */  	iret  ENDPROC(early_idt_handler)  | 
