All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Edgar E. Iglesias" <edgar.iglesias@xilinx.com>
To: Joe Komlodi <joe.komlodi@xilinx.com>
Cc: qemu-devel@nongnu.org
Subject: Re: [PATCH V2 2/4] target/microblaze: gdb: Extend the number of registers presented to GDB
Date: Thu, 14 May 2020 15:49:59 +0200	[thread overview]
Message-ID: <20200514134959.GR2945@toto> (raw)
In-Reply-To: <1589393329-223076-2-git-send-email-komlodi@xilinx.com>

On Wed, May 13, 2020 at 11:08:46AM -0700, Joe Komlodi wrote:
> Increase the number of Microblaze registers QEMU will report when
> talking to GDB.

Reviewed-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com>


> 
> Signed-off-by: Joe Komlodi <komlodi@xilinx.com>
> ---
>  target/microblaze/cpu.c     |  2 +-
>  target/microblaze/gdbstub.c | 52 ++++++++++++++++++++++++++++++++++++++++++---
>  2 files changed, 50 insertions(+), 4 deletions(-)
> 
> diff --git a/target/microblaze/cpu.c b/target/microblaze/cpu.c
> index 41cac1b..5b6ad5b 100644
> --- a/target/microblaze/cpu.c
> +++ b/target/microblaze/cpu.c
> @@ -331,7 +331,7 @@ static void mb_cpu_class_init(ObjectClass *oc, void *data)
>  #endif
>      dc->vmsd = &vmstate_mb_cpu;
>      device_class_set_props(dc, mb_properties);
> -    cc->gdb_num_core_regs = 32 + 5;
> +    cc->gdb_num_core_regs = 32 + 27;
>      cc->gdb_get_dynamic_xml = mb_gdb_get_dynamic_xml;
>      cc->gdb_core_xml_file = "microblaze-core.xml";
>  
> diff --git a/target/microblaze/gdbstub.c b/target/microblaze/gdbstub.c
> index cdca434..af29f00 100644
> --- a/target/microblaze/gdbstub.c
> +++ b/target/microblaze/gdbstub.c
> @@ -26,12 +26,37 @@ int mb_cpu_gdb_read_register(CPUState *cs, GByteArray *mem_buf, int n)
>      MicroBlazeCPU *cpu = MICROBLAZE_CPU(cs);
>      CPUMBState *env = &cpu->env;
>  
> +    /*
> +     * GDB expects registers to be reported in this order:
> +     * R0-R31
> +     * PC-BTR
> +     * PVR0-PVR11
> +     * EDR-TLBHI
> +     * SLR-SHR
> +     */
>      if (n < 32) {
>          return gdb_get_reg32(mem_buf, env->regs[n]);
>      } else {
> -        return gdb_get_reg32(mem_buf, env->sregs[n - 32]);
> +        n -= 32;
> +        switch (n) {
> +        case 0 ... 5:
> +            return gdb_get_reg32(mem_buf, env->sregs[n]);
> +        /* PVR12 is intentionally skipped */
> +        case 6 ... 17:
> +            n -= 6;
> +            return gdb_get_reg32(mem_buf, env->pvr.regs[n]);
> +        case 18 ... 24:
> +            /* Add an offset of 6 to resume where we left off with SRegs */
> +            n = n - 18 + 6;
> +            return gdb_get_reg32(mem_buf, env->sregs[n]);
> +        case 25:
> +            return gdb_get_reg32(mem_buf, env->slr);
> +        case 26:
> +            return gdb_get_reg32(mem_buf, env->shr);
> +        default:
> +            return 0;
> +        }
>      }
> -    return 0;
>  }
>  
>  int mb_cpu_gdb_write_register(CPUState *cs, uint8_t *mem_buf, int n)
> @@ -50,7 +75,28 @@ int mb_cpu_gdb_write_register(CPUState *cs, uint8_t *mem_buf, int n)
>      if (n < 32) {
>          env->regs[n] = tmp;
>      } else {
> -        env->sregs[n - 32] = tmp;
> +        n -= 32;
> +        switch (n) {
> +        case 0 ... 5:
> +            env->sregs[n] = tmp;
> +            break;
> +        /* PVR12 is intentionally skipped */
> +        case 6 ... 17:
> +            n -= 6;
> +            env->pvr.regs[n] = tmp;
> +            break;
> +        case 18 ... 24:
> +            /* Add an offset of 6 to resume where we left off with SRegs */
> +            n = n - 18 + 6;
> +            env->sregs[n] = tmp;
> +            break;
> +        case 25:
> +            env->slr = tmp;
> +            break;
> +        case 26:
> +            env->shr = tmp;
> +            break;
> +        }
>      }
>      return 4;
>  }
> -- 
> 2.7.4
> 


  reply	other threads:[~2020-05-14 13:53 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-13 18:08 [PATCH V2 1/4] target/microblaze: gdb: Add dynamic GDB XML register support Joe Komlodi
2020-05-13 18:08 ` [PATCH V2 2/4] target/microblaze: gdb: Extend the number of registers presented to GDB Joe Komlodi
2020-05-14 13:49   ` Edgar E. Iglesias [this message]
2020-05-13 18:08 ` [PATCH V2 3/4] target/microblaze: gdb: Fix incorrect SReg reporting Joe Komlodi
2020-05-14 13:50   ` Edgar E. Iglesias
2020-05-13 18:08 ` [PATCH V2 4/4] target/microblaze: monitor: Increase the number of registers reported Joe Komlodi
2020-05-14 13:50   ` Edgar E. Iglesias
2020-05-13 18:08 ` [PATCH V2 0/4] target/microblaze: Add GDB XML and correct SReg reporting Joe Komlodi
2020-05-14 13:52   ` Edgar E. Iglesias
2020-05-14 13:41 ` [PATCH V2 1/4] target/microblaze: gdb: Add dynamic GDB XML register support Edgar E. Iglesias
2020-05-14 17:05   ` Joe Komlodi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200514134959.GR2945@toto \
    --to=edgar.iglesias@xilinx.com \
    --cc=joe.komlodi@xilinx.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.