Revision 39d51eb8 hw/mips_timer.c
b/hw/mips_timer.c | ||
---|---|---|
28 | 28 |
uint64_t now, next; |
29 | 29 |
uint32_t tmp; |
30 | 30 |
|
31 |
if (env->CP0_Cause & (1 << CP0Ca_DC)) |
|
32 |
return; |
|
33 |
|
|
31 | 34 |
tmp = count; |
32 | 35 |
if (count == compare) |
33 | 36 |
tmp++; |
... | ... | |
57 | 60 |
void cpu_mips_store_compare (CPUState *env, uint32_t value) |
58 | 61 |
{ |
59 | 62 |
cpu_mips_update_count(env, cpu_mips_get_count(env), value); |
63 |
if ((env->CP0_Config0 & (0x7 << CP0C0_AR)) == (1 << CP0C0_AR)) |
|
64 |
env->CP0_Cause &= ~(1 << CP0Ca_TI); |
|
60 | 65 |
cpu_mips_irq_request(env, 7, 0); |
61 | 66 |
} |
62 | 67 |
|
... | ... | |
71 | 76 |
} |
72 | 77 |
#endif |
73 | 78 |
cpu_mips_update_count(env, cpu_mips_get_count(env), env->CP0_Compare); |
79 |
if ((env->CP0_Config0 & (0x7 << CP0C0_AR)) == (1 << CP0C0_AR)) |
|
80 |
env->CP0_Cause |= 1 << CP0Ca_TI; |
|
74 | 81 |
cpu_mips_irq_request(env, 7, 1); |
75 | 82 |
} |
76 | 83 |
|
Also available in: Unified diff