turbosparc: 256 contexts, page tables cannot be cached.

This commit is contained in:
pk 1997-05-06 21:00:54 +00:00
parent bcc725c5e3
commit 45cc2d6db4
3 changed files with 11 additions and 17 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: cache.c,v 1.26 1997/04/11 20:06:53 pk Exp $ */
/* $NetBSD: cache.c,v 1.27 1997/05/06 21:00:56 pk Exp $ */
/*
* Copyright (c) 1996
@ -640,9 +640,6 @@ viking_cache_flush(base, len)
* (in case of write-back caches) DMA operations.
*/
/* XXX investigate other methods instead of blowing the entire cache */
sta(0x80000000, ASI_DCACHECLR, 0); /* Unlock */
sta(0, ASI_DCACHECLR, 0);
}
void
@ -696,7 +693,7 @@ viking_pcache_flush_line(va, pa)
}
void
cypress_pcache_flush_line(va, pa)
srmmu_pcache_flush_line(va, pa)
int va;
int pa;
{
@ -704,8 +701,6 @@ cypress_pcache_flush_line(va, pa)
* Flush cache line corresponding to virtual address `va'
* which is mapped at physical address `pa'.
*/
/* NOT YET IMPLEMENTED */
sta(va, ASI_IDCACHELFP, 0);
}
#endif /* SUN4M */

View File

@ -1,4 +1,4 @@
/* $NetBSD: cache.h,v 1.14 1997/03/24 19:56:58 pk Exp $ */
/* $NetBSD: cache.h,v 1.15 1997/05/06 21:00:55 pk Exp $ */
/*
* Copyright (c) 1996
@ -55,8 +55,7 @@
*
* VAC_NONE is not actually used now, but if someone builds a physical
* cache Sun-4 (or, more likely, a virtual index/physical tag cache)
* everything will work (after pulling out the #ifdef notdef's: grep
* for VAC_NONE to find them).
* everything will work.
*/
enum vactype { VAC_NONE, VAC_WRITETHROUGH, VAC_WRITEBACK };
@ -176,7 +175,7 @@ void srmmu_cache_flush __P((caddr_t, u_int));/* flush region */
void ms1_cache_flush __P((caddr_t, u_int));
void viking_cache_flush __P((caddr_t, u_int));
void viking_pcache_flush_line __P((int, int));
void cypress_pcache_flush_line __P((int, int));
void srmmu_pcache_flush_line __P((int, int));
extern void sparc_noop __P((void));
@ -210,7 +209,8 @@ struct cacheinfo {
int c_linesize; /* line size, in bytes */
int c_l2linesize; /* log2(linesize) */
int c_nlines; /* number of cache lines */
int c_physical; /* true => cache is physical */
int c_physical; /* true => cache has physical
address tags */
int c_associativity; /* # of "buckets" in cache line */
int c_split; /* true => cache is split */

View File

@ -1,4 +1,4 @@
/* $NetBSD: cpu.c,v 1.40 1997/04/18 19:51:05 pk Exp $ */
/* $NetBSD: cpu.c,v 1.41 1997/05/06 21:00:54 pk Exp $ */
/*
* Copyright (c) 1996
@ -867,7 +867,7 @@ struct module_info module_cypress = { /* UNTESTED */
srmmu_vcache_flush_segment,
srmmu_vcache_flush_region,
srmmu_vcache_flush_context,
cypress_pcache_flush_line
srmmu_pcache_flush_line
};
void
@ -889,14 +889,14 @@ struct module_info module_turbosparc = { /* UNTESTED */
0,
0,
turbosparc_cache_enable,
4096,
256,
srmmu_get_fltstatus,
srmmu_cache_flush,
srmmu_vcache_flush_page,
srmmu_vcache_flush_segment,
srmmu_vcache_flush_region,
srmmu_vcache_flush_context,
noop_pcache_flush_line
srmmu_pcache_flush_line
};
void
@ -905,7 +905,6 @@ cpumatch_turbosparc(sc, mp, node)
struct module_info *mp;
int node;
{
sc->flags |= CPUFLG_CACHEPAGETABLES;
sc->cpu_type = CPUTYP_MS2;
}