|
@@ -465,7 +465,7 @@ void ppce500_set_mpic_proxy(bool enabled)
|
|
uint64_t cpu_ppc_get_tb(ppc_tb_t *tb_env, uint64_t vmclk, int64_t tb_offset)
|
|
uint64_t cpu_ppc_get_tb(ppc_tb_t *tb_env, uint64_t vmclk, int64_t tb_offset)
|
|
{
|
|
{
|
|
/* TB time in tb periods */
|
|
/* TB time in tb periods */
|
|
- return muldiv64(vmclk, tb_env->tb_freq, get_ticks_per_sec()) + tb_offset;
|
|
|
|
|
|
+ return muldiv64(vmclk, tb_env->tb_freq, NANOSECONDS_PER_SECOND) + tb_offset;
|
|
}
|
|
}
|
|
|
|
|
|
uint64_t cpu_ppc_load_tbl (CPUPPCState *env)
|
|
uint64_t cpu_ppc_load_tbl (CPUPPCState *env)
|
|
@@ -506,7 +506,9 @@ uint32_t cpu_ppc_load_tbu (CPUPPCState *env)
|
|
static inline void cpu_ppc_store_tb(ppc_tb_t *tb_env, uint64_t vmclk,
|
|
static inline void cpu_ppc_store_tb(ppc_tb_t *tb_env, uint64_t vmclk,
|
|
int64_t *tb_offsetp, uint64_t value)
|
|
int64_t *tb_offsetp, uint64_t value)
|
|
{
|
|
{
|
|
- *tb_offsetp = value - muldiv64(vmclk, tb_env->tb_freq, get_ticks_per_sec());
|
|
|
|
|
|
+ *tb_offsetp = value -
|
|
|
|
+ muldiv64(vmclk, tb_env->tb_freq, NANOSECONDS_PER_SECOND);
|
|
|
|
+
|
|
LOG_TB("%s: tb %016" PRIx64 " offset %08" PRIx64 "\n",
|
|
LOG_TB("%s: tb %016" PRIx64 " offset %08" PRIx64 "\n",
|
|
__func__, value, *tb_offsetp);
|
|
__func__, value, *tb_offsetp);
|
|
}
|
|
}
|
|
@@ -640,11 +642,11 @@ static inline uint32_t _cpu_ppc_load_decr(CPUPPCState *env, uint64_t next)
|
|
|
|
|
|
diff = next - qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL);
|
|
diff = next - qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL);
|
|
if (diff >= 0) {
|
|
if (diff >= 0) {
|
|
- decr = muldiv64(diff, tb_env->decr_freq, get_ticks_per_sec());
|
|
|
|
|
|
+ decr = muldiv64(diff, tb_env->decr_freq, NANOSECONDS_PER_SECOND);
|
|
} else if (tb_env->flags & PPC_TIMER_BOOKE) {
|
|
} else if (tb_env->flags & PPC_TIMER_BOOKE) {
|
|
decr = 0;
|
|
decr = 0;
|
|
} else {
|
|
} else {
|
|
- decr = -muldiv64(-diff, tb_env->decr_freq, get_ticks_per_sec());
|
|
|
|
|
|
+ decr = -muldiv64(-diff, tb_env->decr_freq, NANOSECONDS_PER_SECOND);
|
|
}
|
|
}
|
|
LOG_TB("%s: %08" PRIx32 "\n", __func__, decr);
|
|
LOG_TB("%s: %08" PRIx32 "\n", __func__, decr);
|
|
|
|
|
|
@@ -676,7 +678,8 @@ uint64_t cpu_ppc_load_purr (CPUPPCState *env)
|
|
|
|
|
|
diff = qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) - tb_env->purr_start;
|
|
diff = qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) - tb_env->purr_start;
|
|
|
|
|
|
- return tb_env->purr_load + muldiv64(diff, tb_env->tb_freq, get_ticks_per_sec());
|
|
|
|
|
|
+ return tb_env->purr_load +
|
|
|
|
+ muldiv64(diff, tb_env->tb_freq, NANOSECONDS_PER_SECOND);
|
|
}
|
|
}
|
|
|
|
|
|
/* When decrementer expires,
|
|
/* When decrementer expires,
|
|
@@ -752,7 +755,7 @@ static void __cpu_ppc_store_decr(PowerPCCPU *cpu, uint64_t *nextp,
|
|
|
|
|
|
/* Calculate the next timer event */
|
|
/* Calculate the next timer event */
|
|
now = qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL);
|
|
now = qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL);
|
|
- next = now + muldiv64(value, get_ticks_per_sec(), tb_env->decr_freq);
|
|
|
|
|
|
+ next = now + muldiv64(value, NANOSECONDS_PER_SECOND, tb_env->decr_freq);
|
|
*nextp = next;
|
|
*nextp = next;
|
|
|
|
|
|
/* Adjust timer */
|
|
/* Adjust timer */
|
|
@@ -1013,7 +1016,7 @@ static void cpu_4xx_fit_cb (void *opaque)
|
|
/* Cannot occur, but makes gcc happy */
|
|
/* Cannot occur, but makes gcc happy */
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
- next = now + muldiv64(next, get_ticks_per_sec(), tb_env->tb_freq);
|
|
|
|
|
|
+ next = now + muldiv64(next, NANOSECONDS_PER_SECOND, tb_env->tb_freq);
|
|
if (next == now)
|
|
if (next == now)
|
|
next++;
|
|
next++;
|
|
timer_mod(ppc40x_timer->fit_timer, next);
|
|
timer_mod(ppc40x_timer->fit_timer, next);
|
|
@@ -1044,7 +1047,7 @@ static void start_stop_pit (CPUPPCState *env, ppc_tb_t *tb_env, int is_excp)
|
|
__func__, ppc40x_timer->pit_reload);
|
|
__func__, ppc40x_timer->pit_reload);
|
|
now = qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL);
|
|
now = qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL);
|
|
next = now + muldiv64(ppc40x_timer->pit_reload,
|
|
next = now + muldiv64(ppc40x_timer->pit_reload,
|
|
- get_ticks_per_sec(), tb_env->decr_freq);
|
|
|
|
|
|
+ NANOSECONDS_PER_SECOND, tb_env->decr_freq);
|
|
if (is_excp)
|
|
if (is_excp)
|
|
next += tb_env->decr_next - now;
|
|
next += tb_env->decr_next - now;
|
|
if (next == now)
|
|
if (next == now)
|
|
@@ -1109,7 +1112,7 @@ static void cpu_4xx_wdt_cb (void *opaque)
|
|
/* Cannot occur, but makes gcc happy */
|
|
/* Cannot occur, but makes gcc happy */
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
- next = now + muldiv64(next, get_ticks_per_sec(), tb_env->decr_freq);
|
|
|
|
|
|
+ next = now + muldiv64(next, NANOSECONDS_PER_SECOND, tb_env->decr_freq);
|
|
if (next == now)
|
|
if (next == now)
|
|
next++;
|
|
next++;
|
|
LOG_TB("%s: TCR " TARGET_FMT_lx " TSR " TARGET_FMT_lx "\n", __func__,
|
|
LOG_TB("%s: TCR " TARGET_FMT_lx " TSR " TARGET_FMT_lx "\n", __func__,
|