Revision 39d51eb8 target-mips/op.c
b/target-mips/op.c | ||
---|---|---|
1397 | 1397 |
|
1398 | 1398 |
void op_mtc0_cause (void) |
1399 | 1399 |
{ |
1400 |
env->CP0_Cause = (env->CP0_Cause & 0xB000F87C) | (T0 & 0x00C00300); |
|
1400 |
uint32_t mask = 0x00C00300; |
|
1401 |
|
|
1402 |
if ((env->CP0_Config0 & (0x7 << CP0C0_AR)) == (1 << CP0C0_AR)) |
|
1403 |
mask |= 1 << CP0Ca_DC; |
|
1404 |
|
|
1405 |
env->CP0_Cause = (env->CP0_Cause & 0xFCC0FF7C) | (T0 & mask); |
|
1401 | 1406 |
|
1402 | 1407 |
/* Handle the software interrupt as an hardware one, as they |
1403 | 1408 |
are very similar */ |
Also available in: Unified diff