[PATCH 2/7] target/alpha: Fix SWCR_MAP_UMZ

Richard Henderson posted 7 patches 6 years, 4 months ago
Maintainers: Richard Henderson <rth@twiddle.net>
[PATCH 2/7] target/alpha: Fix SWCR_MAP_UMZ
Posted by Richard Henderson 6 years, 4 months ago
We were setting the wrong bit.  The fp_status.flush_to_zero
setting is overwritten by either the constant 1 or the value
of fpcr_flush_to_zero depending on bits within an fp insn.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 target/alpha/helper.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/target/alpha/helper.c b/target/alpha/helper.c
index 6c1703682e..10602fb339 100644
--- a/target/alpha/helper.c
+++ b/target/alpha/helper.c
@@ -71,7 +71,7 @@ void cpu_alpha_store_fpcr(CPUAlphaState *env, uint64_t val)
         env->fp_status.flush_inputs_to_zero = 1;
     }
     if (env->swcr & SWCR_MAP_UMZ) {
-        env->fp_status.flush_to_zero = 1;
+        env->fpcr_flush_to_zero = 1;
     }
     env->fpcr_exc_enable &= ~(alpha_ieee_swcr_to_fpcr(env->swcr) >> 32);
 #endif
-- 
2.17.1


Re: [PATCH 2/7] target/alpha: Fix SWCR_MAP_UMZ
Posted by Alex Bennée 6 years, 4 months ago
Richard Henderson <richard.henderson@linaro.org> writes:

> We were setting the wrong bit.  The fp_status.flush_to_zero
> setting is overwritten

".. in the generated code.."?

> by either the constant 1 or the value
> of fpcr_flush_to_zero depending on bits within an fp insn.
>
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>

Reviewed-by: Alex Bennée <alex.bennee@linaro.org>

> ---
>  target/alpha/helper.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/target/alpha/helper.c b/target/alpha/helper.c
> index 6c1703682e..10602fb339 100644
> --- a/target/alpha/helper.c
> +++ b/target/alpha/helper.c
> @@ -71,7 +71,7 @@ void cpu_alpha_store_fpcr(CPUAlphaState *env, uint64_t val)
>          env->fp_status.flush_inputs_to_zero = 1;
>      }
>      if (env->swcr & SWCR_MAP_UMZ) {
> -        env->fp_status.flush_to_zero = 1;
> +        env->fpcr_flush_to_zero = 1;
>      }
>      env->fpcr_exc_enable &= ~(alpha_ieee_swcr_to_fpcr(env->swcr) >> 32);
>  #endif


--
Alex Bennée