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

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

?? run_test.c

?? 詳細介紹了一篇關于pci開發的接口芯片
?? C
字號:
/*
	run_test.c

	Main program for running tests.
	
	cmdline_loop, cmdline_ask, cmdline_pause_on_error have been conditioned
	( usually by "parse()" ).

*/

#include <stdtypes.h>
#include <stdio.h>
#include <stdlib.h>
#include <dos.h>
#include <string.h>
#include <conio.h>
#include <time.h>

/* non-standard includes... */
#include <lib.h>
#include <clib1.h>
#include <amcclib.h>
#include <main.h>
#include <nvram.h>
#include <typedefs.h>
#include <mailbox.h>

#include <hp.h>
#include <mini_api.h>


extern struct _hp hp;
extern UINT8 boot_nvram[];
extern struct _chip chip_uut, chip_control;
extern CHAR errstring[], infostring[];
extern int use_hp, test_has_info_did_not_run, skip_test;
extern VUINT32 control;
extern int cmdline_loop, cmdline_ask, cmdline_pause_on_error;
extern int cmdline_exit_on_error, cmdline_quiet, skiptest[]; 
extern int cmdline_only, exit_program;
extern int version_uut, clock_rate_pci, clock_rate_addon; 

/* ****************************************	*/
/*               Local Stuff...            	*/
/* ****************************************	*/
static int showerr( void );
static void	show_info( void );
static UINT8 config_space_uut[PCI_CONFIG_SIZE];

#define CHECKPCI if ( status != PCI_SUCCESSFUL )  \
			{									\
				pci_bios_fail(status);			\
				return showerr();		\
			}

#define CHECKNV	if ( status != NVRAM_OK )	\
			{							\
				nvfail(status);			\
				return showerr();		\
			}

int run_tests( struct _test *tests, struct _test_count *tcnt )
/*
	Run a set of tests.

	Return: TRUE if all ran OK, else FALSE (errstring printed).

	Note: cmdline_only = 0 means run all tests
						<> means run test cmdline_only - 1
*/
{
	// define mask that we want to save from control reg...
	// 23:20 (type)  13:8 (waits 13:11 = FIFO)
	#define CONTROL_MASK 0x00F03FFFL
	UINT32 saveptcr, save_control;
	int i, mods, result, loop_failed, status, max_test_number;
	CHAR c;

		for( max_test_number = 0; ; max_test_number++ )
			if ( tests[max_test_number+1].testptr == NULL )  break;
		if ( cmdline_only > (max_test_number + 1) )
		{
			fprintf( stderr, "Max test number allowed is %x.\n", max_test_number );
			exit(1);
		}

		loop_failed = FALSE;
		for( i=0; tests[i].testptr != NULL; i++ )
		{
			if ( exit_program ) exit(0);

			if ( cmdline_only != 0 )
			{
				if ( i != (cmdline_only - 1) )  continue;
			}

			else
			{
				// running all tests...
				if( !tests[i].testflag )  continue;	// skip test?
				if( skiptest[i] )
				{
					if ( !cmdline_quiet ) 
						printf( "Skipping test %2.2x - %s.\n", i, tests[i].testname );
					continue;		// skip test?
				}

				if ( cmdline_ask )
				{
					printf( "Run test %2.2x -  %s ? ", i, tests[i].testname );
					c = getch();
					printf( "\n" );
					if ( c == ESC ) exit(0);
					if ( (c != 'Y') && (c != 'y') ) continue;
				}
			}

			if ( !cmdline_quiet ) printf( "Running test %2.2x - %s.\n", \
				i, tests[i].testname );

			// reset flags and strings...
			errstring[0] = '\0';
			infostring[0] = '\0';
			result = TRUE; 						/* no error */
			test_has_info_did_not_run = FALSE;	// used by test to indicate info ONLY

			mailbox_clear_all( );				// clear all mailbox stuff
			// save commonly-changed PTCR and region types
			saveptcr = region_read32( &chip_uut, 0, PTCR );
			save_control = control;				// region type bits,...
			mods = tests[i].testptr( 1 );		// call test asking what it
												// modifies
			if ( mods & AMCC_TEST_REQUIRES_RECONFIG )
			{
				// save config...
				status = pciReadBuf( chip_uut.bus, chip_uut.device, \
					config_space_uut, PCI_CONFIG_SIZE );
				CHECKPCI
			}

			// clear prefetched data to avoid prefetched address bug...
			// (test may have left prefetched data)
			if 	( 	(version_uut < 1) && (clock_rate_pci != clock_rate_addon) )
				reset_uut_fifo();

			result = tests[i].testptr( 0 );		// run test

			if ( !result )
			{
				tcnt->fail++; loop_failed = TRUE;
				printf( "Test %2.2x - %s failed.\n", i, tests[i].testname );
				showerr();
				printf( "Configuration at failure...\n" );
				show_info();
			}
			else if ( test_has_info_did_not_run )
				tcnt->info++;
			else
				tcnt->pass++;

			if ( mods & AMCC_TEST_REQUIRES_RECONFIG )
			{
				// set chip back to what it was so we can at least see opregs...
				if ( !reset_uut(0) )
					return showerr();
				status = restore_uut_config( config_space_uut );
				CHECKPCI
			}

			// more than config portion of nvram was changed ?...
			if ( mods & AMCC_TEST_MOD_NVRAM )
			{
				printf( "Restoring nvRAM modified during test..." );
				status = nvram_write( boot_nvram, 0, \
					NVRAM_SIZE_BYTES, chip_uut.reg[0].base, \
					chip_uut.type );
				printf( "\n" );
				CHECKNV
			}

			if ( mods & AMCC_TEST_REQUIRES_RECONFIG )
			{
				// restore config portion of NVRAM and reset/re-configure...
				status = nvram_write( &boot_nvram[NVRAM_CONFIG_OFFSET], \
					NVRAM_CONFIG_OFFSET, NVRAM_CONFIG_SIZE, chip_uut.reg[0].base, \
					chip_uut.type );
				CHECKNV
				// restore everything now that nvRAM is correct...
				if ( !reset_uut(0) )
					return showerr();
				status = restore_uut_config( config_space_uut );
				CHECKPCI
			}

			if ( result && !test_has_info_did_not_run && !cmdline_quiet )
				printf( "Passed.\n" );

			if ( !cmdline_quiet )
			{
				// infostring may have info even though test passed
				if ( infostring[0] != '\0' )
					printf( infostring );
				if ( !cmdline_loop )
					if ( pcontinue() == ESC )  return TRUE;
			}

			if ( result )
			{
				// restore original values including region type and waits...
				region_write32( &chip_uut, 0, PTCR, saveptcr );
				bset_control_reg( save_control & CONTROL_MASK );
				bclr_control_reg( (~save_control & CONTROL_MASK) );
			}

			else	// if ( !result )
			{
				if ( cmdline_exit_on_error ) 
					exit(1);
				if ( cmdline_pause_on_error )
					if ( pcontinue() == ESC ) exit(1);
				return FALSE;
			}


		}	/* each test */

		if ( loop_failed ) tcnt->loop_fail++;
		else tcnt->loop_pass++;

	return TRUE;
}


