Commit 95f66b37 authored by Ingo Molnar's avatar Ingo Molnar
Browse files

Merge branch 'x86/asm' into x86/mm

parents 46cb27f5 9f331119
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -128,7 +128,7 @@
#ifndef __ASSEMBLY__
#ifndef __ASSEMBLY__
static inline int invalid_vm86_irq(int irq)
static inline int invalid_vm86_irq(int irq)
{
{
	return irq < 3 || irq > 15;
	return irq < FIRST_VM86_IRQ || irq > LAST_VM86_IRQ;
}
}
#endif
#endif


+14 −2
Original line number Original line Diff line number Diff line
@@ -192,14 +192,26 @@ static inline int __copy_from_user_nocache(void *dst, const void __user *src,
					   unsigned size)
					   unsigned size)
{
{
	might_sleep();
	might_sleep();
	/*
	 * In practice this limit means that large file write()s
	 * which get chunked to 4K copies get handled via
	 * non-temporal stores here. Smaller writes get handled
	 * via regular __copy_from_user():
	 */
	if (likely(size >= PAGE_SIZE))
		return __copy_user_nocache(dst, src, size, 1);
		return __copy_user_nocache(dst, src, size, 1);
	else
		return __copy_from_user(dst, src, size);
}
}


static inline int __copy_from_user_inatomic_nocache(void *dst,
static inline int __copy_from_user_inatomic_nocache(void *dst,
						    const void __user *src,
						    const void __user *src,
						    unsigned size)
						    unsigned size)
{
{
	if (likely(size >= PAGE_SIZE))
		return __copy_user_nocache(dst, src, size, 0);
		return __copy_user_nocache(dst, src, size, 0);
	else
		return __copy_from_user_inatomic(dst, src, size);
}
}


unsigned long
unsigned long
+1 −0
Original line number Original line Diff line number Diff line
@@ -113,6 +113,7 @@ ENTRY(efi_call_phys)
	movl	(%edx), %ecx
	movl	(%edx), %ecx
	pushl	%ecx
	pushl	%ecx
	ret
	ret
ENDPROC(efi_call_phys)
.previous
.previous


.data
.data
+7 −0
Original line number Original line Diff line number Diff line
@@ -41,6 +41,7 @@ ENTRY(efi_call0)
	addq $32, %rsp
	addq $32, %rsp
	RESTORE_XMM
	RESTORE_XMM
	ret
	ret
ENDPROC(efi_call0)


ENTRY(efi_call1)
ENTRY(efi_call1)
	SAVE_XMM
	SAVE_XMM
@@ -50,6 +51,7 @@ ENTRY(efi_call1)
	addq $32, %rsp
	addq $32, %rsp
	RESTORE_XMM
	RESTORE_XMM
	ret
	ret
ENDPROC(efi_call1)


ENTRY(efi_call2)
ENTRY(efi_call2)
	SAVE_XMM
	SAVE_XMM
@@ -59,6 +61,7 @@ ENTRY(efi_call2)
	addq $32, %rsp
	addq $32, %rsp
	RESTORE_XMM
	RESTORE_XMM
	ret
	ret
ENDPROC(efi_call2)


ENTRY(efi_call3)
ENTRY(efi_call3)
	SAVE_XMM
	SAVE_XMM
@@ -69,6 +72,7 @@ ENTRY(efi_call3)
	addq $32, %rsp
	addq $32, %rsp
	RESTORE_XMM
	RESTORE_XMM
	ret
	ret
ENDPROC(efi_call3)


ENTRY(efi_call4)
ENTRY(efi_call4)
	SAVE_XMM
	SAVE_XMM
@@ -80,6 +84,7 @@ ENTRY(efi_call4)
	addq $32, %rsp
	addq $32, %rsp
	RESTORE_XMM
	RESTORE_XMM
	ret
	ret
ENDPROC(efi_call4)


ENTRY(efi_call5)
ENTRY(efi_call5)
	SAVE_XMM
	SAVE_XMM
