thermosphere: properly implement guest timer stuff
This commit is contained in:
@@ -26,17 +26,22 @@ extern const u32 __vectors_start__[];
|
||||
static void initSysregs(void)
|
||||
{
|
||||
// Set VBAR
|
||||
SET_SYSREG(vbar_el2, (uintptr_t)__vectors_start__);
|
||||
SET_SYSREG(vbar_el2, (uintptr_t)__vectors_start__);
|
||||
|
||||
// Set system to sane defaults, aarch64 for el1, mmu&caches initially disabled for EL1, etc.
|
||||
SET_SYSREG(hcr_el2, 0x80000000);
|
||||
SET_SYSREG(dacr32_el2, 0xFFFFFFFF); // unused
|
||||
SET_SYSREG(sctlr_el1, 0x00C50838);
|
||||
SET_SYSREG(hcr_el2, 0x80000000);
|
||||
SET_SYSREG(dacr32_el2, 0xFFFFFFFF); // unused
|
||||
SET_SYSREG(sctlr_el1, 0x00C50838);
|
||||
|
||||
SET_SYSREG(mdcr_el2, 0x00000000);
|
||||
SET_SYSREG(mdscr_el1, 0x00000000);
|
||||
SET_SYSREG(mdcr_el2, 0x00000000);
|
||||
SET_SYSREG(mdscr_el1, 0x00000000);
|
||||
|
||||
SET_SYSREG(cntvoff_el2, 0x00000000);
|
||||
// Timer stuff
|
||||
SET_SYSREG(cntvoff_el2, 0x00000000);
|
||||
SET_SYSREG(cnthctl_el2, 0x00000003); // Don't trap anything for now; event streams disabled
|
||||
SET_SYSREG(cntkctl_el1, 0x00000003); // Don't trap anything for now; event streams disabled
|
||||
SET_SYSREG(cntp_ctl_el0, 0x00000000);
|
||||
SET_SYSREG(cntv_ctl_el0, 0x00000000);
|
||||
}
|
||||
|
||||
void initSystem(u32 coreId, bool isBootCore, u64 argument)
|
||||
|
||||
Reference in New Issue
Block a user