WRITE_SPECIALREG
WRITE_SPECIALREG(tpidr_el1, t);
WRITE_SPECIALREG(SCTLR_EL1, sctlr);
WRITE_SPECIALREG(SCTLR_EL2, sctlr);
WRITE_SPECIALREG(SCTLR_EL3, sctlr);
WRITE_SPECIALREG(TCR_EL1, tcr);
WRITE_SPECIALREG(TTBR1_EL1, page);
WRITE_SPECIALREG(HCR_EL2, hcr | HCR_TGE);
WRITE_SPECIALREG(CNTKCTL_EL1, 0b11);
WRITE_SPECIALREG(TTBR0_EL1, ((uint64_t)to->fASID << 48) | ttbr);
WRITE_SPECIALREG(TTBR0_EL1, (allocatedAsid << 48) | ttbr);
WRITE_SPECIALREG(TTBR0_EL1, (i << 48) | ttbr);
WRITE_SPECIALREG(VBAR_EL1, _exception_vectors);
WRITE_SPECIALREG(TCR_EL1, tcr);
WRITE_SPECIALREG(CNTV_TVAL_EL0, timeout * sTimerTicksUS);
WRITE_SPECIALREG(CNTV_CTL_EL0, TIMER_ENABLE);
WRITE_SPECIALREG(CNTV_CTL_EL0, TIMER_DISABLED);
WRITE_SPECIALREG(CNTV_CTL_EL0, TIMER_DISABLED);
WRITE_SPECIALREG(CNTV_CTL_EL0, TIMER_DISABLED);
WRITE_SPECIALREG(TTBR0_EL1, sEmptyTable);