| /* | |
| * This file is subject to the terms and conditions of the GNU General Public | |
| * License. See the file "COPYING" in the main directory of this archive | |
| * for more details. | |
| * | |
| * Copyright (C) 2016 Imagination Technologies | |
| * | |
| */ | |
| #ifndef MIPS_GICTIMER_H | |
| #define MIPS_GICTIMER_H | |
| typedef struct MIPSGICTimerVPState MIPSGICTimerVPState; | |
| typedef struct MIPSGICTimerState MIPSGICTimerState; | |
| typedef void MIPSGICTimerCB(void *opaque, uint32_t vp_index); | |
| struct MIPSGICTimerVPState { | |
| QEMUTimer *qtimer; | |
| uint32_t vp_index; | |
| uint32_t comparelo; | |
| MIPSGICTimerState *gictimer; | |
| }; | |
| struct MIPSGICTimerState { | |
| void *opaque; | |
| uint8_t countstop; | |
| uint32_t sh_counterlo; | |
| int32_t num_vps; | |
| MIPSGICTimerVPState *vptimers; | |
| MIPSGICTimerCB *cb; | |
| }; | |
| uint32_t mips_gictimer_get_freq(MIPSGICTimerState *gic); | |
| uint32_t mips_gictimer_get_sh_count(MIPSGICTimerState *gic); | |
| void mips_gictimer_store_sh_count(MIPSGICTimerState *gic, uint64_t count); | |
| uint32_t mips_gictimer_get_vp_compare(MIPSGICTimerState *gictimer, | |
| uint32_t vp_index); | |
| void mips_gictimer_store_vp_compare(MIPSGICTimerState *gic, uint32_t vp_index, | |
| uint64_t compare); | |
| uint8_t mips_gictimer_get_countstop(MIPSGICTimerState *gic); | |
| void mips_gictimer_start_count(MIPSGICTimerState *gic); | |
| void mips_gictimer_stop_count(MIPSGICTimerState *gic); | |
| MIPSGICTimerState *mips_gictimer_init(void *opaque, uint32_t nvps, | |
| MIPSGICTimerCB *cb); | |
| #endif /* MIPS_GICTIMER_H */ |