Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/arch/vax/vax Support for the 4000/600 cache, from Lord I...
details: https://anonhg.NetBSD.org/src/rev/789ff68f5270
branches: trunk
changeset: 507786:789ff68f5270
user: ragge <ragge%NetBSD.org@localhost>
date: Sat Mar 31 11:50:12 2001 +0000
description:
Support for the 4000/600 cache, from Lord Isildur. (mrfusion%vaxpower.org@localhost)
diffstat:
sys/arch/vax/vax/ka680.c | 37 ++++++++++++++++++++++++++++---------
1 files changed, 28 insertions(+), 9 deletions(-)
diffs (96 lines):
diff -r c89f16edad8c -r 789ff68f5270 sys/arch/vax/vax/ka680.c
--- a/sys/arch/vax/vax/ka680.c Sat Mar 31 11:43:22 2001 +0000
+++ b/sys/arch/vax/vax/ka680.c Sat Mar 31 11:50:12 2001 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: ka680.c,v 1.3 2001/01/28 21:01:53 ragge Exp $ */
+/* $NetBSD: ka680.c,v 1.4 2001/03/31 11:50:12 ragge Exp $ */
/*
* Copyright (c) 2000 Ludd, University of Lule}, Sweden.
* All rights reserved.
@@ -31,6 +31,7 @@
*/
/* Done by Michael Kukat (michael%unixiron.org@localhost) */
+/* minor modifications for KA690 cache support by isildur%vaxpower.org@localhost */
#include <sys/param.h>
#include <sys/types.h>
@@ -116,6 +117,7 @@
switch((vax_siedata & 0xff00) >> 8) {
case VAX_STYP_675: cpuname = "KA675"; break;
case VAX_STYP_680: cpuname = "KA680"; break;
+ case VAX_STYP_690: cpuname = "KA690"; break;
default: cpuname = "unknown NVAX";
}
printf("cpu0: %s, ucode rev %d\n", cpuname, vax_cpudata & 0xff);
@@ -124,7 +126,7 @@
void
ka680_cache_enable()
{
- int start, slut;
+ int start, pslut, fslut, cslut, havevic;
/*
* Turn caches off.
@@ -143,29 +145,44 @@
start = 0x01400000;
- slut = 0x01420000;
+ switch ((vax_siedata & 0xff00) >> 8) {
+ case VAX_STYP_675:
+ fslut = 0x01420000;
+ cslut = 0x01020000;
+ havevic = 0;
+ break;
+ case VAX_STYP_680:
+ fslut = 0x01420000;
+ cslut = 0x01020000;
+ havevic = 1;
+ break;
+ case VAX_STYP_690:
+ fslut = 0x01440000;
+ cslut = 0x01040000;
+ havevic = 1;
+ break;
+ }
/* Flush cache lines */
- for (; start < slut; start += 0x20)
+ for (; start < fslut; start += 0x20)
mtpr(0, start);
mtpr((mfpr(PR_CCTL) & ~(CCTL_SW_ETM|CCTL_ENABLE)) | CCTL_HW_ETM,
PR_CCTL);
start = 0x01000000;
- slut = 0x01020000;
/* clear tag and valid */
- for (; start < slut; start += 0x20)
+ for (; start < cslut; start += 0x20)
mtpr(0, start);
mtpr(mfpr(PR_CCTL) | 6 | CCTL_ENABLE, PR_CCTL); /* enab. bcache */
start = 0x01800000;
- slut = 0x01802000;
+ pslut = 0x01802000;
/* Clear primary cache */
- for (; start < slut; start += 0x20)
+ for (; start < pslut; start += 0x20)
mtpr(0, start);
/* Flush the pipes (via REI) */
@@ -175,7 +192,9 @@
mtpr(PCCTL_P_EN|PCCTL_I_EN|PCCTL_D_EN, PR_PCCTL);
/* Enable the VIC */
- if(((vax_siedata & 0xff00) >> 8) == VAX_STYP_680) {
+ if (havevic) {
+ int slut;
+
start = 0;
slut = 0x800;
for (; start < slut; start += 0x20) {
Home |
Main Index |
Thread Index |
Old Index