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

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

?? nand.c

?? Sirf/Centrality公司GPS平臺(tái)AtlasIII芯片AT640的Nboot源碼
?? C
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
	}
	return TRUE;

BadBlockReturn:
	//NandDbgPutString ("Bad blk: ");
	//NandDbgPutHex (dwBlockIndex);
	//NandDbgPutString ("\r\n");
	FMD_SetBlockStatus(dwBlockIndex, BLOCK_STATUS_BAD);
	return FALSE;
}

BOOL FMD_SetBlockStatus(DWORD blockID, DWORD dwStatus)
{
	BOOL bRet = TRUE;
	SectorInfo SI;
	DWORD Sector = BOOT_BLOCK_TO_SECTOR (blockID);

	if (!FMDReadSectorInfo (Sector, &SI))
	{
		bRet = FALSE;
		goto FMD_SetBlockStatus_Exit;
	}

	if (dwStatus & BLOCK_STATUS_BAD)
	{
		SI.bBadBlock = 0;
	}

	if (dwStatus & BLOCK_STATUS_READONLY)
	{
		SI.bOEMReserved &= ~OEM_BLOCK_READONLY;
	}

	if (dwStatus & BLOCK_STATUS_RESERVED)
	{
		SI.bOEMReserved &= ~OEM_BLOCK_RESERVED;
	}

	if (!FMDWriteSectorInfo (Sector, &SI))
	{
		bRet = FALSE;
	}

FMD_SetBlockStatus_Exit:
//	if (!bRet)
//	{
//		NandDbgPutString("\r\nSetBlockStatus err: ");
//		NandDbgPutHex(blockID);
//	}
	return bRet;
}

#ifndef BUILDING_NBOOT_ICE
/*
    @func   DWORD | FMD_GetBlockStatus | Returns the status of the specified block.
    @rdesc  Block status (see fmd.h).
    @comm    
    @xref   
*/
DWORD FMD_GetBlockStatus(DWORD blockID)
{
    SectorInfo SI;
	SECTOR_ADDR Sector = BOOT_BLOCK_TO_SECTOR (blockID);
	DWORD dwResult = 0;

	if (!FMDReadSectorInfo(Sector, &SI)) 
		return BLOCK_STATUS_UNKNOWN;

	if (!(SI.bOEMReserved & OEM_BLOCK_READONLY))  
		dwResult |= BLOCK_STATUS_READONLY;

	if (!(SI.bOEMReserved & OEM_BLOCK_RESERVED))  
		dwResult |= BLOCK_STATUS_RESERVED;

	if(SI.bBadBlock != 0xFF)
		dwResult |= BLOCK_STATUS_BAD;

	return(dwResult);
}

BOOL NandWriteCurImg()
{
	BOOL bRet = TRUE;

	if(g_nCurImg == ATLAS_IMAGE_WINDOWS_CE_NBOOT)
	{
		if(!WriteImage(NBOOT_BLOCK, 1, (PBYTE)SDRAM_IMG_CACHE_START/*, &g_dwNBootBlock, NULL*/))
		{
			bRet = FALSE;
		}
	}
	else if(g_nCurImg == ATLAS_IMAGE_WINDOWS_CE_EBOOT)
	{
		if(!WriteImage(g_dwEBootBlock, FILE_TO_BLOCK_SIZE(g_iCurImgLength), (PBYTE)SDRAM_IMG_CACHE_START/*, &g_dwEBootBlock, NULL*/))
		{
			bRet = FALSE;
		}
	}
	else if(g_nCurImg == ATLAS_IMAGE_WINDOWS_CE_DM)
	{
		if(!WriteImage(g_dwDMBlock, FILE_TO_BLOCK_SIZE(g_iCurImgLength), (PBYTE)SDRAM_IMG_CACHE_START/*, &g_dwDMBlock, NULL*/))
		{
			bRet = FALSE;
		}
	}

	if (bRet)
		NandDbgPutString("\r\nSucceed");

	return bRet;
}

