Paolo Bonzini <pbonz...@redhat.com> writes: > On 06/05/2010 11:31 PM, Blue Swirl wrote: >> Use only an opaque CPUState pointer and move the actual CPUState >> contents handling to cpu.h and cpuid.c. >> >> Set env->halted in pc.c and add a function to get the local APIC state >> of the current CPU for the MMIO. >> >> Signed-off-by: Blue Swirl<blauwir...@gmail.com> >> --- >> hw/apic.c | 40 +++++++++++++++------------------------- >> hw/apic.h | 9 ++++++++- >> hw/pc.c | 12 +++++++++++- >> target-i386/cpu.h | 27 ++++++++++++++++----------- >> target-i386/cpuid.c | 6 ++++++ >> 5 files changed, 56 insertions(+), 38 deletions(-) >> >> diff --git a/hw/apic.c b/hw/apic.c >> index 91c8d93..332c66e 100644 >> --- a/hw/apic.c >> +++ b/hw/apic.c >> @@ -95,7 +95,7 @@ >> #define MSI_ADDR_SIZE 0x100000 >> >> struct APICState { >> - CPUState *cpu_env; >> + void *cpu_env; > > I proposed having an opaque CPUState type in hw/ but it was > rejected. But I don't think using a void pointer is any better.
Using void * to hide implementation details of a monomorphic type is bad style. That's what incomplete types are for. Lets the compiler check types for you, and lets the debugger do a better job.