From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1LneFc-0003z9-Ms for qemu-devel@nongnu.org; Sat, 28 Mar 2009 15:31:28 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1LneFY-0003yb-7q for qemu-devel@nongnu.org; Sat, 28 Mar 2009 15:31:28 -0400 Received: from [199.232.76.173] (port=45003 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1LneFX-0003yY-Pv for qemu-devel@nongnu.org; Sat, 28 Mar 2009 15:31:23 -0400 Received: from mx20.gnu.org ([199.232.41.8]:5857) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1LneFX-0001S0-8r for qemu-devel@nongnu.org; Sat, 28 Mar 2009 15:31:23 -0400 Received: from mail.codesourcery.com ([65.74.133.4]) by mx20.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1LneFS-0000hl-2G for qemu-devel@nongnu.org; Sat, 28 Mar 2009 15:31:18 -0400 From: Nathan Froyd Date: Sat, 28 Mar 2009 12:31:12 -0700 Message-Id: <1238268672-6686-1-git-send-email-froydnj@codesourcery.com> Subject: [Qemu-devel] [PATCH] factor out setting pc in gdbstub Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org The code for handling the c and s packets both contain code for setting the pc. Move that code out to a common function. Signed-off-by: Nathan Froyd --- gdbstub.c | 63 ++++++++++++++++++++++++------------------------------------ 1 files changed, 25 insertions(+), 38 deletions(-) diff --git a/gdbstub.c b/gdbstub.c index 518c939..f6d2f1b 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -1512,6 +1512,29 @@ static void gdb_breakpoint_remove_all(void) } } +static void gdb_set_cpu_pc(GDBState *s, target_ulong pc) +{ +#if defined(TARGET_I386) + s->c_cpu->eip = pc; + cpu_synchronize_state(s->c_cpu, 1); +#elif defined (TARGET_PPC) + s->c_cpu->nip = pc; +#elif defined (TARGET_SPARC) + s->c_cpu->pc = pc; + s->c_cpu->npc = pc + 4; +#elif defined (TARGET_ARM) + s->c_cpu->regs[15] = pc; +#elif defined (TARGET_SH4) + s->c_cpu->pc = pc; +#elif defined (TARGET_MIPS) + s->c_cpu->active_tc.PC = pc; +#elif defined (TARGET_CRIS) + s->c_cpu->pc = pc; +#elif defined (TARGET_ALPHA) + s->c_cpu->pc = pc; +#endif +} + static int gdb_handle_packet(GDBState *s, const char *line_buf) { CPUState *env; @@ -1542,25 +1565,7 @@ static int gdb_handle_packet(GDBState *s, const char *line_buf) case 'c': if (*p != '\0') { addr = strtoull(p, (char **)&p, 16); -#if defined(TARGET_I386) - s->c_cpu->eip = addr; - cpu_synchronize_state(s->c_cpu, 1); -#elif defined (TARGET_PPC) - s->c_cpu->nip = addr; -#elif defined (TARGET_SPARC) - s->c_cpu->pc = addr; - s->c_cpu->npc = addr + 4; -#elif defined (TARGET_ARM) - s->c_cpu->regs[15] = addr; -#elif defined (TARGET_SH4) - s->c_cpu->pc = addr; -#elif defined (TARGET_MIPS) - s->c_cpu->active_tc.PC = addr; -#elif defined (TARGET_CRIS) - s->c_cpu->pc = addr; -#elif defined (TARGET_ALPHA) - s->c_cpu->pc = addr; -#endif + gdb_set_cpu_pc(s, addr); } s->signal = 0; gdb_continue(s); @@ -1584,25 +1589,7 @@ static int gdb_handle_packet(GDBState *s, const char *line_buf) case 's': if (*p != '\0') { addr = strtoull(p, (char **)&p, 16); -#if defined(TARGET_I386) - s->c_cpu->eip = addr; - cpu_synchronize_state(s->c_cpu, 1); -#elif defined (TARGET_PPC) - s->c_cpu->nip = addr; -#elif defined (TARGET_SPARC) - s->c_cpu->pc = addr; - s->c_cpu->npc = addr + 4; -#elif defined (TARGET_ARM) - s->c_cpu->regs[15] = addr; -#elif defined (TARGET_SH4) - s->c_cpu->pc = addr; -#elif defined (TARGET_MIPS) - s->c_cpu->active_tc.PC = addr; -#elif defined (TARGET_CRIS) - s->c_cpu->pc = addr; -#elif defined (TARGET_ALPHA) - s->c_cpu->pc = addr; -#endif + gdb_set_cpu_pc(s, addr); } cpu_single_step(s->c_cpu, sstep_flags); gdb_continue(s); -- 1.6.0.5