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

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

?? tmhal.c

?? PNX系列設備驅動 PNX系列設備驅動
?? C
?? 第 1 頁 / 共 2 頁
字號:
	HalObject*	Hal = (HalObject*)HalHandle;

#ifdef DEBUG
	if ( objectValidate ( Hal, HalFourCC ) != True )
	{
		return statusInvalidHandle;
	}
#endif

	Hal->Handler = Handler;
	Hal->Context = Context;
	return statusSuccess;
}

TMStatus	halRemoveHandler ( 
	UInt32	HalHandle )
{
	HalObject*	Hal = (HalObject*)HalHandle;

#ifdef DEBUG
	if ( objectValidate ( Hal, HalFourCC ) != True )
	{
		return statusInvalidHandle;
	}
#endif

	Hal->Handler = Null;
	return statusSuccess;
}

TMStatus	halDisableInterrupts ( 
	UInt32	HalHandle,
	UInt32* Saved )
{
	#ifdef DEBUG
	HalObject*	Hal = (HalObject*)HalHandle;
	if ( objectValidate ( Hal, HalFourCC ) != True )
	{
		return statusInvalidHandle;
	}
	#endif

	/* 
		as of now there is no provision to 
		pass a object / dsp node reference 
		to the hal functions 
	*/
	*Saved = intClearIEN ();
	return statusSuccess;
}

TMStatus	halRestoreInterrupts ( 
	UInt32	HalHandle,
	UInt32* Saved )
{
	#ifdef DEBUG
	HalObject*	Hal = (HalObject*)HalHandle;
	if ( objectValidate ( Hal, HalFourCC ) != True )
	{
		return statusInvalidHandle;
	}
	#endif

	intRestoreIEN ( *Saved );
	return statusSuccess;
}

TMStatus	halDisableIRQ ( 
	UInt32	HalHandle )
{
	HalObject*	Hal = (HalObject*)HalHandle;

	intInstanceSetup_t   Setup;

	#ifdef DEBUG
	if ( objectValidate ( Hal, HalFourCC ) != True )
	{
		return statusInvalidHandle;
	}
	#endif


	intGetInstanceSetup ( (intInterrupt_t)Hal->SelfInterrupt, &Setup );
	Setup.enabled = False;
	intInstanceSetup ( (intInterrupt_t)Hal->SelfInterrupt, &Setup );

	return statusSuccess;
}

TMStatus	halEnableIRQ ( 
	UInt32	HalHandle )
{
	HalObject*	Hal = (HalObject*)HalHandle;
	intInstanceSetup_t   Setup;

	#ifdef DEBUG
	if ( objectValidate ( Hal, HalFourCC ) != True )
	{
		return statusInvalidHandle;
	}
	#endif

	intGetInstanceSetup ( (intInterrupt_t)Hal->SelfInterrupt, &Setup );

	Setup.enabled = True;

	intInstanceSetup ( (intInterrupt_t)Hal->SelfInterrupt, &Setup );

	return statusSuccess;
}

TMStatus	halGenerateInterrupt ( 
	UInt32	HalHandle )
{
	HalObject*	Hal = (HalObject*)HalHandle;
	
	#ifdef DEBUG
	if ( objectValidate ( Hal, HalFourCC ) != True )
	{
		return statusInvalidHandle;
	}
	#endif

	halAccessEnable ( HalHandle );
/*    DP(("In halGenerateInterrupt")); */

	while ( 1 )
	{
		if ( halAccess32 ( HalHandle, 
			Hal->Control->HostInterruptSpinLock  ) == False )
		{
			Hal->Control->TargetInterruptSpinLock = 
				halAccess32 ( HalHandle, True  );

			if ( halAccess32 ( HalHandle, 
				Hal->Control->HostInterruptSpinLock  ) == True )
			{
				Hal->Control->TargetInterruptSpinLock = 
					halAccess32 ( HalHandle, False  );			
			}
			else
			{
				*(UInt32*)( Hal->MMIOBase + INT_CTL) = halAccess32 ( HalHandle,
					halAccess32 ( HalHandle, *(UInt32*)( Hal->MMIOBase + INT_CTL) ) |
					( ( 1 << Hal->PeerInterrupt ) |
					( 0x10 << Hal->PeerInterrupt ) ) );
/*                DP(("INT_CTL Addr = %x",Hal->MMIOBase + INT_CTL)); */

				Hal->Control->TargetInterruptSpinLock = 
					halAccess32 ( HalHandle, False  );
				break;
			}

		}
	}

	halAccessDisable ( HalHandle );


	return statusSuccess;
}

