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

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

?? flashwriternor.c

?? 手機中寫FLASH的代碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
///////////////////////////////////////////////////////////////////////////////
//
// Copyright 1999, 2000, 2001, 2002, 2003, 2004 by Texas Instruments Incorporated. All rights 
// reserved.  Property of Texas Instruments Incorporated. Restricted rights to use,
// duplicate or disclose this code are granted through contract.
//
///////////////////////////////////////////////////////////////////////////////
//
// This file contains the stand-alone code for copying an Image from Memory to
// Flash.  
//
// Last Revision date:  2-2-04
// Release 1.8
//
//Headers
//
#include "types.h"
#include "Flash_params.h"
#include "OMAP.h"
//
//Globals 
//
//Parameters downloaded in .vars section
//(this sits at fixed memory locations!)
#pragma DATA_SECTION ( image, ".image" )
ULONG image;
#pragma DATA_SECTION ( global_vars, ".vars" )
Download_Parms global_vars; 
Download_Parms *gp_vars = &global_vars;

//
//Build Parameters
#define USES_CCS

void printinfo(ULONG size, ULONG srcAddr, ULONG destAddr)
{
	printf("FlashWriter Version 1.8\n");	
	printf("Starting Download to NOR Flash\n");
	printf("Image is %d bytes long\n", size);
	printf("Reading Image from: %08X\n", srcAddr);
	printf("Writing Image to:  %08X\n", destAddr);
}

void printNORflashtype(enum NORFlashType flash_id)
{
	switch (flash_id)
	{
		case FLASH_NOT_FOUND:	
			printf("Flash not Found or unsupported!\n");
			break;
		case FLASH_AMD_DL323_4MB_BOTTOM:  	// chip size is 4MB (AM29DL323CB:  2MBx16bit)
			printf("Flash AMD DL323 4MB Bottom\n");
			break;
		case FLASH_FUJITSU_DL323_4MB_BOTTOM:// chip size is 4MB (MBM29DL323BD:  2MBx16bit)
			printf("Flash Fujitsu DL323 4MB Bottom\n");
			break;		
		case FLASH_AMD_LV160_2MB_BOTTOM:
			printf("Flash AMD LV160 2MB Bottom\n");
			break;
		case FLASH_AMD_LV256M_32MB:                   
			printf("Flash AMD LV256M 32MB\n");        
			break;                                    			
		case FLASH_INTEL_BURST_16MB_BOTTOM:  // 4 2MB devices=8MB total
			printf("Flash Intel Burst 8MB Bottom\n");
			break;	
		case FLASH_INTEL_STRATA_J3_4MB:  // 2 4MB devices=8MB
			printf("Flash Intel J3 Strata 8 MB\n");
			break;
		case FLASH_INTEL_STRATA_J3_8MB:  // 2 8MB devices=16MB  			
			printf("Flash Intel J3 Strata 16MB\n");
			break;
		case FLASH_INTEL_STRATA_J3_16MB:  // 2 16MB devices=32MB
			printf("Flash Intel J3 Strata 32 MB\n");
			break;
		case FLASH_INTEL_STRATA_K3_16MB:  // 16MB devices=32MB
			printf("Flash Intel K3 Strata 32 MB\n");
			break;
		case FLASH_INTEL_W18_16MB_BOTTOM: 		
			printf("Flash Intel W18 16MB Bottom\n");
			break;
		case FLASH_INTEL_W18_16MB_TOP: 
			printf("Flash Intel W18 16MB Muxed Top\n");
			break;		
		case FLASH_INTEL_L18_16MB_BOTTOM: 		
			printf("Flash Intel L18 16MB Bottom\n");
			break;
		case FLASH_INTEL_L18_16MB_TOP: 
			printf("Flash Intel L18 16MB Muxed Top\n");
			break;		
		case FLASH_INTEL_L18_32MB_BOTTOM: 		
			printf("Flash Intel L18 32MB Bottom\n");
			break;
		case FLASH_INTEL_L18_32MB_TOP: 
			printf("Flash Intel L18 32MB Muxed Top\n");
			break;		
		case FLASH_INTEL_K18_32MB_BOTTOM: 
			printf("Flash Intel K18 32 MB Stacked device\n");
			break;		
		case FLASH_MICRON_16MB_TOP: 		
			printf("Flash Micron 16MB Top\n");
			break;
		case FLASH_SAMSUNG_16MB_TOP: 		
			printf("Flash SAMSUNG 16MB Top\n");
			break;
		
	    }
}

