Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit de989ef0 authored by Ingo Molnar's avatar Ingo Molnar
Browse files

Merge branch 'x86/unify-lib' into x86/core

parents a737abd1 22cac167
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -344,7 +344,7 @@ config X86_F00F_BUG

config X86_WP_WORKS_OK
	def_bool y
	depends on X86_32 && !M386
	depends on !M386

config X86_INVLPG
	def_bool y
+14 −11
Original line number Diff line number Diff line
@@ -116,7 +116,7 @@ ENTRY(ia32_sysenter_target)
	pushfq
	CFI_ADJUST_CFA_OFFSET 8
	/*CFI_REL_OFFSET rflags,0*/
	movl	8*3-THREAD_SIZE+threadinfo_sysenter_return(%rsp), %r10d
	movl	8*3-THREAD_SIZE+TI_sysenter_return(%rsp), %r10d
	CFI_REGISTER rip,r10
	pushq	$__USER32_CS
	CFI_ADJUST_CFA_OFFSET 8
@@ -136,8 +136,9 @@ ENTRY(ia32_sysenter_target)
 	.quad 1b,ia32_badarg
 	.previous	
	GET_THREAD_INFO(%r10)
	orl    $TS_COMPAT,threadinfo_status(%r10)
	testl  $(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT|_TIF_SECCOMP),threadinfo_flags(%r10)
	orl    $TS_COMPAT,TI_status(%r10)
	testl  $(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT|_TIF_SECCOMP), \
		 TI_flags(%r10)
	CFI_REMEMBER_STATE
	jnz  sysenter_tracesys
sysenter_do_call:	
@@ -149,9 +150,9 @@ sysenter_do_call:
	GET_THREAD_INFO(%r10)
	DISABLE_INTERRUPTS(CLBR_NONE)
	TRACE_IRQS_OFF
	testl	$_TIF_ALLWORK_MASK,threadinfo_flags(%r10)
	testl	$_TIF_ALLWORK_MASK,TI_flags(%r10)
	jnz	int_ret_from_sys_call
	andl    $~TS_COMPAT,threadinfo_status(%r10)
	andl    $~TS_COMPAT,TI_status(%r10)
	/* clear IF, that popfq doesn't enable interrupts early */
	andl  $~0x200,EFLAGS-R11(%rsp) 
	movl	RIP-R11(%rsp),%edx		/* User %eip */
@@ -240,8 +241,9 @@ ENTRY(ia32_cstar_target)
	.quad 1b,ia32_badarg
	.previous	
	GET_THREAD_INFO(%r10)
	orl   $TS_COMPAT,threadinfo_status(%r10)
	testl $(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT|_TIF_SECCOMP),threadinfo_flags(%r10)
	orl   $TS_COMPAT,TI_status(%r10)
	testl $(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT|_TIF_SECCOMP), \
		TI_flags(%r10)
	CFI_REMEMBER_STATE
	jnz   cstar_tracesys
cstar_do_call:	
@@ -253,9 +255,9 @@ cstar_do_call:
	GET_THREAD_INFO(%r10)
	DISABLE_INTERRUPTS(CLBR_NONE)
	TRACE_IRQS_OFF
	testl $_TIF_ALLWORK_MASK,threadinfo_flags(%r10)
	testl $_TIF_ALLWORK_MASK,TI_flags(%r10)
	jnz  int_ret_from_sys_call
	andl $~TS_COMPAT,threadinfo_status(%r10)
	andl $~TS_COMPAT,TI_status(%r10)
	RESTORE_ARGS 1,-ARG_SKIP,1,1,1
	movl RIP-ARGOFFSET(%rsp),%ecx
	CFI_REGISTER rip,rcx
@@ -333,8 +335,9 @@ ENTRY(ia32_syscall)
	   this could be a problem. */
	SAVE_ARGS 0,0,1
	GET_THREAD_INFO(%r10)
	orl   $TS_COMPAT,threadinfo_status(%r10)
	testl $(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT|_TIF_SECCOMP),threadinfo_flags(%r10)
	orl   $TS_COMPAT,TI_status(%r10)
	testl $(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT|_TIF_SECCOMP), \
		TI_flags(%r10)
	jnz ia32_tracesys
ia32_do_syscall:	
	cmpl $(IA32_NR_syscalls-1),%eax
+1 −1
Original line number Diff line number Diff line
@@ -34,7 +34,7 @@ int main(void)
	ENTRY(pid);
	BLANK();
#undef ENTRY
#define ENTRY(entry) DEFINE(threadinfo_ ## entry, offsetof(struct thread_info, entry))
#define ENTRY(entry) DEFINE(TI_ ## entry, offsetof(struct thread_info, entry))
	ENTRY(flags);
	ENTRY(addr_limit);
	ENTRY(preempt_count);
