Skip to content
  • Martin Schwidefsky's avatar
    [S390] __div64_32 for 31 bit. · d9f7a745
    Martin Schwidefsky authored
    The clocksource infrastructure introduced with commit
    ad596171
    
     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: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
    d9f7a745