BOOL NandWriteToc (void)
{
	IMAGE_DESCRIPTOR*	pid;

	if (!IS_VALID_TOC (g_pTOC))
	{
		memset ((void *)g_pTOC, 0, sizeof(TOC));
		g_pTOC->dwSignature			= TOC_SIGNATURE;
		g_pTOC->dwVersion			= NBOOT_VERSION;
		g_pTOC->dwMaxBadBlocks		= MAX_BAD_BLOCKS;
		g_pTOC->blockNo				= g_dwTocBlock;

		g_pTOC->BootCfg.ImageIndex	= TOC_NK_ENTRY;
		g_pTOC->BootCfg.ConfigFlags	= BOOT_TYPE_MULTISTAGE | TARGET_TYPE_NAND | CONFIG_FLAGS_DHCP | CONFIG_FLAGS_DEBUGGER;
		g_pTOC->BootCfg.BootDelay	= CONFIG_BOOTDELAY_DEFAULT;

		// TOC entry for eboot.nb0
		pid = &g_pTOC->id[TOC_EBOOT_ENTRY];
		pid->dwVersion				= 0x0100;
		pid->dwSignature			= IMAGE_EBOOT_SIG;
		pid->dwImageType			= IMAGE_TYPE_RAMIMAGE;
		pid->dwLoadAddress			= g_dwEbootLoadAddr;
		pid->dwJumpAddress			= g_dwEbootLaunchAddr;
		pid->dwStartBlock			= g_dwEBootBlock;
		pid->sgList[0].dwSector		= BOOT_BLOCK_TO_SECTOR (g_dwEBootBlock);
		pid->sgList[0].dwLength		= BOOT_BLOCK_TO_SECTOR (g_dwEbootBlockSize);
		pid->dwTtlSectors			= BOOT_BLOCK_TO_SECTOR (g_dwEbootBlockSize);
		strncpy ((char *)pid->ucString, "eboot.nb0", IMAGE_STRING_LEN - 1);

		//  TOC entry for nk.nb0
		pid							= &g_pTOC->id[TOC_NK_ENTRY];
		pid->dwVersion				= 0x0001;
		pid->dwSignature			= IMAGE_RAM_SIG;
		pid->dwImageType			= IMAGE_TYPE_RAMIMAGE | IMAGE_TYPE_BINFS | IMAGE_TYPE_MXIP;
		pid->dwStartBlock			= g_dwNKBlock;
		pid->sgList[0].dwSector		= BOOT_BLOCK_TO_SECTOR (g_dwNKBlock);
		strncpy ((char *)pid->ucString, "PPC2K3.NB0", IMAGE_STRING_LEN - 1);

		//  TOC entry for DM
		if (g_dwDMBlockSize > 0)
		{
			pid						= &g_pTOC->id[TOC_DM_ENTRY];
			pid->dwVersion			= 0x0001;
			pid->dwSignature		= IMAGE_DM_SIG;
			pid->dwImageType		= IMAGE_TYPE_RAMIMAGE;
			pid->dwLoadAddress		= g_dwDMLoadAddr;
			pid->dwJumpAddress		= g_dwDMLaunchAddr;
			pid->dwStartBlock		= g_dwDMBlock;
			pid->sgList[0].dwSector = BOOT_BLOCK_TO_SECTOR (g_dwDMBlock);
			pid->sgList[0].dwLength = BOOT_BLOCK_TO_SECTOR (g_dwDMBlockSize);
			pid->dwTtlSectors		= BOOT_BLOCK_TO_SECTOR (g_dwDMBlockSize);
			strncpy ((char *)pid->ucString, "DM", IMAGE_STRING_LEN - 1);
		}

        g_pTOC->secureBlock.dwStartBlock = g_dwSecureBlock;
        g_pTOC->secureBlock.dwNumOfPages = BOOT_BLOCK_TO_SECTOR( g_dwSecureBlockSize );
	}

	if (!FMD_EraseBlock (g_dwTocBlock))
	{
		return FALSE;
	}

	if (!FMD_WriteSector (BOOT_BLOCK_TO_SECTOR (g_dwTocBlock), (PBYTE)g_pTOC, &g_SI, 1)) 
	{
//		NandDbgPutString ("\r\nTOC failed");
		return FALSE;
	}

	NandDbgPutString ("\r\nTOC updated");
	return TRUE;
}

