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

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

?? macinit.c

?? 三星4510開(kāi)發(fā)板Sdns100上代的演示程序
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
 * Function : MAC_Tx_isr
 * Description : Interrupt Service Routine for MAC Tx
 */
void MAC_Tx_isr(void)
{   

	sFrameDescriptor *pTxFDptr;
	U32 *pFrameDataPtr ;
	U32 Status ;
	U32 CTxPtr ;

	CTxPtr = BDMATXPTR ;

	while ( gCTxFDPtr != CTxPtr )  { 
		pTxFDptr = (sFrameDescriptor *) gCTxFDPtr;

		// Check CPU ownership
		// if Owner is BDMA then break
		pFrameDataPtr = (U32 *)&pTxFDptr->FrameDataPtr;
		if ( (*pFrameDataPtr & fOwnership_BDMA) ) break ;
	
		Status = (pTxFDptr->StatusAndFrameLength >> 16) & 0xffff;
	
		if (Status & Comp) {
			gsMacTxStatus.MacTxGood++ ;
			//put_byte('T');
		}
		else
		{
			//put_byte('E');
			// Save Error status
			// Check each status, because, error can duplicated
			if (Status & Under) gsMacTxStatus.UnderErr++ ;
			if (Status & ExColl) gsMacTxStatus.ExCollErr++ ;
			if (Status & TxDeffer) gsMacTxStatus.TxDefferedErr++ ;
			if (Status & Paused) gsMacTxStatus.sPaused++ ;
			if (Status & Defer) gsMacTxStatus.DeferErr++ ;
			if (Status & NCarr) gsMacTxStatus.NCarrErr++ ;
			if (Status & SQErr) gsMacTxStatus.sSQE++ ;
			if (Status & LateColl) gsMacTxStatus.LateCollErr++ ;
			if (Status & TxPar) gsMacTxStatus.TxParErr++ ;
			if (Status & TxHalted) gsMacTxStatus.sTxHalted++ ;
    		
			// Set MAC/BDMA Tx control register for next use.
			MacDebugStatus() ; 
			ReadyMacTx() ;
		} // end if

		// Clear Framedata pointer already used.
		pTxFDptr->StatusAndFrameLength = (U32)0x0;

		gCTxFDPtr = (U32)pTxFDptr->NextFrameDescriptor ;
	} // end while loop

	MacTxDoneFlagForLoopBackCheck = 1 ;
}

/*
 * Function : MAC_Rx_isr
 * Description : Interrupt Service Routine for MAC Rx
 * Not Used
 */
void MAC_Rx_isr(void) 
{
	//Print("ISR MAC RX");
	put_byte('M');
}


/*
 * Function : BDMA_Tx_isr
 * Description : Interrupt Service Routine for BDMA Tx
 * Not Used
 */
void BDMA_Tx_isr(void) { }

/*
 * Function : BDMA_Rx_isr
 * Description : Interrupt Service Routine for BDMA Rx
 * Ethenet Frame is received in BDMA_Rx_isr
 */
