Revision 3d9fb9fe target-mips/op_helper.c
b/target-mips/op_helper.c | ||
---|---|---|
330 | 330 |
rn = "Index"; |
331 | 331 |
break; |
332 | 332 |
case 2: |
333 |
val = T0 & 0x03FFFFFFF;
|
|
333 |
val = T0 & 0x3FFFFFFF; |
|
334 | 334 |
old = env->CP0_EntryLo0; |
335 | 335 |
env->CP0_EntryLo0 = val; |
336 | 336 |
rn = "EntryLo0"; |
337 | 337 |
break; |
338 | 338 |
case 3: |
339 |
val = T0 & 0x03FFFFFFF;
|
|
339 |
val = T0 & 0x3FFFFFFF; |
|
340 | 340 |
old = env->CP0_EntryLo1; |
341 | 341 |
env->CP0_EntryLo1 = val; |
342 | 342 |
rn = "EntryLo1"; |
... | ... | |
403 | 403 |
old, val, env->CP0_Cause, old & mask, val & mask, |
404 | 404 |
env->CP0_Cause & mask); |
405 | 405 |
} |
406 |
#if 1 |
|
407 | 406 |
if ((val & (1 << CP0St_IE)) && !(old & (1 << CP0St_IE)) && |
408 | 407 |
!(env->hflags & MIPS_HFLAG_EXL) && |
409 | 408 |
!(env->hflags & MIPS_HFLAG_ERL) && |
410 |
!(env->hflags & MIPS_HFLAG_DM) &&
|
|
409 |
!(env->hflags & MIPS_HFLAG_DM) && |
|
411 | 410 |
(env->CP0_Status & env->CP0_Cause & mask)) { |
412 | 411 |
if (logfile) |
413 | 412 |
fprintf(logfile, "Raise pending IRQs\n"); |
414 | 413 |
env->interrupt_request |= CPU_INTERRUPT_HARD; |
415 |
do_raise_exception(EXCP_EXT_INTERRUPT); |
|
416 |
} else if (!(val & 0x00000001) && (old & 0x00000001)) { |
|
414 |
} else if (!(val & (1 << CP0St_IE)) && (old & (1 << CP0St_IE))) { |
|
417 | 415 |
env->interrupt_request &= ~CPU_INTERRUPT_HARD; |
418 | 416 |
} |
419 |
#endif |
|
420 | 417 |
rn = "Status"; |
421 | 418 |
break; |
422 | 419 |
case 13: |
... | ... | |
605 | 602 |
uint8_t ASID; |
606 | 603 |
int i; |
607 | 604 |
|
608 |
tag = (env->CP0_EntryHi & 0xFFFFE000);
|
|
609 |
ASID = env->CP0_EntryHi & 0x000000FF;
|
|
610 |
for (i = 0; i < MIPS_TLB_NB; i++) {
|
|
605 |
tag = env->CP0_EntryHi & 0xFFFFE000;
|
|
606 |
ASID = env->CP0_EntryHi & 0xFF; |
|
607 |
for (i = 0; i < MIPS_TLB_NB; i++) { |
|
611 | 608 |
tlb = &env->tlb[i]; |
612 | 609 |
/* Check ASID, virtual page number & size */ |
613 | 610 |
if ((tlb->G == 1 || tlb->ASID == ASID) && tlb->VPN == tag) { |
Also available in: Unified diff