TMStatus	halAcknowledgeInterrupt (
	UInt32	HalHandle )
{
	#ifdef DEBUG
	HalObject*	Hal = (HalObject*)HalHandle;
	if ( objectValidate ( Hal, HalFourCC ) != True )
	{
		return statusInvalidHandle;
	}
	#endif
	
	/* NO IMPLEMENTATION FOR THIS PLATFORM */

	return statusSuccess;
}

TMStatus	halStartDSP (
	UInt32	HalHandle )
{
	#ifdef DEBUG
	HalObject*	Hal = (HalObject*)HalHandle;
	if ( objectValidate ( Hal, HalFourCC ) != True )
	{
		return statusInvalidHandle;
	}
	#endif

	/* NO IMPLEMENTATION FOR THIS PLATFORM */

	return statusSuccess;
}

TMStatus	halStopDSP (
	UInt32	HalHandle )
{
	#ifdef DEBUG
	HalObject*	Hal = (HalObject*)HalHandle;
	if ( objectValidate ( Hal, HalFourCC ) != True )
	{
		return statusInvalidHandle;
	}
	#endif

	/* NO IMPLEMENTATION FOR THIS PLATFORM */

	return statusSuccess;
}

TMStatus	halSetPeerVersion (
	UInt32	HalHandle, 
	UInt32	MajorVersion,
	UInt32	MinorVersion )
{
	HalObject*	Hal = (HalObject*)HalHandle;

	if ( objectValidate ( Hal, HalFourCC ) != True )
	{
		return statusInvalidHandle;
	}

	Hal->PeerMajorVersion = MajorVersion;
	Hal->PeerMinorVersion = MinorVersion;

	return statusSuccess;
}

TMStatus	halGetPeerVersion (
	UInt32	HalHandle,
	UInt32*	MajorVersionPtr,
	UInt32*	MinorVersionPtr )
{
	HalObject*	Hal = (HalObject*)HalHandle;

	if ( objectValidate ( Hal, HalFourCC ) != True )
	{
		return statusInvalidHandle;
	}

	*MajorVersionPtr = Hal->PeerMajorVersion;
	*MinorVersionPtr = Hal->PeerMinorVersion;

	return statusSuccess;
}
/* 
this is required since in a multiple TM1 system,
one of the TMs can act as a master and the others as slaves,
the master has to be able to install interrupt handlers for
each slave it is driving 

BEGINhalHardwareInterruptHandler(0)
#pragma	TCS_interruptible_handler
ENDhalHardwareInterruptHandler

BEGINhalHardwareInterruptHandler(1)
#pragma	TCS_interruptible_handler
ENDhalHardwareInterruptHandler

BEGINhalHardwareInterruptHandler(2)
#pragma	TCS_interruptible_handler
ENDhalHardwareInterruptHandler

BEGINhalHardwareInterruptHandler(3)
#pragma	TCS_interruptible_handler
ENDhalHardwareInterruptHandler

BEGINhalHardwareInterruptHandler(4)
#pragma	TCS_interruptible_handler
ENDhalHardwareInterruptHandler
*/

#pragma TCS_noinline = halAccess32

UInt32	halAccess32( 
	UInt32	HalHandle,
	UInt32 volatile Value )
{
	/* we don't validate the object for efficiency reasons */
	/* NO SWAPPING FOR THIS PLATFORM */
	return Value;
}

UInt16	halAccess16 ( 
	UInt32	HalHandle,
	UInt16 volatile Value )
{
	/* we don't validate the object for efficiency reasons */
	/* NO SWAPPING FOR THIS PLATFORM */
	return Value;
}

