From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:41456) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S783S-0001JM-3t for qemu-devel@nongnu.org; Mon, 12 Mar 2012 12:25:07 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1S783L-00006Y-5h for qemu-devel@nongnu.org; Mon, 12 Mar 2012 12:25:01 -0400 Received: from mnementh.archaic.org.uk ([81.2.115.146]:47785) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S783K-00005m-TV for qemu-devel@nongnu.org; Mon, 12 Mar 2012 12:24:55 -0400 From: Peter Maydell Date: Mon, 12 Mar 2012 16:24:45 +0000 Message-Id: <1331569485-3559-1-git-send-email-peter.maydell@linaro.org> Subject: [Qemu-devel] [PATCH] gdbstub: Synchronize CPU state unconditionally in gdb_set_cpu_pc List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Christoffer Dall , Alexander Graf , patches@linaro.org Synchronize the CPU state via cpu_sychronize_state() unconditionally in gdb_set_cpu_pc() rather than only in some of the target ifdef ladder cases. We can divide the CPUs into three categories: * non-KVM targets: no change of behaviour since we will use the kvm-stub.c no-op function. * i386 and s390: no change of behaviour since they were already calling this function * PPC (in KVM mode): this fixes an error: failing to synchronise was accidental and probably a bug. This also paves the way for other targets (specifically ARM) which can add KVM support in future without having to add another target specific change to this bit of code. Signed-off-by: Peter Maydell --- Alex: could you test the KVM PPC case, please, since that's the only one where we actually change behaviour here? gdbstub.c | 3 +-- 1 files changed, 1 insertions(+), 2 deletions(-) diff --git a/gdbstub.c b/gdbstub.c index ef95ac2..776dcc5 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -1904,8 +1904,8 @@ static void gdb_breakpoint_remove_all(void) static void gdb_set_cpu_pc(GDBState *s, target_ulong pc) { -#if defined(TARGET_I386) cpu_synchronize_state(s->c_cpu); +#if defined(TARGET_I386) s->c_cpu->eip = pc; #elif defined (TARGET_PPC) s->c_cpu->nip = pc; @@ -1930,7 +1930,6 @@ static void gdb_set_cpu_pc(GDBState *s, target_ulong pc) #elif defined (TARGET_ALPHA) s->c_cpu->pc = pc; #elif defined (TARGET_S390X) - cpu_synchronize_state(s->c_cpu); s->c_cpu->psw.addr = pc; #elif defined (TARGET_LM32) s->c_cpu->pc = pc; -- 1.7.1