[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 3/4] Refactoring MonitorDef array
From: |
Peter Maydell |
Subject: |
Re: [Qemu-devel] [PATCH 3/4] Refactoring MonitorDef array |
Date: |
Tue, 1 Oct 2013 10:08:45 +0900 |
On 1 October 2013 00:57, Fabien Chouteau <address@hidden> wrote:
> +#define MD_I64 0
> +#define MD_I32 1
> -#define MD_TLONG 0
> -#define MD_I32 1
> - { "eax", offsetof(CPUX86State, regs[0]) },
> - { "ecx", offsetof(CPUX86State, regs[1]) },
> + { "eax", offsetof(CPUX86State, regs[0]) },
> + { "ecx", offsetof(CPUX86State, regs[1]) },
I like this generally, but this detail is wrong. These changes
mean that these registers (and many others) are now described
as being int64_t wide rather than target_long wide, so you'll
find that on 32 bit x86 they will read/write incorrectly.
This is why I suggested that you need to have target-i386/monitor.c
do an
#if TARGET_LONG_BITS == 32
#define MD_TLONG MD_I32
#else
#define MD_TLONG MD_I64
#endif
and then specifically mark these fields as MD_TLONG.
(We could also get rid of that awkward mon_get_cpu()
which is the only thing in monitor.h that has to be guarded
by NEED_CPU_H, by having the function prototype for
the callback functions just take a CPUState* (nb: not
a CPUArchState*) rather than having them all call
mon_get_cpu. But we can do that in another patch
I guess.)
-- PMM