diff --git a/qemu/target/arm/unicorn_arm.c b/qemu/target/arm/unicorn_arm.c index 51d3e2d2..87007f42 100644 --- a/qemu/target/arm/unicorn_arm.c +++ b/qemu/target/arm/unicorn_arm.c @@ -248,6 +248,12 @@ static uc_err reg_read(CPUARMState *env, unsigned int regid, void *value) case UC_ARM_REG_FPEXC: *(int32_t *)value = env->vfp.xregs[ARM_VFP_FPEXC]; break; + case UC_ARM_REG_FPSCR: + *(int32_t *)value = vfp_get_fpscr(env); + break; + case UC_ARM_REG_FPSID: + *(int32_t *)value = env->vfp.xregs[ARM_VFP_FPSID]; + break; case UC_ARM_REG_IPSR: *(int32_t *)value = v7m_mrs_xpsr(env, 5); break; @@ -353,6 +359,12 @@ static uc_err reg_write(CPUARMState *env, unsigned int regid, const void *value) case UC_ARM_REG_FPEXC: env->vfp.xregs[ARM_VFP_FPEXC] = *(int32_t *)value; break; + case UC_ARM_REG_FPSCR: + vfp_set_fpscr(env, *(int32_t *)value); + break; + case UC_ARM_REG_FPSID: + env->vfp.xregs[ARM_VFP_FPSID] = *(int32_t *)value; + break; case UC_ARM_REG_IPSR: v7m_msr_xpsr(env, 0b1000, 5, *(uint32_t *)value); break;