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

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

?? main.c

?? 三星3442處理器Demo板:Eboot源碼包
?? C
?? 第 1 頁 / 共 4 頁
字號:
        c = tolower(*(pStr + strlen(pStr) - 1 - nPos));
        if (c >= '0' && c <= '9')
            c -= '0';
        else if (c >= 'a' && c <= 'f')
        {
            c -= 'a';
            c  = (0xa + c);
        }

        for (nCnt = 0, n = 1 ; nCnt < nPos ; nCnt++)
        {
            n *= nBase;
        }
        nVal += (n * c);
    }

    return(nVal);
}


static void CvtMAC(USHORT MacAddr[3], char *pszDottedD ) 
{
    DWORD cBytes;
    char *pszLastNum;
    int atoi (const char *s);
    int i=0;    
    BYTE *p = (BYTE *)MacAddr;

    // Replace the dots with NULL terminators
    pszLastNum = pszDottedD;
    for(cBytes = 0 ; cBytes < 6 ; cBytes++)
    {
        while(*pszDottedD != '.' && *pszDottedD != '\0')
        {
            pszDottedD++;
        }
        if (pszDottedD == '\0' && cBytes != 5)
        {
            // zero out the rest of MAC address
            while(i++ < 6)
            {
                *p++ = 0;
            }
            break;
        }
        *pszDottedD = '\0';
        *p++ = (BYTE)(mystrtoul(pszLastNum, 16) & 0xFF);
        i++;
        pszLastNum = ++pszDottedD;
    }
}


static void SetCS8900MACAddress(PBOOT_CFG pBootCfg)
{
    CHAR szDottedD[24];
    USHORT cwNumChars = 0;
    USHORT InChar = 0;

    memset(szDottedD, '0', 24);

    EdbgOutputDebugString ( "\r\nEnter new MAC address in hexadecimal (hh.hh.hh.hh.hh.hh): ");

    while(!((InChar == 0x0d) || (InChar == 0x0a)))
    {
        InChar = OEMReadDebugByte();
        InChar = tolower(InChar);
        if (InChar != OEM_DEBUG_COM_ERROR && InChar != OEM_DEBUG_READ_NODATA) 
        {
            // If it's a hex number or a period, add it to the string.
            //
            if (InChar == '.' || (InChar >= '0' && InChar <= '9') || (InChar >= 'a' && InChar <= 'f')) 
            {
                if (cwNumChars < 17) 
                {
                    szDottedD[cwNumChars++] = (char)InChar;
                    OEMWriteDebugByte((BYTE)InChar);
                }
            }
            else if (InChar == 8)       // If it's a backspace, back up.
            {
                if (cwNumChars > 0) 
                {
                    cwNumChars--;
                    OEMWriteDebugByte((BYTE)InChar);
                }
            }
        }
    }

    EdbgOutputDebugString ( "\r\n");

    // If it's a carriage return with an empty string, don't change anything.
    //
    if (cwNumChars) 
    {
        szDottedD[cwNumChars] = '\0';
        CvtMAC(pBootCfg->EdbgAddr.wMAC, szDottedD);

        EdbgOutputDebugString("INFO: MAC address set to: %x:%x:%x:%x:%x:%x\r\n",
                  pBootCfg->EdbgAddr.wMAC[0] & 0x00FF, pBootCfg->EdbgAddr.wMAC[0] >> 8,
                  pBootCfg->EdbgAddr.wMAC[1] & 0x00FF, pBootCfg->EdbgAddr.wMAC[1] >> 8,
                  pBootCfg->EdbgAddr.wMAC[2] & 0x00FF, pBootCfg->EdbgAddr.wMAC[2] >> 8);
    }
    else
    {
        EdbgOutputDebugString("WARNING: SetCS8900MACAddress: Invalid MAC address.\r\n");
    }
}


/*
    @func   BOOL | MainMenu | Manages the Samsung bootloader main menu.
    @rdesc  TRUE == Success and FALSE == Failure.
    @comm    
    @xref   
*/

