Line 103... |
Line 103... |
if (bpb[entry].way[i].addr == addr)
|
if (bpb[entry].way[i].addr == addr)
|
way = i;
|
way = i;
|
|
|
/* Did we find our cached branch? */
|
/* Did we find our cached branch? */
|
if (way >= 0) { /* Yes, we did. */
|
if (way >= 0) { /* Yes, we did. */
|
mstats.bpb.hit++;
|
or1k_mstats.bpb.hit++;
|
|
|
for (i = 0; i < BPB_WAYS; i++)
|
for (i = 0; i < BPB_WAYS; i++)
|
if (bpb[entry].way[i].lru)
|
if (bpb[entry].way[i].lru)
|
bpb[entry].way[i].lru--;
|
bpb[entry].way[i].lru--;
|
bpb[entry].way[way].lru = BPB_USTATES - 1;
|
bpb[entry].way[way].lru = BPB_USTATES - 1;
|
|
|
if (bpb[entry].way[way].taken / (BPB_PSTATES / 2) == taken)
|
if (bpb[entry].way[way].taken / (BPB_PSTATES / 2) == taken)
|
mstats.bpb.correct++;
|
or1k_mstats.bpb.correct++;
|
else
|
else
|
mstats.bpb.incorrect++;
|
or1k_mstats.bpb.incorrect++;
|
|
|
if (taken && (bpb[entry].way[way].taken < BPB_PSTATES - 1))
|
if (taken && (bpb[entry].way[way].taken < BPB_PSTATES - 1))
|
bpb[entry].way[way].taken++;
|
bpb[entry].way[way].taken++;
|
else
|
else
|
if (!taken && (bpb[entry].way[way].taken))
|
if (!taken && (bpb[entry].way[way].taken))
|
Line 125... |
Line 125... |
}
|
}
|
else { /* No, we didn't. */
|
else { /* No, we didn't. */
|
int minlru = BPB_USTATES - 1;
|
int minlru = BPB_USTATES - 1;
|
int minway = 0;
|
int minway = 0;
|
|
|
mstats.bpb.miss++;
|
or1k_mstats.bpb.miss++;
|
|
|
for (i = 0; i < BPB_WAYS; i++)
|
for (i = 0; i < BPB_WAYS; i++)
|
if (bpb[entry].way[i].lru < minlru)
|
if (bpb[entry].way[i].lru < minlru)
|
minway = i;
|
minway = i;
|
|
|
Line 204... |
Line 204... |
if (btic[entry].way[i].addr == targetaddr)
|
if (btic[entry].way[i].addr == targetaddr)
|
way = i;
|
way = i;
|
|
|
/* Did we find our cached branch? */
|
/* Did we find our cached branch? */
|
if (way >= 0) { /* Yes, we did. */
|
if (way >= 0) { /* Yes, we did. */
|
mstats.btic.hit++;
|
or1k_mstats.btic.hit++;
|
|
|
for (i = 0; i < BTIC_WAYS; i++)
|
for (i = 0; i < BTIC_WAYS; i++)
|
if (btic[entry].way[i].lru)
|
if (btic[entry].way[i].lru)
|
btic[entry].way[i].lru--;
|
btic[entry].way[i].lru--;
|
btic[entry].way[way].lru = BTIC_USTATES - 1;
|
btic[entry].way[way].lru = BTIC_USTATES - 1;
|
}
|
}
|
else { /* No, we didn't. */
|
else { /* No, we didn't. */
|
int minlru = BTIC_USTATES - 1;
|
int minlru = BTIC_USTATES - 1;
|
int minway = 0;
|
int minway = 0;
|
|
|
mstats.btic.miss++;
|
or1k_mstats.btic.miss++;
|
|
|
for (i = 0; i < BTIC_WAYS; i++)
|
for (i = 0; i < BTIC_WAYS; i++)
|
if (btic[entry].way[i].lru < minlru)
|
if (btic[entry].way[i].lru < minlru)
|
minway = i;
|
minway = i;
|
|
|