BOOL NandLocateBlocks (void)
{
	//TOC should be the searched from physical block 1. The first block that is not really bad is TOC
	DWORD dwBlock = 1, dwStart = 1;

	for (; dwBlock < SEARCH_BLOCKS + dwStart; ++dwBlock)
	{
		if (NandIsOEMReservedBlock (dwBlock))
		{
			break;
		}
	}

	if (dwBlock >= SEARCH_BLOCKS + dwStart)
		return FALSE;

	g_dwTocBlock = dwBlock;

	if (!FMD_ReadSector (BOOT_BLOCK_TO_SECTOR (g_dwTocBlock), (LPBYTE)g_pTOC, NULL, 1))
	{
		return FALSE;
	}

	g_dwEBootBlock		= g_pTOC->id[TOC_EBOOT_ENTRY].dwStartBlock;
	g_dwNKBlock			= g_pTOC->id[TOC_NK_ENTRY].dwStartBlock;
	g_dwDMBlock			= g_pTOC->id[TOC_DM_ENTRY].dwStartBlock;	//leon01 add for DM entry

	return TRUE;
}

//Erase all but the NBoot block
BOOL NandEraseAll()
{
    BOOL bRet = TRUE;
    DWORD dwBlockNo;

    for (dwBlockNo = 1; dwBlockNo < g_FlashExtInfo.fi.dwNumBlocks; ++dwBlockNo)
    {
        if (!FMD_EraseBlock (dwBlockNo))
            bRet = FALSE;
	}

    return bRet;
}

#if 0
void TOC_Entry_Print()
{
	NandDbgPutString("\r\nCurrent Entry in TOC: ");
	NandDbgPutString("\r\n Load Address: ");
	NandDbgPutHex(g_pTOC->id[g_dwEntry].dwLoadAddress);
	NandDbgPutString("\r\n Jump Address: ");
	NandDbgPutHex(g_pTOC->id[g_dwEntry].dwJumpAddress);
	NandDbgPutString("\r\n Ttl Sectors: ");
	NandDbgPutHex(g_pTOC->id[g_dwEntry].dwTtlSectors);
	NandDbgPutString("\r\n Ttl Sectors: ");
	NandDbgPutHex(g_pTOC->id[g_dwEntry].dwTtlSectors);
	NandDbgPutString("\r\n Chain in TOC: ");
	NandDbgPutString("\r\n Chain Load Addr: ");
	NandDbgPutHex(g_pTOC->chainInfo.dwLoadAddress);
}
#endif

BOOL NandReadRegion(DWORD dwStartSec, DWORD dwNumSectors, DWORD dwRAM)
{
	DWORD dwSector = dwStartSec;
	
	// read each sg segment
    while (dwNumSectors) 
	{
		//nk image use BINFS, which may has bad blocks
		if(dwSector % g_FlashExtInfo.fi.wSectorsPerBlock == 0)
		{
			if((g_dwEntry == TOC_NK_ENTRY) && (g_pTOC->id[TOC_NK_ENTRY].dwImageType & IMAGE_TYPE_MXIP))
			{
				if(IS_BLOCK_UNUSABLE(BOOT_SECTOR_TO_BLOCK(dwSector)))
				{
					dwSector += g_FlashExtInfo.fi.wSectorsPerBlock;
					if(dwSector >= BOOT_BLOCK_TO_SECTOR (g_FlashExtInfo.fi.dwNumBlocks))
						return FALSE;
					continue;
				}
			}
			else
			{
				if( !NandIsOEMReservedBlock(BOOT_SECTOR_TO_BLOCK(dwSector)))
				{
					dwSector += g_FlashExtInfo.fi.wSectorsPerBlock;
//					dwNumSectors -= g_FlashExtInfo.fi.wSectorsPerBlock;
					if(dwSector >= BOOT_BLOCK_TO_SECTOR (g_FlashExtInfo.fi.dwNumBlocks))
						return FALSE;
					continue;
				}
			}
		}
		
        if ( !FMD_ReadSector(dwSector,
                            (LPBYTE)dwRAM,
                            NULL, 1) )
        {
        	return FALSE;
        }

    	dwSector++;
    	dwNumSectors--;
        dwRAM += g_FlashExtInfo.fi.wDataBytesPerSector;
    }
	return TRUE;
}

