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

Subversion Repositories or1k

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /
    from Rev 72 to Rev 73
    Reverse comparison

Rev 72 → Rev 73

/trunk/or1ksim/mmu/Makefile.in
105,7 → 105,7
host_os = @host_os@
 
noinst_LIBRARIES = libmmu.a
libmmu_a_SOURCES = dmmu.c
libmmu_a_SOURCES = dmmu.c immu.c
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = ../config.h
CONFIG_CLEAN_FILES =
117,7 → 117,7
LDFLAGS = @LDFLAGS@
LIBS = @LIBS@
libmmu_a_LIBADD =
libmmu_a_OBJECTS = dmmu.o
libmmu_a_OBJECTS = dmmu.o immu.o
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
CCLD = $(CC)
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@
126,9 → 126,9
 
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
 
TAR = tar
TAR = gtar
GZIP_ENV = --best
DEP_FILES = .deps/dmmu.P
DEP_FILES = .deps/dmmu.P .deps/immu.P
SOURCES = $(libmmu_a_SOURCES)
OBJECTS = $(libmmu_a_OBJECTS)
 
215,7 → 215,7
@for file in $(DISTFILES); do \
d=$(srcdir); \
if test -d $$d/$$file; then \
cp -pr $$/$$file $(distdir)/$$file; \
cp -pr $$d/$$file $(distdir)/$$file; \
else \
test -f $(distdir)/$$file \
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
/trunk/or1ksim/mmu/dmmu.c
33,7 → 33,7
{
unsigned long phyaddr = dmmu_simulate_tlb(virtaddr);
printf("DMMU translate(%x) = %x\n", virtaddr, phyaddr);
/* printf("DMMU translate(%x) = %x\n", virtaddr, phyaddr);*/
return phyaddr;
}
 
49,9 → 49,6
/* Number of usage states (2, 3, 4 etc., max is 4). */
#define DTLB_USTATES 2
 
/* Don't change. Defined by mask of PPN/VPN bits in TLB. */
#define MIN_PG_SIZE 1024
 
void dtlb_info()
{
printf("Data MMU %dKB: ", DTLB_SETS * DTLB_ENTRY_SIZE * DTLB_WAYS / 1024);
82,24 → 79,24
else
start_set = 0;
 
printf("\nDMMU: ");
/* Scan set(s) and way(s). */
for (set = start_set; set < end_set; set++) {
printf("\nSet %x: ", set);
for (way = 0; way < DTLB_WAYS; way++) {
printf(" way %d: ", way);
printf("vpn %x ", getsprbits(SPR_DTLBMR_BASE(way) + set, SPR_DTLBMR_VPN));
printf("lru %x ", getsprbits(SPR_DTLBMR_BASE(way) + set, SPR_DTLBMR_LRU));
printf("pl1 %x ", getsprbits(SPR_DTLBMR_BASE(way) + set, SPR_DTLBMR_PL1));
printf("v %x ", getsprbits(SPR_DTLBMR_BASE(way) + set, SPR_DTLBMR_V));
printf("a %x ", getsprbits(SPR_DTLBMR_BASE(way) + set, SPR_DTLBTR_A));
printf("d %x ", getsprbits(SPR_DTLBMR_BASE(way) + set, SPR_DTLBTR_D));
printf("ure %x ", getsprbits(SPR_DTLBMR_BASE(way) + set, SPR_DTLBTR_URE));
printf("uwe %x ", getsprbits(SPR_DTLBMR_BASE(way) + set, SPR_DTLBTR_UWE));
printf("sre %x ", getsprbits(SPR_DTLBMR_BASE(way) + set, SPR_DTLBTR_SRE));
printf("swe %x ", getsprbits(SPR_DTLBMR_BASE(way) + set, SPR_DTLBTR_SWE));
printf("ppn %x ", getsprbits(SPR_DTLBMR_BASE(way) + set, SPR_DTLBTR_PPN));
if (way > 0)
printf("\n");
printf("vpn=%x ", getsprbits(SPR_DTLBMR_BASE(way) + set, SPR_DTLBMR_VPN));
printf("lru=%x ", getsprbits(SPR_DTLBMR_BASE(way) + set, SPR_DTLBMR_LRU));
printf("pl1=%x ", getsprbits(SPR_DTLBMR_BASE(way) + set, SPR_DTLBMR_PL1));
printf("v=%x ", getsprbits(SPR_DTLBMR_BASE(way) + set, SPR_DTLBMR_V));
printf("a=%x ", getsprbits(SPR_DTLBTR_BASE(way) + set, SPR_DTLBTR_A));
printf("d=%x ", getsprbits(SPR_DTLBTR_BASE(way) + set, SPR_DTLBTR_D));
printf("ure=%x ", getsprbits(SPR_DTLBTR_BASE(way) + set, SPR_DTLBTR_URE));
printf("uwe=%x ", getsprbits(SPR_DTLBTR_BASE(way) + set, SPR_DTLBTR_UWE));
printf("sre=%x ", getsprbits(SPR_DTLBTR_BASE(way) + set, SPR_DTLBTR_SRE));
printf("swe=%x ", getsprbits(SPR_DTLBTR_BASE(way) + set, SPR_DTLBTR_SWE));
printf("ppn=%x ", getsprbits(SPR_DTLBTR_BASE(way) + set, SPR_DTLBTR_PPN));
}
}
printf("\n");
118,7 → 115,7
/* Which set to check out? */
set = (virtaddr / PAGE_SIZE) % DTLB_SETS;
tagaddr = (virtaddr / PAGE_SIZE) / DTLB_SETS;
vpn = virtaddr / MIN_PG_SIZE;
vpn = virtaddr / PAGE_SIZE;
 
/* Scan all ways and try to find a matching way. */
for (i = 0; i < DTLB_WAYS; i++)
137,7 → 134,7
setsprbits(SPR_DTLBMR_BASE(i) + set, SPR_DTLBMR_LRU, getsprbits(SPR_DTLBMR_BASE(i) + set, SPR_DTLBMR_LRU) - 1);
setsprbits(SPR_DTLBMR_BASE(way) + set, SPR_DTLBMR_LRU, DTLB_USTATES - 1);
 
return getsprbits(SPR_DTLBTR_BASE(way) + set, SPR_DTLBTR_PPN) * MIN_PG_SIZE + (virtaddr % PAGE_SIZE);
return getsprbits(SPR_DTLBTR_BASE(way) + set, SPR_DTLBTR_PPN) * PAGE_SIZE + (virtaddr % PAGE_SIZE);
}
else { /* No, we didn't. */
int minlru = DTLB_USTATES - 1;
159,7 → 156,7
#endif
except_handle(EXCEPT_DTLBMISS, virtaddr);
/* if tlb refill implemented in HW */
/* return getsprbits(SPR_DTLBTR_BASE(minway) + set, SPR_DTLBTR_PPN) * MIN_PG_SIZE + (virtaddr % PAGE_SIZE); */
/* return getsprbits(SPR_DTLBTR_BASE(minway) + set, SPR_DTLBTR_PPN) * PAGE_SIZE + (virtaddr % PAGE_SIZE); */
return 0;
}
}
/trunk/or1ksim/mmu/Makefile.am
19,5 → 19,5
#
 
noinst_LIBRARIES = libmmu.a
libmmu_a_SOURCES = dmmu.c
libmmu_a_SOURCES = dmmu.c immu.c
 

powered by: WebSVN 2.1.0

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