void BDMA_Rx_isr(void)
{
	sFrameDescriptor *pRxFDptr ;
	U32 RxStatus, FrameLength ;
	U32 CRxPtr;
	U32 sBdmaStat ;
	U8 *pFrameData ;
#if KS32C5000_BUG_FETCH
    	U32 FstData,FstDataSave,*FstFrameData ;
#endif

	// Step 1. Get current frame descriptor and status
	CRxPtr = BDMARXPTR ;
	sBdmaStat = BDMASTAT ;

	// Step 2. Clear BDMA status register bit by write 1
	BDMASTAT |= S_BRxRDF ;
	gsBdmaRxStatus.BdmaRxCnt++ ;


	do {
		// Step 3. Check Null List Interrupt
		if ( BDMASTAT & S_BRxNL ) {
			BDMASTAT |= S_BRxNL ;
			gsBdmaRxStatus.BRxNLErr++ ;
			MacInitialize() ;
			break ;
		}

		// Step 4. Get Rx Frame Descriptor
		pRxFDptr = (sFrameDescriptor *)gCRxFDPtr ;
		RxStatus = (pRxFDptr->StatusAndFrameLength >> 16) & 0xffff;

		// Step 5. If Rx frame is good, then process received frame
		if((RxStatus & RxGood)&&!(RxStatus & OvMax)) {
			FrameLength = pRxFDptr->StatusAndFrameLength & 0xffff ; 
			pFrameData = (U8 *)pRxFDptr->FrameDataPtr ;
			gsBdmaRxStatus.BdmaRxGood++ ;
	     		//if ( !(gsBdmaRxStatus.BdmaRxGood%10000) ) 
				//Print("<R%d:%d>", tm0.tm_sec,gsBdmaRxStatus.BdmaRxGood) ;
				//Print("<FrameLength %d :%d>\r", FrameLength, gsBdmaRxStatus.BdmaRxGood) ;
			/*if((FrameLength==77)|(FrameLength==78)|(FrameLength==79)| \
				(FrameLength==141)|(FrameLength==142)|(FrameLength==143)| \
				(FrameLength==205)|(FrameLength==206)|(FrameLength==207)| \
				(FrameLength==269)|(FrameLength==270)|(FrameLength==271))*/

				//Print("<FrameLength %d :%d RxStat %x>\r", FrameLength, gsBdmaRxStatus.BdmaRxGood, RxStatus) ;
#if KS32C5000_BUG_FETCH
                	FstFrameData = (U32 *)pRxFDptr->FrameDataPtr ;
			FstDataSave = *FstFrameData ;
			FstData = ( (FstDataSave<<24) & 0xFF000000 ) |\
				  ( (FstDataSave<<8)  & 0x00FF0000 ) |\
				  ( (FstDataSave>>24) & 0x000000FF ) |\
				  ( (FstDataSave>>8)  & 0x0000FF00 ) ;
	
			if (gPreviousStatusField == FstData) 
					pFrameData = pFrameData + 4 ;
#endif
	
			// Step 6. Get received frame to memory buffer
			GetRxFrameData(pFrameData, FrameLength, RxStatus) ;
			
		} else {
			//put_byte('q');
			// Step 7. If Rx frame has error, then process error frame
			gErrorPacketCnt++ ;

			// Save Error status
			// Check each status, because, error can duplicated
			if (RxStatus & OvMax) {
				gsMacRxStatus.OvMaxSize++ ;
				//put_byte('M');
				Print("\r\r OverSize error\r");
			}
			if (RxStatus & CtlRecd) gsMacRxStatus.sCtlRecd++ ;
			if (RxStatus & Rx10Stat) gsMacRxStatus.sRx10Stat++ ;
			if (RxStatus & AlignErr) gsMacRxStatus.AllgnErr++ ;
			if (RxStatus & CRCErr) gsMacRxStatus.sCRCErr++ ;
			if (RxStatus & Overflow) gsMacRxStatus.OverflowErr++ ;
			if (RxStatus & LongErr)	 gsMacRxStatus.sLongErr++ ;
			if (RxStatus & RxPar) gsMacRxStatus.RxParErr++ ;
			if (RxStatus & RxHalted) gsMacRxStatus.sRxHalted++ ;
		}

		// Step 8. Change ownership to BDMA for next use
		(pRxFDptr->FrameDataPtr) |= fOwnership_BDMA;

		// Save Current Status and Frame Length field, and clear
#if KS32C5000_BUG_FETCH
		gPreviousStatusField = pRxFDptr->StatusAndFrameLength ;
#endif
		//pRxFDptr->StatusAndFrameLength = (U32)0x0;

		// Step 9. Get Next Frame Descriptor pointer to process
		gCRxFDPtr = (U32)(pRxFDptr->NextFrameDescriptor) ;

	} while (CRxPtr != gCRxFDPtr);

	// Step 10. Check Notowner status
	if ( sBdmaStat & S_BRxNO ) {
		BDMASTAT |= S_BRxNO ;
		gsBdmaRxStatus.BRxNOErr++ ;

		ReadyMacRx() ;
	}

	BdmaRxDoneFlagForLoopBackCheck = 1 ; // only used for loopback test
}


/*
 * Function : SendPacket
 * Description : Send ethernet frame function
 * Input : frame data pointer, frame length
 * Output : transmit ok(1) or error(0)
 */