void	halAccessEnable ( 
	UInt32	HalHandle )
{
	HalObject*	Hal = (HalObject*)HalHandle;
	/* we don't validate the object for efficiency reasons */
	/* NO SWAPPING FOR THIS PLATFORM */
    /* disable the hole & enabble the PCI window - allow PCI loads and stores */
	/* BUGCHECK - we should disable interrupts here - for pSOS */
	if ( Hal->SpeculativeLoadFix )
	{

		Hal->MemoryAccessInterruptState = intClearIEN ( );

		*(UInt32*)(Hal->MMIOBase + DC_LOCK_CTL) = 
			/* read the value of DC_LOCK_CTL - retain all bits except bits 5 & 6 */
			( ( (*(UInt32*)(Hal->MMIOBase + DC_LOCK_CTL)) & (~constTMManDC_LOCK_CTL_MASK) ) | 
			/* or it with the new values of bits 5 & 6 */
			( constTMManDC_LOCK_CTL_MASK  & ( ( constTMManDC_LOCK_CTL_HEN ) << constTMManDC_LOCK_CTL_POSITION ) ) );
	}
	
}

void	halAccessDisable ( 
	UInt32	HalHandle )
{
	HalObject*	Hal = (HalObject*)HalHandle;
	/* we don't validate the object for efficiency reasons */

    /* disable the hole & the PCI window - block all speculative loads */
	/* BUGCHECK - we should restore interrupts here - for pSOS */

	if ( Hal->SpeculativeLoadFix )
	{
		*(UInt32*)(Hal->MMIOBase + DC_LOCK_CTL) = 
			/* read the value of DC_LOCK_CTL - retain all bits except bits 5 & 6 */
			( ( (*(UInt32*)(Hal->MMIOBase + DC_LOCK_CTL)) & (~constTMManDC_LOCK_CTL_MASK) ) | 
			/* or it with the new values of bits 5 & 6 */
			( constTMManDC_LOCK_CTL_MASK  & ( ( constTMManDC_LOCK_CTL_PDS ) << constTMManDC_LOCK_CTL_POSITION ) ) );

		intRestoreIEN ( Hal->MemoryAccessInterruptState );
	}
}

void	halCopyback( Pointer CacheBlock, UInt32 BlockCount  )
{
	COPYBACK( CacheBlock, 1  );
}


