diff --git a/externals/unicorn b/externals/unicorn index 73f4573535..c53f666160 160000 --- a/externals/unicorn +++ b/externals/unicorn @@ -1 +1 @@ -Subproject commit 73f45735354396766a4bfb26d0b96b06e5cf31b2 +Subproject commit c53f666160d7ca4bc5e5aa4833ca67f3fd65d46a diff --git a/src/core/arm/unicorn/arm_unicorn.cpp b/src/core/arm/unicorn/arm_unicorn.cpp index ded4dd359c..0e4e105edf 100644 --- a/src/core/arm/unicorn/arm_unicorn.cpp +++ b/src/core/arm/unicorn/arm_unicorn.cpp @@ -211,6 +211,8 @@ void ARM_Unicorn::SaveContext(ThreadContext& ctx) { CHECKED(uc_reg_read(uc, UC_ARM64_REG_SP, &ctx.sp)); CHECKED(uc_reg_read(uc, UC_ARM64_REG_PC, &ctx.pc)); CHECKED(uc_reg_read(uc, UC_ARM64_REG_NZCV, &ctx.pstate)); + CHECKED(uc_reg_read(uc, UC_ARM64_REG_FPCR, &ctx.fpcr)); + CHECKED(uc_reg_read(uc, UC_ARM64_REG_FPSR, &ctx.fpsr)); for (auto i = 0; i < 29; ++i) { uregs[i] = UC_ARM64_REG_X0 + i; @@ -238,6 +240,8 @@ void ARM_Unicorn::LoadContext(const ThreadContext& ctx) { CHECKED(uc_reg_write(uc, UC_ARM64_REG_SP, &ctx.sp)); CHECKED(uc_reg_write(uc, UC_ARM64_REG_PC, &ctx.pc)); CHECKED(uc_reg_write(uc, UC_ARM64_REG_NZCV, &ctx.pstate)); + CHECKED(uc_reg_write(uc, UC_ARM64_REG_FPCR, &ctx.fpcr)); + CHECKED(uc_reg_write(uc, UC_ARM64_REG_FPSR, &ctx.fpsr)); for (int i = 0; i < 29; ++i) { uregs[i] = UC_ARM64_REG_X0 + i;