diff --git a/sys/arm64/arm64/locore.S b/sys/arm64/arm64/locore.S --- a/sys/arm64/arm64/locore.S +++ b/sys/arm64/arm64/locore.S @@ -301,8 +301,8 @@ * minimally usable system. */ tst x4, #HCR_E2H - mov x3, #CPTR_RES1 /* HCR_E2H == 0 */ - mov x5, #CPTR_FPEN /* HCR_E2H == 1 */ + mov x3, #CPTR_RES1 /* HCR_E2H == 0 */ + mov x5, #(CPTR_FPEN | CPTR_ZPEN) /* HCR_E2H == 1 */ csel x2, x3, x5, eq msr cptr_el2, x2 diff --git a/sys/arm64/include/hypervisor.h b/sys/arm64/include/hypervisor.h --- a/sys/arm64/include/hypervisor.h +++ b/sys/arm64/include/hypervisor.h @@ -45,9 +45,11 @@ /* CPTR_EL2 - Architecture feature trap register */ /* Valid if HCR_EL2.E2H == 0 */ #define CPTR_RES0 0x7fefc800 -#define CPTR_RES1 0x000033ff +#define CPTR_RES1 0x000032ff +#define CPTR_TZ 0x00000100 #define CPTR_TFP 0x00000400 /* Valid if HCR_EL2.E2H == 1 */ +#define CPTR_ZPEN 0x00030000 #define CPTR_FPEN 0x00300000 /* Unconditionally valid */ #define CPTR_TTA 0x00100000