vtimer_cpu
struct vtimer_cpu vtimer_cpu;
if (hypctx->vtimer_cpu.virt_timer.cntx_cval_el0 < cntpct_el0)
cntv_ctl = hypctx->vtimer_cpu.virt_timer.cntx_ctl_el0;
struct vtimer_cpu *vtimer_cpu;
vtimer_cpu = &hypctx->vtimer_cpu;
vtimer_cpu->phys_timer.cntx_ctl_el0 = CNTP_CTL_IMASK & ~CNTP_CTL_ENABLE;
mtx_init(&vtimer_cpu->phys_timer.mtx, "vtimer phys callout mutex", NULL,
callout_init_mtx(&vtimer_cpu->phys_timer.callout,
&vtimer_cpu->phys_timer.mtx, 0);
vtimer_cpu->phys_timer.irqid = GT_PHYS_NS_IRQ;
mtx_init(&vtimer_cpu->virt_timer.mtx, "vtimer virt callout mutex", NULL,
callout_init_mtx(&vtimer_cpu->virt_timer.callout,
&vtimer_cpu->virt_timer.mtx, 0);
vtimer_cpu->virt_timer.irqid = GT_VIRT_IRQ;
struct vtimer_cpu *vtimer_cpu;
vtimer_cpu = &hypctx->vtimer_cpu;
callout_drain(&vtimer_cpu->phys_timer.callout);
callout_drain(&vtimer_cpu->virt_timer.callout);
mtx_destroy(&vtimer_cpu->phys_timer.mtx);
mtx_destroy(&vtimer_cpu->virt_timer.mtx);
vtime_sync_timer(hypctx, &hypctx->vtimer_cpu.virt_timer, cntpct_el0);
vtime_sync_timer(hypctx, &hypctx->vtimer_cpu.phys_timer,
hypctx->vtimer_cpu.phys_timer.irqid, true);
hypctx->vtimer_cpu.virt_timer.irqid, true);
timer = &hypctx->vtimer_cpu.phys_timer;
timer = &hypctx->vtimer_cpu.virt_timer;
struct vtimer_cpu *vtimer_cpu;
vtimer_cpu = &hypctx->vtimer_cpu;
timer = &vtimer_cpu->phys_timer;
struct vtimer_cpu *vtimer_cpu;
vtimer_cpu = &hypctx->vtimer_cpu;
if (vtimer_cpu->phys_timer.cntx_cval_el0 < cntpct_el0)
*rval = vtimer_cpu->phys_timer.cntx_ctl_el0 | CNTP_CTL_ISTATUS;
*rval = vtimer_cpu->phys_timer.cntx_ctl_el0 & ~CNTP_CTL_ISTATUS;
struct vtimer_cpu *vtimer_cpu;
vtimer_cpu = &hypctx->vtimer_cpu;
ctl_el0 = vtimer_cpu->phys_timer.cntx_ctl_el0;
vtimer_cpu->phys_timer.cntx_ctl_el0 = wval;
struct vtimer_cpu *vtimer_cpu;
vtimer_cpu = &hypctx->vtimer_cpu;
*rval = vtimer_cpu->phys_timer.cntx_cval_el0;
struct vtimer_cpu *vtimer_cpu;
vtimer_cpu = &hypctx->vtimer_cpu;
vtimer_cpu->phys_timer.cntx_cval_el0 = wval;
if (timer_enabled(vtimer_cpu->phys_timer.cntx_ctl_el0)) {
struct vtimer_cpu *vtimer_cpu;
vtimer_cpu = &hypctx->vtimer_cpu;
if (!(vtimer_cpu->phys_timer.cntx_ctl_el0 & CNTP_CTL_ENABLE)) {
*rval = vtimer_cpu->phys_timer.cntx_cval_el0 - cntpct_el0;
struct vtimer_cpu *vtimer_cpu;
vtimer_cpu = &hypctx->vtimer_cpu;
vtimer_cpu->phys_timer.cntx_cval_el0 = (int32_t)wval + cntpct_el0;
if (timer_enabled(vtimer_cpu->phys_timer.cntx_ctl_el0)) {
hypctx->vtimer_cpu.cntkctl_el1 =
hypctx->vtimer_cpu.virt_timer.cntx_cval_el0 =
hypctx->vtimer_cpu.virt_timer.cntx_ctl_el0 =
hypctx->vtimer_cpu.cntkctl_el1 =
hypctx->vtimer_cpu.phys_timer.cntx_cval_el0 =
hypctx->vtimer_cpu.phys_timer.cntx_ctl_el0 =
hypctx->vtimer_cpu.cntkctl_el1);
hypctx->vtimer_cpu.virt_timer.cntx_cval_el0);
hypctx->vtimer_cpu.virt_timer.cntx_ctl_el0);
WRITE_SPECIALREG(cntkctl_el1, hypctx->vtimer_cpu.cntkctl_el1);
hypctx->vtimer_cpu.phys_timer.cntx_cval_el0);
hypctx->vtimer_cpu.phys_timer.cntx_ctl_el0);