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