///////////////////////////////////////////////////////////////////////////////
//
// IdentifyNORFlash
//
// Description:
//   Reads the Flash Manufacturer ID and device codes to differentiate
//   the flash device for the Flash Device at address 0x0C000000.
//
// Return:
//   FLASH_NOT_FOUND
//   FLASH_UNSUPPORTED
//	 FLASH_device
//	
///////////////////////////////////////////////////////////////////////////////
enum NORFlashType IdentifyNORFlash(ULONG addr)
{
	enum NORFlashType flash_id;
	Hwd manf;
	Hwd code;
	Hwd code1;                 // First  Mult-Address Code     //   
	Hwd code2;                 // Second Mult-Address Code     //     
	volatile USHORT *fladdr = (volatile USHORT *) addr;
	
	// Initialize Function Pointers. 
	User_Flash_Erase_Block = (void (*)(ULONG))Flash_Do_Nothing;
	User_Flash_Erase_All   = (void (*)(ULONG))Flash_Do_Nothing;
	User_Flash_Write       = (int (*)(ULONG *, USHORT))Flash_Do_Nothing;        		
	User_Flash_Optimized_Write = (int (*)(ULONG *, USHORT[], ULONG))Flash_Do_Nothing;

	//  First try the AMD device
	*(fladdr + AMD_CMD0_ADDR) = AMD_ID_CMD0;
	*(fladdr + AMD_CMD1_ADDR) = AMD_ID_CMD1;
	*(fladdr + AMD_CMD2_ADDR) = AMD_ID_CMD2;

