summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Jannik Vogel2016-05-16 10:47:01 +0200
committerGravatar Jannik Vogel2016-05-16 15:00:45 +0200
commit6fe0cb671df9daf29314be9cbe754606f8cb1ed1 (patch)
tree1fe01e774172210d2fb6db8d166c8e7e48ee10c7 /src
parentDisable VFP3 instructions (diff)
downloadyuzu-6fe0cb671df9daf29314be9cbe754606f8cb1ed1.tar.gz
yuzu-6fe0cb671df9daf29314be9cbe754606f8cb1ed1.tar.xz
yuzu-6fe0cb671df9daf29314be9cbe754606f8cb1ed1.zip
Respect fpscr in ftoiz
Diffstat (limited to 'src')
-rw-r--r--src/core/arm/skyeye_common/vfp/vfpdouble.cpp4
-rw-r--r--src/core/arm/skyeye_common/vfp/vfpsingle.cpp4
2 files changed, 4 insertions, 4 deletions
diff --git a/src/core/arm/skyeye_common/vfp/vfpdouble.cpp b/src/core/arm/skyeye_common/vfp/vfpdouble.cpp
index 45914d479..5215d48eb 100644
--- a/src/core/arm/skyeye_common/vfp/vfpdouble.cpp
+++ b/src/core/arm/skyeye_common/vfp/vfpdouble.cpp
@@ -615,7 +615,7 @@ static u32 vfp_double_ftoui(ARMul_State* state, int sd, int unused, int dm, u32
615static u32 vfp_double_ftouiz(ARMul_State* state, int sd, int unused, int dm, u32 fpscr) 615static u32 vfp_double_ftouiz(ARMul_State* state, int sd, int unused, int dm, u32 fpscr)
616{ 616{
617 LOG_TRACE(Core_ARM11, "In %s", __FUNCTION__); 617 LOG_TRACE(Core_ARM11, "In %s", __FUNCTION__);
618 return vfp_double_ftoui(state, sd, unused, dm, FPSCR_ROUND_TOZERO); 618 return vfp_double_ftoui(state, sd, unused, dm, (fpscr & ~FPSCR_RMODE_MASK) | FPSCR_ROUND_TOZERO);
619} 619}
620 620
621static u32 vfp_double_ftosi(ARMul_State* state, int sd, int unused, int dm, u32 fpscr) 621static u32 vfp_double_ftosi(ARMul_State* state, int sd, int unused, int dm, u32 fpscr)
@@ -692,7 +692,7 @@ static u32 vfp_double_ftosi(ARMul_State* state, int sd, int unused, int dm, u32
692static u32 vfp_double_ftosiz(ARMul_State* state, int dd, int unused, int dm, u32 fpscr) 692static u32 vfp_double_ftosiz(ARMul_State* state, int dd, int unused, int dm, u32 fpscr)
693{ 693{
694 LOG_TRACE(Core_ARM11, "In %s", __FUNCTION__); 694 LOG_TRACE(Core_ARM11, "In %s", __FUNCTION__);
695 return vfp_double_ftosi(state, dd, unused, dm, FPSCR_ROUND_TOZERO); 695 return vfp_double_ftosi(state, dd, unused, dm, (fpscr & ~FPSCR_RMODE_MASK) | FPSCR_ROUND_TOZERO);
696} 696}
697 697
698static struct op fops_ext[] = { 698static struct op fops_ext[] = {
diff --git a/src/core/arm/skyeye_common/vfp/vfpsingle.cpp b/src/core/arm/skyeye_common/vfp/vfpsingle.cpp
index e47ad2760..e15a95716 100644
--- a/src/core/arm/skyeye_common/vfp/vfpsingle.cpp
+++ b/src/core/arm/skyeye_common/vfp/vfpsingle.cpp
@@ -638,7 +638,7 @@ static u32 vfp_single_ftoui(ARMul_State* state, int sd, int unused, s32 m, u32 f
638 638
639static u32 vfp_single_ftouiz(ARMul_State* state, int sd, int unused, s32 m, u32 fpscr) 639static u32 vfp_single_ftouiz(ARMul_State* state, int sd, int unused, s32 m, u32 fpscr)
640{ 640{
641 return vfp_single_ftoui(state, sd, unused, m, FPSCR_ROUND_TOZERO); 641 return vfp_single_ftoui(state, sd, unused, m, (fpscr & ~FPSCR_RMODE_MASK) | FPSCR_ROUND_TOZERO);
642} 642}
643 643
644static u32 vfp_single_ftosi(ARMul_State* state, int sd, int unused, s32 m, u32 fpscr) 644static u32 vfp_single_ftosi(ARMul_State* state, int sd, int unused, s32 m, u32 fpscr)
@@ -717,7 +717,7 @@ static u32 vfp_single_ftosi(ARMul_State* state, int sd, int unused, s32 m, u32 f
717 717
718static u32 vfp_single_ftosiz(ARMul_State* state, int sd, int unused, s32 m, u32 fpscr) 718static u32 vfp_single_ftosiz(ARMul_State* state, int sd, int unused, s32 m, u32 fpscr)
719{ 719{
720 return vfp_single_ftosi(state, sd, unused, m, FPSCR_ROUND_TOZERO); 720 return vfp_single_ftosi(state, sd, unused, m, (fpscr & ~FPSCR_RMODE_MASK) | FPSCR_ROUND_TOZERO);
721} 721}
722 722
723static struct op fops_ext[] = { 723static struct op fops_ext[] = {