Просмотр исходного кода

s390: use 64-bit lctlg to load task pid to cr4 on context switch

The 32-bit lctl instruction is quite a bit slower than the 64-bit
counter part lctlg. Use the faster instruction.

Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Martin Schwidefsky 8 лет назад
Родитель
Сommit
cab36c262e
1 измененных файлов с 3 добавлено и 1 удалено
  1. 3 1
      arch/s390/kernel/entry.S

+ 3 - 1
arch/s390/kernel/entry.S

@@ -190,7 +190,9 @@ ENTRY(__switch_to)
 	stg	%r15,__LC_KERNEL_STACK		# store end of kernel stack
 	lg	%r15,__THREAD_ksp(%r1)		# load kernel stack of next
 	/* c4 is used in guest detection: arch/s390/kernel/perf_cpum_sf.c */
-	lctl	%c4,%c4,__TASK_pid(%r3)		# load pid to control reg. 4
+	xc	__SF_EMPTY(8,%r15),__SF_EMPTY(%r15)
+	mvc	__SF_EMPTY+4(4,%r15),__TASK_pid(%r3)
+	lctlg	%c4,%c4,__SF_EMPTY(%r15)	# load pid to control reg. 4
 	mvc	__LC_CURRENT_PID(4,%r0),__TASK_pid(%r3) # store pid of next
 	lmg	%r6,%r15,__SF_GPRS(%r15)	# load gprs of next task
 	TSTMSK	__LC_MACHINE_FLAGS,MACHINE_FLAG_LPP