UInt32	halTranslateTargetPhysicalAddress ( 
	UInt32 HalHandle, 
	UInt32 PhysicalAddress )
{
	HalObject*	Hal = (HalObject*)HalHandle;

	return ( PhysicalAddress );
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美另类高清zo欧美| 午夜视频在线观看一区| 91精品久久久久久久91蜜桃| 成人动漫中文字幕| 国产a视频精品免费观看| 国模无码大尺度一区二区三区| 亚洲成a天堂v人片| 一区二区欧美视频| 一区二区三区四区中文字幕| 日韩和的一区二区| 色悠悠久久综合| 精品一区二区综合| 青青草伊人久久| 亚洲1区2区3区4区| 伊人婷婷欧美激情| 亚洲日本va在线观看| 欧美国产精品一区二区三区| 国产片一区二区| 久久精品视频一区二区| 国产亚洲综合在线| 国产亚洲精品超碰| 国产精品久久久久久久久搜平片| 欧美韩国日本不卡| 18欧美乱大交hd1984| 亚洲激情欧美激情| 欧美精品一二三四| 老鸭窝一区二区久久精品| 视频在线观看国产精品| 日本一区中文字幕| 亚洲免费高清视频在线| 亚洲尤物视频在线| 日韩综合在线视频| 国产一区激情在线| 成人精品一区二区三区中文字幕| 不卡高清视频专区| 91黄色免费观看| 欧美一区二区在线免费观看| 精品国产sm最大网站| 中文字幕高清不卡| 亚洲一级二级三级| 久久国产精品99久久久久久老狼| 国内国产精品久久| 色婷婷亚洲一区二区三区| 51精品视频一区二区三区| 久久亚洲影视婷婷| 亚洲日本va午夜在线电影| 欧美96一区二区免费视频| 国产精品一区免费在线观看| 91麻豆精品在线观看| 日韩欧美亚洲另类制服综合在线| 国产欧美日韩综合| 亚洲电影激情视频网站| 国产一区二区主播在线| 在线区一区二视频| 久久久三级国产网站| 亚洲午夜在线观看视频在线| 国产精品99久| 91精品国产aⅴ一区二区| 《视频一区视频二区| 精品一区二区免费在线观看| 在线亚洲一区二区| 欧美性猛交一区二区三区精品| 欧美三级视频在线观看| 久久伊人中文字幕| 天天操天天色综合| fc2成人免费人成在线观看播放 | 国产98色在线|日韩| 日韩视频免费观看高清在线视频| 久久久久9999亚洲精品| 青青国产91久久久久久| 91精品福利在线| 国产精品精品国产色婷婷| 精品一区二区综合| 欧美色手机在线观看| 一区免费观看视频| 国产精品一区久久久久| 精品国产一区二区三区久久久蜜月| 亚洲成va人在线观看| 国产片一区二区| 亚洲专区一二三| av电影天堂一区二区在线| 欧美mv日韩mv国产网站| 午夜国产精品一区| 欧美色图片你懂的| 亚洲影院免费观看| 色视频成人在线观看免| 亚洲色图视频免费播放| av中文字幕亚洲| 国产精品久久久久久妇女6080 | 久久久久国产精品麻豆| 男女性色大片免费观看一区二区| 欧美视频在线一区| 天堂成人免费av电影一区| 欧美精品日韩一区| 免费在线看成人av| 日韩一级完整毛片| 久久国产尿小便嘘嘘| 精品对白一区国产伦| 国产精品69久久久久水密桃| 国产女主播视频一区二区| 欧美精品一区二区在线播放| 日韩国产在线观看一区| 欧美电影精品一区二区| 国产在线不卡一区| 日本一区二区免费在线| 91在线观看高清| 免费在线一区观看| 日韩欧美综合一区| 国产精品一二三四区| 国产精品视频一二| 一本久久综合亚洲鲁鲁五月天| 亚洲一区欧美一区| 日韩精品在线网站| 国产91在线看| 亚洲国产视频一区| www国产成人免费观看视频 深夜成人网 | 久久影院电视剧免费观看| 国v精品久久久网| 亚洲成人午夜电影| 国产日韩亚洲欧美综合| 欧美午夜影院一区| 国产福利一区在线| 午夜精品久久久久| 久久久久久久久久久黄色| 色偷偷成人一区二区三区91 | 亚洲另类在线视频| 欧美大片在线观看一区| 91视频你懂的| 免费成人在线影院| 亚洲天堂久久久久久久| 精品欧美一区二区三区精品久久| 成人激情综合网站| 青青草原综合久久大伊人精品| 在线观看亚洲专区| 亚洲国产一区二区视频| 日韩欧美三级在线| 99视频精品免费视频| 青青草91视频| 亚洲欧美成人一区二区三区| 欧美v日韩v国产v| 色欧美日韩亚洲| 国产一区二区三区四区五区美女 | 中文字幕欧美日韩一区| 欧美美女直播网站| 97国产精品videossex| 激情五月婷婷综合网| 偷拍亚洲欧洲综合| 一区二区三区中文字幕电影 | 天天综合网 天天综合色| 国产精品欧美一区喷水| 久久综合久色欧美综合狠狠| 欧美老肥妇做.爰bbww| 色88888久久久久久影院野外| 国产一区二区视频在线播放| 久久99国产精品免费| 日韩黄色一级片| 五月婷婷综合网| 亚洲成人一区在线| 亚洲一级二级三级在线免费观看| 亚洲免费在线看| 中文字幕一区二区不卡| 中文字幕亚洲一区二区va在线| 国产三级精品在线| 久久久一区二区三区捆绑**| 久久女同精品一区二区| 久久综合九色综合久久久精品综合| 91精品欧美福利在线观看| 欧美亚洲尤物久久| 欧美日韩大陆一区二区| 5858s免费视频成人| 欧美一卡二卡在线| 欧美一区二区成人| 精品久久久久香蕉网| 久久久久久综合| 欧美—级在线免费片| 亚洲色图在线看| 亚洲免费视频成人| 亚洲.国产.中文慕字在线| 日韩激情一二三区| 麻豆精品在线视频| 国产九色sp调教91| 99re这里只有精品6| 欧美视频一区二区三区| 91精品福利在线一区二区三区| 日韩一区二区三区视频| 久久蜜臀精品av| 国产精品久久久久aaaa樱花| 一区二区欧美国产| 男人的天堂亚洲一区| 国产91精品露脸国语对白| 91官网在线观看| 日韩欧美一区二区久久婷婷| 欧美国产乱子伦| 亚洲在线视频网站| 久久超碰97人人做人人爱| 成人午夜在线播放| 欧美日韩午夜在线| 久久精品免费在线观看| 午夜影视日本亚洲欧洲精品| 国产精品综合一区二区三区|