qemu-trivial
[Top][All Lists]
Advanced

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

Re: [Qemu-trivial] [Qemu-devel] [PATCH 3/3] Add ARM registers definition


From: Peter Maydell
Subject: Re: [Qemu-trivial] [Qemu-devel] [PATCH 3/3] Add ARM registers definitions in Monitor commands
Date: Fri, 27 Sep 2013 00:28:21 +0900

On 26 September 2013 23:50, Fabien Chouteau <address@hidden> wrote:
> On 09/26/2013 02:05 AM, Peter Maydell wrote:
>> On 26 September 2013 01:29, Fabien Chouteau <address@hidden> wrote:
>>> I think that's what I did. I think the problem was to include
>>> 'monitor.h' in 'target-*/cpu.c'.
>>
>> Why doesn't that work?
>
> The problem is use of 'target_long' in 'monitor.h'.

Oh, right, the problem isn't including monitor.h from cpu.c,
it's that some target-independent source files include
monitor.h so you can't put target-dependent types like
target_long in it. There are two fixes for this that spring
to mind:

(1) lazy approach, wrap the MonitorDef structure
definition in #ifdef NEED_CPU_H/#endif.

(2) the "remove target-specificisms from what should
be generic code" approach:
 * make MonitorDef use uint64_t rather than target_long
   for the getter function return type
 * propagate that type change into functions like
   get_monitor_def and its callsite in expr_unary
 * make the types recognized by get_monitor_def be
   MD_I32 or MD_I64, and not MD_TLONG
 * make the per-target MonitorDef array entries which
   currently implicitly use MD_TLONG instead either
   (a) use MD_I32 or MD_I64 if they're targets which
   really only have one width or (b) use a locally #defined
   MD_TLONG if they're accessing CPU struct fields which
   really are target_long and the CPU comes in both 32
   and 64 bit variants.

-- PMM



reply via email to

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