]> git.ipfire.org Git - people/arne_f/kernel.git/commit
[PATCH] __div64_32 for 31 bit.
authorMartin Schwidefsky <schwidefsky@de.ibm.com>
Thu, 12 Oct 2006 12:41:07 +0000 (14:41 +0200)
committerChris Wright <chrisw@sous-sol.org>
Sat, 4 Nov 2006 01:33:44 +0000 (17:33 -0800)
commit3bc587b9cbf2a72e16b5a960731f08df36ba97fa
tree251ba0ed07552555392d432229738bedba89427a
parentf44a15dacc3b68d6847dba2cc45d09bcdb076867
[PATCH] __div64_32 for 31 bit.

The clocksource infrastructure introduced with commit
ad596171ed635c51a9eef829187af100cbf8dcf7 broke 31 bit s390.
The reason is that the do_div() primitive for 31 bit always
had a restriction: it could only divide an unsigned 64 bit
integer by an unsigned 31 bit integer. The clocksource code
now uses do_div() with a base value that has the most
significant bit set. The result is that clock->cycle_interval
has a funny value which causes the linux time to jump around
like mad.
The solution is "obvious": implement a proper __div64_32
function for 31 bit s390.

Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Signed-off-by: Chris Wright <chrisw@sous-sol.org>
arch/s390/Kconfig
arch/s390/lib/Makefile
arch/s390/lib/div64.c [new file with mode: 0644]
include/asm-s390/div64.h