Message ID | 066a2c520c38b0c175c052d6a3385d5661764833.1566573576.git.alistair.francis@wdc.com |
---|---|
State | New |
Headers | show |
Series | RISC-V: Hypervisor prep work part 2 | expand |
On Fri, Aug 23, 2019 at 8:44 AM Peter Maydell <peter.maydell@linaro.org> wrote: > > On Fri, 23 Aug 2019 at 16:37, Alistair Francis <alistair.francis@wdc.com> wrote: > > > > Use the TB_FLAGS_MSTATUS_FS macro when enabling floating point in the tb > > flags. > > > > Signed-off-by: Alistair Francis <alistair.francis@wdc.com> > > --- > > target/riscv/cpu.h | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h > > index eb7b5b0af3..0347be453b 100644 > > --- a/target/riscv/cpu.h > > +++ b/target/riscv/cpu.h > > @@ -301,7 +301,7 @@ static inline void cpu_get_tb_cpu_state(CPURISCVState *env, target_ulong *pc, > > #else > > *flags = cpu_mmu_index(env, 0); > > if (riscv_cpu_fp_enabled(env)) { > > - *flags |= env->mstatus & MSTATUS_FS; > > + *flags |= TB_FLAGS_MSTATUS_FS; > > } > > #endif > > The old code was setting the bit in flags only if > it was also set in env->mstatus; the new code sets > the bit unconditionally -- deliberate change ? Yes it is deliberate as the riscv_cpu_fp_enabled() function already does the check. The function contains the exact same & operation inside of it. Alistair > > thanks > -- PMM
On Fri, 23 Aug 2019 at 16:37, Alistair Francis <alistair.francis@wdc.com> wrote: > > Use the TB_FLAGS_MSTATUS_FS macro when enabling floating point in the tb > flags. > > Signed-off-by: Alistair Francis <alistair.francis@wdc.com> > --- > target/riscv/cpu.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h > index eb7b5b0af3..0347be453b 100644 > --- a/target/riscv/cpu.h > +++ b/target/riscv/cpu.h > @@ -301,7 +301,7 @@ static inline void cpu_get_tb_cpu_state(CPURISCVState *env, target_ulong *pc, > #else > *flags = cpu_mmu_index(env, 0); > if (riscv_cpu_fp_enabled(env)) { > - *flags |= env->mstatus & MSTATUS_FS; > + *flags |= TB_FLAGS_MSTATUS_FS; > } > #endif The old code was setting the bit in flags only if it was also set in env->mstatus; the new code sets the bit unconditionally -- deliberate change ? thanks -- PMM
On Fri, 23 Aug 2019 08:21:25 PDT (-0700), Alistair Francis wrote: > Use the TB_FLAGS_MSTATUS_FS macro when enabling floating point in the tb > flags. > > Signed-off-by: Alistair Francis <alistair.francis@wdc.com> > --- > target/riscv/cpu.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h > index eb7b5b0af3..0347be453b 100644 > --- a/target/riscv/cpu.h > +++ b/target/riscv/cpu.h > @@ -301,7 +301,7 @@ static inline void cpu_get_tb_cpu_state(CPURISCVState *env, target_ulong *pc, > #else > *flags = cpu_mmu_index(env, 0); > if (riscv_cpu_fp_enabled(env)) { > - *flags |= env->mstatus & MSTATUS_FS; > + *flags |= TB_FLAGS_MSTATUS_FS; I thought this was a functional change, but it's not: fp_enabled() checks mstatus already. > } > #endif > } Reviewed-by: Palmer Dabbelt <palmer@sifive.com>
diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h index eb7b5b0af3..0347be453b 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -301,7 +301,7 @@ static inline void cpu_get_tb_cpu_state(CPURISCVState *env, target_ulong *pc, #else *flags = cpu_mmu_index(env, 0); if (riscv_cpu_fp_enabled(env)) { - *flags |= env->mstatus & MSTATUS_FS; + *flags |= TB_FLAGS_MSTATUS_FS; } #endif }
Use the TB_FLAGS_MSTATUS_FS macro when enabling floating point in the tb flags. Signed-off-by: Alistair Francis <alistair.francis@wdc.com> --- target/riscv/cpu.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)