Add hook for flushing a single cache line.

This commit is contained in:
pk 1997-03-20 23:26:23 +00:00
parent 63c1c6ab1c
commit 6cea599cbf
2 changed files with 24 additions and 21 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: cpu.c,v 1.30 1997/03/12 22:52:19 pk Exp $ */
/* $NetBSD: cpu.c,v 1.31 1997/03/20 23:26:25 pk Exp $ */
/*
* Copyright (c) 1996
@ -363,7 +363,8 @@ struct module_info module_sun4 = {
sun4_vcache_flush_page,
sun4_vcache_flush_segment,
sun4_vcache_flush_region,
sun4_vcache_flush_context
sun4_vcache_flush_context,
noop_pcache_flush_line
};
void
@ -476,7 +477,8 @@ struct module_info module_sun4c = {
sun4_vcache_flush_page,
sun4_vcache_flush_segment,
sun4_vcache_flush_region,
sun4_vcache_flush_context
sun4_vcache_flush_context,
noop_pcache_flush_line
};
void
@ -669,7 +671,8 @@ struct module_info module_ms1 = {
noop_vcache_flush_page,
noop_vcache_flush_segment,
noop_vcache_flush_region,
noop_vcache_flush_context
noop_vcache_flush_context,
noop_pcache_flush_line
};
void
@ -700,7 +703,8 @@ struct module_info module_ms2 = { /* UNTESTED */
srmmu_vcache_flush_page,
srmmu_vcache_flush_segment,
srmmu_vcache_flush_region,
srmmu_vcache_flush_context
srmmu_vcache_flush_context,
noop_pcache_flush_line
};
void
@ -726,7 +730,8 @@ struct module_info module_swift = { /* UNTESTED */
srmmu_vcache_flush_page,
srmmu_vcache_flush_segment,
srmmu_vcache_flush_region,
srmmu_vcache_flush_context
srmmu_vcache_flush_context,
noop_pcache_flush_line
};
void
@ -758,6 +763,7 @@ struct module_info module_viking = { /* UNTESTED */
noop_vcache_flush_segment,
noop_vcache_flush_region,
noop_vcache_flush_context,
noop_pcache_flush_line
};
void
@ -779,6 +785,7 @@ viking_hotfix(sc)
sc->mxcc = 1;
sc->flags |= CPUFLG_CACHEPAGETABLES;
sc->flags |= CPUFLG_CACHE_MANDATORY;
sc->pcache_flush_line = viking_pcache_flush_line;
}
/* XXX! */
@ -813,7 +820,8 @@ struct module_info module_hypersparc = { /* UNTESTED */
srmmu_vcache_flush_page,
srmmu_vcache_flush_segment,
srmmu_vcache_flush_region,
srmmu_vcache_flush_context
srmmu_vcache_flush_context,
noop_pcache_flush_line
};
void
@ -845,7 +853,8 @@ struct module_info module_cypress = { /* UNTESTED */
srmmu_vcache_flush_page,
srmmu_vcache_flush_segment,
srmmu_vcache_flush_region,
srmmu_vcache_flush_context
srmmu_vcache_flush_context,
cypress_pcache_flush_line
};
void
@ -873,7 +882,8 @@ struct module_info module_turbosparc = { /* UNTESTED */
srmmu_vcache_flush_page,
srmmu_vcache_flush_segment,
srmmu_vcache_flush_region,
srmmu_vcache_flush_context
srmmu_vcache_flush_context,
noop_pcache_flush_line
};
void
@ -1032,6 +1042,7 @@ getcpuinfo(sc, node)
MPCOPY(vcache_flush_segment);
MPCOPY(vcache_flush_region);
MPCOPY(vcache_flush_context);
MPCOPY(pcache_flush_line);
#undef MPCOPY
return;
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: cpuvar.h,v 1.2 1997/03/15 18:10:41 is Exp $ */
/* $NetBSD: cpuvar.h,v 1.3 1997/03/20 23:26:23 pk Exp $ */
/*
* Copyright (c) 1996 The NetBSD Foundation, Inc.
@ -66,6 +66,7 @@ struct module_info {
void (*vcache_flush_segment)__P((int, int));
void (*vcache_flush_region)__P((int));
void (*vcache_flush_context)__P((void));
void (*pcache_flush_line)__P((int, int));
};
@ -116,17 +117,7 @@ struct cpu_softc {
int ctx_kickdir; /* ctx_kick roves both directions */
/* MMU tables that map `cpuinfo'' on each CPU */
int *L1_ptps;
int L1_ptps_phys;
int *L2_ptps;
int L2_ptps_phys;
int *L3_ptps;
int L3_ptps_phys;
#if 1 /*temp:shorten recompilations because of cpuinfo size changes*/
int xxx5;
int xxx6;
#endif
int *L1_ptps; /* XXX */
/* XXX - of these, we currently use only cpu_type */
int arch; /* Architecture: CPU_SUN4x */
@ -178,6 +169,7 @@ struct cpu_softc {
void (*vcache_flush_segment)__P((int vreg, int vseg));
void (*vcache_flush_region)__P((int vreg));
void (*vcache_flush_context)__P((void));
void (*pcache_flush_line) __P((int, int));
#ifdef SUN4M
/* hardware-assisted block operation routines */