Message ID | 20220417174426.711829-9-richard.henderson@linaro.org |
---|---|
State | New |
Headers | show |
Series | target/arm: Cleanups, new features, new cpus | expand |
On Sun, 17 Apr 2022 at 18:51, Richard Henderson <richard.henderson@linaro.org> wrote: > > Bool is a more appropriate type for this value. > Move the member down in the struct to keep the > bool type members together and remove a hole. > > Signed-off-by: Richard Henderson <richard.henderson@linaro.org> > --- Reviewed-by: Peter Maydell <peter.maydell@linaro.org> thanks -- PMM
Richard Henderson <richard.henderson@linaro.org> writes: > Bool is a more appropriate type for this value. > Move the member down in the struct to keep the > bool type members together and remove a hole. Does gcc even attempt to pack bools? Aren't they basically int types? Anyway: Reviewed-by: Alex Bennée <alex.bennee@linaro.org> > > Signed-off-by: Richard Henderson <richard.henderson@linaro.org> > --- > target/arm/translate.h | 2 +- > target/arm/translate-a64.c | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/target/arm/translate.h b/target/arm/translate.h > index 8b7dd1a4c0..050d80f6f9 100644 > --- a/target/arm/translate.h > +++ b/target/arm/translate.h > @@ -30,7 +30,6 @@ typedef struct DisasContext { > bool eci_handled; > /* TCG op to rewind to if this turns out to be an invalid ECI state */ > TCGOp *insn_eci_rewind; > - int thumb; > int sctlr_b; > MemOp be_data; > #if !defined(CONFIG_USER_ONLY) > @@ -65,6 +64,7 @@ typedef struct DisasContext { > GHashTable *cp_regs; > uint64_t features; /* CPU features bits */ > bool aarch64; > + bool thumb; > /* Because unallocated encodings generate different exception syndrome > * information from traps due to FP being disabled, we can't do a single > * "is fp access disabled" check at a high level in the decode tree. > diff --git a/target/arm/translate-a64.c b/target/arm/translate-a64.c > index 4dad23db48..be7283b966 100644 > --- a/target/arm/translate-a64.c > +++ b/target/arm/translate-a64.c > @@ -14670,7 +14670,7 @@ static void aarch64_tr_init_disas_context(DisasContextBase *dcbase, > */ > dc->secure_routed_to_el3 = arm_feature(env, ARM_FEATURE_EL3) && > !arm_el_is_aa64(env, 3); > - dc->thumb = 0; > + dc->thumb = false; > dc->sctlr_b = 0; > dc->be_data = EX_TBFLAG_ANY(tb_flags, BE_DATA) ? MO_BE : MO_LE; > dc->condexec_mask = 0;
On Fri, 22 Apr 2022 at 15:01, Alex Bennée <alex.bennee@linaro.org> wrote: > > > Richard Henderson <richard.henderson@linaro.org> writes: > > > Bool is a more appropriate type for this value. > > Move the member down in the struct to keep the > > bool type members together and remove a hole. > > Does gcc even attempt to pack bools? Aren't they basically int types? It's impdef, I think, but it'll typically be a 1 byte integer rather than a 4 byte integer, with the usual struct packing rules for 1 byte type sizes. -- PMM
On 4/22/22 07:04, Peter Maydell wrote: > On Fri, 22 Apr 2022 at 15:01, Alex Bennée <alex.bennee@linaro.org> wrote: >> >> >> Richard Henderson <richard.henderson@linaro.org> writes: >> >>> Bool is a more appropriate type for this value. >>> Move the member down in the struct to keep the >>> bool type members together and remove a hole. >> >> Does gcc even attempt to pack bools? Aren't they basically int types? > > It's impdef, I think, but it'll typically be a 1 byte integer > rather than a 4 byte integer, with the usual struct packing > rules for 1 byte type sizes. Yep, it's 1 byte for all extant abis except macos where it's 4. r~
diff --git a/target/arm/translate.h b/target/arm/translate.h index 8b7dd1a4c0..050d80f6f9 100644 --- a/target/arm/translate.h +++ b/target/arm/translate.h @@ -30,7 +30,6 @@ typedef struct DisasContext { bool eci_handled; /* TCG op to rewind to if this turns out to be an invalid ECI state */ TCGOp *insn_eci_rewind; - int thumb; int sctlr_b; MemOp be_data; #if !defined(CONFIG_USER_ONLY) @@ -65,6 +64,7 @@ typedef struct DisasContext { GHashTable *cp_regs; uint64_t features; /* CPU features bits */ bool aarch64; + bool thumb; /* Because unallocated encodings generate different exception syndrome * information from traps due to FP being disabled, we can't do a single * "is fp access disabled" check at a high level in the decode tree. diff --git a/target/arm/translate-a64.c b/target/arm/translate-a64.c index 4dad23db48..be7283b966 100644 --- a/target/arm/translate-a64.c +++ b/target/arm/translate-a64.c @@ -14670,7 +14670,7 @@ static void aarch64_tr_init_disas_context(DisasContextBase *dcbase, */ dc->secure_routed_to_el3 = arm_feature(env, ARM_FEATURE_EL3) && !arm_el_is_aa64(env, 3); - dc->thumb = 0; + dc->thumb = false; dc->sctlr_b = 0; dc->be_data = EX_TBFLAG_ANY(tb_flags, BE_DATA) ? MO_BE : MO_LE; dc->condexec_mask = 0;
Bool is a more appropriate type for this value. Move the member down in the struct to keep the bool type members together and remove a hole. Signed-off-by: Richard Henderson <richard.henderson@linaro.org> --- target/arm/translate.h | 2 +- target/arm/translate-a64.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)