+12 −11
Original line number Diff line number Diff line
@@ -168,13 +168,13 @@ ENTRY(ret_from_fork)
	CFI_ADJUST_CFA_OFFSET -4
	call schedule_tail
	GET_THREAD_INFO(%rcx)
	testl $(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT),threadinfo_flags(%rcx)
	testl $(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT),TI_flags(%rcx)
	jnz rff_trace
rff_action:	
	RESTORE_REST
	testl $3,CS-ARGOFFSET(%rsp)	# from kernel_thread?
	je   int_ret_from_sys_call
	testl $_TIF_IA32,threadinfo_flags(%rcx)
	testl $_TIF_IA32,TI_flags(%rcx)
	jnz  int_ret_from_sys_call
	RESTORE_TOP_OF_STACK %rdi,ARGOFFSET
	jmp ret_from_sys_call
@@ -243,7 +243,8 @@ ENTRY(system_call_after_swapgs)
	movq  %rcx,RIP-ARGOFFSET(%rsp)
	CFI_REL_OFFSET rip,RIP-ARGOFFSET
	GET_THREAD_INFO(%rcx)
	testl $(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT|_TIF_SECCOMP),threadinfo_flags(%rcx)
	testl $(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT|_TIF_SECCOMP), \
		TI_flags(%rcx)
	jnz tracesys
	cmpq $__NR_syscall_max,%rax
	ja badsys
@@ -262,7 +263,7 @@ sysret_check:
	GET_THREAD_INFO(%rcx)
	DISABLE_INTERRUPTS(CLBR_NONE)
	TRACE_IRQS_OFF
	movl threadinfo_flags(%rcx),%edx
	movl TI_flags(%rcx),%edx
	andl %edi,%edx
	jnz  sysret_careful 
	CFI_REMEMBER_STATE
@@ -347,10 +348,10 @@ int_ret_from_sys_call:
int_with_check:
	LOCKDEP_SYS_EXIT_IRQ
	GET_THREAD_INFO(%rcx)
	movl threadinfo_flags(%rcx),%edx
	movl TI_flags(%rcx),%edx
	andl %edi,%edx
	jnz   int_careful
	andl    $~TS_COMPAT,threadinfo_status(%rcx)
	andl    $~TS_COMPAT,TI_status(%rcx)
	jmp   retint_swapgs

	/* Either reschedule or signal or syscall exit tracking needed. */
@@ -558,7 +559,7 @@ retint_with_reschedule:
	movl $_TIF_WORK_MASK,%edi
retint_check:
	LOCKDEP_SYS_EXIT_IRQ
	movl threadinfo_flags(%rcx),%edx
	movl TI_flags(%rcx),%edx
	andl %edi,%edx
	CFI_REMEMBER_STATE
	jnz  retint_careful
@@ -654,9 +655,9 @@ retint_signal:
	/* Returning to kernel space. Check if we need preemption */
	/* rcx:	 threadinfo. interrupts off. */
ENTRY(retint_kernel)
	cmpl $0,threadinfo_preempt_count(%rcx)
	cmpl $0,TI_preempt_count(%rcx)
	jnz  retint_restore_args
	bt  $TIF_NEED_RESCHED,threadinfo_flags(%rcx)
	bt  $TIF_NEED_RESCHED,TI_flags(%rcx)
	jnc  retint_restore_args
	bt   $9,EFLAGS-ARGOFFSET(%rsp)	/* interrupts off? */
	jnc  retint_restore_args
@@ -819,7 +820,7 @@ paranoid_restore\trace:
	jmp irq_return
paranoid_userspace\trace:
	GET_THREAD_INFO(%rcx)
	movl threadinfo_flags(%rcx),%ebx
	movl TI_flags(%rcx),%ebx
	andl $_TIF_WORK_MASK,%ebx
	jz paranoid_swapgs\trace
	movq %rsp,%rdi			/* &pt_regs */
@@ -917,7 +918,7 @@ error_exit:
	testl %eax,%eax
	jne  retint_kernel
	LOCKDEP_SYS_EXIT_IRQ
	movl  threadinfo_flags(%rcx),%edx
	movl  TI_flags(%rcx),%edx
	movl  $_TIF_WORK_MASK,%edi
	andl  %edi,%edx
	jnz  retint_careful
+1 −0
Original line number Diff line number Diff line
@@ -513,6 +513,7 @@ void __init tsc_init(void)
	 */
	for_each_possible_cpu(cpu)
		set_cyc2ns_scale(cpu_khz, cpu);
	use_tsc_delay();

	if (tsc_disabled > 0)
		return;
Loading