mirror of
https://github.com/joel16/android_kernel_sony_msm8994.git
synced 2024-11-25 05:00:39 +00:00
[S390] Bogomips calculation for 64 bit.
The bogomips calculation triggered via reading from /proc/cpuinfo can return incorrect values if the qrnnd assembly is called with a pointer in %r2 with any of the upper 32 bits set. Fix this by using 64 bit division / remainder operation provided by gcc instead of calling the assembly. Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
parent
285f67227b
commit
8a88367088
@ -4,7 +4,7 @@
|
||||
|
||||
EXTRA_AFLAGS := -traditional
|
||||
|
||||
lib-y += delay.o string.o uaccess_std.o uaccess_pt.o qrnnd.o
|
||||
obj-$(CONFIG_32BIT) += div64.o
|
||||
lib-y += delay.o string.o uaccess_std.o uaccess_pt.o
|
||||
obj-$(CONFIG_32BIT) += div64.o qrnnd.o
|
||||
lib-$(CONFIG_64BIT) += uaccess_mvcos.o
|
||||
lib-$(CONFIG_SMP) += spinlock.o
|
||||
|
@ -27,9 +27,9 @@
|
||||
|
||||
|
||||
#define _FP_W_TYPE_SIZE 32
|
||||
#define _FP_W_TYPE unsigned long
|
||||
#define _FP_WS_TYPE signed long
|
||||
#define _FP_I_TYPE long
|
||||
#define _FP_W_TYPE unsigned int
|
||||
#define _FP_WS_TYPE signed int
|
||||
#define _FP_I_TYPE int
|
||||
|
||||
#define _FP_MUL_MEAT_S(R,X,Y) \
|
||||
_FP_MUL_MEAT_1_wide(_FP_WFRACBITS_S,R,X,Y,umul_ppmm)
|
||||
|
@ -51,6 +51,16 @@
|
||||
wl = __wl; \
|
||||
})
|
||||
|
||||
#ifdef __s390x__
|
||||
#define udiv_qrnnd(q, r, n1, n0, d) \
|
||||
do { unsigned long __n; \
|
||||
unsigned int __r, __d; \
|
||||
__n = ((unsigned long)(n1) << 32) + n0; \
|
||||
__d = (d); \
|
||||
(q) = __n / __d; \
|
||||
(r) = __n % __d; \
|
||||
} while (0)
|
||||
#else
|
||||
#define udiv_qrnnd(q, r, n1, n0, d) \
|
||||
do { unsigned int __r; \
|
||||
(q) = __udiv_qrnnd (&__r, (n1), (n0), (d)); \
|
||||
@ -58,6 +68,7 @@
|
||||
} while (0)
|
||||
extern unsigned long __udiv_qrnnd (unsigned int *, unsigned int,
|
||||
unsigned int , unsigned int);
|
||||
#endif
|
||||
|
||||
#define UDIV_NEEDS_NORMALIZATION 0
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user