Revision 0bf9e31a exec.c
b/exec.c | ||
---|---|---|
655 | 655 |
for(tb = tb_phys_hash[i]; tb != NULL; tb = tb->phys_hash_next) { |
656 | 656 |
if (!(address + TARGET_PAGE_SIZE <= tb->pc || |
657 | 657 |
address >= tb->pc + tb->size)) { |
658 |
printf("ERROR invalidate: address=%08lx PC=%08lx size=%04x\n", |
|
658 |
printf("ERROR invalidate: address=" TARGET_FMT_lx |
|
659 |
" PC=%08lx size=%04x\n", |
|
659 | 660 |
address, (long)tb->pc, tb->size); |
660 | 661 |
} |
661 | 662 |
} |
... | ... | |
680 | 681 |
} |
681 | 682 |
} |
682 | 683 |
|
683 |
static void tb_jmp_check(TranslationBlock *tb) |
|
684 |
{ |
|
685 |
TranslationBlock *tb1; |
|
686 |
unsigned int n1; |
|
687 |
|
|
688 |
/* suppress any remaining jumps to this TB */ |
|
689 |
tb1 = tb->jmp_first; |
|
690 |
for(;;) { |
|
691 |
n1 = (long)tb1 & 3; |
|
692 |
tb1 = (TranslationBlock *)((long)tb1 & ~3); |
|
693 |
if (n1 == 2) |
|
694 |
break; |
|
695 |
tb1 = tb1->jmp_next[n1]; |
|
696 |
} |
|
697 |
/* check end of list */ |
|
698 |
if (tb1 != tb) { |
|
699 |
printf("ERROR: jmp_list from 0x%08lx\n", (long)tb); |
|
700 |
} |
|
701 |
} |
|
702 |
|
|
703 | 684 |
#endif |
704 | 685 |
|
705 | 686 |
/* invalidate one TB */ |
... | ... | |
2939 | 2920 |
idx = SUBPAGE_IDX(start); |
2940 | 2921 |
eidx = SUBPAGE_IDX(end); |
2941 | 2922 |
#if defined(DEBUG_SUBPAGE) |
2942 |
printf("%s: %p start %08x end %08x idx %08x eidx %08x mem %d\n", __func__, |
|
2923 |
printf("%s: %p start %08x end %08x idx %08x eidx %08x mem %ld\n", __func__,
|
|
2943 | 2924 |
mmio, start, end, idx, eidx, memory); |
2944 | 2925 |
#endif |
2945 | 2926 |
memory >>= IO_MEM_SHIFT; |
Also available in: Unified diff