mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-02 15:23:53 -06:00
accel/tcg: Move CPUNegativeOffsetState into CPUState
Retain the separate structure to emphasize its importance. Enforce CPUArchState always follows CPUState without padding. Reviewed-by: Anton Johansson <anjo@rev.ng> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
5d30bdcb1b
commit
3b3d7df545
25 changed files with 38 additions and 46 deletions
|
@ -432,9 +432,13 @@ int cpu_exec(CPUState *cpu);
|
|||
static inline void cpu_set_cpustate_pointers(ArchCPU *cpu)
|
||||
{
|
||||
cpu->parent_obj.env_ptr = &cpu->env;
|
||||
cpu->parent_obj.icount_decr_ptr = &cpu->neg.icount_decr;
|
||||
cpu->parent_obj.icount_decr_ptr = &cpu->parent_obj.neg.icount_decr;
|
||||
}
|
||||
|
||||
/* Validate correct placement of CPUArchState. */
|
||||
QEMU_BUILD_BUG_ON(offsetof(ArchCPU, parent_obj) != 0);
|
||||
QEMU_BUILD_BUG_ON(offsetof(ArchCPU, env) != sizeof(CPUState));
|
||||
|
||||
/**
|
||||
* env_archcpu(env)
|
||||
* @env: The architecture environment
|
||||
|
@ -443,7 +447,7 @@ static inline void cpu_set_cpustate_pointers(ArchCPU *cpu)
|
|||
*/
|
||||
static inline ArchCPU *env_archcpu(CPUArchState *env)
|
||||
{
|
||||
return container_of(env, ArchCPU, env);
|
||||
return (void *)env - sizeof(CPUState);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -454,15 +458,9 @@ static inline ArchCPU *env_archcpu(CPUArchState *env)
|
|||
*/
|
||||
static inline CPUState *env_cpu(CPUArchState *env)
|
||||
{
|
||||
return &env_archcpu(env)->parent_obj;
|
||||
return (void *)env - sizeof(CPUState);
|
||||
}
|
||||
|
||||
/*
|
||||
* Validate placement of CPUNegativeOffsetState.
|
||||
*/
|
||||
QEMU_BUILD_BUG_ON(offsetof(ArchCPU, env) - offsetof(ArchCPU, neg) >=
|
||||
sizeof(CPUNegativeOffsetState) + __alignof(CPUArchState));
|
||||
|
||||
/**
|
||||
* env_neg(env)
|
||||
* @env: The architecture environment
|
||||
|
@ -471,8 +469,7 @@ QEMU_BUILD_BUG_ON(offsetof(ArchCPU, env) - offsetof(ArchCPU, neg) >=
|
|||
*/
|
||||
static inline CPUNegativeOffsetState *env_neg(CPUArchState *env)
|
||||
{
|
||||
ArchCPU *arch_cpu = container_of(env, ArchCPU, env);
|
||||
return &arch_cpu->neg;
|
||||
return &env_cpu(env)->neg;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -483,8 +480,7 @@ static inline CPUNegativeOffsetState *env_neg(CPUArchState *env)
|
|||
*/
|
||||
static inline CPUNegativeOffsetState *cpu_neg(CPUState *cpu)
|
||||
{
|
||||
ArchCPU *arch_cpu = container_of(cpu, ArchCPU, parent_obj);
|
||||
return &arch_cpu->neg;
|
||||
return &cpu->neg;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue