亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? autoconf.c

?? 早期freebsd實現
?? C
?? 第 1 頁 / 共 3 頁
字號:
/*- * Copyright (c) 1982, 1986 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in the *    documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software *    must display the following acknowledgement: *	This product includes software developed by the University of *	California, Berkeley and its contributors. * 4. Neither the name of the University nor the names of its contributors *    may be used to endorse or promote products derived from this software *    without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * *	@(#)autoconf.c	7.21 (Berkeley) 4/19/93 *//* * Setup the system to run on the current machine. * * Configure() is called at boot time and initializes the uba and mba * device tables and the memory controller monitoring.  Available * devices are determined (from possibilities mentioned in ioconf.c), * and the drivers are initialized. */#include "mba.h"#include "uba.h"#include "kra.h"		/* XXX wrong file */#include "bi.h"#include "sys/param.h"#include "sys/systm.h"#include "sys/map.h"#include "sys/buf.h"#include "sys/dkstat.h"#include "sys/vm.h"#include "sys/malloc.h"#include "sys/conf.h"#include "sys/dmap.h"#include "sys/reboot.h"#include "../include/pte.h"#include "../include/cpu.h"#include "mem.h"#include "../include/mtpr.h"#include "nexus.h"#include "scb.h"#include "ioa.h"#include "../bi/bireg.h"#include "../mba/mbareg.h"#include "../mba/mbavar.h"#include "../uba/ubareg.h"#include "../uba/ubavar.h"/* * The following several variables are related to * the configuration process, and are used in initializing * the machine. */int	cold;		/* if 1, still working on cold-start */int	dkn;		/* number of iostat dk numbers assigned so far */int	cpuspeed = 1;	/* relative cpu speed *//* * Addresses of the (locore) routines which bootstrap us from * hardware traps to C code.  Filled into the system control block * as necessary. * * RIDICULOUS!  CONFIG SHOULD GENERATE AN ioconf.h FOR US, with * mba glue also in `glue.s'.  (Unibus adapter glue is special, though.) */#if NMBA > 0int	(*mbaintv[4])() =	{ Xmba0int, Xmba1int, Xmba2int, Xmba3int };#if NMBA > 4	Need to expand the table for more than 4 massbus adaptors#endif#endif#if defined(VAX780) || defined(VAX8600)int	(*ubaintv[])() ={	Xua0int, Xua1int, Xua2int, Xua3int,#if NUBA > 4	Xua4int, Xua5int, Xua6int, Xua7int,#endif#if NUBA > 8	Need to expand the table for more than 8 unibus adaptors#endif};#endif#if NKDB > 0/* kdb50 driver does not appear in udminit[] (not without csr!) */int	Xkdbintr0();		/* generated by autoconf */int	(*kdbintv[])() = { Xkdbintr0 };#if NKDB > 1	Need to expand the table for more than 1 KDB adapter#endif#endif/* * This allocates the space for the per-uba information, * such as buffered data path usage. */struct	uba_hd uba_hd[NUBA];/* * Determine mass storage and memory configuration for a machine. * Get cpu type, and then switch out to machine specific procedures * which will probe adaptors to see what is out there. */configure(){	union cpusid cpusid;	register struct percpu *ocp;	register struct pte *ip;	cpusid.cpusid = mfpr(SID);	switch (cpusid.cpuany.cp_type) {#if VAX8600	case VAX_8600:		printf("VAX 8600, serial# %d(%d), hardware ECO level %d(%d)\n",			cpusid.cpu8600.cp_sno, cpusid.cpu8600.cp_plant,			cpusid.cpu8600.cp_eco >> 4, cpusid.cpu8600.cp_eco);		break;#endif#if VAX8200	case VAX_8200:		printf("\VAX 82%c0, hardware rev %d, ucode patch rev %d, sec patch %d, ucode rev %d\n",			cpusid.cpu8200.cp_5 ? '5' : '0',			cpusid.cpu8200.cp_hrev, cpusid.cpu8200.cp_patch,			cpusid.cpu8200.cp_secp, cpusid.cpu8200.cp_urev);		mastercpu = mfpr(BINID);		break;#endif#if VAX780	case VAX_780:		printf("\VAX 11/78%c, serial# %d(%d), hardware ECO level %d(%d)\n",			cpusid.cpu780.cp_5 ? '5' : '0',			cpusid.cpu780.cp_sno, cpusid.cpu780.cp_plant,			cpusid.cpu780.cp_eco >> 4, cpusid.cpu780.cp_eco);		break;#endif#if VAX750	case VAX_750:		printf("VAX 11/750, hardware rev %d, ucode rev %d\n",			cpusid.cpu750.cp_hrev, cpusid.cpu750.cp_urev);		break;#endif#if VAX730	case VAX_730:		printf("VAX 11/730, ucode rev %d\n", cpusid.cpu730.cp_urev);		break;#endif#if VAX630	case VAX_630:		printf("MicroVAX-II\n");		break;#endif#if VAX650	case VAX_650:		printf("MicroVAX 3000, ucode rev %d\n", cpusid.cpu650.cp_urev);		break;#endif	}	for (ocp = percpu; ocp->pc_cputype; ocp++)		if (ocp->pc_cputype == cpusid.cpuany.cp_type) {			cpuspeed = ocp->pc_cpuspeed;			cpuops = ocp->pc_ops;			if (cpuops->cpu_init != NULL)				(*cpuops->cpu_init)();			probeio(ocp);			/*			 * Write protect the scb and UNIBUS interrupt vectors.			 * It is strange that this code is here, but this is			 * as soon as we are done mucking with it, and the			 * write-enable was done in assembly language			 * to which we will never return.			 */			for (ip = kvtopte(scb); ip < kvtopte(eUNIvec); ip++) {				*(int *)ip &= ~PG_PROT;				*(int *)ip |= PG_KR;			}			mtpr(TBIA, 0);#if GENERIC			if ((boothowto & RB_ASKNAME) == 0)				setroot();			setconf();#else			setroot();#endif			/*			 * Configure swap area and related system			 * parameter based on device(s) used.			 */			swapconf();			cold = 0;			memenable();			return;		}	printf("cpu type %d not configured\n", cpusid.cpuany.cp_type);	asm("halt");}#if VAX8600 || VAX780 || VAX750 || VAX730int	nexnum;		/* current nexus number */int	nsbi;		/* current sbi number */#endif#if VAX8200int	numkdb;		/* current ``kdb'' number */int	bi_nodes;	/* XXX remembers found bi nodes */#endif/* * Probe the main IO bus(es). * The percpu structure gives us a handle on the addresses and/or types. */probeio(pcpu)	register struct percpu *pcpu;{	register struct iobus *iob;	int ioanum;	ioanum = 0;	for (iob = pcpu->pc_io; ioanum < pcpu->pc_nioa; ioanum++, iob++) {		switch (iob->io_type) {#if VAX630 || VAX650		case IO_QBUS:			probeqbus((struct qbus *)iob->io_details);			break;#endif#if VAX780 || VAX750 || VAX730		case IO_SBI780:		case IO_CMI750:		case IO_XXX730:			probenexi((struct nexusconnect *)iob->io_details);			break;#endif#if VAX8600		case IO_ABUS:			probe_Abus(ioanum, iob);			break;#endif#if VAX8200		case IO_BI:			probe_bi((struct bibus *)iob->io_details);			break;#endif		default:			if (iob->io_addr) {			    printf(		"IO adaptor %d, type %d, at address 0x%x is unsupported\n",				ioanum, iob->io_type, iob->io_addr);			} else			    printf("IO adaptor %d, type %d, is unsupported\n",				ioanum, iob->io_type);			break;		}	}}#if VAX8600probe_Abus(ioanum, iob)	register struct iobus *iob;{	register struct ioa *ioap;	union ioacsr ioacsr;	int type;	struct sbia_regs *sbiaregs;#ifdef notyet	int sbi1fail(), sbi1alert(), sbi1fault(), sbi1err();#endif	ioap = &ioa[ioanum];	ioaccess(iob->io_addr, Ioamap[ioanum], iob->io_size);	if (badaddr((caddr_t)ioap, 4))		return;	ioacsr.ioa_csr = ioap->ioacsr.ioa_csr;	type = ioacsr.ioa_type & IOA_TYPMSK;	switch (type) {	case IOA_SBIA:		printf("SBIA%d at IO adaptor %d address 0x%x\n",		    nsbi, ioanum, iob->io_addr);#ifdef notyet		/* I AM NOT SURE THESE ARE IN THE SAME PLACES */		if (nscb == 1) {			scb[1].scb_sbifail = scbentry(sbi1fail, SCB_ISTACK);			/* maybe not sbifail, maybe scb1.scb_cmrd */			/* but how can I find out without a broken SBIA1? */			scb[1].scb_sbialert = scbentry(sbi1alert, SCB_ISTACK);			scb[1].scb_sbifault = scbentry(sbi1fault, SCB_ISTACK);			scb[1].scb_sbierr = scbentry(sbi1err, SCB_ISTACK);		}#endif		probenexi((struct nexusconnect *)iob->io_details);		nsbi++;		sbiaregs = (struct sbia_regs *)ioap;		sbiaregs->sbi_errsum = -1;		sbiaregs->sbi_error = 0x1000;		sbiaregs->sbi_fltsts = 0xc0000;		break;	default:		printf("IOA%d at address 0x%x is unsupported (type = 0x%x)\n",		    ioanum, iob->io_addr, ioacsr.ioa_type);		break;	}}#endif#if VAX8600 || VAX780 || VAX750 || VAX730/* * Probe nexus space, finding the interconnects * and setting up and probing mba's and uba's for devices. */probenexi(pnc)	register struct nexusconnect *pnc;{	register struct nexus *nxv;	struct nexus *nxp = pnc->psb_nexbase;	union nexcsr nexcsr;	int i;	ioaccess((caddr_t)nxp, Nexmap[nsbi * NNEXSBI],	    pnc->psb_nnexus * sizeof(struct nexus));	nxv = &nexus[nsbi * NNEXSBI];	for (nexnum = 0; nexnum < pnc->psb_nnexus; nexnum++, nxp++, nxv++) {		if (badaddr((caddr_t)nxv, 4))			continue;		if (pnc->psb_nextype && pnc->psb_nextype[nexnum] != NEX_ANY)			nexcsr.nex_csr = pnc->psb_nextype[nexnum];		else			nexcsr = nxv->nexcsr;		if (nexcsr.nex_csr&NEX_APD)			continue;		switch (nexcsr.nex_type) {		case NEX_MBA:			printf("mba%d at tr%d\n", nummba, nexnum);			if (nummba >= NMBA) {				printf("%d mba's", ++nummba);				goto unconfig;			}#if NMBA > 0			mbafind(nxv, nxp);			nummba++;#endif			break;		case NEX_UBA0:		case NEX_UBA1:		case NEX_UBA2:		case NEX_UBA3:			printf("uba%d at tr%d\n", numuba, nexnum);			if (numuba >= NUBA) {				printf("%d uba's", ++numuba);				goto unconfig;			}#if NUBA > 0#if VAX750			if (numuba >= 2 && cpu == VAX_750) {				printf("More than 2 UBA's");				goto unsupp;			}#endif#if defined(VAX780) || defined(VAX8600)			if (cpu == VAX_780 || cpu == VAX_8600)				setscbnex(ubaintv[numuba]);#endif			i = nexcsr.nex_type - NEX_UBA0;			probeuba((struct uba_regs *)nxv, (struct uba_regs *)nxp,			    pnc->psb_umaddr[i]);#endif /* NUBA */			break;		case NEX_DR32:		/* there can be more than one... are there other codes??? */			printf("dr32");			goto unsupp;		case NEX_MEM4:		case NEX_MEM4I:		case NEX_MEM16:		case NEX_MEM16I:			printf("mcr%d at tr%d\n", nmcr, nexnum);			if (nmcr >= MAXNMCR) {				printf("%d mcr's", ++nmcr);				goto unconfig;			}			switch (cpu) {#if VAX780			case VAX_780:				/* only ka780 code looks at type */				mcrtype[nmcr] = M780C;				break;#endif			default:				break;			}			mcraddr[nmcr++] = (caddr_t)nxv;			break;#if VAX780		case NEX_MEM64I:		case NEX_MEM64L:		case NEX_MEM64LI:		case NEX_MEM256I:		case NEX_MEM256L:		case NEX_MEM256LI:			printf("mcr%d (el) at tr%d\n", nmcr, nexnum);			if (nmcr >= MAXNMCR) {				printf("%d mcr's", ++nmcr);				goto unconfig;			}			mcrtype[nmcr] = M780EL;			mcraddr[nmcr++] = (caddr_t)nxv;			if (nexcsr.nex_type != NEX_MEM64I && 			    nexcsr.nex_type != NEX_MEM256I)				break;			/* fall into ... */		case NEX_MEM64U:		case NEX_MEM64UI:		case NEX_MEM256U:		case NEX_MEM256UI:			printf("mcr%d (eu) at tr%d\n", nmcr, nexnum);			if (nmcr >= MAXNMCR) {				printf("%d mcr's", ++nmcr);				goto unconfig;			}			mcrtype[nmcr] = M780EU;			mcraddr[nmcr++] = (caddr_t)nxv;			break;#endif		case NEX_MPM0:		case NEX_MPM1:		case NEX_MPM2:		case NEX_MPM3:			printf("mpm");

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲综合丝袜美腿| 极品销魂美女一区二区三区| 一区二区三区欧美在线观看| 依依成人综合视频| 日韩国产高清在线| 国产精品正在播放| 色婷婷久久久亚洲一区二区三区| 国产精一品亚洲二区在线视频| 国产馆精品极品| 欧美午夜理伦三级在线观看| 欧美群妇大交群中文字幕| 久久久一区二区三区捆绑**| 国产精品国产三级国产a| 天天综合网天天综合色| 激情深爱一区二区| 91美女视频网站| 欧美xfplay| 亚洲黄色在线视频| 国产乱人伦精品一区二区在线观看 | 五月天久久比比资源色| 成人午夜在线免费| 久久亚洲综合色一区二区三区| 日韩精品福利网| 欧美综合色免费| 亚洲精品国产成人久久av盗摄| 国产精品夜夜嗨| 精品99一区二区三区| 久久精品国产澳门| 日韩一区二区麻豆国产| 日本aⅴ免费视频一区二区三区 | 国产精品一区二区黑丝| 日韩一区二区三| 麻豆国产精品官网| 日韩欧美国产综合| 久久精品国产一区二区三区免费看 | 国产伦精品一区二区三区免费迷 | 色哟哟一区二区| 国产精品美女一区二区三区| 国产精品成人免费在线| 亚洲精品一二三四区| 日日骚欧美日韩| 午夜视频在线观看一区二区 | 日韩黄色免费电影| 欧美日韩在线播放三区四区| 伊人一区二区三区| 欧美午夜一区二区三区| 亚洲mv在线观看| 欧美一级黄色录像| 国产在线乱码一区二区三区| 精品日韩欧美在线| 国产精品77777| 亚洲欧美国产高清| 欧美揉bbbbb揉bbbbb| 日韩电影在线观看一区| 日韩你懂的在线播放| 国产激情视频一区二区三区欧美| 国产情人综合久久777777| 成人中文字幕合集| 亚洲午夜在线视频| 精品国产一区二区亚洲人成毛片| 国产成人丝袜美腿| 亚洲精品国产a久久久久久 | 欧美大片在线观看| 粉嫩aⅴ一区二区三区四区 | 久久久噜噜噜久噜久久综合| 成人一区二区三区在线观看| 亚洲手机成人高清视频| 欧美男同性恋视频网站| 国产精品自拍三区| 一区二区三区毛片| 精品国产凹凸成av人导航| 不卡电影免费在线播放一区| 亚洲一二三区不卡| 久久久亚洲精华液精华液精华液| 99久久综合国产精品| 日本美女一区二区三区| 欧美精品一区二区三区在线播放| 北条麻妃一区二区三区| 午夜精品成人在线视频| 国产网站一区二区三区| 精品视频色一区| 成人精品免费网站| 日韩国产在线观看| 亚洲欧洲日本在线| 久久久一区二区三区| 欧美人与禽zozo性伦| 不卡一区在线观看| 国产在线精品免费| 偷窥少妇高潮呻吟av久久免费| 国产精品美女一区二区在线观看| 欧美一区二区三区人| 色综合久久久久久久| 国产成人精品三级麻豆| 日本不卡一二三| 亚洲一区二区三区四区不卡| 国产精品国产三级国产普通话蜜臀 | 风流少妇一区二区| 美女任你摸久久| 亚洲二区视频在线| 亚洲精品精品亚洲| 亚洲欧洲无码一区二区三区| 久久久精品中文字幕麻豆发布| 91精品国产综合久久久久久久久久| 99re热视频这里只精品| 岛国精品一区二区| 国产成人在线影院 | 国产乱人伦偷精品视频不卡| 免费黄网站欧美| 日韩精品一级二级| 天涯成人国产亚洲精品一区av| 一区二区久久久久久| 成人免费一区二区三区视频| 国产欧美在线观看一区| 久久久综合精品| 国产亚洲欧美日韩俺去了| 在线综合视频播放| 欧美日韩国产精品成人| 欧美精三区欧美精三区| 欧美日韩一区二区三区在线| 欧美曰成人黄网| 91视频.com| av成人免费在线观看| 成人99免费视频| 色婷婷av一区二区三区之一色屋| 91色在线porny| 91久久免费观看| 欧美日韩成人高清| 欧美一级生活片| 久久久久久麻豆| 国产精品久99| 一区二区在线观看视频 | 欧美天天综合网| 欧美日韩成人一区| 精品久久久久久最新网址| 久久午夜电影网| 中文字幕中文字幕在线一区 | 色综合久久久久综合体| 欧美三区免费完整视频在线观看| 欧美日韩亚洲丝袜制服| 精品免费一区二区三区| 久久网这里都是精品| 国产精品久久久久影视| 一区二区成人在线| 日韩激情一区二区| 粉嫩av一区二区三区粉嫩| 色天天综合久久久久综合片| 欧美三级资源在线| 日韩精品一区二区三区在线播放 | 欧美一级理论性理论a| 精品粉嫩aⅴ一区二区三区四区| 国产精品午夜免费| 亚洲福利一区二区三区| 国产东北露脸精品视频| 色婷婷激情综合| 精品理论电影在线观看| 亚洲免费观看在线观看| 九色porny丨国产精品| 99re这里只有精品视频首页| 欧美一区二区国产| 国产精品久久久久久妇女6080| 香蕉av福利精品导航| 国产98色在线|日韩| 精品视频在线看| 国产精品人成在线观看免费| 亚洲va欧美va人人爽| 成人国产精品免费观看| 欧美刺激午夜性久久久久久久| 国产精品欧美综合在线| 日本vs亚洲vs韩国一区三区二区| 粉嫩aⅴ一区二区三区四区| 欧美一区二区视频网站| 成人免费视频在线观看| 国产专区欧美精品| 欧美精品一卡二卡| 一区二区三区在线影院| 国产美女视频91| 欧美一级搡bbbb搡bbbb| 亚洲一二三四区不卡| fc2成人免费人成在线观看播放| 日韩精品专区在线| 日本怡春院一区二区| 色偷偷一区二区三区| 中文字幕不卡在线| 国内精品在线播放| 日韩三级在线免费观看| 亚州成人在线电影| 日本高清免费不卡视频| 中文字幕亚洲成人| 国产a区久久久| 久久九九久精品国产免费直播| 日韩高清一级片| 欧美日本在线看| 性欧美大战久久久久久久久| 色欧美日韩亚洲| 亚洲嫩草精品久久| 99精品在线免费| 亚洲色图视频网| 成人性视频免费网站| 欧美激情在线一区二区三区| 国产精品乡下勾搭老头1|