v->arch.vfp.fpsr = READ_SYSREG32(FPSR);
v->arch.vfp.fpcr = READ_SYSREG32(FPCR);
- v->arch.vfp.fpexc32_el2 = READ_SYSREG32(FPEXC32_EL2);
+ if ( is_32bit_domain(v->domain) )
+ v->arch.vfp.fpexc32_el2 = READ_SYSREG32(FPEXC32_EL2);
}
void vfp_restore_state(struct vcpu *v)
WRITE_SYSREG32(v->arch.vfp.fpsr, FPSR);
WRITE_SYSREG32(v->arch.vfp.fpcr, FPCR);
- WRITE_SYSREG32(v->arch.vfp.fpexc32_el2, FPEXC32_EL2);
+ if ( is_32bit_domain(v->domain) )
+ WRITE_SYSREG32(v->arch.vfp.fpexc32_el2, FPEXC32_EL2);
}
#include <asm/cpregs.h>
#include <asm/psci.h>
#include <asm/mmio.h>
+#include <asm/cpufeature.h>
#include "decode.h"
#include "vtimer.h"
#else
ctxt.far = READ_SYSREG(FAR_EL1);
ctxt.esr_el1 = READ_SYSREG(ESR_EL1);
- ctxt.ifsr32_el2 = READ_SYSREG(IFSR32_EL2);
+ if ( is_32bit_domain(current->domain) )
+ ctxt.ifsr32_el2 = READ_SYSREG(IFSR32_EL2);
#endif
ctxt.vttbr_el2 = READ_SYSREG64(VTTBR_EL2);