qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH v2 31/33] gdbstub: Disable handling of nanoMIPS


From: Aleksandar Markovic
Subject: Re: [Qemu-devel] [PATCH v2 31/33] gdbstub: Disable handling of nanoMIPS ISA bit in the MIPS gdbstub
Date: Tue, 10 Jul 2018 18:33:09 +0000

> Subject: [PATCH v2 31/33] gdbstub: Disable handling of nanoMIPS ISA bit in 
> the MIPS gdbstub
>
> From: James Hogan <address@hidden>
>
> nanoMIPS has no ISA bit in the PC, so remove the handling of the low bit
> of the PC in the MIPS gdbstub for nanoMIPS. This prevents the PC being
> read as e.g. 0xbfc00001, and prevents writing to the PC clearing
> MIPS_HFLAG_M16.
>
> Signed-off-by: James Hogan <address@hidden>
> Signed-off-by: Yongbok Kim <address@hidden>
> Signed-off-by: Aleksandar Markovic <address@hidden>
> Signed-off-by: Stefan Markovic <address@hidden>
> ---
>  target/mips/gdbstub.c | 13 ++++++++-----
>  1 file changed, 8 insertions(+), 5 deletions(-)
>

Reviewed-by: Aleksandar Markovic <address@hidden>

> diff --git a/target/mips/gdbstub.c b/target/mips/gdbstub.c
> index 18e0e6d..559b69f 100644
> --- a/target/mips/gdbstub.c
> +++ b/target/mips/gdbstub.c
> @@ -60,7 +60,8 @@ int mips_cpu_gdb_read_register(CPUState *cs, uint8_t 
> *mem_buf, int n)
>          return gdb_get_regl(mem_buf, (int32_t)env->CP0_Cause);
>      case 37:
>          return gdb_get_regl(mem_buf, env->active_tc.PC |
> -                                     !!(env->hflags & MIPS_HFLAG_M16));
> +                                     (!(env->insn_flags & ISA_NANOMIPS32) &&
> +                                      env->hflags & MIPS_HFLAG_M16));
>      case 72:
>          return gdb_get_regl(mem_buf, 0); /* fp */
>      case 89:
> @@ -131,10 +132,12 @@ int mips_cpu_gdb_write_register(CPUState *cs, uint8_t 
> *mem_buf, int n)
>          break;
>      case 37:
>          env->active_tc.PC = tmp & ~(target_ulong)1;
> -        if (tmp & 1) {
> -            env->hflags |= MIPS_HFLAG_M16;
> -        } else {
> -            env->hflags &= ~(MIPS_HFLAG_M16);
> +        if (!(env->insn_flags & ISA_NANOMIPS32)) {
> +            if (tmp & 1) {
> +                env->hflags |= MIPS_HFLAG_M16;
> +            } else {
> +                env->hflags &= ~(MIPS_HFLAG_M16);
> +            }
>          }
>          break;
>      case 72: /* fp, ignored */
> --
> 2.7.4
>
>


reply via email to

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