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

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

?? flash_intel.c~

?? 針對(duì)德州儀器DM270開發(fā)板的bootloader,其實(shí)現(xiàn)了內(nèi)核的下載以及文件系統(tǒng)的下載
?? C~
?? 第 1 頁 / 共 3 頁
字號(hào):
/* * File: flash_intel.c * * An implementation of a flash utility specific to several Intel chipsets. * This implementation, while vendor *dependent*, exposes the vendor * *independent* flash.h interface allowing it to plug generically into the * bootloader. Please see flash.h for more info. * * See Also *    flash.h * * Copyright (C) 2002 RidgeRun, Inc. * Author: RidgeRun, Inc  <skranz@ridgerun.com> * *  This program is free software; you can redistribute  it and/or modify it *  under  the terms of  the GNU General  Public License as published by the *  Free Software Foundation;  either version 2 of the  License, or (at your *  option) any later version. * *  THIS  SOFTWARE  IS  PROVIDED  ``AS  IS''  AND   ANY  EXPRESS  OR IMPLIED *  WARRANTIES,   INCLUDING, BUT NOT  LIMITED  TO, THE IMPLIED WARRANTIES OF *  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN *  NO  EVENT  SHALL   THE AUTHOR  BE    LIABLE FOR ANY   DIRECT,  INDIRECT, *  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT *  NOT LIMITED   TO, PROCUREMENT OF  SUBSTITUTE GOODS  OR SERVICES; LOSS OF *  USE, DATA,  OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON *  ANY THEORY OF LIABILITY, WHETHER IN  CONTRACT, STRICT LIABILITY, OR TORT *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF *  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * *  You should have received a copy of the  GNU General Public License along *  with this program; if not, write  to the Free Software Foundation, Inc., *  675 Mass Ave, Cambridge, MA 02139, USA. * * Please report all bugs/problems to the author or <support@dsplinux.net> * * key: RRGPLCR (do not remove) * */#include "flash.h"#include "types.h"#include "util.h"#include "io.h"#include "memconfig.h"extern unsigned long FlashLockMode; // This is a global variable that will                                    // be tested by the flash*.c module before                                    // erases or writes flash. If the special                                    // code 0xBEEFFEED is not present here then                                    // the all flash mod operations will fail                                    // and report a flash locked state.static short TotalSectors;typedef struct {  int start_addr;  int end_addr;} sect_info_t;#if (BSPCONF_FLASH_TYPE == INTEL_28F128)#define NUM_SEQUENTIAL_CHIPS 1#endif#if (BSPCONF_FLASH_TYPE == INTEL_28F160)#define NUM_SEQUENTIAL_CHIPS 1#endif#if (BSPCONF_FLASH_TYPE == INTEL_28F320)#define NUM_SEQUENTIAL_CHIPS 1#endif#if (BSPCONF_FLASH_TYPE == INTEL_28F640)#define NUM_SEQUENTIAL_CHIPS 1#endif#if (BSPCONF_FLASH_TYPE == INTEL_28F320x2)#define NUM_SEQUENTIAL_CHIPS 2#endif#ifdef C5471#define TWO_16BIT_FLASH_CHIPS_INVOLVED_IN_EACH_32BIT_ACCESS /* e.g. interleaved */#endif#ifdef TWO_16BIT_FLASH_CHIPS_INVOLVED_IN_EACH_32BIT_ACCESS  #define XYZ 2#else  #define XYZ 1#endif#define NUM_CHIP_SECT 39static const int sect_sizes[NUM_CHIP_SECT] = {  // Intel 28F160F3 (2 MBytes each)  /* Avoid confusion;     Values here represented in "bytes(8bits)-per-block"; data sheet shows "words(16bits)-per-block".     the XYZ used below is usually a value of 1 except in cases where the h/w designers have     combined two flash chips side-by-side (interleaved) instead of sequentially in the     address space. In the interleaved mode a 32bit value is retrieved by the h/w     by accessing 16bits from one chip and the other 16bits from the second chip.     On the other hand, in a sequential flash design, a 32bit value is retrieved     by the h/w by accessing 16bits from a flash chip and then incrementing to the     next location within that same flash chip to get the second 16bits. In both     cases it is all seamless to the s/w since the h/w SDRAM controller is performing     all the necessary accesses to reference the 32bit value. The one area that is     not seamless to the s/w, however, is the erase-block size. In interleaved designs     the s/w needs to be aware that the minimum number of bytes that can be erased     at any one time is *twice* the minimum for each individual chip. Hence the XYZ     modifier below to help manage that.  */  XYZ*0x2000,  XYZ*0x2000,  XYZ*0x2000,  XYZ*0x2000,  XYZ*0x2000,  XYZ*0x2000,  XYZ*0x2000,  XYZ*0x2000,  XYZ*0x10000, XYZ*0x10000, XYZ*0x10000, XYZ*0x10000, XYZ*0x10000, XYZ*0x10000, XYZ*0x10000, XYZ*0x10000,  XYZ*0x10000, XYZ*0x10000, XYZ*0x10000, XYZ*0x10000, XYZ*0x10000, XYZ*0x10000, XYZ*0x10000, XYZ*0x10000,  XYZ*0x10000, XYZ*0x10000, XYZ*0x10000, XYZ*0x10000, XYZ*0x10000, XYZ*0x10000, XYZ*0x10000, XYZ*0x10000,  XYZ*0x10000, XYZ*0x10000, XYZ*0x10000, XYZ*0x10000, XYZ*0x10000, XYZ*0x10000, XYZ*0x10000};#define NUM_CHIP_SECT_A 71static const int sect_sizes_A[NUM_CHIP_SECT_A] = {  // Intel 28F320-Top-Boot (4MBytes each)  /* Avoid confusion;     Values here represented in "bytes(8bits)-per-block"; data sheet shows "words(16bits)-per-block".     the XYZ used below is usually a value of 1 except in cases where the h/w designers have     combined two flash chips side-by-side (interleaved) instead of sequentially in the     address space. In the interleaved mode a 32bit value is retrieved by the h/w     by accessing 16bits from one chip and the other 16bits from the second chip.     On the other hand, in a sequential flash design, a 32bit value is retrieved     by the h/w by accessing 16bits from a flash chip and then incrementing to the     next location within that same flash chip to get the second 16bits. In both     cases it is all seamless to the s/w since the h/w SDRAM controller is performing     all the necessary accesses to reference the 32bit value. The one area that is     not seamless to the s/w, however, is the erase-block size. In interleaved designs     the s/w needs to be aware that the minimum number of bytes that can be erased     at any one time is *twice* the minimum for each individual chip. Hence the XYZ     modifier below to help manage that.  */  XYZ*0x10000, XYZ*0x10000, XYZ*0x10000, XYZ*0x10000, XYZ*0x10000, XYZ*0x10000, XYZ*0x10000, XYZ*0x10000,  XYZ*0x10000, XYZ*0x10000, XYZ*0x10000, XYZ*0x10000, XYZ*0x10000, XYZ*0x10000, XYZ*0x10000, XYZ*0x10000,  XYZ*0x10000, XYZ*0x10000, XYZ*0x10000, XYZ*0x10000, XYZ*0x10000, XYZ*0x10000, XYZ*0x10000, XYZ*0x10000,  XYZ*0x10000, XYZ*0x10000, XYZ*0x10000, XYZ*0x10000, XYZ*0x10000, XYZ*0x10000, XYZ*0x10000, XYZ*0x10000,  XYZ*0x10000, XYZ*0x10000, XYZ*0x10000, XYZ*0x10000, XYZ*0x10000, XYZ*0x10000, XYZ*0x10000, XYZ*0x10000,  XYZ*0x10000, XYZ*0x10000, XYZ*0x10000, XYZ*0x10000, XYZ*0x10000, XYZ*0x10000, XYZ*0x10000, XYZ*0x10000,  XYZ*0x10000, XYZ*0x10000, XYZ*0x10000, XYZ*0x10000, XYZ*0x10000, XYZ*0x10000, XYZ*0x10000, XYZ*0x10000,  XYZ*0x10000, XYZ*0x10000, XYZ*0x10000, XYZ*0x10000, XYZ*0x10000, XYZ*0x10000, XYZ*0x10000,  XYZ*0x2000,  XYZ*0x2000,  XYZ*0x2000,  XYZ*0x2000,  XYZ*0x2000,  XYZ*0x2000,  XYZ*0x2000,  XYZ*0x2000,};#define NUM_CHIP_SECT_B 128static const int sect_sizes_B[NUM_CHIP_SECT_B] = {  // Intel 28F128J3A (16MBytes each)  /* Avoid confusion;     Values here represented in "bytes(8bits)-per-block"; data sheet shows "words(16bits)-per-block".     the XYZ used below is usually a value of 1 except in cases where the h/w designers have     combined two flash chips side-by-side (interleaved) instead of sequentially in the     address space. In the interleaved mode a 32bit value is retrieved by the h/w     by accessing 16bits from one chip and the other 16bits from the second chip.     On the other hand, in a sequential flash design, a 32bit value is retrieved     by the h/w by accessing 16bits from a flash chip and then incrementing to the     next location within that same flash chip to get the second 16bits. In both     cases it is all seamless to the s/w since the h/w SDRAM controller is performing     all the necessary accesses to reference the 32bit value. The one area that is     not seamless to the s/w, however, is the erase-block size. In interleaved designs     the s/w needs to be aware that the minimum number of bytes that can be erased     at any one time is *twice* the minimum for each individual chip. Hence the XYZ     modifier below to help manage that.  */  XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000,  XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000,   XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000,   XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000,   XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000,   XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000,   XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000,   XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000,   XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000,   XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000,   XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000,   XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000,   XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000,   XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000,   XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000,   XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000};#define NUM_CHIP_SECT_C 64static const int sect_sizes_C[NUM_CHIP_SECT_C] = {  // Intel 28F640J5 (8MBytes each)  XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000,  XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000,   XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000,   XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000,   XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000,   XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000,   XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000,   XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, XYZ*0x20000, };// -----------------------// Note:// All these arrays defined so that we can have// the one we need at runtime when we've detected// the actual chip type present on the board.// -----------------------#define TOTAL_SECT (NUM_SEQUENTIAL_CHIPS*NUM_CHIP_SECT)static sect_info_t sect_info[TOTAL_SECT];     // Intel 28F160F3 Chips#define TOTAL_SECT_A (NUM_SEQUENTIAL_CHIPS*NUM_CHIP_SECT_A)static sect_info_t sect_info_A[TOTAL_SECT_A]; // Intel 28F320 Chips#define TOTAL_SECT_B (NUM_SEQUENTIAL_CHIPS*NUM_CHIP_SECT_B)static sect_info_t sect_info_B[TOTAL_SECT_B]; // Intel 28F128J3A Chips#define TOTAL_SECT_C (NUM_SEQUENTIAL_CHIPS*NUM_CHIP_SECT_C)static sect_info_t sect_info_C[TOTAL_SECT_C]; // Intel 28F640J5 Chips// -----------------------// Note:// After detecting the chip type at runtime we'll point this// at the specific array that pertains. (ie. at sect_info[]// or sect_info_B[] or ...)// -----------------------static sect_info_t *SectInfoTable;  // See note above.#ifdef TWO_16BIT_FLASH_CHIPS_INVOLVED_IN_EACH_32BIT_ACCESS// This block became necessary for supporting XIP downloads// on these style boards.static unsigned long *Cached_flash_addr;static unsigned short Cached_Short_valid;static unsigned short Cached_Short;#endif/****************************** Routine: Description:******************************/static void enable_read_mode(unsigned short *block_addr){#ifdef TWO_16BIT_FLASH_CHIPS_INVOLVED_IN_EACH_32BIT_ACCESS  #define READ_MODE_CODE 0x00ff00ff  unsigned long *addr;  addr = (unsigned long *)((unsigned long)block_addr&0xffffffc);  *addr = READ_MODE_CODE;#else  #define READ_MODE_CODE 0x00ff  *block_addr = READ_MODE_CODE;#endif}/****************************** Routine: Description:******************************/int read_device_codes(unsigned long *Code){  #define DEV_ID_CODE ((unsigned short)0x0090)  unsigned short regval;  unsigned short *block_addr = (unsigned short *)BSPCONF_FLASH_BASE;  *block_addr = DEV_ID_CODE;  regval = *block_addr;  *Code = (unsigned int)regval;  *Code = (unsigned int) (regval << 16);#ifdef TWO_16BIT_FLASH_CHIPS_INVOLVED_IN_EACH_32BIT_ACCESS  // Incrementing block_addr by one would take us  // into the second flash chip. Incrementing by two  // allows us to pick up the next 16bit value from  // the same chip we got the first 16bit value from.  regval = *(block_addr+2);#else    regval = *(block_addr+1);#endif  *Code = *Code | (regval);  enable_read_mode(block_addr);  return 1;}/****************************** Routine: Description: returns true if chip supports CFI.  array elements from CFI_START_ADDR to CFI_END_ADDR filled with CFI read array data. Returns false if chip doesn't support CFI.******************************/int read_cfi_array(unsigned short array[], int array_size){        return(0);}/****************************** Routine: Description: returns number of sectors if chip supports CFI.   sector_map contains size of each sector. Returns false if chip doesn't support CFI. WARNING: the generated sector may not be ordered correctly******************************/int build_sector_map(unsigned long sector_map[], int sector_map_size){        return(0);}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久久久久久久久久电影| 欧美日韩一级二级三级| 久久人人97超碰com| 国产一区不卡在线| 国产日韩精品一区| 99久久99久久精品免费看蜜桃| 日韩毛片在线免费观看| 一本高清dvd不卡在线观看| 亚洲综合色成人| 欧美乱妇23p| 国产一区二区在线影院| 国产精品电影一区二区三区| 91激情在线视频| 日本不卡一区二区三区高清视频| 精品少妇一区二区三区| 成人精品国产免费网站| 亚洲免费在线看| 日韩一区二区三区在线视频| 国产伦精品一区二区三区视频青涩| 欧美极品少妇xxxxⅹ高跟鞋| 色诱亚洲精品久久久久久| 日本网站在线观看一区二区三区 | 精品国产髙清在线看国产毛片| 久久精品国产免费| 国产精品对白交换视频| 欧美精品三级在线观看| 国产91综合一区在线观看| 亚洲一区二区在线免费看| 日韩欧美一二区| 99re成人精品视频| 日韩不卡在线观看日韩不卡视频| 久久精品一区二区三区四区| 欧美性xxxxxxxx| 国产精品中文欧美| 三级欧美在线一区| 欧美韩国日本综合| 91精品国产一区二区三区香蕉| 成人app在线观看| 青青草国产精品亚洲专区无| 国产精品久久久爽爽爽麻豆色哟哟| 91精品在线观看入口| 成人黄色在线网站| 七七婷婷婷婷精品国产| 亚洲欧洲精品一区二区三区不卡 | 精品一区二区三区视频| 一区二区三区四区不卡视频| 久久精品夜夜夜夜久久| 欧美日韩国产高清一区二区三区 | 日本一二三不卡| 日韩精品一区二区三区视频播放 | 激情久久久久久久久久久久久久久久| 亚洲男人的天堂在线aⅴ视频 | 国产精品久久久99| 欧美mv日韩mv亚洲| 91精品在线一区二区| 欧美在线不卡视频| 91视视频在线观看入口直接观看www | 91精品国产综合久久精品| 色综合天天视频在线观看| 国产精品一级二级三级| 精品中文av资源站在线观看| 亚洲一区二区精品久久av| 亚洲欧洲综合另类| 成人免费在线视频| 国产精品色婷婷久久58| 国产欧美1区2区3区| 久久精品人人做人人爽97 | 精品美女一区二区三区| 91精品国产一区二区三区| 欧美精品视频www在线观看| 精品婷婷伊人一区三区三| 欧美午夜精品久久久久久孕妇| 91丨九色丨尤物| 91视频xxxx| 色偷偷成人一区二区三区91| 欧美在线观看一区| 欧美日韩亚洲不卡| 欧美性高清videossexo| 欧美在线视频不卡| 欧美日韩在线综合| 欧美群妇大交群的观看方式 | 欧美亚州韩日在线看免费版国语版| av在线播放一区二区三区| 成人国产精品免费观看视频| 国产91精品免费| 成人黄色综合网站| 日本高清不卡在线观看| 在线观看日韩电影| 91精品国产品国语在线不卡| 日韩一级免费一区| 久久久久久久性| 国产精品午夜在线| 亚洲一区视频在线| 美脚の诱脚舐め脚责91| 国产一区二区在线看| 国产 日韩 欧美大片| 色综合久久综合网97色综合| 欧美日韩国产首页| www精品美女久久久tv| 国产精品传媒在线| 香蕉久久一区二区不卡无毒影院 | 国产午夜精品久久久久久免费视| 国产精品女上位| 午夜精品久久久久影视| 久久69国产一区二区蜜臀| 成人精品视频一区二区三区| 一本久道久久综合中文字幕| 这里只有精品99re| 国产欧美一区二区精品秋霞影院| 亚洲色图另类专区| 日韩av电影天堂| jlzzjlzz亚洲女人18| 欧美电影影音先锋| 亚洲国产岛国毛片在线| 日韩高清在线电影| 国产99久久久国产精品免费看 | 欧美一区二区三区视频| 国产亲近乱来精品视频| 亚洲国产aⅴ天堂久久| 国产精品 欧美精品| 欧美视频三区在线播放| 欧美韩日一区二区三区| 日韩在线卡一卡二| 成人ar影院免费观看视频| 欧美一区二区观看视频| 综合久久给合久久狠狠狠97色 | 国产成人精品一区二| 欧美少妇xxx| 国产欧美一区二区精品忘忧草| 国内不卡的二区三区中文字幕| 91一区二区三区在线观看| 精品国免费一区二区三区| 夜夜精品浪潮av一区二区三区| 久久成人羞羞网站| 欧美性一区二区| 国产精品免费看片| 久久99精品国产麻豆婷婷洗澡| 在线观看不卡一区| 亚洲天堂免费在线观看视频| 国内精品在线播放| 777奇米成人网| 亚洲国产视频一区二区| 91视频一区二区三区| 久久久国产精品麻豆| 久久电影国产免费久久电影| 欧美区在线观看| 亚洲一区二区三区影院| 成人国产精品免费观看动漫 | 在线综合+亚洲+欧美中文字幕| 亚洲欧洲国产日本综合| 国产乱码精品一区二区三区忘忧草 | 欧美国产一区视频在线观看| 麻豆久久久久久| 日韩亚洲欧美在线观看| 亚洲成人手机在线| 欧美在线观看一二区| 一区二区三区四区蜜桃| 一本大道久久a久久综合| 国产精品的网站| va亚洲va日韩不卡在线观看| 中文字幕免费不卡| 成人高清免费观看| 亚洲欧洲av在线| 99这里只有久久精品视频| 国产精品国产三级国产aⅴ中文 | 欧美性感一类影片在线播放| 亚洲日穴在线视频| 97se亚洲国产综合自在线| 国产精品麻豆99久久久久久| 成人av电影免费观看| ...中文天堂在线一区| aaa亚洲精品| 一区二区三区在线观看欧美| 欧美性色黄大片| 丝袜诱惑亚洲看片| 日韩欧美中文字幕制服| 精品在线视频一区| 久久久精品国产免费观看同学| 国产成人一级电影| 国产精品久久毛片| 91黄色在线观看| 日韩主播视频在线| 欧美精品一区在线观看| 国产精品亚洲专一区二区三区| 欧美激情一区不卡| 色欧美日韩亚洲| 调教+趴+乳夹+国产+精品| 日韩视频在线永久播放| 国产精品18久久久久久久久久久久| 中文字幕av一区 二区| 91污在线观看| 日本视频在线一区| 日本一区二区动态图| 欧美又粗又大又爽| 免费在线欧美视频| 欧美激情在线看| 欧美精品在线视频| 国产iv一区二区三区| 亚洲综合男人的天堂| 欧美不卡视频一区|