int SendPacket(U8 *Data,int Size)
{
	sFrameDescriptor	*psTxFD;
	U32			*pFrameDataPtr ;
	U8 			*pFrameData ;
	int			FrameLength ;


	// 1. Get Tx frame descriptor & data pointer
	psTxFD = (sFrameDescriptor *)gWTxFDPtr ;

	pFrameData = (U8 *)psTxFD->FrameDataPtr ;
	pFrameDataPtr = (U32 *)&psTxFD->FrameDataPtr;
	FrameLength = Size + sizeof(etheader) ;

	// 2. Check BDMA ownership
	if ( (*pFrameDataPtr & fOwnership_BDMA) ) return 0 ;

	// 3. Prepare Tx Frame data to Frame buffer
	memcpy ((U8 *)pFrameData,(U8 *)Data,FrameLength);

	// 4. Set TX Frame flag & Length Field
#ifdef LITTLE
	psTxFD->Reserved = (PaddingMode | CRCMode | SourceAddrIncrement | \
			LittleEndian | WidgetAlign00 | MACTxIntEn);
#else
	psTxFD->Reserved = (PaddingMode | CRCMode | SourceAddrIncrement | \
			BigEndian | WidgetAlign00 | MACTxIntEn);
#endif
	psTxFD->StatusAndFrameLength = (U32)(FrameLength & 0xffff);

	// 5. Cheange ownership to BDMA
	psTxFD->FrameDataPtr |= fOwnership_BDMA;

	// 6. Enable MAC and BDMA Tx control register
	MacTxGo();

	// 7. Change the Tx frame descriptor for next use
	gWTxFDPtr = (U32)(psTxFD->NextFrameDescriptor);

	return 1 ;
}

/*
 * Function : ControlFrameTransfer
 * Description : Transfer Control Frame Data to another Host
 */
void ControlFrameTransfer(void) 
{
	char TransferPacket ;

	gBdmaTxCon  |= BTxCPIE ;
	ReadyMacTx() ;

	do 
	{
	Print("\r   $$ Select Transmit(T) or Quit(Q) ? ") ;
	TransferPacket = get_byte() ;
	if ( (TransferPacket == 'T') || (TransferPacket == 't') )
		{

		// Step 1. set destination address to CAM #0
		// Step 2. set source address to CAM #1
		// CAM #0 : 0000f0110000 (Destin Addr)
		// CAM #1 : 11f000000000 (Source Addr)
		VPint(CAM_BaseAddr) = 0x0000f011 ;	
		VPint(CAM_BaseAddr + 0x4) = 0x000011f0 ;	
		VPint(CAM_BaseAddr + 0x8) = 0x00000000 ;	

		// Step 3. set length or type field, opcode, and operand to CAM #18
		// CAM #18 : Opcode & Operand
		// CAM #18 : Pause Count Value
		VPint(CAM_BaseAddr + 0x6c) = 0x88080001 ;	

		// Step 4. set to zero preceed CAM #18
		// CAM #19 - #20 : Filled with Zero
		VPint(CAM_BaseAddr + 0x70) = 0x12340000 ;	
		VPint(CAM_BaseAddr + 0x74) = 0x00000000 ;	
		VPint(CAM_BaseAddr + 0x78) = 0x00000000 ;	
		VPint(CAM_BaseAddr + 0x7c) = 0x00000000 ;	

		// Step 5. Enable CAM location
		// CAM Enable
		CAMEN = 0x1c0003 ; 

		// Step 6. Enable transmit control frame by 
  		//         set SendPause bit in MACTXCON
		MACTXCON |= SdPause | TxEn ;

		// Step 7. Wait control frame finished
		while ( (BDMASTAT & S_BTxCCP) ) ;
		}

	} while ( (TransferPacket != 'Q') && (TransferPacket != 'q') ) ;
}


/*
 * Function : MacDebugStatus
 * Description : View MAC status, and other
 */
