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

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

?? amd.c

?? LINUX 2.6.17.4的源碼
?? 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;			}			if (c->x86_model == 10) {				/* AMD Geode LX is model 10 */				/* placeholder for any needed mods */				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;	}	if (c->x86 >= 6)		set_bit(X86_FEATURE_FXSAVE_LEAK, c->x86_capability);	display_cacheinfo(c);	if (cpuid_eax(0x80000000) >= 0x80000008) {		c->x86_max_cores = (cpuid_ecx(0x80000008) & 0xff) + 1;	}	if (cpuid_eax(0x80000000) >= 0x80000007) {		c->x86_power = cpuid_edx(0x80000007);		if (c->x86_power & (1<<8))			set_bit(X86_FEATURE_CONSTANT_TSC, c->x86_capability);	}#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_max_cores > 1) {		int cpu = smp_processor_id();		unsigned bits = 0;		while ((1 << bits) < c->x86_max_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_max_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);static int __init amd_exit_cpu(void){	cpu_devs[X86_VENDOR_AMD] = NULL;	return 0;}late_initcall(amd_exit_cpu);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美日韩另类视频免费观看| 欧美成人bangbros| 色婷婷久久久久swag精品| 国产欧美va欧美不卡在线| 国产成人午夜99999| 欧美成人性战久久| 国产成+人+日韩+欧美+亚洲| 国产精品热久久久久夜色精品三区| 成人免费高清视频在线观看| 亚洲欧洲日本在线| 欧美日韩在线直播| 国产自产2019最新不卡| 中文字幕一区二区三区蜜月| 欧美美女视频在线观看| 肉色丝袜一区二区| 精品国产成人系列| 色综合久久久久综合体| 另类综合日韩欧美亚洲| 精品久久久三级丝袜| 波多野结衣在线一区| 亚洲成人手机在线| 久久精品一区二区三区四区 | 在线精品观看国产| 国产成人av电影在线观看| 亚洲午夜在线视频| 国产欧美日韩三级| 日韩免费看网站| 色婷婷综合中文久久一本| 免费欧美日韩国产三级电影| 自拍偷在线精品自拍偷无码专区| 日韩一区国产二区欧美三区| 99综合影院在线| 久久成人免费网站| 午夜电影一区二区三区| 亚洲视频综合在线| 欧美电视剧在线观看完整版| eeuss国产一区二区三区| 美女一区二区视频| 五月综合激情网| 亚洲精品国产精华液| 国产精品看片你懂得| 久久精品视频免费观看| 精品福利一区二区三区免费视频| 欧美久久久久免费| 欧美日韩视频专区在线播放| 一本一道久久a久久精品综合蜜臀| 国产成人一级电影| 国产精品资源网站| 国产一二精品视频| 激情综合五月天| 久久99最新地址| 精品一区二区在线播放| 麻豆成人在线观看| 欧美老年两性高潮| 日韩三级伦理片妻子的秘密按摩| 欧美久久高跟鞋激| 日韩欧美在线观看一区二区三区| 91麻豆精品国产91久久久久久久久 | 国产精品国产三级国产普通话蜜臀| 久久免费的精品国产v∧| 欧美国产日韩a欧美在线观看| 国产精品视频线看| 中文字幕一区二区三区蜜月| 亚洲欧美激情视频在线观看一区二区三区 | 欧美高清你懂得| 日韩精品一区二区三区视频播放| 精品黑人一区二区三区久久| xnxx国产精品| 最近中文字幕一区二区三区| 一区二区欧美在线观看| 丝袜美腿亚洲综合| 国产精品白丝av| 一本色道久久综合亚洲精品按摩| 7777精品伊人久久久大香线蕉完整版| 日韩免费看的电影| 亚洲精品国产高清久久伦理二区| 亚洲成年人网站在线观看| 久久国产精品一区二区| 成人免费电影视频| 日韩精品在线一区二区| 亚洲伦理在线免费看| 久久国产精品99久久人人澡| av亚洲精华国产精华精华| 欧美午夜精品理论片a级按摩| 久久综合九色综合欧美98| 一区二区三区四区视频精品免费 | 91色九色蝌蚪| 精品少妇一区二区三区在线视频 | 成人午夜av在线| 日韩一区二区三区av| 亚洲精品美国一| 福利一区福利二区| 日韩欧美国产系列| 亚洲综合久久久久| kk眼镜猥琐国模调教系列一区二区| 欧美一卡二卡在线观看| 一区二区三区影院| 波多野结衣中文字幕一区| 久久久久久久久久电影| 日本不卡的三区四区五区| 欧美性色黄大片| 成人欧美一区二区三区在线播放| 激情小说欧美图片| 日韩三级.com| 视频一区二区中文字幕| 欧美中文字幕久久| 国产精品视频你懂的| 成人久久18免费网站麻豆| 久久久av毛片精品| 日韩欧美一二三| 久久av老司机精品网站导航| 欧美一区二区黄色| 美女www一区二区| 日韩欧美一区电影| 国产一区二区三区美女| 欧美va日韩va| 国产一区二区免费看| 久久综合久久综合久久| 国产乱人伦偷精品视频免下载| 欧美一级夜夜爽| 美腿丝袜在线亚洲一区| 久久综合九色综合97婷婷女人 | 国产在线不卡一区| 中文字幕av一区二区三区高| 波多野结衣在线一区| 亚洲午夜一区二区三区| 欧美顶级少妇做爰| 精品一区二区在线观看| 国产精品人成在线观看免费| av电影在线观看一区| 午夜精品视频一区| 精品欧美一区二区三区精品久久 | 亚洲中国最大av网站| 精品国产一区二区亚洲人成毛片| 粉嫩av一区二区三区在线播放| 亚洲制服欧美中文字幕中文字幕| 日韩欧美另类在线| 欧美日韩黄色一区二区| 国产成人av电影在线| 天天影视涩香欲综合网 | 色狠狠av一区二区三区| 国产乱理伦片在线观看夜一区| 一区二区三国产精华液| 中文字幕精品—区二区四季| 欧美一区二区观看视频| 欧美日韩高清一区二区| www.色精品| 成人深夜视频在线观看| 国产伦精一区二区三区| 中文字幕中文在线不卡住| 91视频你懂的| 日本va欧美va精品| 亚洲男帅同性gay1069| 国产日产欧美一区二区视频| 日韩欧美国产不卡| 7777精品伊人久久久大香线蕉最新版 | 欧美一级黄色录像| 欧美一区二区三区日韩| 成年人网站91| 亚洲一区自拍偷拍| 日韩一区二区麻豆国产| 欧美久久久久久久久中文字幕| 欧美一级精品在线| 中文字幕av一区二区三区免费看| 亚洲另类春色国产| 蜜臀精品一区二区三区在线观看| 国产精一区二区三区| 99国产欧美久久久精品| 91亚洲精品乱码久久久久久蜜桃 | 久久精品国产在热久久| 日韩理论片一区二区| 欧美日韩中文字幕精品| 色嗨嗨av一区二区三区| 欧美色图一区二区三区| 欧美剧在线免费观看网站| 日韩一区二区不卡| 国产无人区一区二区三区| 中文字幕第一区第二区| 亚洲日本在线天堂| 亚洲国产成人tv| 国产主播一区二区三区| 成人av电影观看| 欧美日韩一级二级| 久久久久久97三级| 亚洲一二三专区| 大胆欧美人体老妇| 欧美日韩精品一二三区| 久久色成人在线| 亚洲一区二区中文在线| 国产成人在线色| 欧美日韩国产在线播放网站| 欧美国产欧美亚州国产日韩mv天天看完整 | 欧美r级在线观看| 亚洲欧美自拍偷拍色图| 亚洲欧美aⅴ...| 日韩高清一区在线| 欧美天天综合网| 国产精品卡一卡二卡三| 国产一区二区三区免费| 欧美日本在线播放|