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

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

?? mpparse.c

?? 一個2.4.21版本的嵌入式linux內核
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* *	Intel Multiprocessor Specificiation 1.1 and 1.4 *	compliant MP-table parsing routines. * *	(c) 1995 Alan Cox, Building #3 <alan@redhat.com> *	(c) 1998, 1999, 2000 Ingo Molnar <mingo@redhat.com> * *	Fixes *		Erich Boleyn	:	MP v1.4 and additional changes. *		Alan Cox	:	Added EBDA scanning *		Ingo Molnar	:	various cleanups and rewrites *	Maciej W. Rozycki	:	Bits for default MP configurations */#include <linux/mm.h>#include <linux/irq.h>#include <linux/init.h>#include <linux/delay.h>#include <linux/config.h>#include <linux/bootmem.h>#include <linux/smp_lock.h>#include <linux/kernel_stat.h>#include <linux/mc146818rtc.h>#include <asm/smp.h>#include <asm/mtrr.h>#include <asm/mpspec.h>#include <asm/pgalloc.h>#include <asm/e820.h>#include <asm/proto.h>/* Have we found an MP table */int smp_found_config = 0;/* * Various Linux-internal data structures created from the * MP-table. */int apic_version [MAX_APICS];int mp_bus_id_to_type [MAX_MP_BUSSES] = { [0 ... MAX_MP_BUSSES-1] = -1 };int mp_bus_id_to_pci_bus [MAX_MP_BUSSES] = { [0 ... MAX_MP_BUSSES-1] = -1 };int mp_current_pci_id = 0;/* I/O APIC entries */struct mpc_config_ioapic mp_ioapics[MAX_IO_APICS];/* # of MP IRQ source entries */struct mpc_config_intsrc mp_irqs[MAX_IRQ_SOURCES];/* MP IRQ source entries */int mp_irq_entries;int nr_ioapics;int pic_mode;unsigned long mp_lapic_addr = 0;/* Processor that is doing the boot up */unsigned int boot_cpu_id = -1U;/* Internal processor count */static unsigned int num_processors = 0;/* Bitmask of physically existing CPUs */unsigned long phys_cpu_present_map = 0;/* * Intel MP BIOS table parsing routines: *//* * Checksum an MP configuration block. */static int __init mpf_checksum(unsigned char *mp, int len){	int sum = 0;	while (len--)		sum += *mp++;	return sum & 0xFF;}static void __init MP_processor_info (struct mpc_config_processor *m){	int ver;	if (!(m->mpc_cpuflag & CPU_ENABLED))		return;	printk("Processor #%d %d:%d APIC version %d\n",		m->mpc_apicid,	       (m->mpc_cpufeature & CPU_FAMILY_MASK)>>8,	       (m->mpc_cpufeature & CPU_MODEL_MASK)>>4,		m->mpc_apicver);	if (m->mpc_featureflag&(1<<0))		Dprintk("    Floating point unit present.\n");	if (m->mpc_featureflag&(1<<7))		Dprintk("    Machine Exception supported.\n");	if (m->mpc_featureflag&(1<<8))		Dprintk("    64 bit compare & exchange supported.\n");	if (m->mpc_featureflag&(1<<9))		Dprintk("    Internal APIC present.\n");	if (m->mpc_cpuflag & CPU_BOOTPROCESSOR) {		Dprintk("    Bootup CPU\n");		boot_cpu_id = m->mpc_apicid;	}	num_processors++;	if (m->mpc_apicid > MAX_APICS) {		printk("Processor #%d INVALID. (Max ID: %d).\n",			m->mpc_apicid, MAX_APICS);		return;	}	ver = m->mpc_apicver;	phys_cpu_present_map |= 1 << m->mpc_apicid;	/*	 * Validate version	 */	if (ver == 0x0) {		printk("BIOS bug, APIC version is 0 for CPU#%d! fixing up to 0x10. (tell your hw vendor)\n", m->mpc_apicid);		ver = 0x10;	}	apic_version[m->mpc_apicid] = ver;}static void __init MP_bus_info (struct mpc_config_bus *m){	char str[7];	memcpy(str, m->mpc_bustype, 6);	str[6] = 0;	Dprintk("Bus #%d is %s\n", m->mpc_busid, str);	if (m->mpc_busid >= MAX_MP_BUSSES) {		printk(KERN_ERR "MAX_MP_BUSSES ERROR mpc_busid %d, max %d\n", m->mpc_busid, MAX_MP_BUSSES);	} else if (strncmp(str, "ISA", 3) == 0) {		mp_bus_id_to_type[m->mpc_busid] = MP_BUS_ISA;	} else if (strncmp(str, "EISA", 4) == 0) {		mp_bus_id_to_type[m->mpc_busid] = MP_BUS_EISA;	} else if (strncmp(str, "PCI", 3) == 0) {		mp_bus_id_to_type[m->mpc_busid] = MP_BUS_PCI;		mp_bus_id_to_pci_bus[m->mpc_busid] = mp_current_pci_id;		mp_current_pci_id++;	} else if (strncmp(str, "MCA", 3) == 0) {		mp_bus_id_to_type[m->mpc_busid] = MP_BUS_MCA;	} else {		printk("Unknown bustype %s\n", str);		panic("cannot handle bus - mail to linux-smp@vger.kernel.org");	}}static void __init MP_ioapic_info (struct mpc_config_ioapic *m){	if (!(m->mpc_flags & MPC_APIC_USABLE))		return;	printk("I/O APIC #%d Version %d at 0x%X.\n",		m->mpc_apicid, m->mpc_apicver, m->mpc_apicaddr);	if (nr_ioapics >= MAX_IO_APICS) {		printk("Max # of I/O APICs (%d) exceeded (found %d).\n",			MAX_IO_APICS, nr_ioapics);		panic("Recompile kernel with bigger MAX_IO_APICS!.\n");	}	if (!m->mpc_apicaddr) {		printk(KERN_ERR "WARNING: bogus zero I/O APIC address"			" found in MP table, skipping!\n");		return;	}	mp_ioapics[nr_ioapics] = *m;	nr_ioapics++;}static void __init MP_intsrc_info (struct mpc_config_intsrc *m){	mp_irqs [mp_irq_entries] = *m;	Dprintk("Int: type %d, pol %d, trig %d, bus %d,"		" IRQ %02x, APIC ID %x, APIC INT %02x\n",			m->mpc_irqtype, m->mpc_irqflag & 3,			(m->mpc_irqflag >> 2) & 3, m->mpc_srcbus,			m->mpc_srcbusirq, m->mpc_dstapic, m->mpc_dstirq);	if (++mp_irq_entries == MAX_IRQ_SOURCES)		panic("Max # of irq sources exceeded!!\n");}static void __init MP_lintsrc_info (struct mpc_config_lintsrc *m){	Dprintk("Lint: type %d, pol %d, trig %d, bus %d,"		" IRQ %02x, APIC ID %x, APIC LINT %02x\n",			m->mpc_irqtype, m->mpc_irqflag & 3,			(m->mpc_irqflag >> 2) &3, m->mpc_srcbusid,			m->mpc_srcbusirq, m->mpc_destapic, m->mpc_destapiclint);	/*	 * Well it seems all SMP boards in existence	 * use ExtINT/LVT1 == LINT0 and	 * NMI/LVT2 == LINT1 - the following check	 * will show us if this assumptions is false.	 * Until then we do not have to add baggage.	 */	if ((m->mpc_irqtype == mp_ExtINT) &&		(m->mpc_destapiclint != 0))			BUG();	if ((m->mpc_irqtype == mp_NMI) &&		(m->mpc_destapiclint != 1))			BUG();}/* * Read/parse the MPC */static int __init smp_read_mpc(struct mp_config_table *mpc){	char str[16];	int count=sizeof(*mpc);	unsigned char *mpt=((unsigned char *)mpc)+count;	if (memcmp(mpc->mpc_signature,MPC_SIGNATURE,4)) {		panic("SMP mptable: bad signature [%c%c%c%c]!\n",			mpc->mpc_signature[0],			mpc->mpc_signature[1],			mpc->mpc_signature[2],			mpc->mpc_signature[3]);		return 0;	}	if (mpf_checksum((unsigned char *)mpc,mpc->mpc_length)) {		panic("SMP mptable: checksum error!\n");		return 0;	}	if (mpc->mpc_spec!=0x01 && mpc->mpc_spec!=0x04) {		printk(KERN_ERR "SMP mptable: bad table version (%d)!!\n",			mpc->mpc_spec);		return 0;	}	if (!mpc->mpc_lapic) {		printk(KERN_ERR "SMP mptable: null local APIC address!\n");		return 0;	}	memcpy(str,mpc->mpc_oem,8);	str[8]=0;	printk("OEM ID: %s ",str);	memcpy(str,mpc->mpc_productid,12);	str[12]=0;	printk("Product ID: %s ",str);	printk("APIC at: 0x%X\n",mpc->mpc_lapic);	/* save the local APIC address, it might be non-default */	mp_lapic_addr = mpc->mpc_lapic;	/*	 *	Now process the configuration blocks.	 */	while (count < mpc->mpc_length) {		switch(*mpt) {			case MP_PROCESSOR:			{				struct mpc_config_processor *m=					(struct mpc_config_processor *)mpt;				MP_processor_info(m);				mpt += sizeof(*m);				count += sizeof(*m);				break;			}			case MP_BUS:			{				struct mpc_config_bus *m=					(struct mpc_config_bus *)mpt;				MP_bus_info(m);				mpt += sizeof(*m);				count += sizeof(*m);				break;			}			case MP_IOAPIC:			{				struct mpc_config_ioapic *m=					(struct mpc_config_ioapic *)mpt;				MP_ioapic_info(m);				mpt+=sizeof(*m);				count+=sizeof(*m);				break;			}			case MP_INTSRC:			{				struct mpc_config_intsrc *m=					(struct mpc_config_intsrc *)mpt;				MP_intsrc_info(m);				mpt+=sizeof(*m);				count+=sizeof(*m);				break;			}			case MP_LINTSRC:			{				struct mpc_config_lintsrc *m=					(struct mpc_config_lintsrc *)mpt;				MP_lintsrc_info(m);				mpt+=sizeof(*m);				count+=sizeof(*m);				break;			}		}	}	if (!num_processors)		printk(KERN_ERR "SMP mptable: no processors registered!\n");

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产98色在线|日韩| 一区二区三区中文字幕| 亚洲精品水蜜桃| 午夜久久电影网| 国产iv一区二区三区| 欧洲av一区二区嗯嗯嗯啊| 日韩久久久精品| 亚洲国产精品一区二区www | 91精品国产综合久久久久久久久久| 国产精品久久久久影院| 国产高清精品网站| 成人黄色av网站在线| 欧美一区二区三区日韩视频| 国产精品色眯眯| 国产一区二区在线影院| 欧美精品久久天天躁| 亚洲综合成人在线视频| av在线不卡电影| 中文字幕av免费专区久久| 久久精品免费观看| 在线观看91av| 天天影视网天天综合色在线播放| 91色|porny| 亚洲欧美另类图片小说| 99在线热播精品免费| 国产午夜亚洲精品不卡| 国产综合久久久久久鬼色 | 一本色道久久综合亚洲aⅴ蜜桃 | 成人美女在线视频| 日韩免费在线观看| 日本亚洲三级在线| 777午夜精品视频在线播放| 亚洲综合一区在线| 色诱视频网站一区| 亚洲一级片在线观看| 色综合天天视频在线观看| 椎名由奈av一区二区三区| 成人精品视频网站| 亚洲欧洲韩国日本视频| 色偷偷一区二区三区| 亚洲精选一二三| 91成人在线免费观看| 亚洲线精品一区二区三区八戒| 在线国产亚洲欧美| 日本欧美一区二区| 久久伊人中文字幕| gogo大胆日本视频一区| 亚洲乱码中文字幕综合| 欧美性极品少妇| 日韩成人一区二区三区在线观看| 精品一区二区三区在线观看国产| 欧美日韩国产另类一区| 日韩精品亚洲一区| 日韩女同互慰一区二区| 国产精品91xxx| 亚洲国产高清aⅴ视频| 色综合欧美在线| 亚洲国产欧美在线| 精品国产91亚洲一区二区三区婷婷| 激情国产一区二区| 国产精品久久福利| 精品视频在线免费观看| 麻豆精品视频在线观看视频| 久久影院午夜片一区| 91视频在线看| 日韩精品一二三四| 欧美高清在线一区| 久久精品一区二区三区不卡牛牛| 丁香桃色午夜亚洲一区二区三区| 亚洲男人天堂av网| 精品一区二区三区免费| 亚洲乱码日产精品bd| 欧美高清hd18日本| 国产成人亚洲综合a∨猫咪| 亚洲精品免费视频| 日韩三级免费观看| 9l国产精品久久久久麻豆| 亚洲国产日产av| 国产精品女同一区二区三区| 精品婷婷伊人一区三区三| 精品无人区卡一卡二卡三乱码免费卡| 中文字幕在线视频一区| 日韩欧美国产一区二区在线播放| 波多野结衣中文字幕一区| 青青青伊人色综合久久| 亚洲人成在线播放网站岛国| 欧美精品一区二区在线播放| 色综合久久精品| 粉嫩绯色av一区二区在线观看| 日韩二区三区四区| 樱桃视频在线观看一区| 国产精品乱子久久久久| 精品国产凹凸成av人导航| 轻轻草成人在线| 9i看片成人免费高清| 三级成人在线视频| 国产精品九色蝌蚪自拍| 亚洲精品在线免费观看视频| 欧美手机在线视频| 99国产精品一区| 国产成人aaaa| 国产美女视频91| 久久超碰97中文字幕| 国产成人自拍高清视频在线免费播放| 亚洲电影第三页| 一区二区三区色| 自拍偷拍亚洲激情| 自拍偷自拍亚洲精品播放| 国产视频一区在线观看| 欧美成人官网二区| 日韩精品一区二区在线| 欧美男女性生活在线直播观看| 91蝌蚪porny成人天涯| 成人aaaa免费全部观看| 国产宾馆实践打屁股91| 福利一区二区在线观看| 国产精品一区不卡| 国产成人综合精品三级| 国产成人在线视频免费播放| 日韩精品乱码免费| 美脚の诱脚舐め脚责91| 免费成人av资源网| 国产一区二区精品在线观看| 国产精品1区2区3区在线观看| 极品少妇xxxx精品少妇| 国产精品一区二区三区99| 国产乱码精品一区二区三区五月婷| 精品综合久久久久久8888| 麻豆久久久久久久| 国产电影一区二区三区| 国产盗摄一区二区三区| 成人app在线| 欧美探花视频资源| 日韩欧美一区二区视频| 久久夜色精品国产欧美乱极品| 久久综合色之久久综合| 中文字幕av资源一区| 有码一区二区三区| 麻豆视频一区二区| jlzzjlzz亚洲女人18| 欧洲一区二区av| 精品国产精品网麻豆系列| 欧美激情一区在线| 亚洲国产一区二区三区| 久久国产成人午夜av影院| 欧美一区二区大片| 午夜免费久久看| 激情av综合网| 在线看日本不卡| 精品99一区二区三区| 中文字幕一区免费在线观看| 亚洲国产一区在线观看| 国产一区二区在线视频| 91精彩视频在线观看| 7777精品伊人久久久大香线蕉| 国产午夜精品福利| 亚洲成年人网站在线观看| 国产一区二三区| 欧美日韩一二区| 国产精品美日韩| 日本欧洲一区二区| 成人av一区二区三区| 制服丝袜av成人在线看| 国产精品久久久久久亚洲毛片 | 欧美videossexotv100| 中文字幕一区二区三区乱码在线| 五月婷婷激情综合| 97成人超碰视| 精品国产乱码久久久久久蜜臀| 国产精品一级在线| 亚洲成人手机在线| 国产精品亚洲成人| 欧美丰满少妇xxxxx高潮对白| 国产色一区二区| 美腿丝袜一区二区三区| 91久久人澡人人添人人爽欧美| 精品99999| 免费xxxx性欧美18vr| 亚洲精品一区二区三区福利| 一区二区三区不卡在线观看| 国产成人免费视频| 欧美va亚洲va| 免费观看在线综合| 正在播放亚洲一区| 亚洲高清免费观看 | 美女高潮久久久| 欧美视频精品在线观看| 1000精品久久久久久久久| 国产一区二区中文字幕| 日韩久久精品一区| 麻豆国产精品官网| 日韩欧美一级二级三级| 日本系列欧美系列| 欧美精品久久久久久久久老牛影院| 亚洲精品成人精品456| 91伊人久久大香线蕉| 国产精品国产三级国产普通话99| 自拍偷拍欧美激情| 亚洲成人动漫精品| 在线观看国产91|