On 01/18/2017 08:33 PM, Richard Henderson wrote: > On 01/16/2017 04:44 PM, Marek Vasut wrote: >> + TCGv_i32 tmp = tcg_const_i32(instr.imm5 + 32); >> + gen_helper_mmu_write(dc->cpu_env, tmp, load_gpr(dc, instr.a)); >> + tcg_temp_free_i32(tmp); >> +#endif >> + break; >> + } >> + >> + default: >> + tcg_gen_mov_tl(dc->cpu_R[instr.imm5 + 32], load_gpr(dc, >> instr.a)); >> + break; >> + } >> + >> + /* If interrupts were enabled using WRCTL, trigger them. */ >> +#if !defined(CONFIG_USER_ONLY) >> + if ((instr.imm5 + 32) == CR_STATUS) { > > Did you want CR_BASE here instead of hard-coding 32?
Fixed >> +static const char *regnames[] = { > > const char * const > >> + "reserved", "reserved", "reserved", "reserved", >> + "reserved", "reserved", "reserved", "reserved", >> + "reserved", "reserved", "reserved", "reserved", >> + "reserved", "reserved", "reserved", "reserved", > > You might as well number them, e.g. resXX, to make it obvious in the > dumps what's happening. Hm, OK >> + if (num_insns + 1 == max_insns && (tb->cflags & CF_LAST_IO)) { >> + gen_io_start(); >> + } > > num_insns has already be incremented; don't + 1 here. OK >> + && qemu_log_in_addr_range(tb->pc)) { >> + qemu_log("IN: %s\n", lookup_symbol(tb->pc)); >> + log_target_disas(cs, tb->pc, dc->pc - tb->pc, 0); >> + qemu_log("\n"); >> + } > > qemu_log_lock / qemu_log_unlock around the dump. OK -- Best regards, Marek Vasut