From: Ingo Molnar Date: Thu, 22 May 2014 11:56:33 +0000 (+0200) Subject: Merge branch 'x86/asm' X-Git-Tag: next-20140530~38^2~8 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=950b4541b0300f9f8088212375c6389b3bac62d8;p=karo-tx-linux.git Merge branch 'x86/asm' Conflicts: arch/x86/kernel/entry_64.S --- 950b4541b0300f9f8088212375c6389b3bac62d8 diff --cc arch/x86/kernel/entry_64.S index b585c38d2488,be846d2468f7..010ff94ce564 --- a/arch/x86/kernel/entry_64.S +++ b/arch/x86/kernel/entry_64.S @@@ -1351,39 -1284,19 +1346,19 @@@ idtentry \sym \do_sym has_error_code=\h .endm #endif - /* error code is on the stack already */ - .macro paranoiderrorentry sym do_sym - ENTRY(\sym) - XCPT_FRAME - ASM_CLAC - PARAVIRT_ADJUST_EXCEPTION_FRAME - subq $ORIG_RAX-R15, %rsp - CFI_ADJUST_CFA_OFFSET ORIG_RAX-R15 - call save_paranoid - DEFAULT_FRAME 0 - TRACE_IRQS_OFF - movq %rsp,%rdi /* pt_regs pointer */ - movq ORIG_RAX(%rsp),%rsi /* get error code */ - movq $-1,ORIG_RAX(%rsp) /* no syscall to restart */ - call \do_sym - jmp paranoid_exit /* %ebx: no swapgs flag */ - CFI_ENDPROC - END(\sym) - .endm - - zeroentry divide_error do_divide_error - zeroentry overflow do_overflow - zeroentry bounds do_bounds - zeroentry invalid_op do_invalid_op - zeroentry device_not_available do_device_not_available - paranoiderrorentry double_fault __do_double_fault - zeroentry coprocessor_segment_overrun do_coprocessor_segment_overrun - errorentry invalid_TSS do_invalid_TSS - errorentry segment_not_present do_segment_not_present - zeroentry spurious_interrupt_bug do_spurious_interrupt_bug - zeroentry coprocessor_error do_coprocessor_error - errorentry alignment_check do_alignment_check - zeroentry simd_coprocessor_error do_simd_coprocessor_error + idtentry divide_error do_divide_error has_error_code=0 + idtentry overflow do_overflow has_error_code=0 + idtentry bounds do_bounds has_error_code=0 + idtentry invalid_op do_invalid_op has_error_code=0 + idtentry device_not_available do_device_not_available has_error_code=0 -idtentry double_fault do_double_fault has_error_code=1 paranoid=1 ++idtentry double_fault __do_double_fault has_error_code=1 paranoid=1 + idtentry coprocessor_segment_overrun do_coprocessor_segment_overrun has_error_code=0 + idtentry invalid_TSS do_invalid_TSS has_error_code=1 + idtentry segment_not_present do_segment_not_present has_error_code=1 + idtentry spurious_interrupt_bug do_spurious_interrupt_bug has_error_code=0 + idtentry coprocessor_error do_coprocessor_error has_error_code=0 + idtentry alignment_check do_alignment_check has_error_code=1 + idtentry simd_coprocessor_error do_simd_coprocessor_error has_error_code=0 /* Reload gs selector with exception handling */ @@@ -1539,21 -1452,26 +1514,21 @@@ apicinterrupt3 HYPERVISOR_CALLBACK_VECT hyperv_callback_vector hyperv_vector_handler #endif /* CONFIG_HYPERV */ - paranoidzeroentry_ist debug do_debug DEBUG_STACK - paranoidzeroentry_ist int3 do_int3 DEBUG_STACK - paranoiderrorentry stack_segment do_stack_segment -/* - * Some functions should be protected against kprobes - */ - .pushsection .kprobes.text, "ax" - + idtentry debug do_debug has_error_code=0 paranoid=1 shift_ist=DEBUG_STACK + idtentry int3 do_int3 has_error_code=0 paranoid=1 shift_ist=DEBUG_STACK + idtentry stack_segment do_stack_segment has_error_code=1 paranoid=1 #ifdef CONFIG_XEN - zeroentry xen_debug do_debug - zeroentry xen_int3 do_int3 - errorentry xen_stack_segment do_stack_segment + idtentry xen_debug do_debug has_error_code=0 + idtentry xen_int3 do_int3 has_error_code=0 + idtentry xen_stack_segment do_stack_segment has_error_code=1 #endif - errorentry general_protection do_general_protection - trace_errorentry page_fault do_page_fault + idtentry general_protection do_general_protection has_error_code=1 + trace_idtentry page_fault do_page_fault has_error_code=1 #ifdef CONFIG_KVM_GUEST - errorentry async_page_fault do_async_page_fault + idtentry async_page_fault do_async_page_fault has_error_code=1 #endif #ifdef CONFIG_X86_MCE - paranoidzeroentry machine_check *machine_check_vector(%rip) + idtentry machine_check has_error_code=0 paranoid=1 do_sym=*machine_check_vector(%rip) #endif /*