master
c 32 lines 861 Bytes
Raw
1 /*
2 * QEMU Alpha clock helpers.
3 *
4 * Copyright (c) 2007 Jocelyn Mayer
5 *
6 * SPDX-License-Identifier: LGPL-2.1-or-later
7 */
8
9 #include "qemu/osdep.h"
10 #include "qemu/timer.h"
11 #include "exec/helper-proto.h"
12 #include "cpu.h"
13
14 uint64_t helper_load_pcc(CPUAlphaState *env)
15 {
16 #ifndef CONFIG_USER_ONLY
17 /*
18 * In system mode we have access to a decent high-resolution clock.
19 * In order to make OS-level time accounting work with the RPCC,
20 * present it with a well-timed clock fixed at 250MHz.
21 */
22 return (((uint64_t)env->pcc_ofs << 32)
23 | (uint32_t)(qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) >> 2));
24 #else
25 /*
26 * In user-mode, QEMU_CLOCK_VIRTUAL doesn't exist. Just pass through
27 * the host cpu clock ticks. Also, don't bother taking PCC_OFS into
28 * account.
29 */
30 return (uint32_t)cpu_get_host_ticks();
31 #endif
32 }