382,38 → 382,38 |
tlb_data_t d; |
tlb_tag_read_reg_t t; |
|
printf("IT16 contents:\n"); |
for (i = 0; i < 16; i++) { |
d.value = dtlb_data_access_read(TLB_IT16, i); |
t.value = dtlb_tag_read_read(TLB_IT16, i); |
printf("TLB_ISMALL contents:\n"); |
for (i = 0; i < tlb_ismall_size(); i++) { |
d.value = dtlb_data_access_read(TLB_ISMALL, i); |
t.value = dtlb_tag_read_read(TLB_ISMALL, i); |
print_tlb_entry(i, t, d); |
} |
|
printf("IT128 contents:\n"); |
for (i = 0; i < 128; i++) { |
d.value = dtlb_data_access_read(TLB_IT128, i); |
t.value = dtlb_tag_read_read(TLB_IT128, i); |
printf("TLB_IBIG contents:\n"); |
for (i = 0; i < tlb_ibig_size(); i++) { |
d.value = dtlb_data_access_read(TLB_IBIG, i); |
t.value = dtlb_tag_read_read(TLB_IBIG, i); |
print_tlb_entry(i, t, d); |
} |
|
printf("DT16 contents:\n"); |
for (i = 0; i < 16; i++) { |
d.value = dtlb_data_access_read(TLB_DT16, i); |
t.value = dtlb_tag_read_read(TLB_DT16, i); |
printf("TLB_DSMALL contents:\n"); |
for (i = 0; i < tlb_dsmall_size(); i++) { |
d.value = dtlb_data_access_read(TLB_DSMALL, i); |
t.value = dtlb_tag_read_read(TLB_DSMALL, i); |
print_tlb_entry(i, t, d); |
} |
|
printf("DT512_1 contents:\n"); |
for (i = 0; i < 512; i++) { |
d.value = dtlb_data_access_read(TLB_DT512_0, i); |
t.value = dtlb_tag_read_read(TLB_DT512_0, i); |
printf("TLB_DBIG_1 contents:\n"); |
for (i = 0; i < tlb_dbig_size(); i++) { |
d.value = dtlb_data_access_read(TLB_DBIG_0, i); |
t.value = dtlb_tag_read_read(TLB_DBIG_0, i); |
print_tlb_entry(i, t, d); |
} |
|
printf("DT512_2 contents:\n"); |
for (i = 0; i < 512; i++) { |
d.value = dtlb_data_access_read(TLB_DT512_1, i); |
t.value = dtlb_tag_read_read(TLB_DT512_1, i); |
printf("TLB_DBIG_2 contents:\n"); |
for (i = 0; i < tlb_dbig_size(); i++) { |
d.value = dtlb_data_access_read(TLB_DBIG_1, i); |
t.value = dtlb_tag_read_read(TLB_DBIG_1, i); |
print_tlb_entry(i, t, d); |
} |
} |
486,8 → 486,8 |
/** Invalidates given TLB entry if and only if it is non-locked or global. |
* |
* @param tlb |
* TLB number (one of TLB_DT16, TLB_DT512_0, TLB_DT512_1, |
* TLB_IT16, TLB_IT128) |
* TLB number (one of TLB_DSMALL, TLB_DBIG_0, TLB_DBIG_1, |
* TLB_ISMALL, TLB_IBIG) |
* @param entry entry index within the given TLB |
*/ |
static void tlb_invalidate_entry(int tlb, index_t entry) |
495,7 → 495,7 |
tlb_data_t d; |
tlb_tag_read_reg_t t; |
|
if (tlb == TLB_DT16 || tlb == TLB_DT512_0 || tlb == TLB_DT512_1) { |
if (tlb == TLB_DSMALL || tlb == TLB_DBIG_0 || tlb == TLB_DBIG_1) { |
d.value = dtlb_data_access_read(tlb, entry); |
if (!d.l || d.g) { |
t.value = dtlb_tag_read_read(tlb, entry); |
503,7 → 503,7 |
dtlb_tag_access_write(t.value); |
dtlb_data_access_write(tlb, entry, d.value); |
} |
} else if (tlb == TLB_IT16 || tlb == TLB_IT128) { |
} else if (tlb == TLB_ISMALL || tlb == TLB_IBIG) { |
d.value = itlb_data_access_read(tlb, entry); |
if (!d.l || d.g) { |
t.value = itlb_tag_read_read(tlb, entry); |
555,16 → 555,16 |
|
#elif defined (US3) |
|
for (i = 0; i < 16; i++) |
tlb_invalidate_entry(TLB_IT16, i); |
for (i = 0; i < 128; i++) |
tlb_invalidate_entry(TLB_IT128, i); |
for (i = 0; i < 16; i++) |
tlb_invalidate_entry(TLB_DT16, i); |
for (i = 0; i < 512; i++) |
tlb_invalidate_entry(TLB_DT512_0, i); |
for (i = 0; i < 512; i++) |
tlb_invalidate_entry(TLB_DT512_1, i); |
for (i = 0; i < tlb_ismall_size(); i++) |
tlb_invalidate_entry(TLB_ISMALL, i); |
for (i = 0; i < tlb_ibig_size(); i++) |
tlb_invalidate_entry(TLB_IBIG, i); |
for (i = 0; i < tlb_dsmall_size(); i++) |
tlb_invalidate_entry(TLB_DSMALL, i); |
for (i = 0; i < tlb_dbig_size(); i++) |
tlb_invalidate_entry(TLB_DBIG_0, i); |
for (i = 0; i < tlb_dbig_size(); i++) |
tlb_invalidate_entry(TLB_DBIG_1, i); |
#endif |
|
} |