diff options
Diffstat (limited to 'arch/s390/kernel/vdso64/clock_gettime.S')
| -rw-r--r-- | arch/s390/kernel/vdso64/clock_gettime.S | 11 | 
1 files changed, 9 insertions, 2 deletions
diff --git a/arch/s390/kernel/vdso64/clock_gettime.S b/arch/s390/kernel/vdso64/clock_gettime.S index 79dbfee831e..49106c6e6f8 100644 --- a/arch/s390/kernel/vdso64/clock_gettime.S +++ b/arch/s390/kernel/vdso64/clock_gettime.S @@ -88,10 +88,17 @@ __kernel_clock_gettime:  	llilh	%r4,0x0100  	sar	%a4,%r4  	lghi	%r4,0 +	epsw	%r5,0  	sacf	512				/* Magic ectg instruction */  	.insn	ssf,0xc80100000000,__VDSO_ECTG_BASE(4),__VDSO_ECTG_USER(4),4 -	sacf	0 -	sar	%a4,%r2 +	tml	%r5,0x4000 +	jo	11f +	tml	%r5,0x8000 +	jno	10f +	sacf	256 +	j	11f +10:	sacf	0 +11:	sar	%a4,%r2  	algr	%r1,%r0				/* r1 = cputime as TOD value */  	mghi	%r1,1000			/* convert to nanoseconds */  	srlg	%r1,%r1,12			/* r1 = cputime in nanosec */  |