// -----------------------------------------------------------------------------
//  NandReadImage:
//      Reads nk.nb0 off NAND
//      Returns ERR_Xxx
// -----------------------------------------------------------------------------
DWORD
NandReadImage()
{
    DWORD dwSectorsNeeded;
    DWORD dwSector, dwLength;         // Start Sector & Length
    DWORD dwRAM, i;

	//g_TOC has been read out in NandLocateTocAndEBoot. Let's verify if it's ok
    if ( !IS_VALID_TOC(g_pTOC) ) {
        return ERR_INVALID_TOC;
    }

//	TOC_Entry_Print();

    if ( !(g_pTOC->id[g_dwEntry].dwImageType & IMAGE_TYPE_RAMIMAGE) ) {
//        NandDbgPutString("ERR_INVALID_FILE_TYPE: ");
//        NandDbgPutHex(g_pTOC->id[g_dwEntry].dwImageType);
        return ERR_INVALID_FILE_TYPE;
    }

	dwSectorsNeeded = g_pTOC->id[g_dwEntry].dwTtlSectors;

	dwRAM    = VIRTUAL_TO_PHYSICAL(g_pTOC->id[g_dwEntry].dwLoadAddress);

	g_dwJumpAddr = g_pTOC->id[g_dwEntry].dwJumpAddress ? VIRTUAL_TO_PHYSICAL(g_pTOC->id[g_dwEntry].dwJumpAddress) :
											   VIRTUAL_TO_PHYSICAL(g_pTOC->id[g_dwEntry].dwLoadAddress);

    //
    // Load the disk image directly into RAM
    // BUGBUG: recover from read failures
    //
    i = 0;
	while (dwSectorsNeeded && i < MAX_SG_SECTORS)
	{
        dwSector = g_pTOC->id[g_dwEntry].sgList[i].dwSector;
        dwLength = g_pTOC->id[g_dwEntry].sgList[i].dwLength;
        
		if(!NandReadRegion(dwSector, dwLength, dwRAM))
		{
//            NandDbgPutString("ERR_DISK_OP_FAIL2!");
            return ERR_DISK_OP_FAIL2;
		}
		dwRAM += (dwLength << g_FlashExtInfo.ucSectorSizeBits);
        dwSectorsNeeded -= g_pTOC->id[g_dwEntry].sgList[i].dwLength;
        i++;
    }
    
    if (g_pTOC->chainInfo.dwLoadAddress == 0 || g_pTOC->id[g_dwEntry].dwImageType == IMAGE_TYPE_RAMIMAGE) 
        return ERR_SUCCESS;

    // Load the Chain.bin stored on NAND to the SDRAM
    dwRAM = VIRTUAL_TO_PHYSICAL(g_pTOC->chainInfo.dwLoadAddress);

    dwSectorsNeeded = g_pTOC->chainInfo.dwLength;
    dwSector = g_pTOC->chainInfo.dwFlashAddress;
    
//    NandDbgPutString("Reading Chain from NAND\r\n");
//    NandDbgPutString("LoadAddr: ");
//    NandDbgPutHex(dwRAM);
//    NandDbgPutString("NAND SectorAddr: ");
//    NandDbgPutHex(dwSector);
//    NandDbgPutString("Length: ");
//    NandDbgPutHex(dwSectorsNeeded);

	if(!NandReadRegion(dwSector, dwSectorsNeeded, dwRAM))
	{
        return ERR_DISK_OP_FAIL2;
	}

    return ERR_SUCCESS;
}

BOOL TOC_ReserveBlocks (
    DWORD *pdwStartBlock,
    DWORD *pdwFirstAvaiableBlock,
    DWORD dwNumBlocks)
{
    DWORD dwBlockNo = *pdwStartBlock;
    *pdwFirstAvaiableBlock = 0;

    while (dwNumBlocks > 0 && dwBlockNo < g_FlashExtInfo.fi.dwNumBlocks)
    {
        if (NandCheckAndReserveBlock (dwBlockNo))
        {
            --dwNumBlocks;
            if (0 == *pdwFirstAvaiableBlock)
            {
                *pdwFirstAvaiableBlock = dwBlockNo;
            }
        }
        ++dwBlockNo;
    }

    *pdwStartBlock = dwBlockNo;
    return dwBlockNo < g_FlashExtInfo.fi.dwNumBlocks;
}

