On 06/17/2013 01:58 PM, Andreas Färber wrote: > Am 17.06.2013 21:46, schrieb Richard Henderson: >> On 06/16/2013 08:57 AM, Andreas Färber wrote: >>> @@ -627,7 +627,7 @@ static void vapic_write(void *opaque, hwaddr addr, >>> uint64_t data, >>> hwaddr rom_paddr; >>> VAPICROMState *s = opaque; >>> >>> - cpu_synchronize_state(env); >>> + cpu_synchronize_state(CPU(x86_env_get_cpu(env))); >> >> ENV_GET_CPU, surely. > > No, ENV_GET_CPU() is only a compatibility macro for generic code and > shouldn't be used in target-specific code. > > Background is that foo_env_get_cpu() can coexist with bar_env_get_cpu() > whereas ENV_GET_CPU() relies on there being only one arch per > executable, which we hope to fix for heterogeneous emulations.
What has that got to do with anything? ENV_GET_CPU is a macro, and only applies within the current translation unit. This corresponds well with the CPUArchState type, which is also local to the current translation unit. r~