Indeed the  (lsb > msb) case is wrong and should be removed. I'll post a
patch about that later this week.

** Changed in: qemu
       Status: Invalid => Confirmed

-- 
You received this bug notification because you are a member of qemu-
devel-ml, which is subscribed to QEMU.
https://bugs.launchpad.net/bugs/1071149

Title:
  target-mips: special3 instruction dinsm translation error

Status in QEMU:
  Confirmed

Bug description:
  Function decode_opc() in translate.c calls function gen_bitops(),
  which has such prototype:

  /* special3 bitfield operations */
  static void gen_bitops (DisasContext *ctx, uint32_t opc, int rt,
                          int rs, int lsb, int msb)

  The code for DINSM instruction is:

  case OPC_DINSM ... OPC_DINS:
              check_insn(env, ctx, ISA_MIPS64R2);
              check_mips_64(ctx);
              gen_bitops(ctx, op1, rt, rs, sa, rd);
              break;

  But rd ≠ msb according to MIPS64R2 standard, rd = msb - 32.

To manage notifications about this bug go to:
https://bugs.launchpad.net/qemu/+bug/1071149/+subscriptions

Reply via email to