@@ -67,5 +67,12 @@ static inline AlphaCPU *alpha_env_get_cpu(CPUAlphaState *env)
#define ENV_GET_CPU(e) CPU(alpha_env_get_cpu(e))
+static inline CPUAlphaState *alpha_cpu_get_env(AlphaCPU *cpu)
+{
+ return cpu ? &cpu->env : NULL;
+}
+
+#define CPU_GET_ENV(cpu) alpha_cpu_get_env(ALPHA_CPU(cpu))
+
#endif
@@ -107,6 +107,13 @@ static inline ARMCPU *arm_env_get_cpu(CPUARMState *env)
#define ENV_GET_CPU(e) CPU(arm_env_get_cpu(e))
+static inline CPUARMState *arm_cpu_get_env(ARMCPU *cpu)
+{
+ return cpu ? &cpu->env : NULL;
+}
+
+#define CPU_GET_ENV(cpu) arm_cpu_get_env(ARM_CPU(cpu))
+
void arm_cpu_realize(ARMCPU *cpu);
void register_cp_regs_for_features(ARMCPU *cpu);
@@ -66,5 +66,12 @@ static inline CRISCPU *cris_env_get_cpu(CPUCRISState *env)
#define ENV_GET_CPU(e) CPU(cris_env_get_cpu(e))
+static inline CPUCRISState *cris_cpu_get_env(CRISCPU *cpu)
+{
+ return cpu ? &cpu->env : NULL;
+}
+
+#define CPU_GET_ENV(cpu) cris_cpu_get_env(CRIS_CPU(cpu))
+
#endif
@@ -72,6 +72,13 @@ static inline X86CPU *x86_env_get_cpu(CPUX86State *env)
#define ENV_GET_CPU(e) CPU(x86_env_get_cpu(e))
+static inline CPUX86State *x86_cpu_get_env(X86CPU *cpu)
+{
+ return cpu ? &cpu->env : NULL;
+}
+
+#define CPU_GET_ENV(cpu) x86_cpu_get_env(X86_CPU(cpu))
+
/* TODO Drop once ObjectClass::realize is available */
void x86_cpu_realize(Object *obj, Error **errp);
@@ -67,5 +67,12 @@ static inline LM32CPU *lm32_env_get_cpu(CPULM32State *env)
#define ENV_GET_CPU(e) CPU(lm32_env_get_cpu(e))
+static inline CPULM32State *lm32_cpu_get_env(LM32CPU *cpu)
+{
+ return cpu ? &cpu->env : NULL;
+}
+
+#define CPU_GET_ENV(cpu) lm32_cpu_get_env(LM32_CPU(cpu))
+
#endif
@@ -66,5 +66,12 @@ static inline M68kCPU *m68k_env_get_cpu(CPUM68KState *env)
#define ENV_GET_CPU(e) CPU(m68k_env_get_cpu(e))
+static inline CPUM68KState *m68k_cpu_get_env(M68kCPU *cpu)
+{
+ return cpu ? &cpu->env : NULL;
+}
+
+#define CPU_GET_ENV(cpu) m68k_cpu_get_env(M68K_CPU(cpu))
+
#endif
@@ -66,5 +66,12 @@ static inline MicroBlazeCPU *mb_env_get_cpu(CPUMBState *env)
#define ENV_GET_CPU(e) CPU(mb_env_get_cpu(e))
+static inline CPUMBState *mb_cpu_get_env(MicroBlazeCPU *cpu)
+{
+ return cpu ? &cpu->env : NULL;
+}
+
+#define CPU_GET_ENV(cpu) mb_cpu_get_env(MICROBLAZE_CPU(cpu))
+
#endif
@@ -70,5 +70,12 @@ static inline MIPSCPU *mips_env_get_cpu(CPUMIPSState *env)
#define ENV_GET_CPU(e) CPU(mips_env_get_cpu(e))
+static inline CPUMIPSState *mips_cpu_get_env(MIPSCPU *cpu)
+{
+ return cpu ? &cpu->env : NULL;
+}
+
+#define CPU_GET_ENV(cpu) mips_cpu_get_env(MIPS_CPU(cpu))
+
#endif
@@ -339,6 +339,13 @@ static inline OpenRISCCPU *openrisc_env_get_cpu(CPUOpenRISCState *env)
#define ENV_GET_CPU(e) CPU(openrisc_env_get_cpu(e))
+static inline CPUOpenRISCState *openrisc_cpu_get_env(OpenRISCCPU *cpu)
+{
+ return &cpu->env;;
+}
+
+#define CPU_GET_ENV(cpu) openrisc_cpu_get_env(OPENRISC_CPU(cpu))
+
OpenRISCCPU *cpu_openrisc_init(const char *cpu_model);
void openrisc_cpu_realize(Object *obj, Error **errp);
@@ -73,5 +73,12 @@ static inline PowerPCCPU *ppc_env_get_cpu(CPUPPCState *env)
#define ENV_GET_CPU(e) CPU(ppc_env_get_cpu(e))
+static inline CPUPPCState *ppc_cpu_get_env(PowerPCCPU *cpu)
+{
+ return cpu ? &cpu->env : NULL;
+}
+
+#define CPU_GET_ENV(cpu) ppc_cpu_get_env(POWERPC_CPU(cpu))
+
#endif
@@ -67,5 +67,12 @@ static inline S390CPU *s390_env_get_cpu(CPUS390XState *env)
#define ENV_GET_CPU(e) CPU(s390_env_get_cpu(e))
+static inline CPUS390XState *s390_cpu_get_env(S390CPU *cpu)
+{
+ return cpu ? &cpu->env : NULL;
+}
+
+#define CPU_GET_ENV(cpu) s390_cpu_get_env(S390_CPU(cpu))
+
#endif
@@ -66,5 +66,12 @@ static inline SuperHCPU *sh_env_get_cpu(CPUSH4State *env)
#define ENV_GET_CPU(e) CPU(sh_env_get_cpu(e))
+static inline CPUSH4State *sh_cpu_get_env(SuperHCPU *cpu)
+{
+ return cpu ? &cpu->env : NULL;
+}
+
+#define CPU_GET_ENV(cpu) sh_cpu_get_env(SUPERH_CPU(cpu))
+
#endif
@@ -71,5 +71,12 @@ static inline SPARCCPU *sparc_env_get_cpu(CPUSPARCState *env)
#define ENV_GET_CPU(e) CPU(sparc_env_get_cpu(e))
+static inline CPUSPARCState *sparc_cpu_get_env(SPARCCPU *cpu)
+{
+ return cpu ? &cpu->env : NULL;
+}
+
+#define CPU_GET_ENV(cpu) sparc_cpu_get_env(SPARC_CPU(cpu))
+
#endif
@@ -55,5 +55,12 @@ static inline UniCore32CPU *uc32_env_get_cpu(CPUUniCore32State *env)
#define ENV_GET_CPU(e) CPU(uc32_env_get_cpu(e))
+static inline CPUUniCore32State *uc32_cpu_get_env(UniCore32CPU *cpu)
+{
+ return cpu ? &cpu->env : NULL;
+}
+
+#define CPU_GET_ENV(cpu) uc32_cpu_get_env(UNICORE32_CPU(cpu))
+
#endif
@@ -76,5 +76,12 @@ static inline XtensaCPU *xtensa_env_get_cpu(const CPUXtensaState *env)
#define ENV_GET_CPU(e) CPU(xtensa_env_get_cpu(e))
+static inline CPUXtensaState *xtensa_cpu_get_env(XtensaCPU *cpu)
+{
+ return cpu ? &cpu->env : NULL;
+}
+
+#define CPU_GET_ENV(cpu) xtensa_cpu_get_env(XTENSA_CPU(cpu))
+
#endif
This will help us gradually convert code based on CPUArchState to QOM-based code. The macro checks for NULL cpu value, so a NULL cpu safely becomes a NULL env pointer. Signed-off-by: Eduardo Habkost <ehabkost@redhat.com> --- target-alpha/cpu-qom.h | 7 +++++++ target-arm/cpu-qom.h | 7 +++++++ target-cris/cpu-qom.h | 7 +++++++ target-i386/cpu-qom.h | 7 +++++++ target-lm32/cpu-qom.h | 7 +++++++ target-m68k/cpu-qom.h | 7 +++++++ target-microblaze/cpu-qom.h | 7 +++++++ target-mips/cpu-qom.h | 7 +++++++ target-openrisc/cpu.h | 7 +++++++ target-ppc/cpu-qom.h | 7 +++++++ target-s390x/cpu-qom.h | 7 +++++++ target-sh4/cpu-qom.h | 7 +++++++ target-sparc/cpu-qom.h | 7 +++++++ target-unicore32/cpu-qom.h | 7 +++++++ target-xtensa/cpu-qom.h | 7 +++++++ 15 files changed, 105 insertions(+)