patch-1.3.94 linux/arch/sparc/mm/mbus.c

Next file: linux/arch/sparc/mm/srmmu_mp.S
Previous file: linux/arch/sparc/kernel/tadpole.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v1.3.93/linux/arch/sparc/mm/mbus.c linux/arch/sparc/mm/mbus.c
@@ -1,186 +0,0 @@
-/* $Id: mbus.c,v 1.9 1995/11/25 00:59:26 davem Exp $
- * mbus.c: MBUS probing routines, called from kernel/probe.c
- *
- * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu)
- */
-
-#include <linux/kernel.h>
-
-#include <asm/oplib.h>
-#include <asm/cache.h>
-#include <asm/page.h>
-#include <asm/pgtable.h>
-#include <asm/asi.h>
-#include <asm/psr.h>
-#include <asm/vac-ops.h>
-#include <asm/mbus.h>
-
-/* #define DEBUG_MBUS */
-
-unsigned int viking_rev, swift_rev, cypress_rev;
-enum mbus_module srmmu_modtype;
-unsigned int hwbug_bitmask;
-
-void
-probe_mbus(void)
-{
-	register unsigned int mreg, vaddr;
-	register int impl, vers, syscntrl, pso, resv, nofault, enable;
-	register int mod_typ, mod_rev;
-
-	srmmu_modtype = SRMMU_INVAL_MOD;
-	hwbug_bitmask = 0;
-	vaddr = 0;
-
-	mreg = srmmu_get_mmureg();
-	impl = (mreg & SRMMU_CTREG_IMPL_MASK) >> SRMMU_CTREG_IMPL_SHIFT;
-	vers = (mreg & SRMMU_CTREG_VERS_MASK) >> SRMMU_CTREG_VERS_SHIFT;
-	syscntrl = (mreg & SRMMU_CTREG_SYSCNTRL_MASK) >> SRMMU_CTREG_SYSCNTRL_SHIFT;
-	pso = (mreg & SRMMU_CTREG_PSO_MASK) >> SRMMU_CTREG_PSO_SHIFT;
-	resv = (mreg & SRMMU_CTREG_RESV_MASK) >> SRMMU_CTREG_RESV_SHIFT;
-	nofault = (mreg & SRMMU_CTREG_NOFAULT_MASK) >> SRMMU_CTREG_NOFAULT_SHIFT;
-	enable = (mreg & SRMMU_CTREG_ENABLE_MASK) >> SRMMU_CTREG_ENABLE_SHIFT;
-
-#ifdef DEBUG_MBUS
-	printk("MMU REGISTER\n");
-	printk("IMPL<%01x> VERS<%01x> SYSCNTRL<%04x> PSO<%d> RESV<%02x> NOFAULT<%d> ENABLE<%d>\n",
-	       impl, vers, syscntrl, (int) pso, resv, (int) nofault, (int) enable);
-#endif
-
-	mod_typ = impl; mod_rev = vers;
-	printk("MBUS: ");
-
-	if(mod_typ == 0x1) /* Ross HyperSparc or Cypress */
-		if (mod_rev == 0x7) {
-			srmmu_modtype = HyperSparc;
-			hwbug_bitmask |= HWBUG_VACFLUSH_BITROT;
-			/* Turn off Cache Wrapping and copyback caching, I don't
-			 * understand them completely yet... */
-			printk("Enabling HyperSparc features...\n");
-			/* FUCK IT, I wanna see this baby chug! */
-			/* First, flush the cache */
-#if 0
-			for(vaddr = 0; vaddr != vac_size; vaddr+=vac_linesize)
-				flush_ei_ctx(vaddr);
-#endif
-			mreg &= (~HYPERSPARC_CWENABLE);
-			mreg &= (~HYPERSPARC_CMODE);
-			mreg &= (~HYPERSPARC_WBENABLE);
-			mreg |= (HYPERSPARC_CENABLE);
-			srmmu_set_mmureg(mreg);
-			/* Clear all the cache tags */
-#if 0
-			for(vaddr = 0; vaddr != vac_size; vaddr+=vac_linesize)
-				__asm__ __volatile__("sta %%g0, [%0] %1" : :
-						     "r" (vaddr), "i" (0xe));
-#endif
-			/* Flush the ICACHE */
-			flush_whole_icache();
-
-		} else {
-			cypress_rev = mod_rev;
-			if(mod_rev == 0xe) {
-				srmmu_modtype = Cypress_vE;
-				hwbug_bitmask |= HWBUG_COPYBACK_BROKEN;
-			} else
-				if(mod_rev == 0xd) {
-					srmmu_modtype = Cypress_vD;
-					hwbug_bitmask |= HWBUG_ASIFLUSH_BROKEN;
-				} else
-					srmmu_modtype = Cypress;
-
-			/* It is a Cypress module */
-			printk("ROSS Cypress Module %s\n",
-			       (srmmu_modtype == Cypress_vE ? "Rev. E" :
-				(srmmu_modtype == Cypress_vD ? "Rev. D" :
-				 "")));
-				/* Enable Cypress features */
-				printk("Enabling Cypress features...\n");
-				mreg &= (~CYPRESS_CMODE);
-				mreg |= (CYPRESS_CENABLE);
-				srmmu_set_mmureg(mreg);
-				/* Maybe play with Cypress 604/605 cache stuff here? */
-		}
-
-
-	if(((get_psr()>>0x18)&0xff)==0x04) {
-		__asm__ __volatile__("lda [%1] %2, %0\n\t" 
-				     "srl %0, 0x18, %0\n\t" :
-				     "=r" (swift_rev) :
-				     "r" (0x10003000), "i" (0x20));
-		printk("Fujitsu MB86904 or higher Swift module\n");  /* MB86905 etc. */
-		switch(swift_rev) {
-		case 0x11:
-		case 0x20:
-		case 0x23:
-		case 0x30:
-			srmmu_modtype = Swift_lots_o_bugs;
-			hwbug_bitmask |= HWBUG_KERN_ACCBROKEN;
-			hwbug_bitmask |= HWBUG_KERN_CBITBROKEN;
-			printk("Detected Swift with Lots 'o' Bugs\n");
-			break;
-		case 0x25:
-		case 0x31:
-			srmmu_modtype = Swift_bad_c;
-			hwbug_bitmask |= HWBUG_KERN_CBITBROKEN;
-			printk("Detected Swift with kernel pte C bit bug\n");
-			break;
-		default:
-			srmmu_modtype = Swift_ok;
-			printk("Detected Swift with no bugs...\n");
-			break;
-		}
-		/* Enable Fujitsu Swift specific features here... */
-		printk("Enabling Swift features...\n");
-		mreg |= 0;
-		srmmu_set_mmureg(mreg);
-	}
-
-	if((((get_psr()>>0x18)&0xff)==0x40 ||
-	    (((get_psr()>>0x18)&0xff)==0x41 && mod_typ==0 && mod_rev==0))) {
-		if(((get_psr()>>0x18)&0xf)==0 && mod_rev==0) {
-			srmmu_modtype = Viking_12;
-			hwbug_bitmask |= HWBUG_MODIFIED_BITROT;
-			hwbug_bitmask |= HWBUG_PC_BADFAULT_ADDR;
-		} else {
-			if(((get_psr()>>0x18)&0xf)!=0) {
-				srmmu_modtype = Viking_2x;
-				hwbug_bitmask |= HWBUG_PC_BADFAULT_ADDR;
-			} else
-				if(mod_rev==1) {
-					srmmu_modtype = Viking_30;
-					hwbug_bitmask |= HWBUG_PACINIT_BITROT;
-				} else  {
-					if (mod_rev<8)
-						srmmu_modtype = Viking_35;
-					else
-						srmmu_modtype = Viking_new;
-				}
-		}
-
-		/* SPARCclassic's STP1010 may be produced under other name */
-		printk("VIKING Module\n");
-		printk("Enabling Viking features...\n");
-		mreg |= (VIKING_DCENABLE | VIKING_ICENABLE | VIKING_SBENABLE |
-			 VIKING_TCENABLE | VIKING_DPENABLE);
-		srmmu_set_mmureg(mreg);
-	}
-   
-	if((((get_psr()>>0x18)&0xff)==0x41) && (mod_typ || mod_rev)) {
-		srmmu_modtype = Tsunami;
-		printk("Tsunami module\n");
-		/* Enable Tsunami features */
-	}
-
-	if(srmmu_modtype == SRMMU_INVAL_MOD) {
-		printk("Unknown SRMMU module type!\n");
-		printk("MMU_CREG: impl=%x vers=%x\n", mod_typ, mod_rev);
-		printk("PSR: impl=%x vers=%x\n", ((get_psr()>>28)&0xf),
-		       ((get_psr()>>24)&0xf));
-		panic("probe_mbus()");
-	}
-
-	/* AIEEE, should get this from the prom... */
-	printk("Boot processor ID %d Module ID %d (%s MBUS)\n",
-	       get_cpuid(), get_modid(), (get_modid() == 0x8 ? "Level 1" : "Level 2"));
-}

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov with Sam's (original) version
of this