static int showerr( void )
{
	if ( use_hp )  hp_close();
	printf( errstring );
	return FALSE;
}


static void	show_info( void )
{
	time_t t;

  	time(&t);
	printf( show_passthru_configuration() );
  	printf( "%s", ctime(&t));
	printf( "Control reg value = %8.8lx. Status reg = %4.4x.\n", \
		control, read_status_register() );
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99国产精品国产精品久久| 成人免费看视频| 亚洲精选视频在线| 国产精品网站在线播放| 欧美国产激情二区三区 | 91美女视频网站| 99久久国产综合色|国产精品| caoporm超碰国产精品| av成人免费在线| 欧洲亚洲精品在线| 欧美男同性恋视频网站| 欧美一区二区三区电影| 久久精品在线免费观看| 国产精品视频九色porn| 一区二区三区精品在线观看| 亚洲成人免费看| 精品一区二区日韩| 成人精品免费视频| 欧美日韩美女一区二区| 精品国产99国产精品| 亚洲婷婷国产精品电影人久久| 亚洲免费毛片网站| 日本不卡在线视频| 国产suv精品一区二区883| 色狠狠色噜噜噜综合网| 精品国产区一区| 亚洲欧美视频在线观看视频| 日韩一区欧美二区| 国产夫妻精品视频| 欧美自拍偷拍一区| 久久综合久久综合久久| 亚洲黄一区二区三区| 美女任你摸久久| 99视频有精品| 精品久久久三级丝袜| 亚洲欧洲日韩一区二区三区| 日产国产高清一区二区三区 | 成人综合婷婷国产精品久久| 日本韩国欧美一区| 久久久久久免费毛片精品| 日韩毛片在线免费观看| 麻豆久久久久久久| 色8久久人人97超碰香蕉987| 久久婷婷综合激情| 日本成人在线一区| 91麻豆精品视频| 欧美—级在线免费片| 蜜臀av一级做a爰片久久| 91美女福利视频| 国产视频视频一区| 久久99热这里只有精品| 欧美男男青年gay1069videost| 国产精品二三区| 国产精品亚洲一区二区三区妖精| 欧美日韩一卡二卡| 亚洲综合自拍偷拍| 91网站视频在线观看| 中文字幕精品一区| 国产99一区视频免费| 日韩欧美高清在线| 日本不卡免费在线视频| 在线成人小视频| 亚洲国产精品久久人人爱| 成人免费精品视频| 中文字幕不卡一区| 成人在线视频一区二区| 国产调教视频一区| 风间由美中文字幕在线看视频国产欧美| 欧美一二区视频| 久久99久久99| 337p粉嫩大胆噜噜噜噜噜91av | 国产欧美一二三区| 国产成人aaa| 国产午夜精品久久久久久免费视 | 色视频欧美一区二区三区| 中文字幕第一区第二区| 国产91色综合久久免费分享| 国产亚洲午夜高清国产拍精品| 激情欧美日韩一区二区| 久久久av毛片精品| 国产大陆a不卡| 专区另类欧美日韩| 91高清视频在线| 水蜜桃久久夜色精品一区的特点| 欧美日韩国产免费一区二区 | 成人午夜私人影院| 国产精品久久久久影视| 波多野结衣视频一区| 亚洲综合免费观看高清完整版在线| 91精彩视频在线| 日本不卡一区二区三区高清视频| 日韩精品一区二区三区swag| 国产精品一区二区x88av| 国产精品进线69影院| 欧美在线观看视频一区二区| 日韩不卡手机在线v区| 日韩欧美的一区二区| 国产不卡视频在线播放| 日韩视频免费观看高清在线视频| 日本免费在线视频不卡一不卡二| 精品嫩草影院久久| 99久久免费国产| 亚洲国产一区视频| 久久欧美一区二区| 91日韩精品一区| 麻豆一区二区99久久久久| 中文在线免费一区三区高中清不卡| 99r国产精品| 另类小说一区二区三区| 国产精品久久久久一区| 欧美老年两性高潮| 国产精品一区二区你懂的| 亚洲综合色区另类av| 国产三区在线成人av| 欧美在线高清视频| 国产99精品视频| 免费成人你懂的| 亚洲欧美经典视频| www国产成人免费观看视频 深夜成人网| 成人福利电影精品一区二区在线观看 | 欧美日韩综合在线免费观看| 国产一区二区三区免费看| 性做久久久久久免费观看| 中文字幕国产精品一区二区| 欧美一区二区三区在线| 91麻豆产精品久久久久久| 精品一区二区三区久久| 偷拍一区二区三区| 综合久久久久久久| 中文字幕免费不卡| 久久这里只有精品首页| 91精品国产免费久久综合| 色久综合一二码| 99久久er热在这里只有精品66| 国产一区二区在线观看免费| 日韩电影在线看| 午夜精品一区二区三区电影天堂| 亚洲欧洲精品一区二区三区| 国产喂奶挤奶一区二区三区| 日韩精品一区二区三区四区| 欧美精品第1页| 欧美系列一区二区| 色综合久久综合网97色综合| 成人午夜免费视频| 成人午夜av电影| 国产·精品毛片| 成人永久免费视频| 成人午夜视频网站| 成人福利在线看| 91麻豆国产福利在线观看| 91在线高清观看| 91视视频在线观看入口直接观看www | 亚洲mv在线观看| 亚洲精品日韩一| 亚洲欧美日韩久久| 亚洲激情网站免费观看| 亚洲国产欧美另类丝袜| 石原莉奈在线亚洲二区| 日韩精品乱码av一区二区| 石原莉奈一区二区三区在线观看| 亚洲午夜三级在线| 日韩精品91亚洲二区在线观看 | 北条麻妃国产九九精品视频| 成人午夜电影网站| 一本大道久久精品懂色aⅴ| 91成人免费网站| 6080国产精品一区二区| 亚洲精品一区二区三区福利| 久久网站热最新地址| 国产精品乱人伦| 亚洲国产一二三| 九色|91porny| jlzzjlzz亚洲日本少妇| 欧美色图天堂网| 精品福利一区二区三区免费视频| 久久久国际精品| 一个色在线综合| 久久99国产精品久久99| 99视频一区二区三区| 欧美日韩国产精品成人| 国产亚洲一区二区三区在线观看 | 欧美激情一区二区三区四区| 亚洲区小说区图片区qvod| 日韩中文字幕麻豆| 懂色av一区二区三区蜜臀 | 久久国产夜色精品鲁鲁99| 国产乱码精品一区二区三| 91老师片黄在线观看| 日韩一级视频免费观看在线| 中文字幕一区二区三中文字幕| 亚洲大片精品永久免费| 国产老妇另类xxxxx| 欧美羞羞免费网站| 久久久久久久久久久黄色| 亚洲国产精品综合小说图片区| 国产美女在线观看一区| 欧美系列日韩一区| 欧美韩国一区二区| 美女视频第一区二区三区免费观看网站| 成人黄色免费短视频|