qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] Re: [PATCH] factor out setting pc in gdbstub


From: Jan Kiszka
Subject: [Qemu-devel] Re: [PATCH] factor out setting pc in gdbstub
Date: Mon, 30 Mar 2009 18:02:50 +0200
User-agent: Mozilla/5.0 (X11; U; Linux i686 (x86_64); de; rv:1.8.1.12) Gecko/20080226 SUSE/2.0.0.12-1.1 Thunderbird/2.0.0.12 Mnenhy/0.7.5.666

Nathan Froyd wrote:
> 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 <address@hidden>

Yep, that makes it better.

Acked-by: Jan Kiszka <address@hidden>

> ---
>  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);


Attachment: signature.asc
Description: OpenPGP digital signature


reply via email to

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