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

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

?? netdrv.cpp

?? coldfire5206芯片的boot程序
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
/*********************************************************************************
*	FileName:	 netdrv.cpp
*	Description: In this cpp file, all the routines used in net driver is provided.
*	Version:     v1.2
*
*	Function List:
*
*	History:
*	<author>           <time>                <desc>
* 	Ason               2001.5				establish this file
*	shiliangcai		   2002.10				refresh this file, for bios and update
*											old program is in "main\net\netdrv.cpp"
**********************************************************************************/

//#define MDEBUG

#include "bastype.h"
#include "mcf5206.h"
#include "netdrv.h"


//UCHAR gStatusChange = FALSE;
//STSTMAC  MacState;           // statistics about MAC layer.
//static UINT16  ReceiveIntHappen = 0;
//static UINT16  TransmitHappen = 0;
//static UINT16  BufShortHappen = 0;
//static UCHAR	SndLoopBuf[256];  // for loop test only.
//static UCHAR	RcvLoopBuf[RECEIVE_BUF_MAX_SIZE]; // for loop test and for buffer shortage.
//struct pqueue_hdr Recv_List;
#ifdef BIOS_DEBUG
#include "graph.h"
// for test, use TIME1, 13500 = 1s,
UINT32 g_nOneTransferTimeForTest1;
UINT32 g_nOneTransferTimeForTest2;
UINT32 g_nOneTransferTimeForTest3;
UINT32 g_nOneTransferTimeForTest4;
UINT32 g_nOneTransferTimeForTest5;
UINT32 g_nOneTransferTimeForTest6;
static UINT32 g_nSendSta;
static UINT32 g_nRecSta;
static UINT32 g_nErroSta;
#endif
// reserved bits mask for MII registers.
// bit 1 means mask. all those bits in MII register are reserved from access.
static const UINT16 PhyRegsReservedBitsMasks[] = 
{
	0x007F,                    // Control reg reserved bits mask
		0x07C0,                    // Status reg reserved bits
		0,                         // PhyID reserved bits mask
		0,                         // PhyID reserved bits mask
		0x1C00,                    // Nway Local ability reserved bits mask
		0x1C00,                    // Nway Partner ability reserved bits mask
		0xFFE0,                    // Nway Expansion
		0,0,0,0,0,0,0,0,0,0,0,0,0, // Other regs
		0,0,0,0,0,0,0,0,0,0,0,0    // Other regs
};
static UCHAR	g_acNetReceiveFrame[NET_RECEIVE_BUF_FRAME_COUNT][RECEIVE_BUF_MAX_SIZE];
static UINT16	g_anNetReceiveFrameLength[NET_RECEIVE_BUF_FRAME_COUNT];
static UINT16	g_nNetReceiveInIndex;
static UINT16	g_nNetReceiveOutIndex;

static UCHAR	g_acNetTransmitBuffer[TRANSMIT_BUF_MAX_SIZE];
static UCHAR   g_nNetTransmitLen;
static NETFRAMEHEAD	g_stNetFrameHead;
static CHAR    ReadPage;
static CHAR    WritePage;
static CHAR    PacketDelivered;
// s_nUpateProcessFlag表示是從主程序跳過來,還是主程序無效而執行升級
// 如果是前者,s_nUpateProcessFlag = 1,第一次就需要比較機器ID,接收升級文件
// 如果是后者,s_nUpateProcessFlag = 0,第一次不需要比較機器ID,接收版本命令
// 成功處理玩第一次后,s_nUpateProcessFlag = 2,不再區分,都需要比較機器ID
static UCHAR   s_nUpateProcessFlag;
static UINT16	s_nErrorCount;
//void RecoverFromBufShortage(void);
//UCHAR				gucRemoteIPAddr[4];
extern SYSCONFIGFLAG  g_stSysFlag;
static UINT16	s_nDstPort;

/***********************************************************************
Name:         WriteMiiWord
Description:  This routine is used to write a word into Mii registers.
Parameters:   data, which data to write; data_size, how many bits.
Returns:      None.
Test and Revision:
Ason. 2001.7
************************************************************************/
void WriteMiiWord( UINT32 data, UINT16 data_size )
{
	UINT32 data_bit;

	for ( ; data_size > 0; data_size-- )
	{
		data_bit = ( data >> (31 - MII_MDO_BIT_POSITION ) ) & MII_MDO_MASK;
		outportb(MIIEEPROMADD, MII_WRITE | data_bit );
		outportb(MIIEEPROMADD, MII_WRITE | MII_CLK | data_bit );
		data <<= 1;
	}
}


