On 07/24/2018 10:31 AM, Aleksandar Markovic wrote:
> +    /* make sure instructions are on a halfword boundary */
> +    if (ctx->base.pc_next & 0x1) {
> +        TCGv tmp = tcg_const_tl(ctx->base.pc_next);
> +        tcg_gen_st_tl(tmp, cpu_env, offsetof(CPUMIPSState, CP0_BadVAddr));
> +        tcg_temp_free(tmp);
> +        return 2;
> +    }

You've lost the actual raising of the exception since v3.

> +    case NM_P16_MV:
> +        {
> +            int rt1 = NANOMIPS_EXTRACT_RD5(ctx->opcode);
> +            if (rt1 != 0) {
> +                /* MOVE */
> +                int rs1 = NANOMIPS_EXTRACT_RS5(ctx->opcode);
> +                gen_arith(ctx, OPC_ADDU, rt1, rs1, 0);

Why are you creating rt1 and rs1 variables?
I see you took my shadowed variables comment to heart, and renamed them, but
why not just overwrite the contents of the existing outer variable?

> +        case NM_P_ADDIURS5:
> +            {
> +                int rt1 = extract32(ctx->opcode, 5, 5);

Likewise.

> +    case NM_P16_4X4:
> +        {
> +            int rt1 = (extract32(ctx->opcode, 9, 1) << 3) |
> +                      extract32(ctx->opcode, 5, 3);
> +            int rs1 = (extract32(ctx->opcode, 4, 1) << 3) |
> +                      extract32(ctx->opcode, 0, 3);

Likewise.


r~

Reply via email to