  	manf = *fladdr;		
  	if (manf == AMD_MANF_ID)
	{
		// Check device ID
		code = *(fladdr + AMD_DEVICE_ID_OFFSET);    // device code at address 1
		switch (code)
		{
			case AMD1_DEVICE_ID:			   // More Codes need to go here
				flash_id = FLASH_AMD_DL323_4MB_BOTTOM;				
				User_Flash_Erase_Block = AMD_Flash_Erase_Block;
				User_Flash_Erase_All   = AMD_Flash_Erase_All;
				User_Flash_Write_Entry = Flash_Do_Nothing;
				User_Flash_Write   =    AMD_Flash_Write;
				User_Flash_Write_Exit = Flash_Do_Nothing;
				break;
			case AMD2_DEVICE_ID:			   // More Codes need to go here
				flash_id = FLASH_AMD_LV160_2MB_BOTTOM;
				User_Flash_Erase_Block = AMD_Flash_Erase_Block;
				User_Flash_Erase_All   = AMD_Flash_Erase_All;
				User_Flash_Write_Entry = Flash_Do_Nothing;
				User_Flash_Write   =    AMD_Flash_Write;
				User_Flash_Write_Exit = Flash_Do_Nothing;
				break;
			case AMD_DEVICE_ID_MULTI:          //For Multi-Address ID Devices 
				{                                                                     
					code1 = *(fladdr + AMD_DEVICE_ID_OFFSET1);                        
					code2 = *(fladdr + AMD_DEVICE_ID_OFFSET2);                                                                                                              
					//first multi-address device check                        
					if ((code1 == AMD3_DEVICE_ID1) && (code2 == AMD3_DEVICE_ID2))     
					{                                                                 
						flash_id = FLASH_AMD_LV256M_32MB;                             
						User_Hard_Reset_Flash  = Flash_Do_Nothing;                	  
						User_Soft_Reset_Flash  = AMD_Soft_Reset_Flash;                
						User_Flash_Erase_Block = AMD_Flash_Erase_Block;               
						User_Flash_Erase_All   = AMD_Flash_Erase_All;                 
						User_Flash_Write_Entry = Flash_Do_Nothing;                    
						User_Flash_Write       = AMD_Flash_Write;                     
						User_Flash_Write_Exit  = Flash_Do_Nothing;                    
						User_Flash_Optimized_Write = AMD_Flash_Optimized_Write;       
						break;                                                        
					}                                                                 
					//Add additional multi-address device checks here.           
					//NOTE: intentional drop through to "default case".       
				}                                                                     
			default:
				flash_id = FLASH_NOT_FOUND;
		}
		// Put back into Read ArrayMode 
		AMD_Soft_Reset_Flash((ULONG) fladdr);
  	}  
  	else if (manf == FUJITSU_MANF_ID) 
  	{                                                               
		// Check device ID
		code = *(fladdr + AMD_DEVICE_ID_OFFSET);    // device code at address 1
		switch (code)
		{
	 		case FUJITSU1_DEVICE_ID:	   
				flash_id = FLASH_FUJITSU_DL323_4MB_BOTTOM;			
				User_Flash_Erase_Block = AMD_Flash_Erase_Block;
				User_Flash_Erase_All   = AMD_Flash_Erase_All;
				User_Flash_Write_Entry = Flash_Do_Nothing;
				User_Flash_Write   =    AMD_Flash_Write;
				User_Flash_Write_Exit = Flash_Do_Nothing;
				break;
			default:
				flash_id = FLASH_NOT_FOUND;
		}
		// Put back into Read ArrayMode 
		AMD_Soft_Reset_Flash((ULONG) fladdr);
	}  else if (manf == SAMSUNG_MANF_ID) 
  	{  
  		//Try SAMSUNG (which programs like an AMD device)
		// Check device ID
		code = *(fladdr + AMD_DEVICE_ID_OFFSET);    // device code at address 1
		switch (code)
		{
	 		case SAMSUNG_K8S2815E_128T:	   
				flash_id = FLASH_SAMSUNG_16MB_TOP;			
				User_Flash_Erase_Block = AMD_Flash_Erase_Block;
				User_Flash_Erase_All   = AMD_Flash_Erase_All;
				User_Flash_Write_Entry = Flash_Do_Nothing;
				User_Flash_Write   =    AMD_Flash_Write;
				User_Flash_Write_Exit = Flash_Do_Nothing;
				break;
			default:
				flash_id = FLASH_NOT_FOUND;
		}
		// Put back into Read ArrayMode 
		AMD_Soft_Reset_Flash((ULONG) fladdr);  	
		
  	}  else
  	{
  		//Try INTEL
		// Okay  Now Let's Try Intel
  		INTEL_Soft_Reset_Flash((ULONG) fladdr);  		
  		*fladdr = INTEL_ID_CMD;  	// Send the Get ID command
  		manf = *fladdr;				// Check Manufacturer ID  		
   		code = *(++fladdr);   		// Check device ID    	
   		INTEL_Soft_Reset_Flash((ULONG) fladdr);
    		
  		if (manf == INTEL_MANF_ID || manf == MICRON_MANF_ID) 
		{  	
	 	 	switch (code)
    		{
	      		case INTEL_DEVICE_16B:
	        		flash_id = FLASH_INTEL_BURST_16MB_BOTTOM;
	        		break;
	      		case INTELS_J3_DEVICE_32:
	        		flash_id = FLASH_INTEL_STRATA_J3_4MB;
	        		break;
				case INTELS_J3_DEVICE_64:
			        flash_id = FLASH_INTEL_STRATA_J3_8MB;
			        break;
	      		case INTELS_J3_DEVICE_128:
	        		flash_id = FLASH_INTEL_STRATA_J3_16MB;
	        		break;
				case INTELS_K3_DEVICE_64:
	        		flash_id = FLASH_INTEL_STRATA_K3_8MB;
	        		break;
	      		case INTELS_K3_DEVICE_128:
	        		flash_id = FLASH_INTEL_STRATA_K3_16MB;
	        		break;
	      		case INTELS_K3_DEVICE_256:
	        		flash_id = FLASH_INTEL_STRATA_K3_32MB;
	        		break;
	      		case INTELS_W18_DEVICE_128B:
	        		flash_id = FLASH_INTEL_W18_16MB_BOTTOM;
	        		break;
	      		case INTELS_W18_DEVICE_128T:
	        		flash_id = FLASH_INTEL_W18_16MB_TOP;
	        		break;
	      		case INTELS_L18_DEVICE_128B:
	        		flash_id = FLASH_INTEL_L18_16MB_BOTTOM;
	        		break;
	      		case INTELS_L18_DEVICE_128T:
	        		flash_id = FLASH_INTEL_L18_16MB_TOP;
	        		break;
       			case INTELS_L18_DEVICE_256B:
                    flash_id = FLASH_INTEL_L18_32MB_BOTTOM;
                    break;
                case INTELS_L18_DEVICE_256T:
                    flash_id = FLASH_INTEL_L18_32MB_TOP;
                    break;                         	        			      		
	      		case INTELS_K18_DEVICE_256B:
                    flash_id = FLASH_INTEL_K18_32MB_BOTTOM;
                    break;                         	        			      		
	     		case MICRON_MT28F_DEVICE_128T:
	        		flash_id = FLASH_MICRON_16MB_TOP;
	        		break;       	
	 			default:
	        		flash_id = FLASH_NOT_FOUND;
	        		return(flash_id);	        		
    		}			
 			User_Flash_Erase_Block = INTEL_Flash_Erase_Block;
 			//Flash_Erase_All   = INTEL_Flash_Erase_All;
 			User_Flash_Write       = INTEL_Flash_Write;
			//Note W18 doesn't appear to support block writes!!!
			if ((flash_id != FLASH_INTEL_W18_16MB_TOP) && 
				(flash_id != FLASH_INTEL_W18_16MB_BOTTOM) && 
				(flash_id != FLASH_MICRON_16MB_TOP)) 
			{
				User_Flash_Optimized_Write = INTEL_Flash_Optimized_Write;
			}
			
    	} else	//Did not find any
    	{  			
        	return(FLASH_NOT_FOUND);
        }  

  	}       
  	return(flash_id);
}
	