/*
Name:        ReadMiiRegister
Description: Read a certain register in Mii.
Parameters:  phy_addr, physical address of the PHY, in this case,
as we use internal PHY, its address is always 0x10,
reg_num, which register, totally 32 register.
reg_data_p, pointer points to the register value.
Return:      NET_NO_ERROR or Error code.
Test and revision:
Ason. 2001.6
*/
INT16 ReadMiiRegister( UINT16 phy_addr, UINT16 reg_num,  UINT16 * reg_data_p )
{

	UINT32   command = ((UINT32)phy_addr <<PHY_ADDR_ALIGN)
		|((UINT32)reg_num <<REG_ADDR_ALIGN)
		|MII_READ_FRAME;
	UINT16   bits_of_short = sizeof(UINT16) * 8;
	UINT16   i;
	UCHAR    tempc;


	*reg_data_p = 0;

	WriteMiiWord( PRE, (UINT16)( 2*bits_of_short ));
	WriteMiiWord( command, (UINT16) (bits_of_short - 2));
	MIIOUT3STATE

		tempc = inportb(MIIEEPROMADD);
	if ( tempc & MII_READ_DATA_MASK )
	{
		// TRY AGAIN!
		// some kind of PHY need to do this twice...
		MIIOUT3STATE
			tempc = inportb(MIIEEPROMADD);
		if ( tempc & MII_READ_DATA_MASK )
			return( NET_ERROR_MIIRD ) ;
	}

	for (i = 0; i < bits_of_short; i++)
	{
		outportb(MIIEEPROMADD, MII_READ);
		outportb(MIIEEPROMADD, MII_READ | MII_CLK);

		tempc = inportb(MIIEEPROMADD);
		*reg_data_p = (*reg_data_p << 1) |(UINT16)((tempc >> MII_MDI_BIT_POSITION ) & 0x0001 );
	}
	MIIOUT3STATE

		// Mask the bits without any meaning.
		*reg_data_p &= ~PhyRegsReservedBitsMasks[reg_num];

	return(NET_NO_ERROR);
}


/*****************************************************************
Name:         WriteMiiRegister
Description:  write into a mii register.
Parameters:   phy_addr, reg_num, reg_data. as "ReadMiiRegister"
Return:       None.
Test and revision:
Ason. 2001.6
******************************************************************/
void WriteMiiRegister( UINT16 phy_addr, UINT16 reg_num, UINT16 reg_data )
{
	UINT32   command = ((UINT32)phy_addr << PHY_ADDR_ALIGN )
		|((UINT32)reg_num << REG_ADDR_ALIGN )
		|MII_WRITE_FRAME
		|(UINT32)(reg_data & ~PhyRegsReservedBitsMasks[reg_num]);

	UINT16   bits_of_short = sizeof(UINT16) * 8;

	WriteMiiWord( PRE, (UINT16)(2* bits_of_short));
	WriteMiiWord( command, (UINT16)( 2 * bits_of_short ));
	MIIOUT3STATE
}

