int32 icr_rd () { uint32 delta = sim_grtime() - tmr_sav; if (tmr_iccs & TMR_CSR_RUN) /* running? */ return (int32)(tmr_nicr + ((1000000.0 * delta) / sim_timer_inst_per_sec ())); return (int32)tmr_icr; }
int32 icr_rd (void) { int32 result; if (tmr_iccs & TMR_CSR_RUN) { /* running? */ uint32 delta = sim_grtime() - tmr_sav; result = (int32)(tmr_nicr + (uint32)((1000000.0 * delta) / sim_timer_inst_per_sec ())); } else result = (int32)tmr_icr; sim_debug (TMR_DB_REG, &tmr_dev, "icr_rd() = 0x%08X%s\n", result, (tmr_iccs & TMR_CSR_RUN) ? " - interpolated" : ""); return result; }
static uint32 pclk_get_ctr (void) { uint32 val; int32 rv; if (!sim_is_active (&pclk_unit)) return pclk_ctr; rv = CSR_GETRATE (pclk_csr); /* get rate */ val = (uint32)((sim_activate_time (&pclk_unit) / sim_timer_inst_per_sec ()) * (1000000 / xtim[rv])); val &= DMASK; if (pclk_csr & CSR_UPDN) val = DMASK + 1 - val; return val; }