void MacDebugStatus(void) 
{
        sFrameDescriptor *pRxFDptr, *pTxFDptr ;
	U32 *pFDPtr ;

        pRxFDptr =  (sFrameDescriptor *) gCRxFDPtr ;
        pFDPtr = (U32 *)pRxFDptr ;

	Print("\n\n\r $$ MAC Rx Frame : Good ( %d ), Error ( %d ) ",\
			gsBdmaRxStatus.BdmaRxGood, gErrorPacketCnt);
	Print("\r --------------------------------------") ;
	Print("\r - Current Frame Descriptor Pointer : %08x", pFDPtr ) ; 
	Print("\r   Frame Data Ptr          : %08x", *pFDPtr++ ) ; 
	Print("\r   Reserved Field          : %08x", *pFDPtr++ ) ; 
	Print("\r   Status and Frame Length : %08x", *pFDPtr++ ) ; 
	Print("\r   Next Frame Descriptor   : %08x", *pFDPtr ) ; 
	Print("\r --------------------------------------") ;
	Print("\r - BDMARXPTR : %08x", BDMARXPTR ) ; 
	Print("   - BDMASTAT  : %08x", BDMASTAT ) ; 
	Print("\r - BDMARXCON : %08x", BDMARXCON ) ; 
	Print("   - BDMARXLSZ : %08x", BDMARXLSZ ) ; 
	Print("\r - CAM Base  : %08x", CAM_BASE ) ; 
	Print("   - BDMARXBUF : %08x", BDMARXBUF ) ; 
	Print("\r - MACCON    : %08x", MACCON ) ; 
	Print("   - CAMCON    : %08x", CAMCON ) ; 
	Print("\r - MACRXCON  : %08x", MACRXCON ) ; 
	Print("   - MACRXSTAT : %08x", MACRXSTAT ) ; 
	Print("\r --------------------------------------") ;

        pTxFDptr =  (sFrameDescriptor *) gCTxFDPtr ;
        pFDPtr = (U32 *)pTxFDptr ;
	Print("\n\r $$ MAC Tx Frame : Good ( %d )",gsMacTxStatus.MacTxGood) ;
	Print("\r --------------------------------------") ;
	Print("\r - Current Frame Descriptor Pointer : %08x", pFDPtr ) ; 
	Print("\r   Frame Data Ptr          : %08x", *pFDPtr++ ) ; 
	Print("\r   Reserved Field          : %08x", *pFDPtr++ ) ; 
	Print("\r   Status and Frame Length : %08x", *pFDPtr++ ) ; 
	Print("\r   Next Frame Descriptor   : %08x", *pFDPtr ) ; 
	Print("\r --------------------------------------") ;

	Print("\r - BDMATXPTR : %08x", BDMATXPTR ) ; 
	Print("   - BDMATXCON : %08x", BDMATXCON ) ; 
	Print("\r - BDMATXBUF : %08x", BDMATXBUF ) ; 
	Print("   - MACTXCON  : %08x", MACTXCON ) ; 
	Print("\r - MACTXSTAT : %08x", MACTXSTAT ) ; 
	Print("\r --------------------------------------") ;
	Print("\r - EMISSCNT  : %08x", EMISSCNT ) ; 
	Print("   - EPZCNT    : %08x\n\r", EPZCNT ) ; 
}

/*
 * Function : BdmaRxForSingleIsr
 * Description : BDMA Rx Interrupt Service Routine for Single Receive
 */
