diff --git a/target-mips/helper.h b/target-mips/helper.h index 9fb5d74029..eed8bd5972 100644 --- a/target-mips/helper.h +++ b/target-mips/helper.h @@ -239,14 +239,14 @@ FOP_PROTO(ngt) #undef FOP_PROTO /* Special functions */ -DEF_HELPER(target_ulong, do_di, (target_ulong t0)) -DEF_HELPER(target_ulong, do_ei, (target_ulong t0)) +DEF_HELPER(target_ulong, do_di, (void)) +DEF_HELPER(target_ulong, do_ei, (void)) DEF_HELPER(void, do_eret, (void)) DEF_HELPER(void, do_deret, (void)) -DEF_HELPER(target_ulong, do_rdhwr_cpunum, (target_ulong t0)) -DEF_HELPER(target_ulong, do_rdhwr_synci_step, (target_ulong t0)) -DEF_HELPER(target_ulong, do_rdhwr_cc, (target_ulong t0)) -DEF_HELPER(target_ulong, do_rdhwr_ccres, (target_ulong t0)) +DEF_HELPER(target_ulong, do_rdhwr_cpunum, (void)) +DEF_HELPER(target_ulong, do_rdhwr_synci_step, (void)) +DEF_HELPER(target_ulong, do_rdhwr_cc, (void)) +DEF_HELPER(target_ulong, do_rdhwr_ccres, (void)) DEF_HELPER(void, do_pmon, (int function)) DEF_HELPER(void, do_wait, (void)) diff --git a/target-mips/op_helper.c b/target-mips/op_helper.c index fe3bbd4d29..6c1d048b71 100644 --- a/target-mips/op_helper.c +++ b/target-mips/op_helper.c @@ -1746,18 +1746,20 @@ void r4k_do_tlbr (void) #endif /* !CONFIG_USER_ONLY */ /* Specials */ -target_ulong do_di (target_ulong t0) +target_ulong do_di (void) { - t0 = env->CP0_Status; + target_ulong t0 = env->CP0_Status; + env->CP0_Status = t0 & ~(1 << CP0St_IE); cpu_mips_update_irq(env); return t0; } -target_ulong do_ei (target_ulong t0) +target_ulong do_ei (void) { - t0 = env->CP0_Status; + target_ulong t0 = env->CP0_Status; + env->CP0_Status = t0 | (1 << CP0St_IE); cpu_mips_update_irq(env); @@ -1820,48 +1822,48 @@ void do_deret (void) env->CP0_LLAddr = 1; } -target_ulong do_rdhwr_cpunum(target_ulong t0) +target_ulong do_rdhwr_cpunum(void) { if ((env->hflags & MIPS_HFLAG_CP0) || (env->CP0_HWREna & (1 << 0))) - t0 = env->CP0_EBase & 0x3ff; + return env->CP0_EBase & 0x3ff; else do_raise_exception(EXCP_RI); - return t0; + return 0; } -target_ulong do_rdhwr_synci_step(target_ulong t0) +target_ulong do_rdhwr_synci_step(void) { if ((env->hflags & MIPS_HFLAG_CP0) || (env->CP0_HWREna & (1 << 1))) - t0 = env->SYNCI_Step; + return env->SYNCI_Step; else do_raise_exception(EXCP_RI); - return t0; + return 0; } -target_ulong do_rdhwr_cc(target_ulong t0) +target_ulong do_rdhwr_cc(void) { if ((env->hflags & MIPS_HFLAG_CP0) || (env->CP0_HWREna & (1 << 2))) - t0 = env->CP0_Count; + return env->CP0_Count; else do_raise_exception(EXCP_RI); - return t0; + return 0; } -target_ulong do_rdhwr_ccres(target_ulong t0) +target_ulong do_rdhwr_ccres(void) { if ((env->hflags & MIPS_HFLAG_CP0) || (env->CP0_HWREna & (1 << 3))) - t0 = env->CCRes; + return env->CCRes; else do_raise_exception(EXCP_RI); - return t0; + return 0; } /* Bitfield operations. */ diff --git a/target-mips/translate.c b/target-mips/translate.c index c4d91f0e52..9c97b9c486 100644 --- a/target-mips/translate.c +++ b/target-mips/translate.c @@ -7386,19 +7386,19 @@ static void decode_opc (CPUState *env, DisasContext *ctx) switch (rd) { case 0: save_cpu_state(ctx, 1); - tcg_gen_helper_1_1(do_rdhwr_cpunum, t0, t0); + tcg_gen_helper_1_0(do_rdhwr_cpunum, t0); break; case 1: save_cpu_state(ctx, 1); - tcg_gen_helper_1_1(do_rdhwr_synci_step, t0, t0); + tcg_gen_helper_1_0(do_rdhwr_synci_step, t0); break; case 2: save_cpu_state(ctx, 1); - tcg_gen_helper_1_1(do_rdhwr_cc, t0, t0); + tcg_gen_helper_1_0(do_rdhwr_cc, t0); break; case 3: save_cpu_state(ctx, 1); - tcg_gen_helper_1_1(do_rdhwr_ccres, t0, t0); + tcg_gen_helper_1_0(do_rdhwr_ccres, t0); break; case 29: #if defined (CONFIG_USER_ONLY) @@ -7548,14 +7548,14 @@ static void decode_opc (CPUState *env, DisasContext *ctx) case OPC_DI: check_insn(env, ctx, ISA_MIPS32R2); save_cpu_state(ctx, 1); - tcg_gen_helper_1_1(do_di, t0, t0); + tcg_gen_helper_1_0(do_di, t0); /* Stop translation as we may have switched the execution mode */ ctx->bstate = BS_STOP; break; case OPC_EI: check_insn(env, ctx, ISA_MIPS32R2); save_cpu_state(ctx, 1); - tcg_gen_helper_1_1(do_ei, t0, t0); + tcg_gen_helper_1_0(do_ei, t0); /* Stop translation as we may have switched the execution mode */ ctx->bstate = BS_STOP; break;