Message ID | 1505054255-2990-2-git-send-email-mark.cave-ayland@ilande.co.uk (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 10/09/2017 16:37, Mark Cave-Ayland wrote: > This change was suggested by Alexey in advance of a subsequent commit which > adds access_type into vmstate_ppc_cpu. > > Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> > --- > target/ppc/cpu.h | 4 ++-- > target/ppc/machine.c | 4 +++- > 2 files changed, 5 insertions(+), 3 deletions(-) > > diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h > index 12f0949..59d1656 100644 > --- a/target/ppc/cpu.h > +++ b/target/ppc/cpu.h > @@ -1010,8 +1010,8 @@ struct CPUPPCState { > /* Next instruction pointer */ > target_ulong nip; > > - int access_type; /* when a memory exception occurs, the access > - type is stored here */ > + uint8_t access_type; /* when a memory exception occurs, the access > + type is stored here */ I think this breaks TCG as we have: target/ppc/translate.c: 82 void ppc_translate_init(void) ... 191 192 cpu_access_type = tcg_global_mem_new_i32(cpu_env, 193 offsetof(CPUPPCState, access_type), "access_type"); 194 195 done_init = 1; 196 } it expects an int32_t (or int). Thanks, Laurent
On 10/09/17 17:30, Laurent Vivier wrote: > On 10/09/2017 16:37, Mark Cave-Ayland wrote: >> This change was suggested by Alexey in advance of a subsequent commit which >> adds access_type into vmstate_ppc_cpu. >> >> Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> >> --- >> target/ppc/cpu.h | 4 ++-- >> target/ppc/machine.c | 4 +++- >> 2 files changed, 5 insertions(+), 3 deletions(-) >> >> diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h >> index 12f0949..59d1656 100644 >> --- a/target/ppc/cpu.h >> +++ b/target/ppc/cpu.h >> @@ -1010,8 +1010,8 @@ struct CPUPPCState { >> /* Next instruction pointer */ >> target_ulong nip; >> >> - int access_type; /* when a memory exception occurs, the access >> - type is stored here */ >> + uint8_t access_type; /* when a memory exception occurs, the access >> + type is stored here */ > > I think this breaks TCG as we have: > > target/ppc/translate.c: > > 82 void ppc_translate_init(void) > ... > 191 > 192 cpu_access_type = tcg_global_mem_new_i32(cpu_env, > 193 offsetof(CPUPPCState, access_type), "access_type"); > 194 > 195 done_init = 1; > 196 } > > it expects an int32_t (or int). Indeed, yes. I'm really surprised this didn't break compilation or anything at runtime... Having a further look I can't see any implementations for tcg_global_mem_new_u8() or tcg_gen_movi_u8() so changing this isn't a straightforward type swap. Alexey, do you still think this is required? ATB, Mark.
diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h index 12f0949..59d1656 100644 --- a/target/ppc/cpu.h +++ b/target/ppc/cpu.h @@ -1010,8 +1010,8 @@ struct CPUPPCState { /* Next instruction pointer */ target_ulong nip; - int access_type; /* when a memory exception occurs, the access - type is stored here */ + uint8_t access_type; /* when a memory exception occurs, the access + type is stored here */ CPU_COMMON diff --git a/target/ppc/machine.c b/target/ppc/machine.c index e36b710..e59049f 100644 --- a/target/ppc/machine.c +++ b/target/ppc/machine.c @@ -19,6 +19,7 @@ static int cpu_load_old(QEMUFile *f, void *opaque, int version_id) target_ulong sdr1; uint32_t fpscr; target_ulong xer; + int access_type; for (i = 0; i < 32; i++) qemu_get_betls(f, &env->gpr[i]); @@ -46,7 +47,8 @@ static int cpu_load_old(QEMUFile *f, void *opaque, int version_id) } qemu_get_be32s(f, &fpscr); env->fpscr = fpscr; - qemu_get_sbe32s(f, &env->access_type); + qemu_get_sbe32s(f, &access_type); + env->access_type = (uint8_t)access_type; #if defined(TARGET_PPC64) qemu_get_betls(f, &env->spr[SPR_ASR]); qemu_get_sbe32s(f, &env->slb_nr);
This change was suggested by Alexey in advance of a subsequent commit which adds access_type into vmstate_ppc_cpu. Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> --- target/ppc/cpu.h | 4 ++-- target/ppc/machine.c | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-)