void BdmaRxForSingleIsr(void) 
{	
	sFrameDescriptor *pRxFDptr ;
	U32 RxStatus, FrameLength ;
	U32 CRxPtr;
	U32 sBdmaStat ;
	U8 *pFrameData ;
#if KS32C5000_BUG_FETCH
    	U32 FstData,FstDataSave,*FstFrameData ;
#endif

	// Step 1. Get current frame descriptor and status
	CRxPtr = BDMARXPTR ;
	sBdmaStat = BDMASTAT ;

	// Step 2. Clear BDMA status register bit by write 1
	BDMASTAT |= S_BRxRDF ;
	gsBdmaRxStatus.BdmaRxCnt++ ;

	do {
		// Step 3. Check Null List Interrupt
		if ( BDMASTAT & S_BRxNL ) {
			BDMASTAT |= S_BRxNL ;
			gsBdmaRxStatus.BRxNLErr++ ;
			MacInitialize() ;
			break ;
		}

		// Step 4. Get Rx Frame Descriptor
		pRxFDptr = (sFrameDescriptor *)gCRxFDPtr ;
		RxStatus = (pRxFDptr->StatusAndFrameLength >> 16) & 0xffff;

		// Step 5. If Rx frame is good, then process received frame
		if(RxStatus & RxGood) {
			FrameLength = pRxFDptr->StatusAndFrameLength & 0xffff ; 
			pFrameData = (U8 *)pRxFDptr->FrameDataPtr ;
			gsBdmaRxStatus.BdmaRxGood++ ;
	     		if ( !(gsBdmaRxStatus.BdmaRxGood%10000) ) 
				Print("<R%d>", gsBdmaRxStatus.BdmaRxGood) ;

#if KS32C5000_BUG_FETCH
                	FstFrameData = (U32 *)pRxFDptr->FrameDataPtr ;
			FstDataSave = *FstFrameData ;
			FstData = ( (FstDataSave<<24) & 0xFF000000 ) |\
				  ( (FstDataSave<<8)  & 0x00FF0000 ) |\
				  ( (FstDataSave>>24) & 0x000000FF ) |\
				  ( (FstDataSave>>8)  & 0x0000FF00 ) ;
	
			if (gPreviousStatusField == FstData) 
					pFrameData = pFrameData + 4 ;
#endif
	
			// Step 6. Get received frame to memory buffer
			Print("\n ->> %d'th Received Frame ",gsBdmaRxStatus.BdmaRxGood) ;
			PrintRxFrame(pFrameData,FrameLength) ;
	
		} else {
			// Step 7. If Rx frame has error, then process error frame
			gErrorPacketCnt++ ;

			// Save Error status
			// Check each status, because, error can duplicated
			if (RxStatus & OvMax) gsMacRxStatus.OvMaxSize++ ;
			if (RxStatus & CtlRecd) gsMacRxStatus.sCtlRecd++ ;
			if (RxStatus & Rx10Stat) gsMacRxStatus.sRx10Stat++ ;
			if (RxStatus & AlignErr) gsMacRxStatus.AllgnErr++ ;
			if (RxStatus & CRCErr) gsMacRxStatus.sCRCErr++ ;
			if (RxStatus & Overflow) gsMacRxStatus.OverflowErr++ ;
			if (RxStatus & LongErr)	 gsMacRxStatus.sLongErr++ ;
			if (RxStatus & RxPar) gsMacRxStatus.RxParErr++ ;
			if (RxStatus & RxHalted) gsMacRxStatus.sRxHalted++ ;
		}

		// Step 8. Change ownership to BDMA for next use
		(pRxFDptr->FrameDataPtr) |= fOwnership_BDMA;

		// Save Current Status and Frame Length field, and clear
#if KS32C5000_BUG_FETCH
		gPreviousStatusField = pRxFDptr->StatusAndFrameLength ;
#endif
		pRxFDptr->StatusAndFrameLength = (U32)0x0;

		// Step 9. Get Next Frame Descriptor pointer to process
		gCRxFDPtr = (U32)(pRxFDptr->NextFrameDescriptor) ;

	} while (CRxPtr != gCRxFDPtr);

	// Step 10. Check Notowner status
	if ( sBdmaStat & S_BRxNO ) {
		BDMASTAT |= S_BRxNO ;
		gsBdmaRxStatus.BRxNOErr++ ;

		ReadyMacRx() ;
	}
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲黄色av一区| 国产真实乱子伦精品视频| 亚洲丝袜美腿综合| 国产精品无圣光一区二区| 久久综合国产精品| 国产香蕉久久精品综合网| 久久久久久久综合| 欧美国产丝袜视频| 国产精品三级久久久久三级| 最新日韩在线视频| 亚洲欧美另类在线| 亚洲国产一区二区三区| 视频在线观看一区| 美女视频黄免费的久久 | 亚洲人成精品久久久久久| 中文字幕中文字幕在线一区| 17c精品麻豆一区二区免费| 亚洲人精品午夜| 亚洲成人动漫在线免费观看| 日韩激情中文字幕| 黄色日韩网站视频| av一本久道久久综合久久鬼色| av成人老司机| 欧美日韩精品欧美日韩精品一综合| 欧美精品久久一区| 久久久精品一品道一区| √…a在线天堂一区| 午夜激情久久久| 激情小说亚洲一区| 99久久精品国产一区| 欧美日韩精品一区二区三区四区| 日韩视频免费观看高清完整版在线观看 | 五月激情丁香一区二区三区| 久久99国产精品尤物| gogogo免费视频观看亚洲一| 欧美三电影在线| 精品乱人伦一区二区三区| 日韩一区在线播放| 亚洲成人av免费| 国内精品国产成人| 色999日韩国产欧美一区二区| 欧美一区二区视频在线观看| 中文字幕欧美日本乱码一线二线| 亚洲一本大道在线| 国产一区在线观看麻豆| 色狠狠综合天天综合综合| 日韩一级完整毛片| 综合中文字幕亚洲| 久久电影网电视剧免费观看| 99re这里只有精品6| 欧美大片一区二区三区| 精品亚洲成a人| 在线观看亚洲精品视频| 精品国产乱码久久久久久1区2区 | 国产一区二区在线影院| 在线看国产日韩| 久久这里只有精品6| 夜夜爽夜夜爽精品视频| 国产精品一区一区| 欧美日本视频在线| 亚洲视频中文字幕| 国产伦精一区二区三区| 欧美另类变人与禽xxxxx| 中文字幕一区二区不卡| 久久精品国内一区二区三区| 欧美午夜不卡在线观看免费| 中文字幕精品一区| 久久精品国产成人一区二区三区| 91激情五月电影| 中文字幕第一页久久| 蜜桃视频免费观看一区| 在线视频一区二区三| 国产欧美1区2区3区| 免费在线看成人av| 欧美做爰猛烈大尺度电影无法无天| 国产欧美日韩三级| 美女免费视频一区二区| 欧美女孩性生活视频| 一卡二卡欧美日韩| 成人国产亚洲欧美成人综合网 | 亚洲精品国产视频| 成人午夜短视频| 欧美精品一区二区三区四区 | 久久精品免费看| 制服丝袜激情欧洲亚洲| 亚洲精品国产无套在线观| 99精品一区二区三区| 国产精品美女一区二区在线观看| 经典三级一区二区| 日韩精品中文字幕一区二区三区 | 老色鬼精品视频在线观看播放| 91国产丝袜在线播放| 国产精品成人免费| 波多野结衣亚洲| 国产精品不卡在线| av中文字幕在线不卡| 中文字幕一区二区日韩精品绯色| 成人中文字幕电影| 欧美韩国日本不卡| 不卡电影一区二区三区| 国产精品麻豆久久久| 国产精品99久久不卡二区| 久久精品人人做| 国产99久久久国产精品免费看| 国产亚洲午夜高清国产拍精品| 国产精品亚洲成人| 欧美国产成人精品| 99热这里都是精品| 亚洲欧美激情小说另类| 色婷婷综合久色| 亚洲一二三区不卡| 欧美二区三区91| 久久精品国产久精国产爱| 日韩久久久久久| 国产精品一区二区久久不卡 | 中文字幕第一区第二区| 成人国产精品免费观看| 最好看的中文字幕久久| 在线亚洲精品福利网址导航| 亚洲国产精品久久久久婷婷884 | 最近日韩中文字幕| 91国在线观看| 秋霞影院一区二区| 欧美精品一区二区久久婷婷| 国产ts人妖一区二区| 亚洲婷婷国产精品电影人久久| 欧美亚洲国产一卡| 琪琪久久久久日韩精品| 久久蜜桃香蕉精品一区二区三区| 99久久99久久精品国产片果冻| 一区二区三区四区蜜桃| 日韩一区二区在线观看视频| 国产成人亚洲精品青草天美| 1000精品久久久久久久久| 欧美绝品在线观看成人午夜影视| 国内精品久久久久影院一蜜桃| 国产精品网站在线观看| 欧美日韩精品一区二区三区四区 | 色综合网站在线| 日韩国产欧美在线播放| 国产日韩视频一区二区三区| 色综合久久中文综合久久牛| 日韩精品欧美成人高清一区二区| 久久亚洲一级片| 91麻豆国产精品久久| 日本色综合中文字幕| 欧美激情一区二区在线| 欧美日韩高清一区| 成人性生交大合| 三级久久三级久久久| 日本一区二区三区国色天香 | 5566中文字幕一区二区电影| 成人性生交大片免费看中文网站| 亚洲国产婷婷综合在线精品| 国产丝袜欧美中文另类| 欧美人体做爰大胆视频| 成人国产精品免费观看动漫| 日韩高清电影一区| 亚洲婷婷在线视频| 久久免费视频色| 欧美精品欧美精品系列| 91影视在线播放| 国产一区二区看久久| 亚瑟在线精品视频| 国产精品美女www爽爽爽| 91精品在线观看入口| 色综合天天性综合| 激情伊人五月天久久综合| 一卡二卡欧美日韩| 国产精品久久久久天堂| 欧美www视频| 欧美日韩国产在线播放网站| www.欧美日韩国产在线| 久久精品国内一区二区三区| 亚洲成人激情社区| 亚洲另类春色校园小说| 亚洲国产精品成人久久综合一区 | 美国三级日本三级久久99| 亚洲一区在线观看网站| 成人免费视频在线观看| 久久亚洲精品国产精品紫薇| 337p亚洲精品色噜噜狠狠| 在线精品视频小说1| 不卡电影免费在线播放一区| 国产成人在线观看免费网站| 免费精品视频在线| 亚洲成va人在线观看| 亚洲欧美电影一区二区| 国产精品你懂的在线| 国产日韩欧美a| 亚洲精品在线免费播放| 日韩精品一区国产麻豆| 欧美精品丝袜中出| 欧美日韩一区 二区 三区 久久精品| eeuss鲁一区二区三区| 成人美女在线视频| 国产精品91一区二区| 国产一区二区三区观看| 狠狠色丁香久久婷婷综| 免费不卡在线观看|