qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v2 1/4] qom: cpu: Add wrapper to the set-pc hook


From: Peter Maydell
Subject: Re: [Qemu-devel] [PATCH v2 1/4] qom: cpu: Add wrapper to the set-pc hook
Date: Tue, 16 Jun 2015 12:29:10 +0100

On 16 June 2015 at 06:46, Peter Crosthwaite <address@hidden> wrote:
> Add a wrapper around the CPUClass::set_pc hook. Accepts an error
> pointer to report the case where the hook is not set.
>
> Signed-off-by: Peter Crosthwaite <address@hidden>
> ---
>  include/qom/cpu.h | 21 +++++++++++++++++++++
>  1 file changed, 21 insertions(+)
>
> diff --git a/include/qom/cpu.h b/include/qom/cpu.h
> index 7db310e..97d4edf 100644
> --- a/include/qom/cpu.h
> +++ b/include/qom/cpu.h
> @@ -600,6 +600,27 @@ static inline void cpu_unaligned_access(CPUState *cpu, 
> vaddr addr,
>  #endif
>
>  /**
> + * cpu_set_pc:
> + * @cpu: The CPU to set the program counter for.
> + * @addr: Program counter value.
> + * @errp: Error pointer to populate in case of error.
> + *
> + * Set the program counter for a CPU. If there is no available implementation
> + * an error is raised.
> + */
> +
> +static inline void cpu_set_pc(CPUState *cpu, vaddr addr, Error **errp)
> +{
> +    CPUClass *cc = CPU_GET_CLASS(cpu);
> +
> +    if (cc->set_pc) {
> +        cc->set_pc(cpu, addr);
> +    } else {
> +        error_setg(errp, "CPU does not implement set PC");
> +    }
> +}

I don't think there are any CPUClass implementations which
don't implement set_pc. The code in cpu-exec.c which does this:
        if (cc->synchronize_from_tb) {
            cc->synchronize_from_tb(cpu, tb);
        } else {
            assert(cc->set_pc);
            cc->set_pc(cpu, tb->pc);
        }
demonstrates that we only need to check the CPUs which implement
synchronize_from_tb (i386, mips, sh4, sparc, tricore) to check
they have a set_pc method too, and they all do. (You can also
just grep for 'cc->set_pc' in target-*/ and confirm they all
have one, as a crosscheck.)

So I think this can simplify down to just calling the class
method unconditionally.

thanks
-- PMM



reply via email to

[Prev in Thread] Current Thread [Next in Thread]