diff options
Diffstat (limited to 'arch/x86/kernel/entry_64.S')
| -rw-r--r-- | arch/x86/kernel/entry_64.S | 42 | 
1 files changed, 24 insertions, 18 deletions
diff --git a/arch/x86/kernel/entry_64.S b/arch/x86/kernel/entry_64.S index 38946c6e843..c251be74510 100644 --- a/arch/x86/kernel/entry_64.S +++ b/arch/x86/kernel/entry_64.S @@ -135,6 +135,7 @@ ENTRY(ftrace_graph_caller)  	leaq 8(%rbp), %rdi  	movq 0x38(%rsp), %rsi +	movq (%rbp), %rdx  	subq $MCOUNT_INSN_SIZE, %rsi  	call	prepare_ftrace_return @@ -147,27 +148,15 @@ END(ftrace_graph_caller)  GLOBAL(return_to_handler)  	subq  $80, %rsp +	/* Save the return values */  	movq %rax, (%rsp) -	movq %rcx, 8(%rsp) -	movq %rdx, 16(%rsp) -	movq %rsi, 24(%rsp) -	movq %rdi, 32(%rsp) -	movq %r8, 40(%rsp) -	movq %r9, 48(%rsp) -	movq %r10, 56(%rsp) -	movq %r11, 64(%rsp) +	movq %rdx, 8(%rsp) +	movq %rbp, %rdi  	call ftrace_return_to_handler  	movq %rax, 72(%rsp) -	movq 64(%rsp), %r11 -	movq 56(%rsp), %r10 -	movq 48(%rsp), %r9 -	movq 40(%rsp), %r8 -	movq 32(%rsp), %rdi -	movq 24(%rsp), %rsi -	movq 16(%rsp), %rdx -	movq 8(%rsp), %rcx +	movq 8(%rsp), %rdx  	movq (%rsp), %rax  	addq $72, %rsp  	retq @@ -976,6 +965,8 @@ END(\sym)  #ifdef CONFIG_SMP  apicinterrupt IRQ_MOVE_CLEANUP_VECTOR \  	irq_move_cleanup_interrupt smp_irq_move_cleanup_interrupt +apicinterrupt REBOOT_VECTOR \ +	reboot_interrupt smp_reboot_interrupt  #endif  #ifdef CONFIG_X86_UV @@ -1007,10 +998,15 @@ apicinterrupt INVALIDATE_TLB_VECTOR_START+7 \  #endif  apicinterrupt THRESHOLD_APIC_VECTOR \ -	threshold_interrupt mce_threshold_interrupt +	threshold_interrupt smp_threshold_interrupt  apicinterrupt THERMAL_APIC_VECTOR \  	thermal_interrupt smp_thermal_interrupt +#ifdef CONFIG_X86_MCE +apicinterrupt MCE_SELF_VECTOR \ +	mce_self_interrupt smp_mce_self_interrupt +#endif +  #ifdef CONFIG_SMP  apicinterrupt CALL_FUNCTION_SINGLE_VECTOR \  	call_function_single_interrupt smp_call_function_single_interrupt @@ -1025,6 +1021,11 @@ apicinterrupt ERROR_APIC_VECTOR \  apicinterrupt SPURIOUS_APIC_VECTOR \  	spurious_interrupt smp_spurious_interrupt +#ifdef CONFIG_PERF_COUNTERS +apicinterrupt LOCAL_PENDING_VECTOR \ +	perf_pending_interrupt smp_perf_pending_interrupt +#endif +  /*   * Exception entry points.   */ @@ -1379,10 +1380,15 @@ END(xen_failsafe_callback)  paranoidzeroentry_ist debug do_debug DEBUG_STACK  paranoidzeroentry_ist int3 do_int3 DEBUG_STACK  paranoiderrorentry stack_segment do_stack_segment +#ifdef CONFIG_XEN +zeroentry xen_debug do_debug +zeroentry xen_int3 do_int3 +errorentry xen_stack_segment do_stack_segment +#endif  errorentry general_protection do_general_protection  errorentry page_fault do_page_fault  #ifdef CONFIG_X86_MCE -paranoidzeroentry machine_check do_machine_check +paranoidzeroentry machine_check *machine_check_vector(%rip)  #endif  	/*  |