OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [tags/] [nog_patch_59/] [or1ksim/] [cache/] [icache_model.c] - Diff between revs 429 and 541

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 429 Rev 541
Line 68... Line 68...
void ic_simulate_fetch(unsigned long fetchaddr)
void ic_simulate_fetch(unsigned long fetchaddr)
{
{
  int set, way = -1;
  int set, way = -1;
  int i;
  int i;
  unsigned long tagaddr;
  unsigned long tagaddr;
 
  extern int mem_cycles;
 
 
  /* ICache simulation enabled/disabled. */
  /* ICache simulation enabled/disabled. */
  if ((!testsprbits(SPR_UPR, SPR_UPR_ICP)) || (!testsprbits(SPR_SR, SPR_SR_ICE)))
  if ((!testsprbits(SPR_UPR, SPR_UPR_ICP)) || (!testsprbits(SPR_SR, SPR_SR_ICE)))
    return;
    return;
 
 
Line 90... Line 91...
 
 
    for (i = 0; i < config.ic.nways; i++)
    for (i = 0; i < config.ic.nways; i++)
      if (ic[set].way[i].lru)
      if (ic[set].way[i].lru)
        ic[set].way[i].lru--;
        ic[set].way[i].lru--;
    ic[set].way[way].lru = config.ic.ustates - 1;
    ic[set].way[way].lru = config.ic.ustates - 1;
 
    mem_cycles += config.ic.hitdelay;
  }
  }
  else {  /* No, we didn't. */
  else {  /* No, we didn't. */
    int minlru = config.ic.ustates - 1;
    int minlru = config.ic.ustates - 1;
    int minway = 0;
    int minway = 0;
 
 
Line 107... Line 109...
    for (i = 0; i < config.ic.nways; i++)
    for (i = 0; i < config.ic.nways; i++)
      if ((ic[set].way[i].lru) &&
      if ((ic[set].way[i].lru) &&
          (getsprbits(SPR_ICCR, SPR_ICCR_EW) & (1 << i)))
          (getsprbits(SPR_ICCR, SPR_ICCR_EW) & (1 << i)))
        ic[set].way[i].lru--;
        ic[set].way[i].lru--;
    ic[set].way[minway].lru = config.ic.ustates - 1;
    ic[set].way[minway].lru = config.ic.ustates - 1;
 
    mem_cycles += config.ic.missdelay;
  }
  }
}
}
 
 
/* First check if data is already in the cache and if it is:
/* First check if data is already in the cache and if it is:
    - invalidate block if way isn't locked
    - invalidate block if way isn't locked

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.