static BOOL MainMenu(PBOOT_CFG pBootCfg)
{
    BYTE KeySelect = 0;
    BOOL bConfigChanged = FALSE;
    BOOLEAN bDownload = TRUE;

    volatile S3C2440A_INTR_REG *s2440INTt = (S3C2440A_INTR_REG *)OALPAtoVA(S3C2440A_BASE_REG_PA_INTR, FALSE);
   
    while(TRUE)
    {
        KeySelect = 0;

        EdbgOutputDebugString ( "\r\nEthernet Boot Loader Configuration:\r\n\r\n");
        EdbgOutputDebugString ( "0) IP address: %s\r\n",inet_ntoa(pBootCfg->EdbgAddr.dwIP));
        EdbgOutputDebugString ( "1) Subnet mask: %s\r\n", inet_ntoa(pBootCfg->SubnetMask));
        EdbgOutputDebugString ( "2) DHCP: %s\r\n", (pBootCfg->ConfigFlags & CONFIG_FLAGS_DHCP)?"Enabled":"Disabled");
        EdbgOutputDebugString ( "3) Boot delay: %d seconds\r\n", pBootCfg->BootDelay);
        EdbgOutputDebugString ( "4) Reset to factory default configuration\r\n");
        EdbgOutputDebugString ( "5) Startup image: %s\r\n", (g_pBootCfg->ConfigFlags & BOOT_TYPE_DIRECT) ? "LAUNCH EXISTING" : "DOWNLOAD NEW");
        EdbgOutputDebugString ( "6) Program disk image into SmartMedia card: %s\r\n", (pBootCfg->ConfigFlags & TARGET_TYPE_NAND)?"Enabled":"Disabled");
        EdbgOutputDebugString ( "7) Program CS8900 MAC address (%B:%B:%B:%B:%B:%B)\r\n",
                               g_pBootCfg->EdbgAddr.wMAC[0] & 0x00FF, g_pBootCfg->EdbgAddr.wMAC[0] >> 8,
                               g_pBootCfg->EdbgAddr.wMAC[1] & 0x00FF, g_pBootCfg->EdbgAddr.wMAC[1] >> 8,
                               g_pBootCfg->EdbgAddr.wMAC[2] & 0x00FF, g_pBootCfg->EdbgAddr.wMAC[2] >> 8);
        EdbgOutputDebugString ( "8) Kernel Debugger: %s\r\n", (g_pBootCfg->ConfigFlags & CONFIG_FLAGS_DEBUGGER) ? "DISABLED" : "ENABLE");
        EdbgOutputDebugString ( "9) Format Boot Media for BinFS\r\n");

        // N.B: we need this option here since BinFS is really a RAM image, where you "format" the media
        // with an MBR. There is no way to parse the image to say it's ment to be BinFS enabled.
        EdbgOutputDebugString ( "E) Erase Reserved Block \r\n");
        EdbgOutputDebugString ( "B) Mark Bad Block at Reserved Block \r\n");
        EdbgOutputDebugString ( "F) Low-level format the Smart Media card\r\n");
        EdbgOutputDebugString ( "D) Download image now\r\n");
        EdbgOutputDebugString ( "L) LAUNCH existing Boot Media image\r\n");
		EdbgOutputDebugString ( "R) Read Configuration \r\n");
		EdbgOutputDebugString ( "U) DOWNLOAD image now(USB)\r\n");
		EdbgOutputDebugString ( "W) Write Configuration Right Now\r\n");
        EdbgOutputDebugString ( "\r\nEnter your selection: ");

        while (! ( ( (KeySelect >= '0') && (KeySelect <= '9') ) ||
                   ( (KeySelect == 'D') || (KeySelect == 'd') ) ||
                   ( (KeySelect == 'B') || (KeySelect == 'b') ) ||
                   ( (KeySelect == 'E') || (KeySelect == 'e') ) ||
                   ( (KeySelect == 'F') || (KeySelect == 'f') ) ||
                   ( (KeySelect == 'L') || (KeySelect == 'l') ) ||
                   ( (KeySelect == 'R') || (KeySelect == 'r') ) ||
                   ( (KeySelect == 'U') || (KeySelect == 'u') ) ||
                   ( (KeySelect == 'W') || (KeySelect == 'w') ) ||
                   ( (KeySelect == 'X') || (KeySelect == 'x') ) ))
        {
            KeySelect = OEMReadDebugByte();
        }

        EdbgOutputDebugString ( "%c\r\n", KeySelect);

        switch(KeySelect)
        {
        case '0':           // Change IP address.
            SetIP(pBootCfg);
            pBootCfg->ConfigFlags &= ~CONFIG_FLAGS_DHCP;   // clear DHCP flag
            bConfigChanged = TRUE;
            break;
        case '1':           // Change subnet mask.
            SetMask(pBootCfg);
            bConfigChanged = TRUE;
            break;
        case '2':           // Toggle static/DHCP mode.
            pBootCfg->ConfigFlags = (pBootCfg->ConfigFlags ^ CONFIG_FLAGS_DHCP);
            bConfigChanged = TRUE;
            break;
        case '3':           // Change autoboot delay.
            SetDelay(pBootCfg);
            bConfigChanged = TRUE;
            break;
        case '4':           // Reset the bootloader configuration to defaults.
            OALMSG(TRUE, (TEXT("Resetting default TOC...\r\n")));
            TOC_Init(DEFAULT_IMAGE_DESCRIPTOR, (IMAGE_TYPE_RAMIMAGE|IMAGE_TYPE_BINFS), 0, 0, 0);
            if ( !TOC_Write() ) {
                OALMSG(OAL_WARN, (TEXT("TOC_Write Failed!\r\n")));
            }
            OALMSG(TRUE, (TEXT("...TOC complete\r\n")));
            break;
        case '5':           // Toggle download/launch status.
            pBootCfg->ConfigFlags = (pBootCfg->ConfigFlags ^ BOOT_TYPE_DIRECT);
            bConfigChanged = TRUE;
            break;
        case '6':           // Toggle image storage to Smart Media.
            pBootCfg->ConfigFlags = (pBootCfg->ConfigFlags ^ TARGET_TYPE_NAND);
            bConfigChanged = TRUE;
            break;
        case '7':           // Configure Crystal CS8900 MAC address.
            SetCS8900MACAddress(pBootCfg);
            bConfigChanged = TRUE;
            break;
        case '8':           // Toggle KD
            g_pBootCfg->ConfigFlags = (g_pBootCfg->ConfigFlags ^ CONFIG_FLAGS_DEBUGGER);
            g_bWaitForConnect = (g_pBootCfg->ConfigFlags & CONFIG_FLAGS_DEBUGGER) ? TRUE : FALSE;           
	     bConfigChanged = TRUE;
            continue;
            break;            
        case '9':
            // format the boot media for BinFS
            // N.B: this does not destroy our OEM reserved sections (TOC, bootloaders, etc)
            if ( !g_bBootMediaExist ) {
				OALMSG(OAL_ERROR, (TEXT("ERROR: BootMonitor: boot media does not exist.\r\n")));
                continue;
            }
            // N.B: format offset by # of reserved blocks,
            // decrease the ttl # blocks available by that amount.
            if ( !BP_LowLevelFormat( g_dwImageStartBlock,
                                     wNUM_BLOCKS - g_dwImageStartBlock,
                                     0) )
            {
                OALMSG(OAL_ERROR, (TEXT("ERROR: BootMonitor: Low-level boot media format failed.\r\n")));
                continue;
            }
            break;
        case 'F':
        case 'f':
            // low-level format
            // N.B: this erases images, BinFs, FATFS, user data, etc.
            // However, we don't format Bootloaders & TOC bolcks; use JTAG for this.
            if ( !g_bBootMediaExist ) {
				OALMSG(OAL_ERROR, (TEXT("ERROR: BootMonitor: boot media does not exist.\r\n")));
                continue;
            } else {
                DWORD i;
                SectorInfo si;

                // to keep bootpart off of our reserved blocks we must mark it as bad, reserved & read-only
                si.bOEMReserved = OEM_BLOCK_RESERVED | OEM_BLOCK_READONLY;
                si.bBadBlock    = BADBLOCKMARK;
                si.dwReserved1  = 0xffffffff;
                si.wReserved2   = 0xffff;

                OALMSG(TRUE, (TEXT("Reserving Blocks [0x%x - 0x%x] ...\r\n"), 0, IMAGE_START_BLOCK-1));
                for (i = 0; i < IMAGE_START_SECTOR; i++) {
                    FMD_WriteSector(i, NULL, &si, 1);
                }
                OALMSG(TRUE, (TEXT("...reserve complete.\r\n")));

                OALMSG(TRUE, (TEXT("Low-level format Blocks [0x%x - 0x%x] ...\r\n"), IMAGE_START_BLOCK, wNUM_BLOCKS-1));
                for (i = IMAGE_START_BLOCK; i < wNUM_BLOCKS; i++) {
                    FMD_EraseBlock(i);
                }
                OALMSG(TRUE, (TEXT("...erase complete.\r\n")));
            } break;
        case 'B':
        case 'b':
            // low-level format
            // N.B: this erases images, BinFs, FATFS, user data, etc.
            // However, we don't format Bootloaders & TOC bolcks; use JTAG for this.
            if ( !g_bBootMediaExist ) {
				OALMSG(OAL_ERROR, (TEXT("ERROR: BootMonitor: boot media does not exist.\r\n")));
                continue;
            } else {
				DWORD i;
				SectorInfo si;

				// to keep bootpart off of our reserved blocks we must mark it as bad, reserved & read-only
				si.bOEMReserved = OEM_BLOCK_RESERVED | OEM_BLOCK_READONLY;
				si.bBadBlock    = BADBLOCKMARK;
//				si.bBadBlock    = 0xff;
				si.dwReserved1  = 0xffffffff;
				si.wReserved2   = 0xffff;

				OALMSG(TRUE, (TEXT("Reserving Blocks [0x%x - 0x%x] ...\r\n"), 0, IMAGE_START_BLOCK-1));
				for (i = 0; i < IMAGE_START_SECTOR; i++) {
					FMD_WriteSector(i, NULL, &si, 1);
				}
				OALMSG(TRUE, (TEXT("...reserve complete.\r\n")));
            } break;
        case 'E':
        case 'e':
            // low-level format
            // N.B: this erases images, BinFs, FATFS, user data, etc.
            // However, we don't format Bootloaders & TOC bolcks; use JTAG for this.
            if ( !g_bBootMediaExist ) {
				OALMSG(OAL_ERROR, (TEXT("ERROR: BootMonitor: boot media does not exist.\r\n")));
                continue;
            } else {
				int i;

                OALMSG(TRUE, (TEXT("Low-level format Blocks [0x%x - 0x%x] ...\r\n"), 0, IMAGE_START_BLOCK-1));
                for (i = NBOOT_BLOCK; i < (NBOOT_BLOCK+NBOOT_BLOCK_SIZE); i++) {
                    FMD_EraseBlock(i);
                }
                for (i = EBOOT_BLOCK; i < (EBOOT_BLOCK+EBOOT_BLOCK_SIZE); i++) {
                    FMD_EraseBlock(i);
                }
                OALMSG(TRUE, (TEXT("...erase complete.\r\n")));
            } break;
        case 'D':           // Download? Yes.
        case 'd':
            bDownload = TRUE;
            goto MENU_DONE;
        case 'L':           // Download? No.
        case 'l':
            bDownload = FALSE;
            goto MENU_DONE;
        case 'R':
        case 'r':
			TOC_Read();
			TOC_Print();
            // TODO
            break;
        case 'U':           // Download? No.
        case 'u':		 
            bConfigChanged = TRUE;
	      g_bUSBDownload = TRUE;
            bDownload = TRUE;
            goto MENU_DONE;
        case 'W':           // Configuration Write
        case 'w':
            if (!TOC_Write())
            {
                OALMSG(OAL_WARN, (TEXT("WARNING: MainMenu: Failed to store updated eboot configuration in flash.\r\n")));
            }
            else
            {
                OALMSG(OAL_INFO, (TEXT("Successfully Written\r\n")));
                bConfigChanged = FALSE;
            }
            break;
        default:
            break;
        }
    }

MENU_DONE:

    // If eboot settings were changed by user, save them to flash.
    //
    if (bConfigChanged && !TOC_Write())
    {
        OALMSG(OAL_WARN, (TEXT("WARNING: MainMenu: Failed to store updated bootloader configuration to flash.\r\n")));
    }

    return(bDownload);    
}


