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