On Tue, 6 Apr 2021, Zhou Yanjie wrote:
So it seems not a compiler problem.
This code is rather broken in an obvious way, starting from:
unsigned long long __n; \ \ __high = *__n >> 32; \ __low = __n; \
where `__n' is used uninitialised. Since this is my code originally I'll look into it; we may want to reinstate `do_div' too, which didn't have to be removed in the first place.
Also commit e8e4eb0fbeda ("asm-generic/div64: Fix documentation of do_div() parameter") was an incomplete documentation fix.
Huacai, thanks for your investigation! Please be more careful in verifying your future submissions however.
Maciej