/*
Name:           TestMacReg
Description:	Test some registers to verify that the chip is good.
Parameters:     None.
Return:         Error code or NU_NO_ERROR.

Test and revisioin:   Ason. 2001.5

*/
INT16 TestMacReg(void)
{

	UCHAR   tempc;
	UINT16  temps;
	INT16   return_value =  NET_NO_ERROR;
	INT16   i;

	// reset the chip. a read or a write will 
	// software-reset the chip. as datasheet is 
	// not coherent with sample, i just read once and
	// write once.
	outportb(MAR7ADD,0xff);
	tempc = inportb(MAR7ADD);

	// wait for a while. data sheet says at least 1.5 ms.
	Sleep(10);

	// stop the card.
	SETTOPAGE0();
	outportb(CRADD,0x21);

	// in the datasheet, it is said that RST IN ISR is
	// not a guarantee of stop, stop at least 1.5 ms.
	Sleep(10);

	// first of all, set to page 1.
	SETTOPAGE1();
	// write and read MAC address registers.
	outportb(PARA0ADD,0x55);
	outportb(PARA1ADD,0x55);
	outportb(PARA2ADD,0x55);
	outportb(PARA3ADD,0x55);
	outportb(PARA4ADD,0x55);
	outportb(PARA5ADD,0x55);
	if ( 0x55 != inportb(PARA0ADD) )
		return_value = NET_ERROR_NE2REG;
	if ( 0x55 != inportb(PARA0ADD) )
		return_value = NET_ERROR_NE2REG;
	if ( 0x55 != inportb(PARA0ADD) )
		return_value = NET_ERROR_NE2REG;
	if ( 0x55 != inportb(PARA0ADD) )
		return_value = NET_ERROR_NE2REG;
	if ( 0x55 != inportb(PARA0ADD) )
		return_value = NET_ERROR_NE2REG;
	if ( 0x55 != inportb(PARA0ADD) )
		return_value = NET_ERROR_NE2REG;

	SETTOPAGE1();
	outportb(PARA0ADD,0xaa);
	outportb(PARA1ADD,0xaa);
	outportb(PARA2ADD,0xaa);
	outportb(PARA3ADD,0xaa);
	outportb(PARA4ADD,0xaa);
	outportb(PARA5ADD,0xaa);

	if ( 0xaa != inportb(PARA0ADD) )
		return_value = NET_ERROR_NE2REG;
	if ( 0xaa != inportb(PARA0ADD) )
		return_value = NET_ERROR_NE2REG;
	if ( 0xaa != inportb(PARA0ADD) )
		return_value = NET_ERROR_NE2REG;
	if ( 0xaa != inportb(PARA0ADD) )
		return_value = NET_ERROR_NE2REG;
	if ( 0xaa != inportb(PARA0ADD) )
		return_value = NET_ERROR_NE2REG;
	if ( 0xaa != inportb(PARA0ADD) )
		return_value = NET_ERROR_NE2REG;

	return ( return_value );

}


/*
Name:           TestMacRam
Description:	Test SRAM in AX88796
Parameters:     None
Return:         Error code or NET_NO_ERROR
Test and revisioin:   Ason. 2001.5

*/
INT16 TestMacRam(void)
{
	INT16   i;
	INT16   return_value = NET_NO_ERROR;
	UINT16  tempus;
	UCHAR   tempc;

	// first of all, stop the card.
	SETTOPAGE0();
	outportb(CRADD,0x21);
	Sleep(10);

	SETTOPAGE0();

	// make loop to keep 796 from receiving data.
	outportb(TCRADD,0x22);

	// clear all interrupt state.
	outportb(ISRADD,0xff);
	// clear IMR.
	outportb(IMRADD,0x00);

	// set DCR, make a 68k format, word wide and DMA not always complete.
	outportb(DCRADD,0x03);

	// following lines of codes, generate the Remote DMA to test all SRAM.
	// first of all, write 0x2000 words.
	// set byte offset.
	outportb(RSAR0ADD,0);
	// set the page.
	outportb(RSAR1ADD,0x40);   // page is from 0x40 ~ 0x7f
	// set the data length.    16kbytes.
	outportb(RBCR0ADD,0x00);
	outportb(RBCR1ADD,0x40);   // 0x2000 words.

	// start remote DMA to write.
	outportb(CRADD,0x12);

	for ( i = 0; i < 0x2000; i++ )  
		outport( DATAPORTADD, i );

	// wait for DMA to complete.
	i = 0;
	while(i <= NET_TMO_DMA)
	{
		if (inportb(ISRADD) & 0x40)
			break;

		Sleep(10);
		i ++;
	}
	if ( i > NET_TMO_DMA )
		return( NET_ERROR_DMATMO );

	// clear the interrupt.
	outportb(ISRADD,0xff);

	// following a few lines to read out the result.
	// set byte offset.
	outportb(RSAR0ADD,0);
	// set the page.
	outportb(RSAR1ADD,0x40);
	// set the data length. 16kbytes.
	outportb(RBCR0ADD,0x00);
	outportb(RBCR1ADD,0x40);

	// start remote DMA to read.
	outportb(CRADD, 0x0a);

	for ( i = 0 ; i < 0x2000; i++ )
	{
		if ( i != inport(DATAPORTADD))
		{
			return_value = NET_ERROR_DMAERR;
			break;
		}
	}

	// wait for DMA to complete.
	i = 0;
	while(i <= NET_TMO_DMA)
	{
		if (inportb(ISRADD) & 0x40)
			break;

		Sleep(10);
		i ++;
	}
	if ( i > NET_TMO_DMA )
		return( NET_ERROR_DMATMO );

	// clear the interrupt.
	outportb(ISRADD, 0xff);

	// abort DMA
	tempc = inportb(CRADD); 
	tempc |= 0x20;  
	outportb(CRADD,tempc);

	return( return_value );
}


