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

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

?? tmhal.c

?? PNX系列設備驅動 PNX系列設備驅動
?? C
?? 第 1 頁 / 共 3 頁
字號:

	return statusSuccess;
}

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

	if ( objectValidate ( Hal, HalFourCC ) != True )
	{
        DPF(0,("tmman:halStartDSP:objectValidate:FAIL\n" ));
		return statusInvalidHandle;
	}

	if ( Hal->SpeculativeLoadFix )
	{
		/* disable the PCI apperture */
		*(PULONG)(Hal->MMIOAddrKernel + DC_LOCK_CTL) = 
			/* read the value of DC_LOCK_CTL - retain all bits except bits 5 & 6 */
			( ( (*(PULONG)(Hal->MMIOAddrKernel + 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 ) ) );
	}
	else
	{
		/* enable the PCI apperture */
		*(PULONG)(Hal->MMIOAddrKernel + DC_LOCK_CTL) = 
			/* read the value of DC_LOCK_CTL - retain all bits except bits 5 & 6 */
			( ( (*(PULONG)(Hal->MMIOAddrKernel + 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 ) ) );
	}

	// clear the IMask & IClear register 
	*(PULONG)(Hal->MMIOAddrKernel + ICLEAR) = (ULONG)(0x0);
	*(PULONG)(Hal->MMIOAddrKernel + IMASK) = (ULONG)(~0x0);
	*(PULONG)(Hal->MMIOAddrKernel + BIU_CTL) &= (~constTMManBIU_CTL_SR);
	*(PULONG)(Hal->MMIOAddrKernel + BIU_CTL) |= constTMManBIU_CTL_CR;

	return statusSuccess;
}

TMStatus	halStopDSP (
	UInt32	HalHandle )
{
	HalObject*	Hal = (HalObject*)HalHandle;
	ULONG	Idx;

	if ( objectValidate ( Hal, HalFourCC ) != True )
	{
        DPF(0,("tmman:halStopDSP:objectValidate:FAIL\n" ));
		return statusInvalidHandle;
	}

	// biu reset BIU_CTL
	*(PULONG)(Hal->MMIOAddrKernel + BIU_CTL) &= (~constTMManBIU_CTL_CR);
	*(PULONG)(Hal->MMIOAddrKernel + BIU_CTL) |= constTMManBIU_CTL_SR;

	// reset the peripherals
	// audio out AO_CTL
	*(PULONG)( Hal->MMIOAddrKernel + AO_CTL ) = 0x80000000;
	*(PULONG)( Hal->MMIOAddrKernel + AO2_CTL ) = 0x80000000;

	// audio in AI_CTL
	*(PULONG)( Hal->MMIOAddrKernel +AI_CTL ) = 0x80000000;
	*(PULONG)( Hal->MMIOAddrKernel +AI2_CTL ) = 0x80000000;

	// video in VI_CTL
	*(PULONG)( Hal->MMIOAddrKernel +VI_CTL ) = 0x00080000;
	*(PULONG)( Hal->MMIOAddrKernel +VI2_CTL ) = 0x00080000;

	// video out VO_CTL
	*(PULONG)( Hal->MMIOAddrKernel +VO_CTL ) = 0x80000000;

	//ssi SSI_CTL
	*(PULONG)( Hal->MMIOAddrKernel +SSI_CTL ) = 0xc0000000;

	//SPDIF SDO_CTL
	*(PULONG)( Hal->MMIOAddrKernel +SPDO_CTL ) = 0x80000000;

	//IIC Slave IICS_CTL
	*(PULONG)( Hal->MMIOAddrKernel +IICS_CTL ) = 0x00200000;

	// disable 
	*(PULONG)( Hal->MMIOAddrKernel + IIC_CTL ) &= ~(0x00000001);
	//enable
	*(PULONG)( Hal->MMIOAddrKernel + IIC_CTL ) |= 0x00000001;

	// reset the VLD once
	*(PULONG)( Hal->MMIOAddrKernel + VLD_COMMAND ) = 0x00000401;

	// reset the HDVO
	*(PULONG)( Hal->MMIOAddrKernel + (HDVO_BASE + (0x20 << 1 )) ) = (ULONG)( 3 << 1 );

	// reset the transport demux
	*(PULONG)( Hal->MMIOAddrKernel + TP1_CTL ) = 0x80000000;
	*(PULONG)( Hal->MMIOAddrKernel + TP2_CTL ) = 0x80000000;

	//icp ICP_SR
	for ( Idx= 0 ; Idx < 10 ; Idx ++ )
	{
		// do it 10 times just to make sure ....
		if ( *( Hal->MMIOAddrKernel + ICP_SR ) & 0x01 ) 
			break;
		// changed on usman's request TRC970225
		*( Hal->MMIOAddrKernel + ICP_SR )  = 0x80;
	}

	//jtag JTAG_CTL
	*(PULONG)( Hal->MMIOAddrKernel + JTAG_DATA_IN ) = 0x00000000;
	*(PULONG)( Hal->MMIOAddrKernel + JTAG_DATA_OUT ) = 0x00000000;
	*(PULONG)( Hal->MMIOAddrKernel + JTAG_CTL ) = 0x00000004;

	return statusSuccess;

}

TMStatus	halResetDSP (
	UInt32	HalHandle )
{
	HalObject*		Hal = (HalObject*)HalHandle;
	ULONG			Idx;
	PCI_CONFIG_ADDRESS PCIConfigAddress;

	// we don't write anything into the first 3 registers
	// we write the command status at the very end.
	// write to all the registers except the last 2.
	// NT goes bonkers if we write to the interrupt register.
	for ( Idx = 3 ; Idx < (constTMMANPCIRegisters - 1)  ; Idx ++ )
	{
		if ( HalSetBusDataByOffset (
			PCIConfiguration,
			(ULONG)Hal->BusNumber,
			Hal->SlotNumber.u.AsULONG,
			&Hal->PCIRegisters[Idx], 
			(ULONG)Idx*4, 
			sizeof (ULONG) ) == 0 )
		{
			return statusPCIConfigAccessFail; 
		}
	}

	// we are breaking all NT rules by bypassing the HAL and the BIOS here
	// so don't bother doing a HalTranalateBusAddress & MmMapMmioSpace
	PCIConfigAddress.u.Bits.Zeros			= 0;
	PCIConfigAddress.u.Bits.RegisterNumber	= 0xf;
	PCIConfigAddress.u.Bits.FunctionNumber	= Hal->SlotNumber.u.bits.FunctionNumber;
	PCIConfigAddress.u.Bits.DeviceNumber		= Hal->SlotNumber.u.bits.DeviceNumber;
	PCIConfigAddress.u.Bits.BusNumber			= Hal->BusNumber;		
	PCIConfigAddress.u.Bits.Enable			= 1;

	WRITE_PORT_ULONG ( PCI_CONFIG_ADDR_PORT, PCIConfigAddress.u.Long );
	WRITE_PORT_ULONG ( PCI_CONFIG_DATA_PORT, Hal->PCIRegisters[0xf] );

	if ( HalSetBusDataByOffset (
		PCIConfiguration,
		(ULONG)Hal->BusNumber,
		Hal->SlotNumber.u.AsULONG,
		&Hal->PCIRegisters[1], 
		(ULONG)1*4, 
		sizeof (ULONG) ) == 0 )
	{
		return statusPCIConfigAccessFail; 
	}


	/* do this only if we have to run in INTEL MODE */

    // assume TM1S+
    if ( ( *(PULONG)(Hal->MMIOAddrKernel + BIU_CTL) &
        (constTMManBIU_CTL_SE | constTMManBIU_CTL_BO | constTMManBIU_CTL_HE) ) == 0x0 )
    {	// virgin biu control
		ULONG	SwappedBIUControl;
		UCHAR	TempByte;

        SwappedBIUControl = 
            ( constTMManBIU_CTL_SE | constTMManBIU_CTL_BO | constTMManBIU_CTL_HE | constTMManBIU_CTL_SR );
        // do a dword swap
        TempByte = ((PUCHAR)&SwappedBIUControl)[0];
        ((PUCHAR)&SwappedBIUControl)[0] = ((PUCHAR)&SwappedBIUControl)[3];
        ((PUCHAR)&SwappedBIUControl)[3] = TempByte;
        TempByte = ((PUCHAR)&SwappedBIUControl)[1];
        ((PUCHAR)&SwappedBIUControl)[1] = ((PUCHAR)&SwappedBIUControl)[2];
        ((PUCHAR)&SwappedBIUControl)[2] = TempByte;

        *(PULONG)(Hal->MMIOAddrKernel + BIU_CTL) = SwappedBIUControl;

    }

    // set the cache details every time this function is called
    *(PULONG)(Hal->MMIOAddrKernel + DRAM_LIMIT) = Hal->SDRAMAddrPhysical.LowPart + Hal->SDRAMLength; 
    *(PULONG)(Hal->MMIOAddrKernel + DRAM_CACHEABLE_LIMIT) = Hal->SDRAMAddrPhysical.LowPart + Hal->SDRAMLength;

	*(PULONG)(Hal->MMIOAddrKernel + ICLEAR) = (ULONG)(0x0);
	*(PULONG)(Hal->MMIOAddrKernel + IMASK) = (ULONG)(~0x0);

	return statusSuccess;
}

TMStatus	halGetMMIOInfo (
	UInt32	HalHandle,
	Pointer *MMIOPhysical, 
	Pointer *MMIOKernelMapped, 
	UInt32 *MMIOSize )

{
	HalObject*	Hal = (HalObject*)HalHandle;
	if ( objectValidate ( Hal, HalFourCC ) != True )
	{
		DPF(0,("tmman:halGetMMIOInfo:objectValidate:FAIL\n" ));
		return statusInvalidHandle;
	}

	*MMIOPhysical = (Pointer)Hal->MMIOAddrPhysical.LowPart;
	*MMIOKernelMapped = Hal->MMIOAddrKernel;
	*MMIOSize = Hal->MMIOLength;
	return statusSuccess;
}

TMStatus	halGetSDRAMInfo ( 
	UInt32	HalHandle,
	Pointer *SDRAMPhysical, 
	Pointer *SDRAMKernelMapped, 
	UInt32 *SDRAMSize )
{
	HalObject*	Hal = (HalObject*)HalHandle;

	if ( objectValidate ( Hal, HalFourCC ) != True )
	{
		DPF(0,("tmman:halGetSDRAMInfo:objectValidate:FAIL\n" ));
		return statusInvalidHandle;
	}

	*SDRAMPhysical = (Pointer)Hal->SDRAMAddrPhysical.LowPart;
	*SDRAMKernelMapped = Hal->SDRAMAddrKernel;
	*SDRAMSize = Hal->SDRAMLength;
	return statusSuccess;

}

TMStatus	halGetTMPCIInfo ( 
	UInt32	HalHandle,
	UInt32* DeviceVendorID,
	UInt32* SubsystemID,
	UInt32* ClassRevisionID )
{
	HalObject*	Hal = (HalObject*)HalHandle;

	if ( objectValidate ( Hal, HalFourCC ) != True )
	{
		DPF(0,("tmman:halGetTMPCIInfo:objectValidate:FAIL\n" ));
		return statusInvalidHandle;
	}

	*DeviceVendorID = Hal->TMDeviceVendorID;
	*SubsystemID = Hal->TMSubsystemID;
	*ClassRevisionID = Hal->TMClassRevisionID;

	return statusSuccess;
}

TMStatus	halGetBridgePCIInfo ( 
	UInt32	HalHandle,
	UInt32* DeviceVendorID,
	UInt32* SubsystemID,
	UInt32* ClassRevisionID )
{
	HalObject*	Hal = (HalObject*)HalHandle;

	if ( objectValidate ( Hal, HalFourCC ) != True )
	{
		DPF(0,("tmman:halGetBridgePCIInfo:objectValidate:FAIL\n" ));
		return statusInvalidHandle;
	}

	*DeviceVendorID = Hal->BridgeDeviceVendorID;
	*SubsystemID = Hal->BridgeSubsystemID;
	*ClassRevisionID = Hal->BridgeClassRevisionID;


	return statusSuccess;
}

TMStatus	halInstallHandler ( 
	UInt32	HalHandle,
	HalInterruptHandler Handler, 
	Pointer Context )
{
	HalObject*	Hal = (HalObject*)HalHandle;


	if ( objectValidate ( Hal, HalFourCC ) != True )
	{
		DPF(0,("tmman:halInstallHandler:objectValidate:FAIL\n" ));
		return statusInvalidHandle;
	}

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

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

	if ( objectValidate ( Hal, HalFourCC ) != True )
	{
		DPF(0,("tmman:halRemoveHandler:objectValidate:FAIL\n" ));
		return statusInvalidHandle;
	}

	Hal->Handler = NULL;
	return statusSuccess;
}

TMStatus	halDisableInterrupts ( 
	UInt32	HalHandle,
	UInt32* Saved );

TMStatus	halRestoreInterrupts ( 
	UInt32	HalHandle,
	UInt32* Saved );

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

	if ( objectValidate ( Hal, HalFourCC ) != True )
	{
		DPF(0,("tmman:halDisableIRQ:objectValidate:FAIL\n" ));
		return statusInvalidHandle;
	}
	InterruptControl = *(Hal->MMIOAddrKernel + INT_CTL);

	// here SelfInterrupt indicates PCI Interrupt A
	// INT#A = 0, INT#B = 1, INT#C = 2, INT#D = 3
	// disable interrupts from the target by INT_CTL->IE off.
	InterruptControl &= ~( 0x10 << ( Hal->SelfInterrupt ) );

	*(PULONG)(Hal->MMIOAddrKernel + INT_CTL) = InterruptControl;

	return statusSuccess;
}

