[PATCH 2/7] New regs_info for aarch32

Pedro Alves palves@redhat.com
Mon Aug 3 17:11:00 GMT 2015


On 08/03/2015 05:34 PM, Yao Qi wrote:
> 
> 
> On 03/08/15 14:58, Pedro Alves wrote:
>> Why weren't these moved as well?  At first,
>>
>>>> -  init_registers_arm_with_vfpv2 ();
>>>> -  init_registers_arm_with_vfpv3 ();
>>>> -  init_registers_arm_with_neon ();
>>>> +
>>>> +  initialize_low_arch_aarch32 ();
>> I thought that this was because aarch64 doesn't
>> do the old iwmmxt, but then in the following patch you
>> have this anyway:
> 
> Yes, aarch64 doesn't support iwmmxt.
> 
>>
>>>>  void
>>>>  initialize_low_arch_aarch32 (void)
>>>>  {
>>>> +#ifndef __aarch64__
>>>>    init_registers_arm_with_vfpv2 ();
>>>>    init_registers_arm_with_vfpv3 ();
>>>> +#endif
>>>>    init_registers_arm_with_neon ();
>>>>
>> So I don't understand when/where to initialize arm32
>> descriptions going forward.
> 
> Sorry, I am not sure I understand your question.
> 
> initialize_low_arch_aarch32 is called from
> linux-arm-low.c and linux-aarch64-low.c for arm and aarch64
> target respectively.  For aarch64, we initialize arm_with_neon
> while for arm, we initialize arm_with_vfpv2 and arm_with_vfpv3
> additionally.
> 

Let me try putting it another way then.

Why are some init_registers_arm_XXX calls done in
linux-aarch32-low.c:initialize_low_arch_aarch32 but others
in linux-arm-low.c:initialize_low_arch?

If we already end up with __aarch64__ #ifdefs, shouldn't the resulting
code end like this?

  void
  initialize_low_arch_aarch32 (void)
  {
#ifndef __aarch64__
    init_registers_arm ();
    init_registers_arm_with_iwmmxt ();
    init_registers_arm_with_vfpv2 ();
    init_registers_arm_with_vfpv3 ();
#endif
    init_registers_arm_with_neon ();
  }

Isn't aarch32 the term used for all 32-bit execution state,
including pre-ARMv8?  Otherwise, going forward, what is the
guideline to know where to put a new
init_registers_arm_xxx call?

Thanks,
Pedro Alves



More information about the Gdb-patches mailing list