///////////////////////////////////////////////////////////////////////////////
//
// Erase Flash Block
//
// Description:
//   This routine checks erases flash blocks, if they haven't already been
//   erased, based on a start address, byte count, and flash type.  All counts
//
// Return:
//   status - SUCCESS
///////////////////////////////////////////////////////////////////////////////
int EraseNORFlash(ULONG start_address, ULONG size, enum NORFlashType flash_id)
{
	ULONG addr  = start_address;		//byte address
	ULONG range = start_address + size;	 	//end address
	ULONG block_size;
	ULONG addr_without_cs;
  
  	printf("Erasing the Flash\n");
   	while (addr < range)
  	{
	    addr_without_cs = (addr & 0x01FFFFFF);    	// address offset within a CS <32MB
	  	switch (flash_id)
	    {
			case FLASH_NOT_FOUND:				// return ERROR				
				return(0);
			case FLASH_AMD_DL323_4MB_BOTTOM:  	// chip size is 4MB (AM29DL323CB:  2MBx16bit)
			case FLASH_FUJITSU_DL323_4MB_BOTTOM:// chip size is 4MB (MBM29DL323BD:  2MBx16bit)
				if (addr_without_cs >= 0x00400000)	// return ERROR
				{
					return(0);
				}			
				if (addr_without_cs < 0x10000)
				{
					block_size = 0x2000;  // 8KB
					// Round down to the next block
					addr &= 0xFFFFE000;
				}
				else 
				{
					block_size = 0x10000;  // 64 KB
					// Must round down address range to 0x8000
					addr &= 0xFFFF0000;
				}			
				break;          				
			case FLASH_SAMSUNG_16MB_TOP:// chip size is 16MB 
				if (addr_without_cs >= 0x01000000)	// return ERROR
				{
					return(0);
				}			
				if (addr_without_cs >= 0xFF0000)
				{
					block_size = 0x2000;  // 8KB
					// Round down to the next block
					addr &= 0xFFFFE000;
				}
				else 
				{
					block_size = 0x10000;  // 64 KB
					// Must round down address range to 0x8000
					addr &= 0xFFFF0000;
				}			
				break;    
			case FLASH_AMD_LV160_2MB_BOTTOM:
				if (addr_without_cs >= 0x00200000) // return ERROR
				{
					return(0);
				}
				if (addr_without_cs < 0x4000)
				{
					block_size = 0x4000;  // 16KB
					// Round down to the next block
					addr &= 0xFFFFC000;
				}
				else if (addr_without_cs < 0x8000)
				{
					block_size = 0x2000;  // 8KB
					// Must round down address range to 0x4000
					addr &= 0xFFFFE000;
				}
				else if (addr_without_cs < 0x10000)
				{
					block_size = 0x8000;  // 32 KB
					// Must round down address range to 0x8000
					addr &= 0xFFFF8000;
				}
				else //  This case entered only if(addr_without_cs >= 0x10000)
				{
					block_size = 0x10000;  // 64 KB
					// Must round down address range to 0x8000
					addr &= 0xFFFF0000;
				}				
				break;       
			case FLASH_AMD_LV256M_32MB:                                  
				if (addr_without_cs >= 0x02000000)	// return ERROR          
				{                                                        
					return(0);                                           
				}			                                             
				block_size = 0x10000;  // uniform sector size (64 KB)    
				// Clear intra-sector byte addresses              
				// (round down to first byte address in sector)   
				addr &= 0xFFFF0000;                                      
				break;                                                   				   					                    	                    	
			case FLASH_INTEL_BURST_16MB_BOTTOM:  // 4 2MB devices=8MB total
				if (addr_without_cs >= 0x800000) // return ERROR
				{			
					return(0);
				}				
				if (addr_without_cs < 0x10000)
				{
					block_size = 0x2000;
					// round down to next block
					addr &= 0xFFFFE000;
				}
				else if (addr_without_cs < 0x200000)
				{
					block_size = 0x10000;			
					// round down to next block
					addr &= 0xFFFF0000;
				}
				else if (addr_without_cs < 0x210000)
				{
					block_size = 0x2000;
					// round down to next block
					addr &= 0xFFFFE000;
				}
				else if (addr_without_cs < 0x400000)
				{
					block_size = 0x10000;			
					// round down to next block
					addr &= 0xFFFF0000;
				}
				else if (addr_without_cs < 0x410000)
				{
					block_size = 0x2000;			
					// round down to next block
					addr &= 0xFFFFE000;
				}
				else if (addr_without_cs < 0x600000)
				{
					block_size = 0x10000;			
					// round down to next block
					addr &= 0xFFFF0000;
				}
				else if (addr_without_cs < 0x610000)
				{

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
蜜臀av亚洲一区中文字幕| 亚洲成av人片一区二区梦乃| 97国产精品videossex| 国产综合成人久久大片91| 日韩在线一区二区| 91社区在线播放| 一区二区久久久| 亚洲综合男人的天堂| 亚洲精品免费播放| 亚洲中国最大av网站| 亚洲不卡av一区二区三区| 亚洲一二三四在线| 丝袜国产日韩另类美女| 日韩高清不卡一区| 韩国欧美国产一区| 成人一级黄色片| 91国模大尺度私拍在线视频| 欧美色综合网站| 日韩一区二区精品葵司在线| 久久伊99综合婷婷久久伊| 欧美国产精品一区二区三区| 成人免费在线视频观看| 一区二区三区免费在线观看| 蜜臀久久久久久久| 国产成人在线视频播放| 在线观看日韩高清av| 欧美老女人在线| 国产视频一区不卡| 亚洲蜜臀av乱码久久精品| 五月婷婷色综合| 国产精一区二区三区| av在线播放一区二区三区| 欧美日韩在线三级| 久久尤物电影视频在线观看| 亚洲日本乱码在线观看| 久久精品国产999大香线蕉| 风流少妇一区二区| 欧美视频一区二区三区四区 | 午夜激情久久久| 麻豆91在线播放| 成人高清免费观看| 欧美日韩精品一区视频| 久久精品一区蜜桃臀影院| 一区二区免费看| 国产成人久久精品77777最新版本| 日本精品一区二区三区高清| 欧美一级在线免费| 亚洲精品网站在线观看| 美日韩一区二区| 欧美影院精品一区| 国产精品免费av| 麻豆专区一区二区三区四区五区| 不卡视频一二三四| 精品国产成人系列| 日韩中文字幕一区二区三区| 成人v精品蜜桃久久一区| 91精品国产手机| 一区二区成人在线观看| 国产成人高清视频| 久久亚洲捆绑美女| 精品一区在线看| 欧美日韩国产电影| 性做久久久久久久久| 欧美网站大全在线观看| 亚洲三级小视频| 99视频精品在线| 亚洲美女在线一区| 99精品在线免费| 国产精品护士白丝一区av| 国产精品一区二区x88av| 91精品国产欧美一区二区成人| 一区二区三区资源| 色噜噜久久综合| 亚洲精品乱码久久久久久| av午夜精品一区二区三区| 国产精品免费av| 91美女蜜桃在线| 欧美综合色免费| 337p亚洲精品色噜噜| 亚洲成人精品影院| 欧美日韩中文国产| 日韩精品一二区| 日韩欧美久久久| 精品夜夜嗨av一区二区三区| 精品国产乱码91久久久久久网站| 老色鬼精品视频在线观看播放| 欧美一级片在线看| 精品中文字幕一区二区小辣椒| 欧美成人精精品一区二区频| 国产一区二区网址| 中文字幕在线不卡国产视频| 色哟哟精品一区| 日韩中文字幕不卡| 国产午夜精品在线观看| a亚洲天堂av| 无码av免费一区二区三区试看| 日韩亚洲欧美成人一区| 高清国产一区二区| 亚洲欧美区自拍先锋| 欧美精品久久一区| 国产精品996| 一区二区三区欧美日| 欧美一区日本一区韩国一区| 激情文学综合丁香| 亚洲精品久久7777| 久久天天做天天爱综合色| 成人av网在线| 日本不卡一区二区三区高清视频| 久久精品一二三| 欧美日韩精品电影| 风间由美性色一区二区三区| 亚洲在线视频免费观看| 亚洲精品一区二区精华| 色先锋aa成人| 国产乱子伦视频一区二区三区| 亚洲视频电影在线| 久久人人97超碰com| 欧美三区在线观看| 51精品久久久久久久蜜臀| 精品一区二区影视| 亚洲一区av在线| 久久精品无码一区二区三区| 欧美日韩你懂得| 91污在线观看| 国产一区二区女| 奇米影视一区二区三区| 一色桃子久久精品亚洲| 精品国产一区二区三区忘忧草 | 国产成人综合在线播放| 亚洲第一电影网| 亚洲猫色日本管| 久久久久久综合| 欧美成人一级视频| 欧美色大人视频| 91成人免费电影| 91麻豆成人久久精品二区三区| 国产一区二区美女诱惑| 欧美aaa在线| 性欧美大战久久久久久久久| 一区二区三区影院| 自拍偷拍欧美激情| 精品日韩在线一区| 日韩欧美一区二区在线视频| 欧美亚洲国产一区二区三区va| av不卡免费在线观看| 国产一区三区三区| 国产乱人伦精品一区二区在线观看| 日日夜夜精品视频免费| 亚洲国产精品久久人人爱 | 香蕉久久夜色精品国产使用方法| 亚洲欧美在线另类| 成人欧美一区二区三区小说| 日韩三级在线观看| 91精品蜜臀在线一区尤物| 欧美人xxxx| 91精品国产欧美一区二区| 91精品国产aⅴ一区二区| 欧美精品第1页| 日韩精品一区二区三区视频在线观看| 欧美日韩视频在线一区二区| 在线观看日韩一区| 在线播放日韩导航| 日韩欧美一级片| 26uuu亚洲综合色| 国产欧美一区二区三区网站| 久久久久国产精品麻豆| 国产精品久久久久久久午夜片| 国产欧美精品一区| 国产精品福利一区二区| 一区二区三区四区视频精品免费 | 国产日韩欧美一区二区三区乱码| 久久日韩粉嫩一区二区三区| 国产精品区一区二区三| 亚洲欧美日韩系列| 无码av免费一区二区三区试看| 亚洲精品一线二线三线 | 国产日本欧美一区二区| 精品国产91久久久久久久妲己| 91精品国产欧美一区二区18| 欧美性猛交一区二区三区精品| 欧洲色大大久久| 欧美老人xxxx18| 久久九九全国免费| 国产精品乱子久久久久| 一区二区三区在线高清| 亚洲一区二区三区精品在线| 日韩国产一区二| 成人永久aaa| 欧美一区二区三区视频| 久久新电视剧免费观看| **性色生活片久久毛片| 男女男精品视频| 成人av在线资源| 7777精品伊人久久久大香线蕉经典版下载| 欧美一三区三区四区免费在线看| 日韩欧美在线不卡| 午夜精品久久一牛影视| 欧美中文字幕不卡| 久久久国产午夜精品| 久久蜜桃av一区精品变态类天堂|