mirror of
https://github.com/yuzu-emu/unicorn.git
synced 2025-01-22 11:11:02 +00:00
target/mips: Clean up handling of CP0 register 4
Clean up handling of CP0 register 4. Backports commit 020fe379093deb116d72174268335d60133f0e26 from qemu
This commit is contained in:
parent
d96b3d06c4
commit
11ac98331a
|
@ -304,7 +304,9 @@ typedef struct mips_def_t mips_def_t;
|
|||
#define CP0_REG03__TCOPT 7
|
||||
/* CP0 Register 04 */
|
||||
#define CP0_REG04__CONTEXT 0
|
||||
#define CP0_REG04__CONTEXTCONFIG 1
|
||||
#define CP0_REG04__USERLOCAL 2
|
||||
#define CP0_REG04__XCONTEXTCONFIG 3
|
||||
#define CP0_REG04__DBGCONTEXTID 4
|
||||
#define CP0_REG00__MMID 5
|
||||
/* CP0 Register 05 */
|
||||
|
|
|
@ -7058,16 +7058,17 @@ static void gen_mfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
|
|||
break;
|
||||
case CP0_REGISTER_04:
|
||||
switch (sel) {
|
||||
case 0:
|
||||
case CP0_REG04__CONTEXT:
|
||||
tcg_gen_ld_tl(tcg_ctx, arg, tcg_ctx->cpu_env, offsetof(CPUMIPSState, CP0_Context));
|
||||
tcg_gen_ext32s_tl(tcg_ctx, arg, arg);
|
||||
register_name = "Context";
|
||||
break;
|
||||
case 1:
|
||||
/* gen_helper_mfc0_contextconfig(arg); - SmartMIPS ASE */
|
||||
case CP0_REG04__CONTEXTCONFIG:
|
||||
/* SmartMIPS ASE */
|
||||
/* gen_helper_mfc0_contextconfig(arg); */
|
||||
register_name = "ContextConfig";
|
||||
goto cp0_unimplemented;
|
||||
case 2:
|
||||
case CP0_REG04__USERLOCAL:
|
||||
CP0_CHECK(ctx->ulri);
|
||||
tcg_gen_ld_tl(tcg_ctx, arg, tcg_ctx->cpu_env,
|
||||
offsetof(CPUMIPSState, active_tc.CP0_UserLocal));
|
||||
|
@ -7790,15 +7791,16 @@ static void gen_mtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
|
|||
break;
|
||||
case CP0_REGISTER_04:
|
||||
switch (sel) {
|
||||
case 0:
|
||||
case CP0_REG04__CONTEXT:
|
||||
gen_helper_mtc0_context(tcg_ctx, tcg_ctx->cpu_env, arg);
|
||||
register_name = "Context";
|
||||
break;
|
||||
case 1:
|
||||
// gen_helper_mtc0_contextconfig(tcg_ctx->cpu_env, arg); /* SmartMIPS ASE */
|
||||
case CP0_REG04__CONTEXTCONFIG:
|
||||
/* SmartMIPS ASE */
|
||||
/* gen_helper_mtc0_contextconfig(tcg_ctx->cpu_env, arg); */
|
||||
register_name = "ContextConfig";
|
||||
goto cp0_unimplemented;
|
||||
case 2:
|
||||
case CP0_REG04__USERLOCAL:
|
||||
CP0_CHECK(ctx->ulri);
|
||||
tcg_gen_st_tl(tcg_ctx, arg, tcg_ctx->cpu_env,
|
||||
offsetof(CPUMIPSState, active_tc.CP0_UserLocal));
|
||||
|
@ -8530,15 +8532,16 @@ static void gen_dmfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
|
|||
break;
|
||||
case CP0_REGISTER_04:
|
||||
switch (sel) {
|
||||
case 0:
|
||||
case CP0_REG04__CONTEXT:
|
||||
tcg_gen_ld_tl(tcg_ctx, arg, tcg_ctx->cpu_env, offsetof(CPUMIPSState, CP0_Context));
|
||||
register_name = "Context";
|
||||
break;
|
||||
case 1:
|
||||
// gen_helper_dmfc0_contextconfig(arg); /* SmartMIPS ASE */
|
||||
case CP0_REG04__CONTEXTCONFIG:
|
||||
/* SmartMIPS ASE */
|
||||
/* gen_helper_dmfc0_contextconfig(arg); */
|
||||
register_name = "ContextConfig";
|
||||
goto cp0_unimplemented;
|
||||
case 2:
|
||||
case CP0_REG04__USERLOCAL:
|
||||
CP0_CHECK(ctx->ulri);
|
||||
tcg_gen_ld_tl(tcg_ctx, arg, tcg_ctx->cpu_env,
|
||||
offsetof(CPUMIPSState, active_tc.CP0_UserLocal));
|
||||
|
@ -9241,15 +9244,16 @@ static void gen_dmtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
|
|||
break;
|
||||
case CP0_REGISTER_04:
|
||||
switch (sel) {
|
||||
case 0:
|
||||
case CP0_REG04__CONTEXT:
|
||||
gen_helper_mtc0_context(tcg_ctx, tcg_ctx->cpu_env, arg);
|
||||
register_name = "Context";
|
||||
break;
|
||||
case 1:
|
||||
// gen_helper_mtc0_contextconfig(tcg_ctx->cpu_env, arg); /* SmartMIPS ASE */
|
||||
case CP0_REG04__CONTEXTCONFIG:
|
||||
/* SmartMIPS ASE */
|
||||
/* gen_helper_mtc0_contextconfig(tcg_ctx->cpu_env, arg); */
|
||||
register_name = "ContextConfig";
|
||||
goto cp0_unimplemented;
|
||||
case 2:
|
||||
case CP0_REG04__USERLOCAL:
|
||||
CP0_CHECK(ctx->ulri);
|
||||
tcg_gen_st_tl(tcg_ctx, arg, tcg_ctx->cpu_env,
|
||||
offsetof(CPUMIPSState, active_tc.CP0_UserLocal));
|
||||
|
|
Loading…
Reference in a new issue