qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] target/ppc: fix memory dump endianness in QEMU monitor


From: Fabiano Rosas
Subject: Re: [PATCH] target/ppc: fix memory dump endianness in QEMU monitor
Date: Mon, 23 Dec 2019 20:27:49 -0300

David Gibson <address@hidden> writes:

> b) AFAICT this is the *only* thing that looks for the LE bit in
> hflags. Given that, and the fact that it would be wrong in most cases,
> we should remove it from hflags entirely along with this change.
>

I see there is:

static void ppc_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cs)
{
    ...
    ctx->le_mode = !!(env->hflags & (1 << MSR_LE));
    ...
}

And we call hreg_recompute_hflags in some places:

- powerpc_excp (target/ppc/excp_helper.c)
  Called from TCG do_interrupt

- ppc_cpu_reset (target/ppc/translate_init.inc.c)
  Called from spapr_machine_reset

- hreg_store_msr (target/ppc/helper_regs.h)
  This is used for migration and for do_rfi, store_msr

- h_cede (hw/ppc/spapr_hcall.c)
  QEMU-side H_CEDE hypercall implementation 


It looks like the hflags MSR_LE is being updated correctly with TCG. But
with KVM we only touch it on system_reset (and possibly h_cede? I don't
know if it is QEMU who handles it).

So I would let hflags be.


... Actually, I don't really know the purpose of hflags. It comes from:

  commit 3f3373166227b13e762e20d2fb51eadfa6a2d653
  Author: Fabrice Bellard <address@hidden>
  Date:   Wed Aug 20 23:02:09 2003 +0000
  
      pop ss, mov ss, x and sti disable irqs for the next instruction -
      began dispatch optimization by adding new x86 cpu 'hidden' flags
      
      
      git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@372 
c046a42c-6fe2-441c-8c8c-71466251a162

Could any one clarify that?

Thanks

>> ---
>>  target/ppc/translate_init.inc.c | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>> 
>> diff --git a/target/ppc/translate_init.inc.c 
>> b/target/ppc/translate_init.inc.c
>> index d33d65dff7..a0b384da9e 100644
>> --- a/target/ppc/translate_init.inc.c
>> +++ b/target/ppc/translate_init.inc.c
>> @@ -10830,7 +10830,7 @@ static void ppc_disas_set_info(CPUState *cs, 
>> disassemble_info *info)
>>      PowerPCCPU *cpu = POWERPC_CPU(cs);
>>      CPUPPCState *env = &cpu->env;
>>  
>> -    if ((env->hflags >> MSR_LE) & 1) {
>> +    if (msr_le) {
>>          info->endian = BFD_ENDIAN_LITTLE;
>>      }
>>      info->mach = env->bfd_mach;



reply via email to

[Prev in Thread] Current Thread [Next in Thread]