timeout = timer_GetCount();
if (timeout < INTERVAL) {
    // handle rollover:
    timeout = 0xFFFFFFFF - INTERVAL - timeout;
} else {
    timeout -= INTERVAL;
}

for(;;) {
    thisTick = timer_GetCount();
    if (thisTick == timeout) {
        // compute timeout for next interval:
        if (thisTick < INTERVAL) {
            timeout = 0xFFFFFFFF - INTERVAL - timeout;
        } else {
            timeout = thisTick - INTERVAL;
        }
        doWhatNeedsToBeDone(); // process stuff
    }
} // forever 