Re: [PATCH v3 08/60] target/arm: Change DisasContext.thumb to bool

2022-04-22 Thread Richard Henderson

On 4/22/22 07:04, Peter Maydell wrote:

On Fri, 22 Apr 2022 at 15:01, Alex Bennée  wrote:



Richard Henderson  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~



Re: [PATCH v3 08/60] target/arm: Change DisasContext.thumb to bool

2022-04-22 Thread Peter Maydell
On Fri, 22 Apr 2022 at 15:01, Alex Bennée  wrote:
>
>
> Richard Henderson  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



Re: [PATCH v3 08/60] target/arm: Change DisasContext.thumb to bool

2022-04-22 Thread Alex Bennée


Richard Henderson  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 


>
> Signed-off-by: Richard Henderson 
> ---
>  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;


-- 
Alex Bennée



Re: [PATCH v3 08/60] target/arm: Change DisasContext.thumb to bool

2022-04-21 Thread Peter Maydell
On Sun, 17 Apr 2022 at 18:51, Richard Henderson
 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 
> ---
Reviewed-by: Peter Maydell 

thanks
-- PMM



[PATCH v3 08/60] target/arm: Change DisasContext.thumb to bool

2022-04-17 Thread Richard Henderson
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 
---
 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;
-- 
2.25.1