/*
    @func   BOOL | OEMPlatformInit | Initialize the Samsung SMD2440 platform hardware.
    @rdesc  TRUE = Success, FALSE = Failure.
    @comm    
    @xref   
*/
BOOL OEMPlatformInit(void)
{
    ULONG BootDelay;
    UINT8 KeySelect;
    UINT32 dwStartTime, dwPrevTime, dwCurrTime;
    BOOLEAN bResult = FALSE;
    FlashInfo flashInfo;

    OALMSG(OAL_FUNC, (TEXT("+OEMPlatformInit.\r\n")));

    EdbgOutputDebugString("Microsoft Windows CE Bootloader for the Samsung SMDK2440 Version %d.%d Built %s\r\n\r\n", 
                          EBOOT_VERSION_MAJOR, EBOOT_VERSION_MINOR, __DATE__);

    // Initialize the display.
    //
    InitDisplay();

    // Initialize the BSP args structure.
    //
    memset(pBSPArgs, 0, sizeof(BSP_ARGS));
    pBSPArgs->header.signature       = OAL_ARGS_SIGNATURE;
    pBSPArgs->header.oalVersion      = OAL_ARGS_VERSION;
    pBSPArgs->header.bspVersion      = BSP_ARGS_VERSION;
    pBSPArgs->kitl.flags             = OAL_KITL_FLAGS_ENABLED | OAL_KITL_FLAGS_VMINI;
    pBSPArgs->kitl.devLoc.IfcType    = Internal;
    pBSPArgs->kitl.devLoc.BusNumber  = 0;
    pBSPArgs->kitl.devLoc.LogicalLoc = BSP_BASE_REG_PA_CS8900A_IOBASE;

    // This should not change unless reserved blocks are added/removed;
    // made global to do the calc only once.
    g_dwImageStartBlock = IMAGE_START_BLOCK;

	// For USB Download functon
	//
	if (!InitUSB())
	{
		DEBUGMSG(1, (TEXT("OEMPlatformInit: Failed to initialize USB.\r\n")));
		return(FALSE);
	}
	Isr_Init();

    // Try to initialize the boot media block driver and BinFS partition.
    //
    OALMSG(TRUE, (TEXT("BP_Init\r\n")));
    if ( !BP_Init((LPBYTE)BINFS_RAM_START, BINFS_RAM_LENGTH, NULL, NULL, NULL) )
    {
        OALMSG(OAL_WARN, (TEXT("WARNING: OEMPlatformInit failed to initialize Boot Media.\r\n")));
        g_bBootMediaExist = FALSE;
    }
    else
        g_bBootMediaExist = TRUE;

    // Get flash info
    if (!FMD_GetInfo(&flashInfo)) {
        OALMSG(OAL_ERROR, (L"ERROR: BLFlashDownload: "

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
婷婷中文字幕综合| 国产亚洲精品久| 欧美电影精品一区二区| 亚洲在线中文字幕| 亚洲成a人片综合在线| 一区二区欧美在线观看| 中文欧美字幕免费| 麻豆一区二区99久久久久| 亚洲va韩国va欧美va| 91精品国产综合久久久久久| 国产一区二区中文字幕| 欧美大片在线观看一区| 欧美激情在线免费观看| 亚洲成av人片一区二区三区| 日韩精品视频网| 色美美综合视频| 亚洲欧美色综合| 亚洲成人免费视频| 一区二区三区产品免费精品久久75| 国产精品视频看| 国产精品污www在线观看| 欧美丝袜丝交足nylons| 日韩免费高清视频| 国产亚洲欧美日韩日本| 一区二区三国产精华液| 国产激情91久久精品导航| 欧美二区三区91| 樱桃视频在线观看一区| 成人免费观看视频| 精品国产乱码久久久久久蜜臀| 久久精品水蜜桃av综合天堂| 亚洲国产视频直播| 久久电影网站中文字幕| 色中色一区二区| 91色porny蝌蚪| 欧美日韩国产一区| 国产亚洲1区2区3区| 亚洲va国产va欧美va观看| 国产精品白丝jk黑袜喷水| 不卡大黄网站免费看| 色婷婷综合久久久中文一区二区| 91精品国产色综合久久不卡电影| 久久久精品免费网站| 久久久久国产精品厨房| 一区二区三区电影在线播| 亚洲成人你懂的| 色呦呦国产精品| 欧美xxxxx裸体时装秀| 国产精品毛片高清在线完整版 | 国产一区二区看久久| 国产伦理精品不卡| 2023国产精品| 蜜桃在线一区二区三区| 婷婷综合另类小说色区| 热久久一区二区| 欧美性色黄大片| 中文字幕人成不卡一区| 国产91丝袜在线18| 久久看人人爽人人| 极品瑜伽女神91| 日韩视频在线一区二区| 日本在线不卡一区| 4438亚洲最大| 日韩精彩视频在线观看| 欧美在线不卡视频| 亚洲综合一二三区| 在线区一区二视频| 一区二区高清视频在线观看| 一本高清dvd不卡在线观看| 亚洲丝袜制服诱惑| 波多野结衣中文一区| 中文字幕乱码亚洲精品一区 | av中文字幕一区| 国产精品伦理在线| 成人午夜精品一区二区三区| 久久久三级国产网站| 国产一区二区不卡老阿姨| 久久先锋资源网| 国产精品一线二线三线精华| 久久亚洲一区二区三区四区| 精品一区二区影视| 精品国产sm最大网站免费看| 国产麻豆精品视频| 国产欧美精品一区二区色综合| 国产精品主播直播| 亚洲欧美综合色| 在线日韩国产精品| 丝袜美腿亚洲色图| 精品国产网站在线观看| 国产乱码一区二区三区| 国产喂奶挤奶一区二区三区 | 亚洲一本大道在线| 欧美日韩国产中文| 麻豆精品在线播放| 久久久国产午夜精品| 国产精品一区二区久激情瑜伽 | 成人免费看黄yyy456| 自拍偷拍国产亚洲| 欧美性生活大片视频| 蜜桃视频一区二区三区在线观看| 精品国产乱子伦一区| 国产东北露脸精品视频| 亚洲视频免费在线| 欧美日韩国产影片| 韩国女主播成人在线| ...xxx性欧美| 欧美男女性生活在线直播观看| 久久99国产精品尤物| 国产喷白浆一区二区三区| 91日韩一区二区三区| 丝袜美腿亚洲一区| 国产精品理论片| 欧美精品日韩综合在线| 国产成人亚洲综合色影视| 一区二区视频在线看| 日韩欧美亚洲国产另类| 成人国产精品免费观看动漫| 亚洲一区在线播放| 久久噜噜亚洲综合| 欧美午夜影院一区| 国产高清不卡二三区| 亚洲成人动漫在线观看| 国产欧美日韩一区二区三区在线观看| 色爱区综合激月婷婷| 国产乱子伦一区二区三区国色天香| 中文字幕日韩一区| 精品少妇一区二区| 91久久精品日日躁夜夜躁欧美| 麻豆91小视频| 一区二区三区在线视频观看| 精品免费日韩av| 欧美性生活久久| av激情亚洲男人天堂| 麻豆免费精品视频| 亚洲综合在线观看视频| 久久精品视频网| 欧美久久久一区| 国产999精品久久久久久绿帽| 日韩电影免费一区| 亚洲人成小说网站色在线| 日韩欧美高清dvd碟片| 一本久道久久综合中文字幕| 国产乱理伦片在线观看夜一区| 亚洲v日本v欧美v久久精品| 国产精品丝袜久久久久久app| 欧美一区二区网站| 日本韩国一区二区| 成人三级在线视频| 精油按摩中文字幕久久| 亚洲第一成人在线| 亚洲欧洲综合另类在线 | 成a人片国产精品| 美女爽到高潮91| 亚洲国产精品一区二区久久恐怖片| 国产区在线观看成人精品| 精品日韩一区二区三区| 欧美欧美午夜aⅴ在线观看| 91久久国产最好的精华液| 成人动漫视频在线| 国产精品 日产精品 欧美精品| 日本午夜一本久久久综合| 亚洲一区中文日韩| 国产精品久久夜| 国产日韩欧美麻豆| 欧美精品一区二区三区在线播放| 欧美欧美欧美欧美| 欧美日韩视频一区二区| 色婷婷av一区二区三区之一色屋| 粉嫩嫩av羞羞动漫久久久| 国产自产视频一区二区三区| 久久国产麻豆精品| 经典三级在线一区| 精品在线观看免费| 久久av中文字幕片| 久久不见久久见中文字幕免费| 日本特黄久久久高潮| 天天做天天摸天天爽国产一区| 亚洲国产日韩av| 亚洲一区二区三区四区五区中文| 中文字幕一区二区视频| 国产精品久久久久久久久免费丝袜 | 国产精品久久精品日日| 久久久久久亚洲综合| 国产婷婷精品av在线| 国产日韩精品久久久| 国产欧美一区二区精品秋霞影院| 久久久影视传媒| 国产三级精品三级| 国产精品色呦呦| 国产精品家庭影院| 亚洲同性同志一二三专区| 亚洲日本在线天堂| 亚洲精品国产精华液| 亚洲一区二区影院| 日韩电影免费在线| 精品在线你懂的| 成人午夜视频福利| 色老汉av一区二区三区| 欧美二区三区91| 精品99久久久久久|