/*
Name:           InitMacCntlr
Description:	Initialize MAC controller of 88796
Parameters:     A string witch holds MAC address.
Return:         mode - 0, loop; 1, normal.
Only the work mode is set, the intrrupt routines
are not set anyway.
Test and revisioin:   Ason. 2001.5
*/
void InitMacCntlr(UCHAR *mac_addr, INT16 mode)
{

	UCHAR tempc;

	// Step 1, turn to page 0 and set all those
	// important things in page 0,
	SETTOPAGE0();

	// step 1.1
	// 0x21, stop the controller and abort remote DMA.
	outportb(CRADD,0x21);
	Sleep(10);

	// step 1.2    clear all interrupt and disable all interrupt.
	outportb(ISRADD,0xff);
	// the reset bit will not generate interrupt actually in 796
	outportb(IMRADD,0x00);

	// step 1.3
	// 0x03, DCR.  16-bit DMA transfering, byte order 68K
	//             Dual 16-bit DMA mode, remote DMA is not always complete,
	outportb(DCRADD,0x03);

	// step 1.4
	// 0x00, TCR.   CRC appended by Transmitter.
	//              No loop back. 
	//              Half duplex, PAD enabled, Retransmite in 
	//              later collision, 88796 loop back.
	if ( 0 == mode )
		outportb(TCRADD,0x22); 
	else
		outportb(TCRADD,0x20); 
//		outportb(TCRADD,0x00); 

	// step 1.5
	// 0x24, RCR.   Packets with receive errors are rejected.
	//              reject runt packet.
	//              accept broadcast.
	//              not check multicast packet.   !!!
	//              Non promiscuous mode.
	//              normal mode.
	//              Low active interrupt.
	outportb(RCRADD,0x44);

	// step 1.6
	// DMA registers.
	// PSTARD set to 0x46. Attention, this is start address for receiving.
	outportb(PSTARTADD,0x46);

	// PSTOP  set to 0x80.
	outportb(PSTOPADD,0x80);

	// BNRY  set to 0x46.  Same as PSTARD.
	outportb(BNRYADD,0x46);

	// TSR, This is no use actually.
	outportb(TSRADD,0x40);
	// TBCR0
	outportb(TBCR0ADD,0x00);
	// TBCR1
	outportb(TBCR1ADD,0x00);
	// ISR, clear all ISR.
	outportb(ISRADD,0xff);
	// RSAR0ADD,
	outportb(RSAR0ADD,0x00);
	// RSAR1ADD,
	outportb(RSAR1ADD,0x40);
	// RBCR0ADD.
	outportb(RBCR0ADD,0x00);
	// RBCR1ADD.
	outportb(RBCR1ADD,0x00);

	// 1.7 Gap registers?
	// outportb(IFGS1ADD,0x00);
	// outportb(IFGS2ADD,0x00);
	// outportb(IFGADD,0x00);

	// 1.8  TPSRADD.
	outportb( TPSRADD, WritePage);

	// now, change to page 1.
	SETTOPAGE1();
	// step 2.1
	// CURR
	outportb(CPRADD,0x47);

	// step 2.2
	// MAC Address 00001b182202 plus bednumber.
	outportb(PARA0ADD,*mac_addr);
	outportb(PARA1ADD,*(mac_addr+1));
	outportb(PARA2ADD,*(mac_addr+2));
	outportb(PARA3ADD,*(mac_addr+3));
	outportb(PARA4ADD,*(mac_addr+4));
	outportb(PARA5ADD,*(mac_addr+5));

	// step 2.3
	// multicast address, don't use multicast.
	outportb(MAR0ADD,0x00);
	outportb(MAR1ADD,0x00);
	outportb(MAR2ADD,0x00);
	outportb(MAR3ADD,0x00);
	outportb(MAR4ADD,0x00);
	outportb(MAR5ADD,0x00);
	outportb(MAR6ADD,0x00);
	outportb(MAR7ADD,0x00);

	ReadPage = 0x47;   // read page should be same with current page.
	WritePage = 0x40;  // actually, this will not change.
	
	return;
}