int TOC_Reset (unsigned int wParam)
{
    NandEraseAll ();

    OEMGetEBootInfo (&g_dwEbootBlockSize, &g_dwEbootLoadAddr, &g_dwEbootLaunchAddr);
    OEMGetDMInfo (&g_dwDMBlockSize, &g_dwDMLoadAddr, &g_dwDMLaunchAddr);

    OEMGetSecureBlockInfo (&g_dwSecureBlockSize);
    g_dwSecureBlockSize += RESERVED_SECURE_BLOCKS;

    memset ((void *)g_pTOC, 0, sizeof (TOC));

    //  NAND flash layout
    //  | NBoot (block 0) | TOC | EBOOT | DM | NK | ... |
    {
        DWORD dwNextSearchBlock = 1;
    	if (TOC_ReserveBlocks (&dwNextSearchBlock, &g_dwTocBlock, g_dwTOCBlockSize) &&
            TOC_ReserveBlocks (&dwNextSearchBlock, &g_dwEBootBlock, g_dwEbootBlockSize) &&
            TOC_ReserveBlocks (&dwNextSearchBlock, &g_dwDMBlock, g_dwDMBlockSize) &&
            TOC_ReserveBlocks (&dwNextSearchBlock, &g_dwSecureBlock, g_dwSecureBlockSize))
        {
            g_dwNKBlock = dwNextSearchBlock;
            NandWriteToc ();
            return TRUE;
        }
    }

    return FALSE;
}
#endif