TMStatus	halEnableIRQ ( 
	UInt32	HalHandle )
{
	HalObject*	Hal = (HalObject*)HalHandle;
	ULONG	InterruptControl;

	if ( objectValidate ( Hal, HalFourCC ) != True )
	{
		DPF(0,("tmman:halEnableIRQ:objectValidate:FAIL\n" ));
		return statusInvalidHandle;
	}
	InterruptControl = *(Hal->MMIOAddrKernel + INT_CTL);
	InterruptControl |= ( 0x10 << ( Hal->SelfInterrupt ) );
	*(PULONG)(Hal->MMIOAddrKernel + INT_CTL) = InterruptControl;

	return statusSuccess;
}

TMStatus	halGenerateInterrupt ( 
	UInt32	HalHandle )
{
	HalObject*	Hal = (HalObject*)HalHandle;
	if ( objectValidate ( Hal, HalFourCC ) != True )
	{
		DPF(0,("tmman:halGenerateInterrupt:objectValidate:FAIL\n" ));
		return statusInvalidHandle;
	}
/*
	DPF(0,("tmman:halGenerateInterrupt1:IPENDING[%x]:ICLEAR[%x]:IMASK[%x]\n",
		*(PULONG)(Hal->MMIOAddrKernel + IPENDING),
		*(PULONG)(Hal->MMIOAddrKernel + ICLEAR),
		*(PULONG)(Hal->MMIOAddrKernel + IMASK ) ));	
*/
	*(PULONG)(Hal->MMIOAddrKernel + IPENDING) = ( 1<< Hal->PeerInterrupt ); 
/*
	DPF(0,("tmman:halGenerateInterrupt2:IPENDING[%x]:ICLEAR[%x]:IMASK[%x]\n",
		*(PULONG)(Hal->MMIOAddrKernel + IPENDING),
		*(PULONG)(Hal->MMIOAddrKernel + ICLEAR),
		*(PULONG)(Hal->MMIOAddrKernel + IMASK ) ));	
*/
	return statusSuccess;
}

