Revision 99773bd4 exec.c
b/exec.c | ||
---|---|---|
46 | 46 |
//#define DEBUG_TB_CHECK |
47 | 47 |
//#define DEBUG_TLB_CHECK |
48 | 48 |
|
49 |
#if !defined(CONFIG_USER_ONLY) |
|
50 |
/* TB consistency checks only implemented for usermode emulation. */ |
|
51 |
#undef DEBUG_TB_CHECK |
|
52 |
#endif |
|
53 |
|
|
49 | 54 |
/* threshold to flush the translated code buffer */ |
50 | 55 |
#define CODE_GEN_BUFFER_MAX_SIZE (CODE_GEN_BUFFER_SIZE - CODE_GEN_MAX_SIZE) |
51 | 56 |
|
... | ... | |
330 | 335 |
TranslationBlock *tb; |
331 | 336 |
int i; |
332 | 337 |
address &= TARGET_PAGE_MASK; |
333 |
for(i = 0;i < CODE_GEN_HASH_SIZE; i++) { |
|
334 |
for(tb = tb_hash[i]; tb != NULL; tb = tb->hash_next) {
|
|
338 |
for(i = 0;i < CODE_GEN_PHYS_HASH_SIZE; i++) {
|
|
339 |
for(tb = tb_phys_hash[i]; tb != NULL; tb = tb->phys_hash_next) {
|
|
335 | 340 |
if (!(address + TARGET_PAGE_SIZE <= tb->pc || |
336 | 341 |
address >= tb->pc + tb->size)) { |
337 | 342 |
printf("ERROR invalidate: address=%08lx PC=%08lx size=%04x\n", |
338 |
address, tb->pc, tb->size); |
|
343 |
address, (long)tb->pc, tb->size);
|
|
339 | 344 |
} |
340 | 345 |
} |
341 | 346 |
} |
... | ... | |
347 | 352 |
TranslationBlock *tb; |
348 | 353 |
int i, flags1, flags2; |
349 | 354 |
|
350 |
for(i = 0;i < CODE_GEN_HASH_SIZE; i++) { |
|
351 |
for(tb = tb_hash[i]; tb != NULL; tb = tb->hash_next) {
|
|
355 |
for(i = 0;i < CODE_GEN_PHYS_HASH_SIZE; i++) {
|
|
356 |
for(tb = tb_phys_hash[i]; tb != NULL; tb = tb->phys_hash_next) {
|
|
352 | 357 |
flags1 = page_get_flags(tb->pc); |
353 | 358 |
flags2 = page_get_flags(tb->pc + tb->size - 1); |
354 | 359 |
if ((flags1 & PAGE_WRITE) || (flags2 & PAGE_WRITE)) { |
355 | 360 |
printf("ERROR page flags: PC=%08lx size=%04x f1=%x f2=%x\n", |
356 |
tb->pc, tb->size, flags1, flags2); |
|
361 |
(long)tb->pc, tb->size, flags1, flags2);
|
|
357 | 362 |
} |
358 | 363 |
} |
359 | 364 |
} |
Also available in: Unified diff