/*
Name:           SetIntRt
Description:	open interrupt and let NIC to work.
Parameters:     None.
Return:         None.

Test and revisioin:   Ason. 2001.5

*/
void SetIntRt(void)
{

	CHAR tempc;
	UINT16 temps;

	// enable the MAC controller in terrupt.
	// first of all, set to page 0.
	SETTOPAGE0();

	// IMR register difinition:
	//	7 - Reserved
	//	6 RDCE DMA Complete Interrupt enable. Default “low” disabled.
	//	5 CNTE Counter Overflow Interrupt Enable. Default “low” disabled.
	//	4 OVWE Overwrite Interrupt Enable. Default “low” disabled.
	//	3 TXEE Transmit Error Interrupt Enable. Default “low” disabled.
	//	2 RXEE Receive Error Interrupt Enable. Default “low” disabled.
	//	1 PTXE Packet Transmitted Interrupt enable. Default “low” disabled.
	//	0 PRXE Packet Received Interrupt Enable. Default “low” disabled.
	// following  don't generate interrupt
	// 1、a reserve bit	(7)
	// 2、when remote DMA is finished(6)
	outportb(IMRADD,0x3F); 

	// clear all interrupt once more.
	SETTOPAGE0();
	outportb(ISRADD,0xff);

	// start the controller.
	outportb(CRADD,0x22);

	return;
}


