📄 cpuconf.c
字号:
#ifdef lintstatic char *sccsid = "@(#)cpuconf.c 4.16 ULTRIX 3/6/91";#endif lint/************************************************************************ * * * Copyright (c) 1984,85,86,88,89 by * * Digital Equipment Corporation, Maynard, MA * * All rights reserved. * * * * This software is furnished under a license and may be used and * * copied only in accordance with the terms of such license and * * with the inclusion of the above copyright notice. This * * software or any other copies thereof may not be provided or * * otherwise made available to any other person. No title to and * * ownership of the software is hereby transferred. * * * * The information in this software is subject to change without * * notice and should not be construed as a commitment by Digital * * Equipment Corporation. * * * * Digital assumes no responsibility for the use or reliability * * of its software on equipment which is not supplied by Digital. * * * ************************************************************************//*********************************************************************** * * Modification History: cpuconf.c * * 06-Mar-91 jaw * optimize 3min spl * * 15-Oct-90 Randall Brown * Added errlogging routines to cpusw for 3min. * * 09-Oct-90 jaw * merge in MM changes for rigel. * * 09-Oct-90 Paul Grist * added startclock routine to cpuswitch for mipsmate, this * fixes hangs after power-fails when the system needs to * acess non-root disks, which are not spun up, the cases * that were seen were swap on non-root and presto buffers. * * 01-Sep-90 sekhar * added functions and stubs for print_consinfo interface. * kn02_print_consinfo, kn02_log_errinfo - DS5000 (3MAX) * kn220_print_consinfo, kn220_log_errinfo - DS5500 (MIPSFAIR2) * nullcpu stubs for other machines (both mips and vax). * * 31-Aug-90 Jim Paradis * Added additional stubs for VAX9000 routines * * 03-Aug-90 rafiey (Ali Rafieymehr) * Added support for VAX9000. * * 21-Jun-90 Fred L. Templin * Added dummies for TURBOchannel data structures for case of * DS5000 not defines. (Solution from afd). * * 20-Mar-90 Paul Grist * Added MIPSMATE support (DS_5100). * * 30-Apr-90 Randall Brown * Added new cpu entry for DS_5000_100. Filled in the new values * of the switch table for the MIPS systems. ( spls, intr, clock stuff) * * 06-Mar-90 afd * Put mc146818startclocks() into cpu switch for pmax/3max. * * 18-Jan-90 robin * Added kn220badaddr function to get badaddr to work with the * way the KN220 memory intrrupts are cleared. * * 29-Dec-89 afd * Added definitions for kn02erradr & kn02chksyn for when * DS5000 not defined. * * 26-Dec-89 robin * changed the kn220 write buffer routine used by 5500. * * 08-Dec-89 jaw * fix 6200 entry from merge damage. * * 30-Nov-89 Paul Grist * Added 8800 error logging routines as stubs for non-8800 * VAXBI systems that will use biinit.c Did the same for * ka6200 and ka6400. * * 14-Nov-89 gmm * Remove kn5800_iscpu() and add kn5800_init_secondary(). * * 30-Oct-89 afd * Use kn01 cache flush routines for kn02 (DS5000 - 3max). * * 11-Aug-89 afd * Set up 3MAX cpu struct in cpu switch table. * * 10-Jul-89 burns * For DS5800 moved several "vax" only fields into mips. Added * the msize and cpuinit routines for afd. Added cache routines * to the cpu switch for DS5800. * * 14-June-89 afd * Fill in new HZ field in cpuswitch (used to be in param.c). * hz, tick, tickadj are set in processor specific init routines. * * 23-May-89 darrell * Merged VVAX support. * * 03-May-89 darrell * Merged in VAX6400 support. * * 07-Apr-89 afd * Created this file as a merged version of the old VAX cpuconf.c * with new entries for MIPS based systems. This file now supports * both VAX and MIPS based systems. * **********************************************************************/#include "../machine/pte.h"#include "../h/param.h"#include "../../machine/common/cpuconf.h"#include "../machine/cpu.h"#include "../io/uba/ubareg.h"#include "../machine/nexus.h"#ifdef vax#include "../machine/ioa.h"#include "../machine/cvax.h"#endif#ifdef mips#include "../machine/kn5800.h"#endif mipsint nocpu();int nullcpu();int bbadaddr();int readtodr();int writetodr();int uICRdelay();int uInoICRdelay();int uIInoICRdelay();int cVSnoICRdelay();int uSSCdelay();int uRSSCdelay();int ssc_readtodr();int ssc_writetodr();#ifdef vaxextern short nexty750[];extern short nexty730[];extern short nextyUVI[];extern short *ioaaddr8600[];#ifdef VAX780int ka780nexaddr(); int ka780umaddr();int ka780udevaddr();int ka780machcheck();int ka780memerr();int ka780setcache();int ka780memenable();int ka780tocons();int ka780cachenbl();int ka780logsbi();int ka780conf();#endif VAX780#ifdef VAX750int ka750machcheck();int ka750memerr();int ka750setcache();int ka750memenable();int ka750tocons();int ka750cachenbl();int ka750nexaddr(); int ka750umaddr();int ka750udevaddr();int ka750conf();#endif VAX750#ifdef VAX730int ka730nexaddr(); int ka730umaddr();int ka730udevaddr();int ka730machcheck();int ka730memerr();int ka730memenable();int ka730tocons();int ka730conf();#endif VAX730#ifdef VAX8600int ka8600nexaddr(); int ka8600memerr();int ka8600setcache();int ka8600memenable();int ka8600tocons();int ka8600cachenbl();int ka8600umaddr();int ka8600udevaddr();int ka8600machcheck();int ka8600logsbi();int ka8600conf();#elsecrlintr() { /*keep locore happy*/ } #endif VAX8600#ifdef MVAXint ka610machcheck();int ka610setcache();int ka610cachenbl();int ka610tocons();int ka610nexaddr(); int ka610umaddr();int ka610udevaddr();int ka610conf();int ka630setcache();int ka630cachenbl();int ka630tocons();int ka630nexaddr(); int ka630umaddr();int ka630udevaddr();int ka630machcheck();int ka630readtodr();int ka630writetodr();int ka630conf();#endif MVAX#ifdef VAX8200int ka8200nexaddr(); int ka8200umaddr();int ka8200udevaddr();int ka8200machcheck();int ka8200conf();int ka8200memerr();int ka8200setcache();int ka8200memenable();int ka8200tocons();int ka8200cachenbl();int ka8200readtodr();int ka8200writetodr();int ka8200startcpu();int ka8200stopcpu();#elseka820slavehalt() {/* fake routine for machdep*/ }ka8200rxopen() {/* rx50 open routine */ }ka8200startrx() {/* rx50 start routine */ }rx5_intr() { /* rx50 interrupt routine */ }#endif VAX8200#ifdef VAX8800int ka8800startcpu();int ka8800stopcpu();int ka8800nexaddr(); int ka8800umaddr();int ka8800udevaddr();int ka8800machcheck();int ka8800memerr();int ka8800conf();int ka8800badaddr();int ka8800tocons();int ka8800cachenbl();int ka8800setcache();int ka8800memenable();int ka8800readtodr();int ka8800writetodr();#elseka8800nmifault() { /*keep locore happy */}nmifaultclear(){/* keep locore happy */}ka8800requeue(){/* tty console driver */ }ka8800startrx(){/* start rx50 */ }rx8800_trans() {/* rx50 transmit routine */ }log_ka8800memerrs() {/* keep biinit happy */}log_ka8800bierrors() {/* keep biinit happy */}nbia_log_err() { /* keep biinit happy */}#endif VAX8800#ifdef VAX3600int ka650machcheck();int ka650crderr();int ka650setcache();int ka650memenable();int ka650tocons();int ka650conf();int ka650cachenbl();int ka650umaddr();int ka650udevaddr();int ka650memerr();#endif VAX3600#ifdef VAX420int ka420machcheck();int ka420crderr();int ka420setcache();int ka420tocons();int ka420conf();int ka420cachenbl();int ka420nexaddr(); int ka420umaddr();int ka420readtodr();int ka420writetodr();#endif#ifdef VAX6200int ka6200nexaddr(); int ka6200umaddr();int ka6200udevaddr();int ka6200machcheck();int ka6200conf();int ka6200memerr();int ka6200crderr();int ka6200setcache();int ka6200memenable();int ka6200tocons();int ka6200writetodr();int ka6200cachenbl();int ka6200badaddr();#elseka6200initslave() {/* init slave on calypso */ }ka6200mapcsr() { /* map csr1 on calypso*/ }ka6200halt() { /* call out of machdep */}ka6200reboot() { /* call out of machdep */}int *ka6200_ip;ka6200_clear_xbe() {/* call out of machdep */ }log_ka6200memerrs() {/* call out of biinit.c*/}#endif#ifdef VAX60int ka60machcheck();int ka60crderr();int ka60setcache();int ka60memenable();int ka60tocons();int ka60conf();int ka60cachenbl();int ka60nexaddr(); int ka60umaddr();int ka60udevaddr();int ka60memerr();int ka60writetodr();int ka60readtodr();#elseint *ka60_ip;ka60initslave() {/* init slave on Firefox */ }ka60memerr() { /* called from locore */}ka60clrmbint() { /* clear mbus memerr interrupts */ }ka60setmbint() { /* set (enable) mbus memerr interrupts */ }#endif VAX60#ifdef VAX6400int ka6400nexaddr();int ka6400umaddr();int ka6400udevaddr();int ka6400machcheck();int ka6400conf();int ka6400harderr();int ka6400softerr();int ka6400setcache();int ka6400memenable();int ka6400tocons();int ka6400writetodr();int ka6400cachenbl();int ka6400badaddr();#elseka6400initslave() {/* init slave on rigel */ }ka6400mapcsr() { /* map the RSSC registers on rigel*/ }ka6400halt() { /* call out of machdep */}ka6400reboot() { /* call out of machdep */}int *calypso_ip;ka6400_clear_xbe() {/* call out of machdep */}ka6400_disable_cache() {/* call out of machdep */}clear_xrperr() {/* call out of locore */}rxma_check_errors() {/*called by biinit.c*/}#endif#ifdef VAX9000int ka9000nexaddr(); int ka9000memerr();int ka9000setcache();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -