/*
 *  ======== TimestampProvider_get32 ========
 */
Bits32 TimestampProvider_get32()
{
    UInt32 timestamp;
    UInt key;

    key = Hwi_disable();

    if (BIOS_clockEnabled && TimestampProvider_useClockTimer) {
        timestamp = (Clock_getCompletedTicks() * Clock_getTickPeriod())
                   + Timer_getExpiredCounts(MOD->timer);
    }
    else {
        timestamp = (MOD->rollovers * Timer_MAX_PERIOD)
                   + Timer_getExpiredCounts(MOD->timer);
    }

    Hwi_restore(key);

    return (timestamp);
}
/*
 *  ======== TimestampProvider_get32 ========
 */
Bits32 TimestampProvider_get32()
{
    UInt32 timestamp;
    UInt key;

    key = Hwi_disable();

    if (TimestampProvider_useClockTimer) {
        timestamp = (Clock_getCompletedTicks() * Clock_getTickPeriod())
                   + Timer_getExpiredCounts(MOD->timer);
    }
    else {
        timestamp = (MOD->rollovers << 16) + Timer_getExpiredCounts(MOD->timer);
        timestamp -= MOD->rollovers; /* adjust for Timer_MAX_PERIOD = 0xFFFF */
    }

    Hwi_restore(key);

    return (timestamp);
}