@@ -92,6 +97,7 @@ ENTRY(efi_call5)
	addq $48, %rsp
	addq $48, %rsp
	RESTORE_XMM
	RESTORE_XMM
	ret
	ret
ENDPROC(efi_call5)


ENTRY(efi_call6)
ENTRY(efi_call6)
	SAVE_XMM
	SAVE_XMM
@@ -107,3 +113,4 @@ ENTRY(efi_call6)
	addq $48, %rsp
	addq $48, %rsp
	RESTORE_XMM
	RESTORE_XMM
	ret
	ret
ENDPROC(efi_call6)
+8 −15
Original line number Original line Diff line number Diff line
@@ -77,20 +77,17 @@ ENTRY(ftrace_caller)
	movq 8(%rbp), %rsi
	movq 8(%rbp), %rsi
	subq $MCOUNT_INSN_SIZE, %rdi
	subq $MCOUNT_INSN_SIZE, %rdi


.globl ftrace_call
GLOBAL(ftrace_call)
ftrace_call:
	call ftrace_stub
	call ftrace_stub


	MCOUNT_RESTORE_FRAME
	MCOUNT_RESTORE_FRAME


#ifdef CONFIG_FUNCTION_GRAPH_TRACER
#ifdef CONFIG_FUNCTION_GRAPH_TRACER
.globl ftrace_graph_call
GLOBAL(ftrace_graph_call)
ftrace_graph_call:
	jmp ftrace_stub
	jmp ftrace_stub
#endif
#endif


.globl ftrace_stub
GLOBAL(ftrace_stub)
ftrace_stub:
	retq
	retq
END(ftrace_caller)
END(ftrace_caller)


@@ -110,8 +107,7 @@ ENTRY(mcount)
	jnz ftrace_graph_caller
	jnz ftrace_graph_caller
#endif
#endif


.globl ftrace_stub
GLOBAL(ftrace_stub)
ftrace_stub:
	retq
	retq


trace:
trace:
@@ -148,9 +144,7 @@ ENTRY(ftrace_graph_caller)
	retq
	retq
END(ftrace_graph_caller)
END(ftrace_graph_caller)



GLOBAL(return_to_handler)
.globl return_to_handler
return_to_handler:
	subq  $80, %rsp
	subq  $80, %rsp


	movq %rax, (%rsp)
	movq %rax, (%rsp)
@@ -188,6 +182,7 @@ return_to_handler:
ENTRY(native_usergs_sysret64)
ENTRY(native_usergs_sysret64)
	swapgs
	swapgs
	sysretq
	sysretq
ENDPROC(native_usergs_sysret64)
#endif /* CONFIG_PARAVIRT */
#endif /* CONFIG_PARAVIRT */




@@ -633,16 +628,14 @@ tracesys:
 * Syscall return path ending with IRET.
 * Syscall return path ending with IRET.
 * Has correct top of stack, but partial stack frame.
 * Has correct top of stack, but partial stack frame.
 */
 */
	.globl int_ret_from_sys_call
GLOBAL(int_ret_from_sys_call)
	.globl int_with_check
int_ret_from_sys_call:
	DISABLE_INTERRUPTS(CLBR_NONE)
	DISABLE_INTERRUPTS(CLBR_NONE)
	TRACE_IRQS_OFF
	TRACE_IRQS_OFF
	testl $3,CS-ARGOFFSET(%rsp)
	testl $3,CS-ARGOFFSET(%rsp)
	je retint_restore_args
	je retint_restore_args
	movl $_TIF_ALLWORK_MASK,%edi
	movl $_TIF_ALLWORK_MASK,%edi
	/* edi:	mask to check */
	/* edi:	mask to check */
int_with_check:
GLOBAL(int_with_check)
	LOCKDEP_SYS_EXIT_IRQ
	LOCKDEP_SYS_EXIT_IRQ
	GET_THREAD_INFO(%rcx)
	GET_THREAD_INFO(%rcx)
	movl TI_flags(%rcx),%edx
	movl TI_flags(%rcx),%edx
Loading