Revision 29929e34 target-mips/translate.c
b/target-mips/translate.c | ||
---|---|---|
4164 | 4164 |
} |
4165 | 4165 |
#endif /* TARGET_MIPS64 */ |
4166 | 4166 |
|
4167 |
static void gen_cp0 (DisasContext *ctx, uint32_t opc, int rt, int rd) |
|
4167 |
static void gen_cp0 (CPUState *env, DisasContext *ctx, uint32_t opc, int rt, int rd)
|
|
4168 | 4168 |
{ |
4169 | 4169 |
const char *opn = "ldst"; |
4170 | 4170 |
|
... | ... | |
4199 | 4199 |
opn = "dmtc0"; |
4200 | 4200 |
break; |
4201 | 4201 |
#endif |
4202 |
#if defined(MIPS_USES_R4K_TLB) |
|
4203 | 4202 |
case OPC_TLBWI: |
4204 |
gen_op_tlbwi(); |
|
4205 | 4203 |
opn = "tlbwi"; |
4204 |
if (!env->do_tlbwi) |
|
4205 |
goto die; |
|
4206 |
gen_op_tlbwi(); |
|
4206 | 4207 |
break; |
4207 | 4208 |
case OPC_TLBWR: |
4208 |
gen_op_tlbwr(); |
|
4209 | 4209 |
opn = "tlbwr"; |
4210 |
if (!env->do_tlbwr) |
|
4211 |
goto die; |
|
4212 |
gen_op_tlbwr(); |
|
4210 | 4213 |
break; |
4211 | 4214 |
case OPC_TLBP: |
4212 |
gen_op_tlbp(); |
|
4213 | 4215 |
opn = "tlbp"; |
4216 |
if (!env->do_tlbp) |
|
4217 |
goto die; |
|
4218 |
gen_op_tlbp(); |
|
4214 | 4219 |
break; |
4215 | 4220 |
case OPC_TLBR: |
4216 |
gen_op_tlbr(); |
|
4217 | 4221 |
opn = "tlbr"; |
4222 |
if (!env->do_tlbr) |
|
4223 |
goto die; |
|
4224 |
gen_op_tlbr(); |
|
4218 | 4225 |
break; |
4219 |
#endif |
|
4220 | 4226 |
case OPC_ERET: |
4221 | 4227 |
opn = "eret"; |
4222 | 4228 |
save_cpu_state(ctx, 0); |
... | ... | |
4244 | 4250 |
ctx->bstate = BS_EXCP; |
4245 | 4251 |
break; |
4246 | 4252 |
default: |
4253 |
die: |
|
4247 | 4254 |
MIPS_INVAL(opn); |
4248 | 4255 |
generate_exception(ctx, EXCP_RI); |
4249 | 4256 |
return; |
... | ... | |
5576 | 5583 |
case OPC_DMFC0: |
5577 | 5584 |
case OPC_DMTC0: |
5578 | 5585 |
#endif |
5579 |
gen_cp0(ctx, op1, rt, rd); |
|
5586 |
gen_cp0(env, ctx, op1, rt, rd);
|
|
5580 | 5587 |
break; |
5581 | 5588 |
case OPC_C0_FIRST ... OPC_C0_LAST: |
5582 |
gen_cp0(ctx, MASK_C0(ctx->opcode), rt, rd); |
|
5589 |
gen_cp0(env, ctx, MASK_C0(ctx->opcode), rt, rd);
|
|
5583 | 5590 |
break; |
5584 | 5591 |
case OPC_MFMC0: |
5585 | 5592 |
op2 = MASK_MFMC0(ctx->opcode); |
Also available in: Unified diff