diff options
Diffstat (limited to 'arch/s390/include/asm/cputime.h')
| -rw-r--r-- | arch/s390/include/asm/cputime.h | 42 |
1 files changed, 21 insertions, 21 deletions
diff --git a/arch/s390/include/asm/cputime.h b/arch/s390/include/asm/cputime.h index 133ce054fc89..521726430afa 100644 --- a/arch/s390/include/asm/cputime.h +++ b/arch/s390/include/asm/cputime.h | |||
| @@ -11,7 +11,7 @@ | |||
| 11 | 11 | ||
| 12 | #include <asm/div64.h> | 12 | #include <asm/div64.h> |
| 13 | 13 | ||
| 14 | /* We want to use micro-second resolution. */ | 14 | /* We want to use full resolution of the CPU timer: 2**-12 micro-seconds. */ |
| 15 | 15 | ||
| 16 | typedef unsigned long long cputime_t; | 16 | typedef unsigned long long cputime_t; |
| 17 | typedef unsigned long long cputime64_t; | 17 | typedef unsigned long long cputime64_t; |
| @@ -53,9 +53,9 @@ __div(unsigned long long n, unsigned int base) | |||
| 53 | #define cputime_ge(__a, __b) ((__a) >= (__b)) | 53 | #define cputime_ge(__a, __b) ((__a) >= (__b)) |
| 54 | #define cputime_lt(__a, __b) ((__a) < (__b)) | 54 | #define cputime_lt(__a, __b) ((__a) < (__b)) |
| 55 | #define cputime_le(__a, __b) ((__a) <= (__b)) | 55 | #define cputime_le(__a, __b) ((__a) <= (__b)) |
| 56 | #define cputime_to_jiffies(__ct) (__div((__ct), 1000000 / HZ)) | 56 | #define cputime_to_jiffies(__ct) (__div((__ct), 4096000000ULL / HZ)) |
| 57 | #define cputime_to_scaled(__ct) (__ct) | 57 | #define cputime_to_scaled(__ct) (__ct) |
| 58 | #define jiffies_to_cputime(__hz) ((cputime_t)(__hz) * (1000000 / HZ)) | 58 | #define jiffies_to_cputime(__hz) ((cputime_t)(__hz) * (4096000000ULL / HZ)) |
| 59 | 59 | ||
| 60 | #define cputime64_zero (0ULL) | 60 | #define cputime64_zero (0ULL) |
| 61 | #define cputime64_add(__a, __b) ((__a) + (__b)) | 61 | #define cputime64_add(__a, __b) ((__a) + (__b)) |
| @@ -64,7 +64,7 @@ __div(unsigned long long n, unsigned int base) | |||
| 64 | static inline u64 | 64 | static inline u64 |
| 65 | cputime64_to_jiffies64(cputime64_t cputime) | 65 | cputime64_to_jiffies64(cputime64_t cputime) |
| 66 | { | 66 | { |
| 67 | do_div(cputime, 1000000 / HZ); | 67 | do_div(cputime, 4096000000ULL / HZ); |
| 68 | return cputime; | 68 | return cputime; |
| 69 | } | 69 | } |
| 70 | 70 | ||
| @@ -74,13 +74,13 @@ cputime64_to_jiffies64(cputime64_t cputime) | |||
| 74 | static inline unsigned int | 74 | static inline unsigned int |
| 75 | cputime_to_msecs(const cputime_t cputime) | 75 | cputime_to_msecs(const cputime_t cputime) |
| 76 | { | 76 | { |
| 77 | return __div(cputime, 1000); | 77 | return __div(cputime, 4096000); |
| 78 | } | 78 | } |
| 79 | 79 | ||
| 80 | static inline cputime_t | 80 | static inline cputime_t |
| 81 | msecs_to_cputime(const unsigned int m) | 81 | msecs_to_cputime(const unsigned int m) |
| 82 | { | 82 | { |
| 83 | return (cputime_t) m * 1000; | 83 | return (cputime_t) m * 4096000; |
| 84 | } | 84 | } |
| 85 | 85 | ||
| 86 | /* | 86 | /* |
| @@ -89,13 +89,13 @@ msecs_to_cputime(const unsigned int m) | |||
| 89 | static inline unsigned int | 89 | static inline unsigned int |
| 90 | cputime_to_secs(const cputime_t cputime) | 90 | cputime_to_secs(const cputime_t cputime) |
| 91 | { | 91 | { |
| 92 | return __div(cputime, 1000000); | 92 | return __div(cputime, 2048000000) >> 1; |
| 93 | } | 93 | } |
| 94 | 94 | ||
| 95 | static inline cputime_t | 95 | static inline cputime_t |
| 96 | secs_to_cputime(const unsigned int s) | 96 | secs_to_cputime(const unsigned int s) |
| 97 | { | 97 | { |
| 98 | return (cputime_t) s * 1000000; | 98 | return (cputime_t) s * 4096000000ULL; |
| 99 | } | 99 | } |
| 100 | 100 | ||
| 101 | /* | 101 | /* |
| @@ -104,7 +104,7 @@ secs_to_cputime(const unsigned int s) | |||
| 104 | static inline cputime_t | 104 | static inline cputime_t |
| 105 | timespec_to_cputime(const struct timespec *value) | 105 | timespec_to_cputime(const struct timespec *value) |
| 106 | { | 106 | { |
| 107 | return value->tv_nsec / 1000 + (u64) value->tv_sec * 1000000; | 107 | return value->tv_nsec * 4096 / 1000 + (u64) value->tv_sec * 4096000000ULL; |
| 108 | } | 108 | } |
| 109 | 109 | ||
| 110 | static inline void | 110 | static inline void |
| @@ -114,12 +114,12 @@ cputime_to_timespec(const cputime_t cputime, struct timespec *value) | |||
| 114 | register_pair rp; | 114 | register_pair rp; |
| 115 | 115 | ||
| 116 | rp.pair = cputime >> 1; | 116 | rp.pair = cputime >> 1; |
| 117 | asm ("dr %0,%1" : "+d" (rp) : "d" (1000000 >> 1)); | 117 | asm ("dr %0,%1" : "+d" (rp) : "d" (2048000000UL)); |
| 118 | value->tv_nsec = rp.subreg.even * 1000; | 118 | value->tv_nsec = rp.subreg.even * 1000 / 4096; |
| 119 | value->tv_sec = rp.subreg.odd; | 119 | value->tv_sec = rp.subreg.odd; |
| 120 | #else | 120 | #else |
| 121 | value->tv_nsec = (cputime % 1000000) * 1000; | 121 | value->tv_nsec = (cputime % 4096000000ULL) * 1000 / 4096; |
| 122 | value->tv_sec = cputime / 1000000; | 122 | value->tv_sec = cputime / 4096000000ULL; |
| 123 | #endif | 123 | #endif |
| 124 | } | 124 | } |
| 125 | 125 | ||
| @@ -131,7 +131,7 @@ cputime_to_timespec(const cputime_t cputime, struct timespec *value) | |||
| 131 | static inline cputime_t | 131 | static inline cputime_t |
| 132 | timeval_to_cputime(const struct timeval *value) | 132 | timeval_to_cputime(const struct timeval *value) |
| 133 | { | 133 | { |
| 134 | return value->tv_usec + (u64) value->tv_sec * 1000000; | 134 | return value->tv_usec * 4096 + (u64) value->tv_sec * 4096000000ULL; |
| 135 | } | 135 | } |
| 136 | 136 | ||
| 137 | static inline void | 137 | static inline void |
| @@ -141,12 +141,12 @@ cputime_to_timeval(const cputime_t cputime, struct timeval *value) | |||
| 141 | register_pair rp; | 141 | register_pair rp; |
| 142 | 142 | ||
| 143 | rp.pair = cputime >> 1; | 143 | rp.pair = cputime >> 1; |
| 144 | asm ("dr %0,%1" : "+d" (rp) : "d" (1000000 >> 1)); | 144 | asm ("dr %0,%1" : "+d" (rp) : "d" (2048000000UL)); |
| 145 | value->tv_usec = rp.subreg.even; | 145 | value->tv_usec = rp.subreg.even / 4096; |
| 146 | value->tv_sec = rp.subreg.odd; | 146 | value->tv_sec = rp.subreg.odd; |
| 147 | #else | 147 | #else |
| 148 | value->tv_usec = cputime % 1000000; | 148 | value->tv_usec = cputime % 4096000000ULL; |
| 149 | value->tv_sec = cputime / 1000000; | 149 | value->tv_sec = cputime / 4096000000ULL; |
| 150 | #endif | 150 | #endif |
| 151 | } | 151 | } |
| 152 | 152 | ||
| @@ -156,13 +156,13 @@ cputime_to_timeval(const cputime_t cputime, struct timeval *value) | |||
| 156 | static inline clock_t | 156 | static inline clock_t |
| 157 | cputime_to_clock_t(cputime_t cputime) | 157 | cputime_to_clock_t(cputime_t cputime) |
| 158 | { | 158 | { |
| 159 | return __div(cputime, 1000000 / USER_HZ); | 159 | return __div(cputime, 4096000000ULL / USER_HZ); |
| 160 | } | 160 | } |
| 161 | 161 | ||
| 162 | static inline cputime_t | 162 | static inline cputime_t |
| 163 | clock_t_to_cputime(unsigned long x) | 163 | clock_t_to_cputime(unsigned long x) |
| 164 | { | 164 | { |
| 165 | return (cputime_t) x * (1000000 / USER_HZ); | 165 | return (cputime_t) x * (4096000000ULL / USER_HZ); |
| 166 | } | 166 | } |
| 167 | 167 | ||
| 168 | /* | 168 | /* |
| @@ -171,7 +171,7 @@ clock_t_to_cputime(unsigned long x) | |||
| 171 | static inline clock_t | 171 | static inline clock_t |
| 172 | cputime64_to_clock_t(cputime64_t cputime) | 172 | cputime64_to_clock_t(cputime64_t cputime) |
| 173 | { | 173 | { |
| 174 | return __div(cputime, 1000000 / USER_HZ); | 174 | return __div(cputime, 4096000000ULL / USER_HZ); |
| 175 | } | 175 | } |
| 176 | 176 | ||
| 177 | #endif /* _S390_CPUTIME_H */ | 177 | #endif /* _S390_CPUTIME_H */ |
