Re: [RFC PATCH 09/13] cpus: Add const-qualified CPU environment accessors
Richard Henderson <[email protected]>
| Newsgroups | org.nongnu.qemu-arm,org.nongnu.qemu-devel,org.nongnu.qemu-riscv |
|---|---|
| Message-ID | <[email protected]> |
On 8/20/26 09:50, Philippe Mathieu-Daudé wrote:
> Actually simpler and even well readable:
>
> -- >8 --
> diff --git a/include/exec/cpu-common.h b/include/exec/cpu-common.h
> index 6594f7fa1b..d67d008236 100644
> --- a/include/exec/cpu-common.h
> +++ b/include/exec/cpu-common.h
> @@ -85,21 +85,11 @@ static inline bool cpu_loop_exit_requested(const CPUState *cpu)
> *
> * Return the ArchCPU associated with the environment.
> */
> -static inline ArchCPU *env_archcpu(CPUArchState *env)
> -{
> - return (void *)env - sizeof(CPUState);
> -}
> -
> -/**
> - * env_cpu_const(env)
> - * @env: The architecture environment
> - *
> - * Return the CPUState associated with the environment.
> - */
> -static inline const CPUState *env_cpu_const(const CPUArchState *env)
> -{
> - return (void *)env - sizeof(CPUState);
> -}
> +#define env_archcpu(env) _Generic(*(env), \
> + CPUArchState: \
> + (ArchCPU *)((void *)env - sizeof(CPUState)), \
> + const CPUArchState: \
> + (const ArchCPU *)((const void *)env - sizeof(CPUState)))
>
> /**
> * env_cpu(env)
> @@ -107,9 +97,10 @@ static inline const CPUState *env_cpu_const(const CPUArchState *env)
> *
> * Return the CPUState associated with the environment.
> */
> -static inline CPUState *env_cpu(CPUArchState *env)
> -{
> - return (CPUState *)env_cpu_const(env);
> -}
> +#define env_cpu(env) _Generic(*(env), \
> + CPUArchState: \
> + (CPUState *)((void *)env - sizeof(CPUState)), \
> + const CPUArchState: \
> + (const CPUState *)((const void *)env - sizeof(CPUState)))
>
> #endif /* CPU_COMMON_H */
> ---
Exactly what I had in mind, thanks.
Reviewed-by: Richard Henderson <[email protected]>
r~