Commit a7ffaf5c authored by Johannes Schlatow's avatar Johannes Schlatow Committed by Peter Maydell
Browse files

Fix interval interrupt of cadence ttc when timer is in decrement mode



The interval interrupt is not set if the timer is in decrement mode.
This is because x >=0 and x < interval after leaving the while-loop.

Signed-off-by: default avatarJohannes Schlatow <schlatow@ida.ing.tu-bs.de>
Message-id: 20150630135821.51f3b4fd@johanness-latitude
Reviewed-by: default avatarPeter Crosthwaite <peter.crosthwaite@xilinx.com>
Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
parent 2a6332d9
Loading
Loading
Loading
Loading
+4 −5
Original line number Diff line number Diff line
@@ -208,15 +208,14 @@ static void cadence_timer_sync(CadenceTimerState *s)
            s->reg_intr |= (2 << i);
        }
    }
    if ((x < 0) || (x >= interval)) {
        s->reg_intr |= (s->reg_count & COUNTER_CTRL_INT) ?
            COUNTER_INTR_IV : COUNTER_INTR_OV;
    }
    while (x < 0) {
        x += interval;
    }
    s->reg_value = (uint32_t)(x % interval);

    if (s->reg_value != x) {
        s->reg_intr |= (s->reg_count & COUNTER_CTRL_INT) ?
            COUNTER_INTR_IV : COUNTER_INTR_OV;
    }
    cadence_timer_update(s);
}