diff options
| -rw-r--r-- | arch/s390/kernel/vdso32/clock_gettime.S | 10 | ||||
| -rw-r--r-- | arch/s390/kernel/vdso64/clock_gettime.S | 10 |
2 files changed, 6 insertions, 14 deletions
diff --git a/arch/s390/kernel/vdso32/clock_gettime.S b/arch/s390/kernel/vdso32/clock_gettime.S index 65fc3979c2f1..7cf18f8d4cb4 100644 --- a/arch/s390/kernel/vdso32/clock_gettime.S +++ b/arch/s390/kernel/vdso32/clock_gettime.S | |||
| @@ -22,13 +22,11 @@ __kernel_clock_gettime: | |||
| 22 | basr %r5,0 | 22 | basr %r5,0 |
| 23 | 0: al %r5,21f-0b(%r5) /* get &_vdso_data */ | 23 | 0: al %r5,21f-0b(%r5) /* get &_vdso_data */ |
| 24 | chi %r2,__CLOCK_REALTIME | 24 | chi %r2,__CLOCK_REALTIME |
| 25 | je 10f | 25 | je 11f |
| 26 | chi %r2,__CLOCK_MONOTONIC | 26 | chi %r2,__CLOCK_MONOTONIC |
| 27 | jne 19f | 27 | jne 19f |
| 28 | 28 | ||
| 29 | /* CLOCK_MONOTONIC */ | 29 | /* CLOCK_MONOTONIC */ |
| 30 | ltr %r3,%r3 | ||
| 31 | jz 9f /* tp == NULL */ | ||
| 32 | 1: l %r4,__VDSO_UPD_COUNT+4(%r5) /* load update counter */ | 30 | 1: l %r4,__VDSO_UPD_COUNT+4(%r5) /* load update counter */ |
| 33 | tml %r4,0x0001 /* pending update ? loop */ | 31 | tml %r4,0x0001 /* pending update ? loop */ |
| 34 | jnz 1b | 32 | jnz 1b |
| @@ -67,12 +65,10 @@ __kernel_clock_gettime: | |||
| 67 | j 6b | 65 | j 6b |
| 68 | 8: st %r2,0(%r3) /* store tp->tv_sec */ | 66 | 8: st %r2,0(%r3) /* store tp->tv_sec */ |
| 69 | st %r1,4(%r3) /* store tp->tv_nsec */ | 67 | st %r1,4(%r3) /* store tp->tv_nsec */ |
| 70 | 9: lhi %r2,0 | 68 | lhi %r2,0 |
| 71 | br %r14 | 69 | br %r14 |
| 72 | 70 | ||
| 73 | /* CLOCK_REALTIME */ | 71 | /* CLOCK_REALTIME */ |
| 74 | 10: ltr %r3,%r3 /* tp == NULL */ | ||
| 75 | jz 18f | ||
| 76 | 11: l %r4,__VDSO_UPD_COUNT+4(%r5) /* load update counter */ | 72 | 11: l %r4,__VDSO_UPD_COUNT+4(%r5) /* load update counter */ |
| 77 | tml %r4,0x0001 /* pending update ? loop */ | 73 | tml %r4,0x0001 /* pending update ? loop */ |
| 78 | jnz 11b | 74 | jnz 11b |
| @@ -111,7 +107,7 @@ __kernel_clock_gettime: | |||
| 111 | j 15b | 107 | j 15b |
| 112 | 17: st %r2,0(%r3) /* store tp->tv_sec */ | 108 | 17: st %r2,0(%r3) /* store tp->tv_sec */ |
| 113 | st %r1,4(%r3) /* store tp->tv_nsec */ | 109 | st %r1,4(%r3) /* store tp->tv_nsec */ |
| 114 | 18: lhi %r2,0 | 110 | lhi %r2,0 |
| 115 | br %r14 | 111 | br %r14 |
| 116 | 112 | ||
| 117 | /* Fallback to system call */ | 113 | /* Fallback to system call */ |
diff --git a/arch/s390/kernel/vdso64/clock_gettime.S b/arch/s390/kernel/vdso64/clock_gettime.S index 91940ed33a4a..3f34e09db5f4 100644 --- a/arch/s390/kernel/vdso64/clock_gettime.S +++ b/arch/s390/kernel/vdso64/clock_gettime.S | |||
| @@ -21,7 +21,7 @@ __kernel_clock_gettime: | |||
| 21 | .cfi_startproc | 21 | .cfi_startproc |
| 22 | larl %r5,_vdso_data | 22 | larl %r5,_vdso_data |
| 23 | cghi %r2,__CLOCK_REALTIME | 23 | cghi %r2,__CLOCK_REALTIME |
| 24 | je 4f | 24 | je 5f |
| 25 | cghi %r2,__CLOCK_THREAD_CPUTIME_ID | 25 | cghi %r2,__CLOCK_THREAD_CPUTIME_ID |
| 26 | je 9f | 26 | je 9f |
| 27 | cghi %r2,-2 /* Per-thread CPUCLOCK with PID=0, VIRT=1 */ | 27 | cghi %r2,-2 /* Per-thread CPUCLOCK with PID=0, VIRT=1 */ |
| @@ -30,8 +30,6 @@ __kernel_clock_gettime: | |||
| 30 | jne 12f | 30 | jne 12f |
| 31 | 31 | ||
| 32 | /* CLOCK_MONOTONIC */ | 32 | /* CLOCK_MONOTONIC */ |
| 33 | ltgr %r3,%r3 | ||
| 34 | jz 3f /* tp == NULL */ | ||
| 35 | 0: lg %r4,__VDSO_UPD_COUNT(%r5) /* load update counter */ | 33 | 0: lg %r4,__VDSO_UPD_COUNT(%r5) /* load update counter */ |
| 36 | tmll %r4,0x0001 /* pending update ? loop */ | 34 | tmll %r4,0x0001 /* pending update ? loop */ |
| 37 | jnz 0b | 35 | jnz 0b |
| @@ -53,12 +51,10 @@ __kernel_clock_gettime: | |||
| 53 | j 1b | 51 | j 1b |
| 54 | 2: stg %r0,0(%r3) /* store tp->tv_sec */ | 52 | 2: stg %r0,0(%r3) /* store tp->tv_sec */ |
| 55 | stg %r1,8(%r3) /* store tp->tv_nsec */ | 53 | stg %r1,8(%r3) /* store tp->tv_nsec */ |
| 56 | 3: lghi %r2,0 | 54 | lghi %r2,0 |
| 57 | br %r14 | 55 | br %r14 |
| 58 | 56 | ||
| 59 | /* CLOCK_REALTIME */ | 57 | /* CLOCK_REALTIME */ |
| 60 | 4: ltr %r3,%r3 /* tp == NULL */ | ||
| 61 | jz 8f | ||
| 62 | 5: lg %r4,__VDSO_UPD_COUNT(%r5) /* load update counter */ | 58 | 5: lg %r4,__VDSO_UPD_COUNT(%r5) /* load update counter */ |
| 63 | tmll %r4,0x0001 /* pending update ? loop */ | 59 | tmll %r4,0x0001 /* pending update ? loop */ |
| 64 | jnz 5b | 60 | jnz 5b |
| @@ -80,7 +76,7 @@ __kernel_clock_gettime: | |||
| 80 | j 6b | 76 | j 6b |
| 81 | 7: stg %r0,0(%r3) /* store tp->tv_sec */ | 77 | 7: stg %r0,0(%r3) /* store tp->tv_sec */ |
| 82 | stg %r1,8(%r3) /* store tp->tv_nsec */ | 78 | stg %r1,8(%r3) /* store tp->tv_nsec */ |
| 83 | 8: lghi %r2,0 | 79 | lghi %r2,0 |
| 84 | br %r14 | 80 | br %r14 |
| 85 | 81 | ||
| 86 | /* CLOCK_THREAD_CPUTIME_ID for this thread */ | 82 | /* CLOCK_THREAD_CPUTIME_ID for this thread */ |
