[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
- [Qemu-devel] [PATCH v2 0/4] qom-cpu: Wrap set_pc hook and use in bootloaders, Peter Crosthwaite, 2015/06/16
- [Qemu-devel] [PATCH v2 1/4] qom: cpu: Add wrapper to the set-pc hook, Peter Crosthwaite, 2015/06/16
- [Qemu-devel] [PATCH v2 2/4] gdbstub: Use cpu_set_pc helper, Peter Crosthwaite, 2015/06/16
- Re: [Qemu-devel] [PATCH v2 2/4] gdbstub: Use cpu_set_pc helper, Andreas Färber, 2015/06/22
- Re: [Qemu-devel] [PATCH v2 2/4] gdbstub: Use cpu_set_pc helper, Peter Crosthwaite, 2015/06/23
- Re: [Qemu-devel] [PATCH v2 2/4] gdbstub: Use cpu_set_pc helper, Peter Maydell, 2015/06/24
- Re: [Qemu-devel] [PATCH v2 2/4] gdbstub: Use cpu_set_pc helper, Peter Crosthwaite, 2015/06/24
- Re: [Qemu-devel] [PATCH v2 2/4] gdbstub: Use cpu_set_pc helper, Andreas Färber, 2015/06/24
- Re: [Qemu-devel] [PATCH v2 2/4] gdbstub: Use cpu_set_pc helper, Peter Crosthwaite, 2015/06/24
- Re: [Qemu-devel] [PATCH v2 2/4] gdbstub: Use cpu_set_pc helper, Peter Maydell, 2015/06/24
[Qemu-devel] [PATCH v2 3/4] arm: boot: Use cpu_set_pc, Peter Crosthwaite, 2015/06/16