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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? amd.c

?? 底層驅(qū)動開發(fā)
?? C
字號:
#include <linux/init.h>#include <linux/bitops.h>#include <linux/mm.h>#include <asm/io.h>#include <asm/processor.h>#include "cpu.h"/* *	B step AMD K6 before B 9730xxxx have hardware bugs that can cause *	misexecution of code under Linux. Owners of such processors should *	contact AMD for precise details and a CPU swap. * *	See	http://www.multimania.com/poulot/k6bug.html *		http://www.amd.com/K6/k6docs/revgd.html * *	The following test is erm.. interesting. AMD neglected to up *	the chip setting when fixing the bug but they also tweaked some *	performance at the same time.. */ extern void vide(void);__asm__(".align 4\nvide: ret");static void __init init_amd(struct cpuinfo_x86 *c){	u32 l, h;	int mbytes = num_physpages >> (20-PAGE_SHIFT);	int r;#ifdef CONFIG_SMP	unsigned long long value;	/* Disable TLB flush filter by setting HWCR.FFDIS on K8	 * bit 6 of msr C001_0015	 *	 * Errata 63 for SH-B3 steppings	 * Errata 122 for all steppings (F+ have it disabled by default)	 */	if (c->x86 == 15) {		rdmsrl(MSR_K7_HWCR, value);		value |= 1 << 6;		wrmsrl(MSR_K7_HWCR, value);	}#endif	/*	 *	FIXME: We should handle the K5 here. Set up the write	 *	range and also turn on MSR 83 bits 4 and 31 (write alloc,	 *	no bus pipeline)	 */	/* Bit 31 in normal CPUID used for nonstandard 3DNow ID;	   3DNow is IDd by bit 31 in extended CPUID (1*32+31) anyway */	clear_bit(0*32+31, c->x86_capability);		r = get_model_name(c);	switch(c->x86)	{		case 4:		/*		 * General Systems BIOSen alias the cpu frequency registers		 * of the Elan at 0x000df000. Unfortuantly, one of the Linux		 * drivers subsequently pokes it, and changes the CPU speed.		 * Workaround : Remove the unneeded alias.		 */#define CBAR		(0xfffc) /* Configuration Base Address  (32-bit) */#define CBAR_ENB	(0x80000000)#define CBAR_KEY	(0X000000CB)			if (c->x86_model==9 || c->x86_model == 10) {				if (inl (CBAR) & CBAR_ENB)					outl (0 | CBAR_KEY, CBAR);			}			break;		case 5:			if( c->x86_model < 6 )			{				/* Based on AMD doc 20734R - June 2000 */				if ( c->x86_model == 0 ) {					clear_bit(X86_FEATURE_APIC, c->x86_capability);					set_bit(X86_FEATURE_PGE, c->x86_capability);				}				break;			}						if ( c->x86_model == 6 && c->x86_mask == 1 ) {				const int K6_BUG_LOOP = 1000000;				int n;				void (*f_vide)(void);				unsigned long d, d2;								printk(KERN_INFO "AMD K6 stepping B detected - ");								/*				 * It looks like AMD fixed the 2.6.2 bug and improved indirect 				 * calls at the same time.				 */				n = K6_BUG_LOOP;				f_vide = vide;				rdtscl(d);				while (n--) 					f_vide();				rdtscl(d2);				d = d2-d;								/* Knock these two lines out if it debugs out ok */				printk(KERN_INFO "AMD K6 stepping B detected - ");				/* -- cut here -- */				if (d > 20*K6_BUG_LOOP) 					printk("system stability may be impaired when more than 32 MB are used.\n");				else 					printk("probably OK (after B9730xxxx).\n");				printk(KERN_INFO "Please see http://membres.lycos.fr/poulot/k6bug.html\n");			}			/* K6 with old style WHCR */			if (c->x86_model < 8 ||			   (c->x86_model== 8 && c->x86_mask < 8)) {				/* We can only write allocate on the low 508Mb */				if(mbytes>508)					mbytes=508;				rdmsr(MSR_K6_WHCR, l, h);				if ((l&0x0000FFFF)==0) {					unsigned long flags;					l=(1<<0)|((mbytes/4)<<1);					local_irq_save(flags);					wbinvd();					wrmsr(MSR_K6_WHCR, l, h);					local_irq_restore(flags);					printk(KERN_INFO "Enabling old style K6 write allocation for %d Mb\n",						mbytes);				}				break;			}			if ((c->x86_model == 8 && c->x86_mask >7) ||			     c->x86_model == 9 || c->x86_model == 13) {				/* The more serious chips .. */				if(mbytes>4092)					mbytes=4092;				rdmsr(MSR_K6_WHCR, l, h);				if ((l&0xFFFF0000)==0) {					unsigned long flags;					l=((mbytes>>2)<<22)|(1<<16);					local_irq_save(flags);					wbinvd();					wrmsr(MSR_K6_WHCR, l, h);					local_irq_restore(flags);					printk(KERN_INFO "Enabling new style K6 write allocation for %d Mb\n",						mbytes);				}				/*  Set MTRR capability flag if appropriate */				if (c->x86_model == 13 || c->x86_model == 9 ||				   (c->x86_model == 8 && c->x86_mask >= 8))					set_bit(X86_FEATURE_K6_MTRR, c->x86_capability);				break;			}			break;		case 6: /* An Athlon/Duron */ 			/* Bit 15 of Athlon specific MSR 15, needs to be 0 			 * to enable SSE on Palomino/Morgan/Barton CPU's.			 * If the BIOS didn't enable it already, enable it here.			 */			if (c->x86_model >= 6 && c->x86_model <= 10) {				if (!cpu_has(c, X86_FEATURE_XMM)) {					printk(KERN_INFO "Enabling disabled K7/SSE Support.\n");					rdmsr(MSR_K7_HWCR, l, h);					l &= ~0x00008000;					wrmsr(MSR_K7_HWCR, l, h);					set_bit(X86_FEATURE_XMM, c->x86_capability);				}			}			/* It's been determined by AMD that Athlons since model 8 stepping 1			 * are more robust with CLK_CTL set to 200xxxxx instead of 600xxxxx			 * As per AMD technical note 27212 0.2			 */			if ((c->x86_model == 8 && c->x86_mask>=1) || (c->x86_model > 8)) {				rdmsr(MSR_K7_CLK_CTL, l, h);				if ((l & 0xfff00000) != 0x20000000) {					printk ("CPU: CLK_CTL MSR was %x. Reprogramming to %x\n", l,						((l & 0x000fffff)|0x20000000));					wrmsr(MSR_K7_CLK_CTL, (l & 0x000fffff)|0x20000000, h);				}			}			break;	}	switch (c->x86) {	case 15:		set_bit(X86_FEATURE_K8, c->x86_capability);		break;	case 6:		set_bit(X86_FEATURE_K7, c->x86_capability); 		break;	}	display_cacheinfo(c);	if (cpuid_eax(0x80000000) >= 0x80000008) {		c->x86_num_cores = (cpuid_ecx(0x80000008) & 0xff) + 1;		if (c->x86_num_cores & (c->x86_num_cores - 1))			c->x86_num_cores = 1;	}#ifdef CONFIG_X86_HT	/*	 * On a AMD dual core setup the lower bits of the APIC id	 * distingush the cores.  Assumes number of cores is a power	 * of two.	 */	if (c->x86_num_cores > 1) {		int cpu = smp_processor_id();		unsigned bits = 0;		while ((1 << bits) < c->x86_num_cores)			bits++;		cpu_core_id[cpu] = phys_proc_id[cpu] & ((1<<bits)-1);		phys_proc_id[cpu] >>= bits;		printk(KERN_INFO "CPU %d(%d) -> Core %d\n",		       cpu, c->x86_num_cores, cpu_core_id[cpu]);	}#endif}static unsigned int amd_size_cache(struct cpuinfo_x86 * c, unsigned int size){	/* AMD errata T13 (order #21922) */	if ((c->x86 == 6)) {		if (c->x86_model == 3 && c->x86_mask == 0)	/* Duron Rev A0 */			size = 64;		if (c->x86_model == 4 &&		    (c->x86_mask==0 || c->x86_mask==1))	/* Tbird rev A1/A2 */			size = 256;	}	return size;}static struct cpu_dev amd_cpu_dev __initdata = {	.c_vendor	= "AMD",	.c_ident 	= { "AuthenticAMD" },	.c_models = {		{ .vendor = X86_VENDOR_AMD, .family = 4, .model_names =		  {			  [3] = "486 DX/2",			  [7] = "486 DX/2-WB",			  [8] = "486 DX/4", 			  [9] = "486 DX/4-WB", 			  [14] = "Am5x86-WT",			  [15] = "Am5x86-WB" 		  }		},	},	.c_init		= init_amd,	.c_identify	= generic_identify,	.c_size_cache	= amd_size_cache,};int __init amd_init_cpu(void){	cpu_devs[X86_VENDOR_AMD] = &amd_cpu_dev;	return 0;}//early_arch_initcall(amd_init_cpu);

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美喷水一区二区| 一区二区三区精品视频| 亚洲女厕所小便bbb| 婷婷夜色潮精品综合在线| 成人中文字幕在线| 欧美一区二区三区公司| 国产精品女主播av| 久久国产精品免费| 欧美曰成人黄网| 国产精品久久久99| 国产精品一区二区91| 欧美一级二级三级蜜桃| 洋洋成人永久网站入口| caoporm超碰国产精品| 久久综合久久综合久久综合| 亚洲成a人v欧美综合天堂 | 久久精品无码一区二区三区| 亚洲国产va精品久久久不卡综合| 成人精品亚洲人成在线| 国产日产欧产精品推荐色| 麻豆传媒一区二区三区| 欧美日本国产视频| 亚洲综合成人在线视频| 色综合网色综合| 中文字幕一区二区三中文字幕| 久久99这里只有精品| 欧美一区2区视频在线观看| 亚洲主播在线观看| 欧美一区二区三区在线观看 | 午夜精品免费在线观看| 欧美亚洲国产一区在线观看网站| 国产精品美女久久久久久| 国产成+人+日韩+欧美+亚洲| 久久综合九色综合久久久精品综合| 日本免费在线视频不卡一不卡二| 欧美日韩国产高清一区| 视频一区视频二区在线观看| 在线不卡一区二区| 天堂蜜桃一区二区三区| 欧美一级片免费看| 国产一区二区在线视频| 久久精品欧美日韩精品| 99久久综合精品| 亚洲欧美激情视频在线观看一区二区三区 | 欧美日韩www| 丝瓜av网站精品一区二区| 欧美福利视频一区| 琪琪久久久久日韩精品| www激情久久| 懂色av一区二区三区免费观看| 国产精品免费久久| 91欧美一区二区| 亚洲成av人片在www色猫咪| 91精品国产一区二区三区 | 亚洲五月六月丁香激情| 69堂精品视频| 国产麻豆日韩欧美久久| 中文字幕亚洲欧美在线不卡| 在线免费观看日本欧美| 日本va欧美va欧美va精品| 久久新电视剧免费观看| 99精品视频在线播放观看| 亚洲成a人v欧美综合天堂 | 亚洲激情六月丁香| 欧美久久久久久久久中文字幕| 首页国产欧美久久| 久久精品一区二区三区不卡| 色婷婷综合激情| 免费在线观看一区二区三区| 国产欧美日韩在线看| 欧美肥妇bbw| 成人av动漫网站| 久久精品国产亚洲a| 亚洲欧洲无码一区二区三区| 91精品国产欧美一区二区18| 国产成人精品一区二区三区四区| 一区二区三区四区精品在线视频| 日韩欧美一二区| 色菇凉天天综合网| 狠狠色狠狠色综合系列| 亚洲免费资源在线播放| 久久久久国产精品厨房| 欧美久久一二区| 99精品视频一区二区| 激情欧美日韩一区二区| 日日噜噜夜夜狠狠视频欧美人 | 粉嫩av亚洲一区二区图片| 亚洲成人免费影院| 中文字幕一区二区三区四区| 日韩一二在线观看| 欧美三片在线视频观看| yourporn久久国产精品| 国产麻豆精品在线观看| 日本成人在线视频网站| 一区二区三区日韩精品视频| 中国色在线观看另类| 精品久久国产老人久久综合| 欧美日韩高清在线播放| 一本色道久久综合亚洲精品按摩| 国产精品一区二区果冻传媒| 免费三级欧美电影| 午夜在线电影亚洲一区| 亚洲青青青在线视频| 国产欧美1区2区3区| 精品国产乱码久久| 欧美一区二区视频观看视频 | 午夜精品久久一牛影视| 最新国产精品久久精品| 中文字幕不卡三区| 欧美国产综合色视频| 国产午夜亚洲精品理论片色戒| 欧美日韩一区小说| 欧美网站大全在线观看| 色婷婷久久久久swag精品| 91麻豆国产福利在线观看| 一本色道久久加勒比精品 | 一区二区三区精品视频在线| 亚洲人成小说网站色在线| 中文字幕一区二区三区不卡 | 精品毛片乱码1区2区3区| 91精品久久久久久久99蜜桃| 这里只有精品电影| 日韩亚洲欧美中文三级| 91精品国产全国免费观看| 欧美成人性福生活免费看| 欧美xxxxx裸体时装秀| 日韩午夜激情电影| 国产性天天综合网| 国产精品进线69影院| 亚洲欧美日韩国产综合| 亚洲素人一区二区| 亚洲夂夂婷婷色拍ww47| 亚洲va欧美va国产va天堂影院| 日韩va亚洲va欧美va久久| 精品在线一区二区| 国产成人高清在线| 91麻豆国产福利精品| 欧美三级资源在线| 精品国产91乱码一区二区三区| 国产亚洲短视频| 一区二区三区av电影| 日韩电影在线一区二区| 国内欧美视频一区二区 | 亚洲黄一区二区三区| 日韩专区一卡二卡| 国产很黄免费观看久久| 在线免费精品视频| 精品美女在线观看| 亚洲欧美日韩中文播放| 日本午夜精品一区二区三区电影| 日韩毛片视频在线看| 亚洲国产精品久久一线不卡| 看片网站欧美日韩| 91免费看视频| 欧美成人综合网站| 亚洲精品国久久99热| 日本在线不卡视频一二三区| 成人午夜视频网站| 欧美日韩一区二区在线观看| 91精品免费观看| 国产精品盗摄一区二区三区| 亚洲成人三级小说| 99久久婷婷国产综合精品| 91精品午夜视频| 国产精品国产a级| 美国十次综合导航| 99久久婷婷国产综合精品电影| 欧美美女一区二区| 欧美刺激午夜性久久久久久久| 亚洲免费观看高清完整| 国产高清精品在线| 在线成人av影院| 最新成人av在线| 国产suv精品一区二区三区 | 一本到不卡免费一区二区| 欧美大片拔萝卜| 亚洲第一搞黄网站| 91浏览器打开| 国产欧美精品在线观看| 精品在线你懂的| 91精品欧美久久久久久动漫| 夜夜精品视频一区二区| 91老师国产黑色丝袜在线| 国产午夜精品一区二区三区嫩草| 久久99国产精品久久99果冻传媒| 欧美午夜一区二区| 亚洲免费视频中文字幕| 99久久99久久综合| 国产精品日韩精品欧美在线| 国产毛片精品国产一区二区三区| 日韩视频在线一区二区| 日韩国产一区二| 欧美日韩国产综合一区二区| 一区二区三区中文在线观看| 91影院在线免费观看| 日韩一区在线看| 色婷婷香蕉在线一区二区| 艳妇臀荡乳欲伦亚洲一区| 色999日韩国产欧美一区二区| 亚洲欧洲日产国产综合网|