TMStatus	halAcknowledgeInterrupt (
	UInt32	HalHandle )
{
	HalObject*	Hal = (HalObject*)HalHandle;
	ULONG	InterruptControl;

	if ( objectValidate ( Hal, HalFourCC ) != True )
	{
		DPF(0,("tmman:halAcknowledgeInterrupt:objectValidate:FAIL\n" ));
		return statusInvalidHandle;
	}

	/* FOR TM1 */
	/*
		reset	MMIO->dwInterruptControl:INT(3..0)
		reset	MMIO->dwInterruptControl:IE(7..4)
	*/
	while ( 1 )
	{
		if ( halAccess32 ( HalHandle, 
			Hal->Control->TargetInterruptSpinLock  ) == False )
		{
			Hal->Control->HostInterruptSpinLock = 
				halAccess32 ( HalHandle, True  );

			if ( halAccess32 ( HalHandle, 
				Hal->Control->TargetInterruptSpinLock  ) == True )
			{
				Hal->Control->HostInterruptSpinLock = 
					halAccess32 ( HalHandle, False  );			
			}
			else
			{
				InterruptControl = *(Hal->MMIOAddrKernel + INT_CTL);

				// here SelfInterrupt indicates PCI Interrupt A
				// INT#A = 0, INT#B = 1, INT#C = 2, INT#D = 3
				InterruptControl &=
					( ~( 1 << ( Hal->SelfInterrupt ) )  &
					~( 0x10 << ( Hal->SelfInterrupt ) ) );

				*(PULONG)(Hal->MMIOAddrKernel + INT_CTL) = InterruptControl;

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

		}
	}

	return statusSuccess;
}

BOOLEAN	halHardwareInterruptHandler (
    PKINTERRUPT Interrupt,
    PVOID ServiceContext  )
{
	// we should be getting the board handle from the IRQHandle
	HalObject*	Hal = (HalObject*)ServiceContext;
	UInt32	InterruptControl;

	/*
	ULONGLONG	Temp;
	Temp = KeQueryInterruptTime() - Hal->LastInterrupt;
	Hal->InterruptInterval = (ULONG)Temp;
	Hal->LastInterrupt = KeQueryInterruptTime();	
	*/


	InterruptControl = *(Hal->MMIOAddrKernel + INT_CTL);

	// here SelfInterrupt indicates PCI Interrupt A
	// INT#A = 0, INT#B = 1, INT#C = 2, INT#D = 3

	if ( ( InterruptControl &
		( (1u << Hal->SelfInterrupt)  | (0x10u << Hal->SelfInterrupt) ) ) !=
		( (1u << Hal->SelfInterrupt)  | (0x10u << Hal->SelfInterrupt) ) )

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人午夜碰碰视频| 国产黄色成人av| 精品一区二区免费| 一本在线高清不卡dvd| 制服丝袜亚洲网站| 自拍av一区二区三区| 秋霞影院一区二区| 色综合中文字幕| 国产欧美一区二区精品秋霞影院| 亚洲免费看黄网站| 国产1区2区3区精品美女| 日韩亚洲国产中文字幕欧美| 中文字幕不卡在线观看| 日本午夜精品一区二区三区电影| 高清成人免费视频| 欧美一区二区免费视频| 亚洲乱码一区二区三区在线观看| 国产成人亚洲精品青草天美| 欧美一二三四在线| 亚洲国产成人av网| www.色综合.com| 中文字幕乱码日本亚洲一区二区| 久久99精品国产麻豆婷婷洗澡| 在线一区二区三区做爰视频网站| 日本一区二区久久| 粉嫩绯色av一区二区在线观看| 精品国产一区久久| 蜜臀久久99精品久久久久宅男| 欧美色涩在线第一页| 亚洲综合色网站| 成人一区在线观看| 国产女主播一区| 成人丝袜高跟foot| 国产三级一区二区三区| 国产精品综合一区二区三区| 久久这里只精品最新地址| 久久电影国产免费久久电影| 精品日韩一区二区三区免费视频| 首页综合国产亚洲丝袜| 欧美一区二区三区四区在线观看 | 一本一本大道香蕉久在线精品 | 99精品国产热久久91蜜凸| 精品国产91九色蝌蚪| 美女视频网站久久| 欧美二区三区91| 午夜成人免费电影| 国产毛片一区二区| 久久午夜老司机| 久久精品国产成人一区二区三区| 91精品国产欧美一区二区18| 亚洲高清免费一级二级三级| 欧美亚洲一区二区在线| 亚洲综合视频在线观看| 欧美性高清videossexo| 亚洲午夜激情网站| 欧美日本一区二区三区| 午夜天堂影视香蕉久久| 欧美一区二区三区白人| 黄一区二区三区| 欧美猛男gaygay网站| 亚洲亚洲精品在线观看| 欧美日韩一区精品| 日韩电影一区二区三区四区| 日韩女优av电影| 精品无人码麻豆乱码1区2区 | 粉嫩aⅴ一区二区三区四区| 精品蜜桃在线看| 加勒比av一区二区| 欧美国产日韩一二三区| 成人性生交大片免费看中文网站| 国产精品伦理一区二区| 在线观看视频欧美| 蜜臀av一区二区三区| 国产女同性恋一区二区| 91蝌蚪porny成人天涯| 午夜欧美在线一二页| 欧美日韩三级在线| 精品一区二区三区av| 国产精品国产成人国产三级| 欧美性受xxxx黑人xyx| 免费亚洲电影在线| 国产精品嫩草99a| 欧美午夜不卡视频| 偷拍与自拍一区| 国产日产欧产精品推荐色 | 波多野结衣在线一区| 亚洲国产精品视频| 日韩欧美一级二级| 成人永久免费视频| 午夜av一区二区三区| 国产欧美一区视频| 欧美日韩精品福利| 国产一区 二区| 亚洲一区二区三区四区的| 久久午夜羞羞影院免费观看| 欧美性受xxxx黑人xyx性爽| 国产成人在线看| 亚洲国产毛片aaaaa无费看| 久久美女高清视频| 日本韩国欧美一区| 成人性生交大合| 精品影视av免费| 午夜电影久久久| 亚洲欧美日韩系列| 日本一二三四高清不卡| 日韩一区二区三区四区五区六区| 成人激情视频网站| 国内久久精品视频| 一区二区三区四区蜜桃| 国产欧美日韩精品一区| 91麻豆精品国产91久久久久久 | 蜜桃视频一区二区三区| 国产精品久久久久精k8 | 日韩一区二区在线观看视频 | 免费成人在线观看视频| 亚洲精品美腿丝袜| 国产精品亲子乱子伦xxxx裸| 久久免费视频一区| 欧美色老头old∨ideo| 菠萝蜜视频在线观看一区| 麻豆免费精品视频| 久久成人麻豆午夜电影| 丝袜亚洲精品中文字幕一区| 亚洲综合在线视频| 最新久久zyz资源站| 欧美激情一区二区三区在线| 精品久久久久久久久久久久包黑料 | 国产一区二区在线视频| 午夜电影久久久| 久久99国产精品免费| 麻豆久久久久久| 国产一区二区三区不卡在线观看| 捆绑变态av一区二区三区| 蜜桃av噜噜一区二区三区小说| 亚洲不卡在线观看| 夜夜亚洲天天久久| 亚洲激情网站免费观看| 亚洲黄网站在线观看| 亚洲男同性视频| 亚洲国产成人精品视频| 日韩影院免费视频| 麻豆成人免费电影| 国产高清不卡一区二区| 成人国产精品免费观看| 91丝袜高跟美女视频| av一本久道久久综合久久鬼色| 成人av在线资源| 欧洲av一区二区嗯嗯嗯啊| 欧美精品在线观看一区二区| 欧美电影免费观看高清完整版在线观看 | 精品系列免费在线观看| 激情综合网av| jvid福利写真一区二区三区| 欧美亚洲动漫制服丝袜| 91精品国产欧美日韩| 欧美久久久久中文字幕| 日韩三级视频在线看| 国产日韩高清在线| 亚洲黄色尤物视频| 免费在线观看精品| 成人激情综合网站| 欧美日韩电影在线| 久久久久久日产精品| 亚洲最新在线观看| 丝袜亚洲精品中文字幕一区| 男男成人高潮片免费网站| 国产成人精品网址| 91在线一区二区三区| 337p亚洲精品色噜噜噜| 中文字幕av一区二区三区高| 亚洲午夜激情网页| 国产美女精品在线| 在线观看亚洲专区| 国产欧美精品一区二区色综合朱莉 | xfplay精品久久| 亚洲美女屁股眼交| 国产一区二区三区不卡在线观看 | 日本道免费精品一区二区三区| 欧美精品日韩一区| 国产精品高潮呻吟| 免费av网站大全久久| 91一区二区三区在线观看| 日韩一区二区精品葵司在线| 亚洲欧洲日韩女同| 天堂va蜜桃一区二区三区| 99精品欧美一区二区三区小说| 正在播放亚洲一区| 国产精品国产三级国产aⅴ入口| 男女男精品网站| 欧美亚洲动漫另类| 亚洲欧洲在线观看av| 国产综合色产在线精品| 欧美日韩久久一区| 亚洲乱码国产乱码精品精98午夜| 亚洲国产综合在线| 精品视频1区2区3区| 亚洲欧洲日韩av| 国产·精品毛片| 久久精子c满五个校花| 久久99精品国产.久久久久久|