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

Subversion Repositories or1k_old

[/] [or1k_old/] [trunk/] [or1ksim/] [mmu/] [immu.c] - Diff between revs 1748 and 1751

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

Rev 1748 Rev 1751
Line 32... Line 32...
 
 
/* Package includes */
/* Package includes */
#include "immu.h"
#include "immu.h"
#include "sim-config.h"
#include "sim-config.h"
#include "execute.h"
#include "execute.h"
#include "debug.h"
 
#include "stats.h"
#include "stats.h"
#include "except.h"
#include "except.h"
#include "spr-dump.h"
#include "spr-dump.h"
#include "misc.h"
#include "misc.h"
#include "sim-cmd.h"
#include "sim-cmd.h"
 
 
 
 
DEFAULT_DEBUG_CHANNEL (immu);
 
 
 
struct immu *immu_state;
struct immu *immu_state;
 
 
/* Insn MMU */
/* Insn MMU */
 
 
static uorreg_t *
static uorreg_t *
Line 95... Line 92...
 
 
  /* Did we find our tlb entry? */
  /* Did we find our tlb entry? */
  if (itlbmr)
  if (itlbmr)
    {                           /* Yes, we did. */
    {                           /* Yes, we did. */
      immu_stats.fetch_tlbhit++;
      immu_stats.fetch_tlbhit++;
      TRACE ("ITLB hit (virtaddr=%" PRIxADDR ").\n", virtaddr);
 
 
 
      itlbtr = itlbmr + 128;
      itlbtr = itlbmr + 128;
 
 
      /* Set LRUs */
      /* Set LRUs */
      for (i = 0; i < immu->nways; i++, itlbmr_lru += (128 * 2))
      for (i = 0; i < immu->nways; i++, itlbmr_lru += (128 * 2))
        {
        {
Line 130... Line 125...
        {
        {
          if (!(*itlbtr & SPR_ITLBTR_UXE))
          if (!(*itlbtr & SPR_ITLBTR_UXE))
            except_handle (EXCEPT_IPF, virtaddr);
            except_handle (EXCEPT_IPF, virtaddr);
        }
        }
 
 
      TRACE ("Returning physical address %" PRIxADDR "\n",
 
             (*itlbtr & SPR_ITLBTR_PPN) | (virtaddr & immu->
 
                                           page_offset_mask));
 
      return (*itlbtr & SPR_ITLBTR_PPN) | (virtaddr & immu->page_offset_mask);
      return (*itlbtr & SPR_ITLBTR_PPN) | (virtaddr & immu->page_offset_mask);
    }
    }
 
 
  /* No, we didn't. */
  /* No, we didn't. */
  immu_stats.fetch_tlbmiss++;
  immu_stats.fetch_tlbmiss++;

powered by: WebSVN 2.1.0

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