BOOL  FMDVerifyWrite(DWORD cs)
{
#if 0
    DWORD  dwState=0xff;

    NF_INIT_FIFO();
    NF_IO_RD_MODE();
	NF_ADDR_CYCLE_NUM(0);
	NF_SET_ADDR_HI (0);
    NF_SET_ADDR(0);
    NF_LEN(4);
	NF_FIFO_THRD(4);

	NF_CLR_INT (0xff);
	NF_CMD(SMDF_CMD_READ_STATUS);
	NF_START_FIFO();

    NF_WAIT_INT (SMDF_FIFO_INT);

    NF_RD_FIFO(dwState);
    
    NF_STOP_FIFO();

    if( dwState & 0x01 )
    {
        return FALSE;
    }
#endif
    return TRUE;
}
/*
void FMDDirectReadMode(void)
{
    RESET_DECLARE(RESET_SR_SM_RST);
    RESET_CLEAR(RESET_SR_SM_RST);

    v_pSMDFRegs->SmWait         = 0x1878;

    v_pSMDFRegs->SmDirectRead   |= 1;   // set to direct read mode
    v_pSMDFRegs->SmDmaIoCtrl    = 3;    // set to IO read status
    v_pSMDFRegs->SmDmaIoLen     = 0;
    v_pSMDFRegs->SmFIFOOp       = 1;    // must start FIFO

}*/

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色美美综合视频| 国产欧美日韩在线观看| 91美女片黄在线观看91美女| 国产精品综合一区二区| 黄色成人免费在线| 99精品一区二区三区| 麻豆成人av在线| 午夜欧美2019年伦理| 亚洲国产精品影院| 五月天欧美精品| 青青草原综合久久大伊人精品优势| 亚洲国产aⅴ成人精品无吗| 亚洲一区在线观看免费观看电影高清| 一区二区三区四区国产精品| 亚洲尤物在线视频观看| 亚洲午夜影视影院在线观看| 午夜欧美一区二区三区在线播放| 水野朝阳av一区二区三区| 蜜臀av在线播放一区二区三区| 日韩二区在线观看| 狠狠色丁香久久婷婷综合_中| 狠狠色丁香婷综合久久| 国产成人高清在线| 色综合天天做天天爱| 欧美日韩一级视频| 日韩午夜激情视频| 久久精品综合网| 中文字幕一区二区在线观看| 亚洲精品欧美二区三区中文字幕| 亚洲国产欧美一区二区三区丁香婷| 日韩**一区毛片| 国内精品伊人久久久久影院对白| 国产v日产∨综合v精品视频| 91视频精品在这里| 欧美高清激情brazzers| 久久久久97国产精华液好用吗| 国产精品久久久爽爽爽麻豆色哟哟 | 国产福利一区在线| 91色在线porny| 在线播放一区二区三区| 久久久久久免费| 亚洲精品中文在线影院| 日韩精品一二三| 成人污污视频在线观看| 欧美羞羞免费网站| 国产亚洲视频系列| 夜夜嗨av一区二区三区网页 | 狠狠色综合日日| 不卡视频一二三| 在线成人小视频| 国产嫩草影院久久久久| 午夜免费久久看| 国产成人精品午夜视频免费| 欧美日韩国产另类不卡| 久久九九久久九九| 亚洲成av人影院在线观看网| 国产精品一区二区三区99| 欧美日精品一区视频| 久久精品一区蜜桃臀影院| 亚洲一区欧美一区| 国产夫妻精品视频| 91精品国模一区二区三区| 中文字幕在线观看不卡视频| 毛片不卡一区二区| 在线视频一区二区三区| 久久精品视频免费观看| 香蕉加勒比综合久久| 99在线精品免费| 2020国产成人综合网| 亚洲电影一区二区| 成人动漫视频在线| 亚洲精品一线二线三线无人区| 一级女性全黄久久生活片免费| 国产福利一区在线观看| 91精品午夜视频| 亚洲综合一区二区三区| 成人国产电影网| 精品久久久久久无| 日韩国产欧美一区二区三区| 色婷婷亚洲综合| 国产精品美女久久久久久久网站| 精品一区二区在线播放| 欧美狂野另类xxxxoooo| 一区二区三区四区av| 成人app网站| 国产亚洲欧美激情| 精品亚洲国内自在自线福利| 欧美一级一区二区| 日韩二区三区四区| 欧美乱妇23p| 亚洲3atv精品一区二区三区| 一本一道久久a久久精品| 国产精品毛片大码女人| 国产+成+人+亚洲欧洲自线| 精品国产伦一区二区三区免费| 奇米影视一区二区三区小说| 欧美电影在线免费观看| 五月综合激情日本mⅴ| 欧美午夜片在线看| 夜夜嗨av一区二区三区中文字幕| 色综合天天综合网国产成人综合天| 成人免费视频在线观看| 99热国产精品| 亚洲欧美偷拍三级| 91久久精品国产91性色tv| 自拍偷拍国产精品| 99精品一区二区| 亚洲男人的天堂av| 在线亚洲高清视频| 亚洲图片自拍偷拍| 亚洲天堂精品视频| 97久久精品人人做人人爽50路 | 国产精品123| 国产日韩欧美精品一区| 国产精品456| 国产精品网友自拍| 日本久久电影网| 亚洲成a人片在线不卡一二三区| 欧美精品色综合| 免费亚洲电影在线| 久久久久免费观看| 成人精品亚洲人成在线| 亚洲欧美另类久久久精品| 欧美曰成人黄网| 日韩高清中文字幕一区| 精品少妇一区二区| 国产91丝袜在线播放九色| 中文字幕一区二区三区视频| 在线视频一区二区免费| 丝袜美腿亚洲一区| 久久久电影一区二区三区| 成年人午夜久久久| 亚洲午夜精品一区二区三区他趣| 91麻豆精品国产91久久久使用方法 | 亚洲欧美一区二区三区久本道91| 欧洲人成人精品| 蜜乳av一区二区| 国产精品网站在线观看| 91久久精品国产91性色tv| 日韩高清欧美激情| 中文一区一区三区高中清不卡| 91污在线观看| 日本不卡视频在线| 国产精品毛片高清在线完整版| 精品视频色一区| 国产精品自拍网站| 一区二区三区四区在线播放| 日韩精品一区二区三区四区视频| 国产v综合v亚洲欧| 香蕉成人伊视频在线观看| 欧美精品一区二区在线观看| 色综合天天综合狠狠| 久久国产精品无码网站| 中文字幕在线不卡一区二区三区| 欧美日韩亚洲综合在线 | 日本欧美一区二区| 成人av在线资源| 一区二区三区日韩精品视频| 日韩欧美aaaaaa| 精品99999| 成人自拍视频在线观看| 亚洲人成亚洲人成在线观看图片| 欧美电影影音先锋| jizzjizzjizz欧美| 美日韩一区二区三区| 中文字幕在线不卡一区| 欧美一区二区人人喊爽| 成人av电影在线播放| 人妖欧美一区二区| 中文字幕综合网| 欧美v国产在线一区二区三区| 色综合久久久久久久| 狠狠色伊人亚洲综合成人| 尤物视频一区二区| 欧美大片国产精品| 欧美亚洲高清一区二区三区不卡| 国产精品一区专区| 天天综合色天天| 国产精品丝袜在线| 欧美电视剧在线观看完整版| 日韩免费观看高清完整版在线观看| 91视频在线观看| 国产麻豆精品久久一二三| 亚洲成人黄色小说| 国产精品不卡视频| 精品国产91亚洲一区二区三区婷婷| 9色porny自拍视频一区二区| 黄色日韩三级电影| 亚州成人在线电影| 亚洲免费电影在线| 欧美国产日本视频| 精品久久久久久久一区二区蜜臀| 欧美视频第二页| 91麻豆国产精品久久| 成人激情开心网| 国产成人h网站| 国产毛片精品国产一区二区三区| 免费成人结看片| 日韩av电影免费观看高清完整版在线观看 | 日韩av一区二区在线影视|