/*
Name:           RecoverFromBufShortage
Descriptioin:   This routine will be used to recover from
the buffer shortage error. please refer to 796 data sheet.
Parameters:     None.
Return:         None.
Test and revision:
Ason. 2001.8

void RecoverFromBufShortage(void)
{

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一卡在线观看| 欧美国产精品中文字幕| 一区二区久久久| 99在线精品免费| 亚洲综合999| 欧美日韩黄视频| 日产欧产美韩系列久久99| 91精品国产综合久久香蕉麻豆| 一区二区三区在线看| 欧美三级电影在线看| 日韩中文字幕亚洲一区二区va在线| 欧美一区二区三区四区五区| 久久国产精品一区二区| 国产农村妇女精品| 一本大道av伊人久久综合| 日产欧产美韩系列久久99| 久久久久国产精品人| 99久久精品国产一区二区三区| 亚洲综合免费观看高清在线观看| 欧美一区二区三区在线看| 国产一区 二区| 亚洲欧美偷拍另类a∨色屁股| 在线电影院国产精品| 狠狠色综合色综合网络| 亚洲日本中文字幕区| 欧美精品乱人伦久久久久久| 国产成人av电影免费在线观看| 亚洲乱码国产乱码精品精小说| 91麻豆精品国产91久久久久久久久 | 欧美精品一区二区三区四区 | 91小视频免费看| 日韩中文字幕一区二区三区| 久久精品日韩一区二区三区| 欧美在线高清视频| 国产一区二区三区免费在线观看| 亚洲卡通动漫在线| 欧美大尺度电影在线| 色婷婷国产精品| 激情综合网最新| 一区二区三区毛片| 久久精品男人的天堂| 欧美久久久久久久久| 成人av电影在线| 日韩中文字幕不卡| 亚洲影视资源网| 国产精品乱码人人做人人爱 | 国产一区欧美日韩| 亚洲小说春色综合另类电影| 国产亚洲成年网址在线观看| 91麻豆精品国产自产在线 | 国产91精品在线观看| 午夜欧美视频在线观看| 国产人成一区二区三区影院| 欧美亚洲综合久久| 国产69精品久久久久777| 亚洲品质自拍视频| 国产欧美日韩在线看| 欧美一区二区三区不卡| 色女孩综合影院| 大桥未久av一区二区三区中文| 奇米四色…亚洲| 亚洲成a人片在线不卡一二三区| 国产精品天天摸av网| 久久免费偷拍视频| 精品国产精品网麻豆系列 | 欧美精品在线观看播放| 日本久久精品电影| 91浏览器在线视频| 91蜜桃免费观看视频| 不卡的av网站| 99精品热视频| 色综合久久久久久久久久久| 99精品在线免费| 91碰在线视频| 欧美无乱码久久久免费午夜一区| 色天使色偷偷av一区二区| a级精品国产片在线观看| 99精品视频在线播放观看| 99国内精品久久| 91传媒视频在线播放| 在线精品视频小说1| 欧美日韩中文字幕一区二区| 7777精品伊人久久久大香线蕉超级流畅 | 欧美另类一区二区三区| 69久久99精品久久久久婷婷 | 精品一区二区影视| 国产一区二区在线视频| 国产精品亚洲成人| av中文字幕在线不卡| 91丨porny丨首页| 在线亚洲精品福利网址导航| 欧美三级电影网站| 精品美女在线观看| 精品久久久三级丝袜| 国产亚洲精品资源在线26u| 欧美国产精品中文字幕| 亚洲美女屁股眼交| 亚洲第一av色| 久久er99精品| www.亚洲免费av| 欧美色精品天天在线观看视频| 欧美日韩在线观看一区二区 | 亚洲欧洲性图库| 日本欧美在线观看| 另类综合日韩欧美亚洲| 国产乱码精品一区二区三区五月婷| 国产a久久麻豆| 欧美日韩精品一区二区| 精品国内二区三区| 中文字幕在线不卡一区| 天天影视色香欲综合网老头| 极品少妇xxxx精品少妇| 91在线小视频| 欧美不卡激情三级在线观看| 中文字幕在线观看一区| 青青草原综合久久大伊人精品| 国产精品一区二区在线观看不卡| 91一区二区在线| 91精品国产综合久久久久久| 国产三级精品三级| 亚洲国产va精品久久久不卡综合| 精品亚洲成a人| 欧美撒尿777hd撒尿| 中文字幕免费一区| 日韩成人dvd| 99精品国产99久久久久久白柏| 日韩午夜激情免费电影| 亚洲日本va在线观看| 久草精品在线观看| 在线亚洲人成电影网站色www| 日韩视频一区二区三区| 亚洲天堂福利av| 国产精品一二三四五| 欧美日韩中文一区| 国产亚洲精久久久久久| 美女一区二区三区在线观看| 色综合天天在线| 国产日本欧洲亚洲| 久久99久久久久| 欧美日韩三级视频| 亚洲精品视频观看| 成人福利电影精品一区二区在线观看| 日韩一区二区电影在线| 亚洲精品写真福利| 成人网页在线观看| 精品国产3级a| 麻豆一区二区99久久久久| 在线观看亚洲专区| 亚洲人成网站精品片在线观看 | 国产精品不卡一区二区三区| 另类小说欧美激情| 在线成人免费视频| 亚洲国产毛片aaaaa无费看| 91精品国产色综合久久不卡电影| 国产精品不卡一区二区三区| 国产成人免费在线视频| 欧美电影免费观看高清完整版在线| 亚洲福利电影网| 欧美日韩一区不卡| 亚洲国产精品欧美一二99| 91网站黄www| 亚洲日本在线视频观看| 一本色道亚洲精品aⅴ| 国产精品毛片大码女人| 不卡视频在线看| 中文字幕亚洲一区二区va在线| 国产露脸91国语对白| 久久精品在线免费观看| 国产在线国偷精品免费看| 久久久精品日韩欧美| 国产精品羞羞答答xxdd| 中文在线免费一区三区高中清不卡| 国产丶欧美丶日本不卡视频| 日本一区二区视频在线观看| 国产99久久久国产精品| 成人免费在线观看入口| 色综合久久久久综合99| 亚洲第一搞黄网站| 91精品国产aⅴ一区二区| 老汉av免费一区二区三区| 欧美精品一区二区三区在线| 国产+成+人+亚洲欧洲自线| 国产精品萝li| 欧美在线看片a免费观看| 午夜精品久久久久久久久久| 欧美一卡2卡3卡4卡| 国产综合色产在线精品| 国产精品久久久久久久久久久免费看| av成人免费在线观看| 亚洲一二三专区| 色噜噜久久综合| 91精品一区二区三区在线观看| 久久亚洲影视婷婷| 国产精品久久久久永久免费观看 | 国产最新精品免费| 高清shemale亚洲人妖| 粉嫩13p一区二区三区| 97精品久久久久中文字幕| 国产1区2区3区精品美女| 亚洲私人黄色宅男|