lkml.org 
[lkml]   [2018]   [Nov]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [RFC PATCH v2 09/14] m68k: hp300: Remove hp300_gettimeoffset()
On Wed, 21 Nov 2018, Geert Uytterhoeven wrote:

> > This suggests that either 0 or N (the latched value) would result from
> > a read from the counter immediately following an interrupt. Who can
> > say which? Just have to try it. The answer should allow us to avoid
> > the risk of a clocksource that jumps forwards and backwards.
>
> The code in amiga_gettimeoffset() does:
>
> ticks = hi << 8 | lo;
>
> if (ticks > jiffy_ticks / 2)
> /* check for pending interrupt */
> if (cia_set_irq(&ciab_base, 0) & CIA_ICR_TA)
> offset = 10000;
>

That _suggests_ that there's no interrupt when ticks == 0.

But look what happens next:

> ticks = jiffy_ticks - ticks;
>
> ticks = (10000 * ticks) / jiffy_ticks;
>
> return (ticks + offset) * 1000;

If (hi << 8 | lo) == 0, and you set offset = 10000, then the return value
would be maximal.

Let's immediately call this function again. This time (hi << 8 | lo) == N.
Let's add the offset again. I'm afraid the clock just jumped backwards.

So the logic you quoted has a rationale which is unrelated to the
question.

--

\
 
 \ /
  Last update: 2018-11-21 12:15    [W:0.093 / U:9.108 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site