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

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

?? llsc4.c

?? 根據(jù)添加了fs2410平臺的arch目錄
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*  * * This file is subject to the terms and conditions of the GNU General Public * License.  See the file "COPYING" in the main directory of this archive * for more details. * * Copyright (C) 2000 Silicon Graphics, Inc. * Copyright (C) 2000 by Jack Steiner (steiner@sgi.com) */#include <linux/config.h>#include <linux/kernel.h>#include <linux/sched.h>#include <linux/init.h>#include <linux/interrupt.h>#include <linux/smp.h>#include <linux/kernel_stat.h>#include <linux/mm.h>#include <linux/delay.h>#include <linux/string.h>#include <asm/efi.h>#include <asm/page.h>#include <linux/threads.h>extern void bringup_set_led_bits(u8 bits, u8 mask);#include "llsc4.h"#ifdef STANDALONE#include "lock.h"#endif#ifdef INTTESTstatic int	inttest=0;#endif/* * Test parameter table for AUTOTEST */typedef struct {	int	passes;	int	linecount;	int	linepad;} autotest_table_t;autotest_table_t autotest_table[] = {	{5000000,	2,	0x2b4		},	{5000000,	16,	0,		},	{5000000,	16,	4,		},	{5000000,	128,	0x44		},	{5000000,	128,	0x84		},	{5000000,	128,	0x200		},	{5000000,	128,	0x204		},	{5000000,	128,	0x2b4		},	{5000000,	2,	8*MB+0x2b4	},	{5000000,	16,	8*MB+0		},	{5000000,	16,	8*MB+4		},	{5000000,	128,	8*MB+0x44	},	{5000000,	128,	8*MB+0x84	},	{5000000,	128,	8*MB+0x200	},	{5000000,	128,	8*MB+0x204	},	{5000000,	128,	8*MB+0x2b4	},	{0}};/* * Array of virtual addresses available for test purposes. */typedef struct {	long	vstart;	long	vend;	long	nextaddr;	int	wrapcount;} memmap_t;memmap_t 	memmap[MAXCHUNKS];int		memmapx=0;typedef struct {	void	*addr;	long	data[16];	long	data_fc[16];} capture_line_t;typedef struct {	int	size;	void	*blockaddr;	void	*shadaddr;	long	blockdata[16];	long	shaddata[16];	long	blockdata_fc[16];	long	shaddata_fc[16];	long	synerr;} capture_t;/* * PORTING NOTE: revisit this statement. On hardware we put mbase at 0 and * the rest of the tables have to start at 1MB to skip PROM tables. */#define THREADPRIVATE(t)	((threadprivate_t*)(((long)mbase)+1024*1024+t*((sizeof(threadprivate_t)+511)/512*512)))#define k_capture		mbase->sk_capture#define k_go			mbase->sk_go#define k_linecount		mbase->sk_linecount#define k_passes		mbase->sk_passes#define k_napticks		mbase->sk_napticks#define k_stop_on_error		mbase->sk_stop_on_error#define k_verbose		mbase->sk_verbose#define k_threadprivate		mbase->sk_threadprivate#define k_blocks		mbase->sk_blocks#define k_iter_msg		mbase->sk_iter_msg#define k_vv			mbase->sk_vv#define k_linepad		mbase->sk_linepad#define k_options		mbase->sk_options#define k_testnumber		mbase->sk_testnumber#define k_currentpass		mbase->sk_currentpassstatic long		blocks[MAX_LINECOUNT];		/* addresses of data blocks */static control_t	*mbase;static vint		initialized=0;static unsigned int ran_conf_llsc(int);static int  rerr(capture_t *, char *, void *, void *, int, int, int, int, int, int);static void dumpline(void *, char *, char *, void *, void *, int);static int  checkstop(int, int, uint);static void spin(int);static void capturedata(capture_t *, uint, void *, void *, int);static int  randn(uint max, uint *seed);static uint zrandom (uint *zranseed);static int  set_lock(uint *, uint);static int  clr_lock(uint *, uint);static void Speedo(void);int autotest_enabled=0;static int llsctest_number=-1;static int errstop_enabled=0;static int fail_enabled=0;static int selective_trigger=0;static int dump_block_addrs_opt=0;static uint errlock=0;static int __init autotest_enable(char *str){        autotest_enabled = 1;	return 1;}static int __init set_llscblkadr(char *str){	dump_block_addrs_opt = 1;	return 1;}static int __init set_llscselt(char *str){	selective_trigger = 1;	return 1;}static int __init set_llsctest(char *str){        llsctest_number = simple_strtol(str, &str, 10);	if (llsctest_number < 0 || llsctest_number > 15)		llsctest_number = -1;	return 1;}static int __init set_llscerrstop(char *str){        errstop_enabled = 1;	return 1;}static int __init set_llscfail(char *str){        fail_enabled = 8;	return 1;}static void print_params(void){	printk ("********* Enter AUTOTEST facility on master cpu *************\n");	printk ("  Test options:\n");	printk ("     llsctest=<n>\t%d\tTest number to run (all = -1)\n", llsctest_number);	printk ("     llscerrstop \t%s\tStop on error\n", errstop_enabled ? "on" : "off");	printk ("     llscfail    \t%s\tForce a failure to test the trigger & error messages\n", fail_enabled ? "on" : "off");	printk ("     llscselt    \t%s\tSelective triger on failures\n", selective_trigger ? "on" : "off");	printk ("     llscblkadr  \t%s\tDump data block addresses\n", dump_block_addrs_opt ? "on" : "off");	printk ("\n");}__setup("autotest", autotest_enable);__setup("llsctest=", set_llsctest);__setup("llscerrstop", set_llscerrstop);__setup("llscfail", set_llscfail);__setup("llscselt", set_llscselt);__setup("llscblkadr", set_llscblkadr);extern inline intset_lock(uint *lock, uint id){	uint	old;	old = cmpxchg_acq(lock, 0, id);	return (old == 0);}extern inline intclr_lock(uint *lock, uint id){	uint	old;	old = cmpxchg_rel(lock, id, 0);	return (old == id);}extern inline voidzero_lock(uint *lock){	*lock = 0;}/*------------------------------------------------------------------------+| Routine  :  ran_conf_llsc - ll/sc shared data test                      || Description: This test checks the coherency of shared data              |+------------------------------------------------------------------------*/static unsigned intran_conf_llsc(int thread){	private_t	pval;	share_t		sval, sval2;	uint		vv, linei, slinei, sharei, pass;	long		t;	lock_t		lockpat;	share_t		*sharecopy;	long		verbose, napticks, passes, linecount, lcount;	dataline_t	*linep, *slinep;	int		s, seed;	threadprivate_t	*tp;	uint		iter_msg, iter_msg_i=0;	int		vv_mask;	int		correct_errors;	int		errs=0;	int		stillbad;	capture_t	capdata;	private_t	*privp;	share_t		*sharep;	linecount = k_linecount;	napticks = k_napticks;	verbose = k_verbose;	passes = k_passes;	iter_msg = k_iter_msg;	seed = (thread + 1) * 647;	tp = THREADPRIVATE(thread);	vv_mask = (k_vv>>((thread%16)*4)) & 0xf;	correct_errors = k_options&0xff;	memset (&tp->private, 0, sizeof(tp->private));	memset (&capdata, 0, sizeof(capdata));	for (pass = 1; passes == 0 || pass < passes; pass++) {		lockpat = (pass & 0x0fffffff) + (thread <<28);		tp->threadpasses = pass;		if (checkstop(thread, pass, lockpat))			return 0;		iter_msg_i++;		if (iter_msg && iter_msg_i > iter_msg) {			printk("Thread %d, Pass %d\n", thread, pass);			iter_msg_i = 0;		}		lcount = 0;		/*		 * Select line to perform operations on.		 */		linei = randn(linecount, &seed);		sharei = randn(2, &seed);		slinei = (linei + (linecount/2))%linecount;		/* I dont like this - fix later */		linep = (dataline_t *)blocks[linei];		slinep = (dataline_t *)blocks[slinei];		if (sharei == 0)			sharecopy = &slinep->share0;		else			sharecopy = &slinep->share1;		vv = randn(4, &seed);		if ((vv_mask & (1<<vv)) == 0)			continue;		if (napticks) {			t = randn(napticks, &seed);			udelay(t);		}		privp = &linep->private[thread];		sharep = &linep->share[sharei];				switch(vv) {		case 0:			/* Read and verify private count on line. */			pval = *privp;			if (verbose)				printk("Line:%3d, Thread:%d:%d. Val: %x\n", linei, thread, vv, tp->private[linei]);			if (pval != tp->private[linei]) {				capturedata(&capdata, pass, privp, NULL, sizeof(*privp));				stillbad = (*privp != tp->private[linei]);				if (rerr(&capdata, "Private count", linep, slinep, thread, pass, linei, tp->private[linei], pval, stillbad)) {					return 1;				}				if (correct_errors) {					tp->private[linei] = *privp;				}				errs++;			}			break;		case 1:			/* Read, verify, and increment private count on line. */			pval = *privp;			if (verbose)				printk("Line:%3d, Thread:%d:%d. Val: %x\n", linei, thread, vv, tp->private[linei]);			if (pval != tp->private[linei]) {				capturedata(&capdata, pass, privp, NULL, sizeof(*privp));				stillbad = (*privp != tp->private[linei]);				if (rerr(&capdata, "Private count & inc", linep, slinep, thread, pass, linei, tp->private[linei], pval, stillbad)) {					return 1;				}				errs++;			}			pval++;			*privp = pval;			tp->private[linei] = pval;			break;		case 2:			/* Lock line, read and verify shared data. */			if (verbose)				printk("Line:%3d, Thread:%d:%d. Val: %x\n", linei, thread, vv, *sharecopy);			lcount = 0;			while (LOCK(sharei) != 1) {				if (checkstop(thread, pass, lockpat))					return 0;				if (lcount++>1000000) {					capturedata(&capdata, pass, LOCKADDR(sharei), NULL, sizeof(lock_t));					stillbad = (GETLOCK(sharei) != 0);					rerr(&capdata, "Shared data lock", linep, slinep, thread, pass, linei, 0, GETLOCK(sharei), stillbad);					return 1;				}				if ((lcount&0x3fff) == 0)					udelay(1000);			}			sval = *sharep;			sval2 = *sharecopy;			if (pass > 12 && thread == 0 && fail_enabled == 1)				sval++;			if (sval != sval2) {				capturedata(&capdata, pass, sharep, sharecopy, sizeof(*sharecopy));				stillbad = (*sharep != *sharecopy);				if (!stillbad && *sharep != sval && *sharecopy == sval2)					stillbad = 2;				if (rerr(&capdata, "Shared data", linep, slinep, thread, pass, linei, sval2, sval, stillbad)) {					return 1;				}				if (correct_errors)					*sharep = *sharecopy;				errs++;			}			if ( (s=UNLOCK(sharei)) != 1) {				capturedata(&capdata, pass, LOCKADDR(sharei), NULL, 4);				stillbad = (GETLOCK(sharei) != lockpat);				if (rerr(&capdata, "Shared data unlock", linep, slinep, thread, pass, linei, lockpat, GETLOCK(sharei), stillbad))					return 1;				if (correct_errors)					ZEROLOCK(sharei);					errs++;			}			break;		case 3:			/* Lock line, read and verify shared data, modify shared data. */			if (verbose)				printk("Line:%3d, Thread:%d:%d. Val: %x\n", linei, thread, vv, *sharecopy);			lcount = 0;			while (LOCK(sharei) != 1) {				if (checkstop(thread, pass, lockpat))					return 0;				if (lcount++>1000000) {					capturedata(&capdata, pass, LOCKADDR(sharei), NULL, sizeof(lock_t));					stillbad = (GETLOCK(sharei) != 0);					rerr(&capdata, "Shared data lock & inc", linep, slinep, thread, pass, linei, 0, GETLOCK(sharei), stillbad);					return 1;				}				if ((lcount&0x3fff) == 0)					udelay(1000);			}			sval = *sharep;			sval2 = *sharecopy;			if (sval != sval2) {				capturedata(&capdata, pass, sharep, sharecopy, sizeof(*sharecopy));				stillbad = (*sharep != *sharecopy);				if (!stillbad && *sharep != sval && *sharecopy == sval2)					stillbad = 2;				if (rerr(&capdata, "Shared data & inc", linep, slinep, thread, pass, linei, sval2, sval, stillbad)) {					return 1;				}				errs++;			}			*sharep = lockpat;			*sharecopy = lockpat;			if ( (s=UNLOCK(sharei)) != 1) {				capturedata(&capdata, pass, LOCKADDR(sharei), NULL, 4);				stillbad = (GETLOCK(sharei) != lockpat);				if (rerr(&capdata, "Shared data & inc unlock", linep, slinep, thread, pass, linei, thread, GETLOCK(sharei), stillbad))					return 1;				if (correct_errors)					ZEROLOCK(sharei);					errs++;			}			break;		}	}	return (errs > 0);}static voidtrigger_la(long val){	long	*p;	p = (long*)0xc0000a0001000020L; /* PI_CPU_NUM */	*p = val;}static longgetsynerr(void){	long	err, *errp;	errp = (long*)0xc0000e0000000340L;	/* SYN_ERR */	err = *errp;	if (err)		*errp = -1L;	return (err & ~0x60);}static intrerr(capture_t *cap, char *msg, void *lp, void *slp, int thread, int pass, int linei, int exp, int found, int stillbad){	int		cpu, i;	long 		synerr;	int		selt;	selt = selective_trigger && stillbad > 1 && 			memcmp(cap->blockdata, cap->blockdata_fc, 128) != 0 &&			memcmp(cap->shaddata, cap->shaddata_fc, 128) == 0;	if (selt) {		trigger_la(pass);	} else if (selective_trigger) {		k_go = ST_STOP;		return k_stop_on_error;;	}	spin(1);	i = 100;	while (i && set_lock(&errlock, 1) != 1) {		spin(1);		i--;	}	printk ("\nDataError!: %-20s, test %ld, thread %d, line:%d, pass %d (0x%x), time %ld expected:%x, found:%x\n",	    msg, k_testnumber, thread, linei, pass, pass, jiffies, exp, found);	dumpline (lp, "Corrupted data", "D ", cap->blockaddr, cap->blockdata, cap->size);

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
看电视剧不卡顿的网站| 亚洲电影一区二区三区| 国产美女视频91| 国产欧美精品一区aⅴ影院| 国产精品1区2区| 国产精品入口麻豆九色| 成人黄页在线观看| 一区二区三区中文字幕在线观看| 欧美亚洲另类激情小说| 午夜欧美一区二区三区在线播放| 69堂国产成人免费视频| 久久99精品一区二区三区 | 久久精品国产精品青草| 欧美mv和日韩mv的网站| 福利电影一区二区三区| 亚洲人成亚洲人成在线观看图片 | 五月婷婷久久综合| 日韩精品一区二区三区在线观看| 国产精品小仙女| 亚洲精选一二三| 欧美日本视频在线| 国产一区二区三区精品视频| 亚洲欧美怡红院| 欧美精品乱码久久久久久 | 日韩在线一区二区三区| 精品黑人一区二区三区久久| 成人性生交大片免费看视频在线 | 亚洲综合色区另类av| 欧美成人一区二区三区| eeuss鲁片一区二区三区在线观看| 亚洲大片在线观看| 欧美激情一区二区三区| 欧美日韩在线一区二区| 国产精品一区2区| 午夜视频在线观看一区二区三区| 国产日韩一级二级三级| 欧美性大战久久久| 国产91高潮流白浆在线麻豆| 天堂一区二区在线| 国产精品美女一区二区三区| 欧美精品一级二级| 99久久夜色精品国产网站| 日本中文在线一区| 亚洲摸摸操操av| 久久嫩草精品久久久精品| 欧美日本一区二区| 91在线免费视频观看| 久草热8精品视频在线观看| 亚洲伦理在线精品| 久久精品在线免费观看| 在线成人免费观看| 色播五月激情综合网| 国产精品1区二区.| 精品一区二区在线免费观看| 亚洲r级在线视频| 国产精品每日更新在线播放网址| 91精品婷婷国产综合久久性色| 色爱区综合激月婷婷| 不卡区在线中文字幕| 国产精品99久久久久| 蜜桃视频一区二区三区在线观看 | 欧美变态口味重另类| 欧美久久久久久久久中文字幕| 99re在线精品| 99在线视频精品| 91精品福利视频| 国产馆精品极品| 国产福利一区二区三区| 久久er99热精品一区二区| 蜜臀av性久久久久蜜臀aⅴ | 国产寡妇亲子伦一区二区| 麻豆精品一区二区综合av| 午夜精品久久久久久久久| 亚洲精品高清在线| 中文字幕一区二区在线观看| 亚洲国产精品高清| 国产亚洲成年网址在线观看| 久久精品亚洲精品国产欧美| 久久精品亚洲麻豆av一区二区| 久久综合狠狠综合| 久久久综合九色合综国产精品| 久久久蜜桃精品| 久久精品亚洲精品国产欧美kt∨| 国产色产综合产在线视频| 国产欧美精品一区aⅴ影院| 国产欧美一区二区精品性色| 国产清纯美女被跳蛋高潮一区二区久久w | 亚洲制服丝袜一区| 亚洲一区二区精品久久av| 亚洲bt欧美bt精品777| 午夜精品久久久久久久| 蜜臀av一级做a爰片久久| 久久99国产精品久久| 粉嫩嫩av羞羞动漫久久久 | 国产精品一区二区久激情瑜伽| 高清不卡一区二区在线| 91亚洲男人天堂| 欧美专区日韩专区| 欧美一区二区三区影视| 久久久精品国产99久久精品芒果| 国产喂奶挤奶一区二区三区| 日本一区二区在线不卡| 樱桃国产成人精品视频| 日产精品久久久久久久性色| 国产一区视频导航| 色婷婷久久综合| 91精品国产综合久久精品图片| 精品国产免费一区二区三区香蕉| 国产午夜亚洲精品不卡| 亚洲码国产岛国毛片在线| 三级在线观看一区二区| 高清av一区二区| 欧美日韩视频不卡| 国产欧美日韩久久| 午夜激情综合网| 国产黄人亚洲片| 在线成人av网站| 国产精品你懂的在线| 日韩专区欧美专区| 成人免费视频国产在线观看| 久久久欧美精品sm网站| 亚洲综合在线视频| 国产一区二区看久久| 在线观看免费一区| 久久久777精品电影网影网| 亚洲综合一区在线| 国产一区二区导航在线播放| 欧美性生活一区| 日本一区二区三区四区| 日本vs亚洲vs韩国一区三区二区| 成人黄色国产精品网站大全在线免费观看| 欧美色综合天天久久综合精品| 久久综合精品国产一区二区三区| 亚洲一区二区综合| eeuss鲁一区二区三区| 2020国产精品自拍| 一区二区在线观看av| 国产一区二区久久| 日韩一卡二卡三卡四卡| 亚洲综合一区二区三区| 99久久久免费精品国产一区二区| 欧美一二三四区在线| 亚洲在线视频一区| 91麻豆高清视频| 国产精品嫩草久久久久| 国产黄色精品视频| 日韩欧美色综合网站| 午夜婷婷国产麻豆精品| 欧美性生活一区| 一区二区激情小说| 一本高清dvd不卡在线观看| 日本一区二区免费在线| 久草这里只有精品视频| 欧美大片一区二区| 丝袜美腿亚洲综合| 欧美日本免费一区二区三区| 一区二区三区中文字幕| 91啪亚洲精品| 亚洲视频一区二区在线| 99视频有精品| 日韩码欧中文字| 色婷婷综合激情| 亚洲另类春色校园小说| 91网站在线观看视频| 国产精品国产三级国产a| 国产.欧美.日韩| 久久久蜜桃精品| 丰满亚洲少妇av| 中文一区二区完整视频在线观看| 国产一区二区不卡| 国产欧美一区二区三区网站| 国产精品中文有码| 国产亚洲精品精华液| 丁香婷婷综合激情五月色| 欧美激情一区二区三区| www.久久精品| 亚洲精品视频自拍| 欧美日韩欧美一区二区| 五月天视频一区| 欧美一区中文字幕| 韩国在线一区二区| 国产精品美女久久久久久 | 成人免费va视频| 日本一区二区久久| 99re热这里只有精品视频| 亚洲精选免费视频| 欧美精品色综合| 国产精品影音先锋| 亚洲色图视频网站| 欧美日韩国产精品成人| 男女性色大片免费观看一区二区| 精品久久久久一区| 不卡的电影网站| 性欧美大战久久久久久久久| 欧美一二三四区在线| 高清免费成人av| 亚洲国产日韩一级| 精品乱人伦一区二区三区| 成人久久久精品乱码一区二区三区| 亚洲品质自拍视频|