diff --git a/target-mips/cpu.h b/target-mips/cpu.h index 3c99054d6d..fb5a3fef3d 100644 --- a/target-mips/cpu.h +++ b/target-mips/cpu.h @@ -162,7 +162,7 @@ struct CPUMIPSState { #define CP0Ca_EC 2 target_ulong CP0_EPC; int32_t CP0_PRid; - target_ulong CP0_EBase; + int32_t CP0_EBase; int32_t CP0_Config0; #define CP0C0_M 31 #define CP0C0_K23 28 diff --git a/target-mips/op.c b/target-mips/op.c index 9d30d03cd3..cd5c69ca46 100644 --- a/target-mips/op.c +++ b/target-mips/op.c @@ -1158,7 +1158,7 @@ void op_mfc0_prid (void) void op_mfc0_ebase (void) { - T0 = (int32_t)env->CP0_EBase; + T0 = env->CP0_EBase; RETURN(); } @@ -1423,7 +1423,7 @@ void op_mtc0_ebase (void) { /* vectored interrupts not implemented */ /* Multi-CPU not implemented */ - env->CP0_EBase = (int32_t)0x80000000 | (T0 & 0x3FFFF000); + env->CP0_EBase = 0x80000000 | (T0 & 0x3FFFF000); RETURN(); } @@ -1563,12 +1563,6 @@ void op_dmfc0_epc (void) RETURN(); } -void op_dmfc0_ebase (void) -{ - T0 = env->CP0_EBase; - RETURN(); -} - void op_dmfc0_lladdr (void) { T0 = env->CP0_LLAddr >> 4; @@ -1627,15 +1621,6 @@ void op_dmtc0_epc (void) RETURN(); } -void op_dmtc0_ebase (void) -{ - /* vectored interrupts not implemented */ - /* Multi-CPU not implemented */ - /* XXX: 64bit addressing broken */ - env->CP0_EBase = (int32_t)0x80000000 | (T0 & 0x3FFFF000); - RETURN(); -} - void op_dmtc0_watchlo0 (void) { env->CP0_WatchLo = T0; diff --git a/target-mips/translate.c b/target-mips/translate.c index 3cc8a55d4e..ce56bb0834 100644 --- a/target-mips/translate.c +++ b/target-mips/translate.c @@ -3099,7 +3099,7 @@ static void gen_dmfc0 (DisasContext *ctx, int reg, int sel) rn = "PRid"; break; case 1: - gen_op_dmfc0_ebase(); + gen_op_mfc0_ebase(); rn = "EBase"; break; default: @@ -3683,7 +3683,7 @@ static void gen_dmtc0 (DisasContext *ctx, int reg, int sel) rn = "PRid"; break; case 1: - gen_op_dmtc0_ebase(); + gen_op_mtc0_ebase(); rn = "EBase"; break; default: @@ -5305,7 +5305,7 @@ void cpu_reset (CPUMIPSState *env) #endif env->CP0_Wired = 0; /* SMP not implemented */ - env->CP0_EBase = (int32_t)0x80000000; + env->CP0_EBase = 0x80000000; env->CP0_Config0 = MIPS_CONFIG0; env->CP0_Config1 = MIPS_CONFIG1; env->CP0_Config2 = MIPS_CONFIG2;