日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux内核访问外设I/O--动态映射(ioremap)和静态映射(map_desc)

發布時間:2023/12/10 linux 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux内核访问外设I/O--动态映射(ioremap)和静态映射(map_desc) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本篇文章主要介紹了"Linux內核訪問外設I/O--動態映射(ioremap)和靜態映射(map_desc)",主要涉及到Linux內核訪問外設I/O--動態映射(ioremap)和靜態映射(map_desc)方面的內容,對于Linux內核訪問外設I/O--動態映射(ioremap)和靜態映射(map_desc)感興趣的同學可以參考一下。

【轉】(轉)Linux內核訪問外設I/O資源的方式-靜態映射(map_desc)方式

Linux內核訪問外設I/O資源的方式
Author: Dongas
Date: 08-08-02
我們知道默認外設I/O資源是不在Linux內核空間中的(如sram或硬件接口寄存器等),若需要訪問該外設I/O資源,必須先將其地址映射到內核空間中來,然后才能在內核空間中訪問它。
Linux內核訪問外設I/O內存資源的方式有兩種:動態映射(ioremap)和靜態映射(map_desc)。
一、動態映射(ioremap)方式
動態映射方式是大家使用了比較多的,也比較簡單。即直接通過內核提供的ioremap函數動態創建一段外設I/O內存資源到內核虛擬地址的映射表,從而可以在內核空間中訪問這段I/O資源。
Ioremap宏定義在asm/io.h內:
#define ioremap(cookie,size)? ?? ?? ???__ioremap(cookie,size,0)
__ioremap函數原型為(arm/mm/ioremap.c):
void __iomem * __ioremap(unsigned long phys_addr, size_t size, unsigned long flags);
phys_addr:要映射的起始的IO地址
size:要映射的空間的大小
flags:要映射的IO空間和權限有關的標志
該函數返回映射后的內核虛擬地址(3G-4G). 接著便可以通過讀寫該返回的內核虛擬地址去訪問之這段I/O內存資源。
舉一個簡單的例子: (取自s3c2410的iis音頻驅動)
比如我們要訪問s3c2410平臺上的I2S寄存器, 查看datasheet 知道IIS物理地址為0x55000000,我們把它定義為宏S3C2410_PA_IIS,如下:
#define S3C2410_PA_IIS? ? (0x55000000)
若要在內核空間(iis驅動)中訪問這段I/O寄存器(IIS)資源需要先建立到內核地址空間的映射:
our_card->regs = ioremap(S3C2410_PA_IIS, 0x100);?
if (our_card->regs == NULL) {
? ?? ?? ?err = -ENXIO;
? ?? ?? ?goto exit_err;
}
創建好了之后,我們就可以通過readl(our_card->regs )或writel(value, our_card->regs)等IO接口函數去訪問它。
二、靜態映射(map_desc)方式
下面重點介紹靜態映射方式即通過map_desc結構體靜態創建I/O資源映射表。
內核提供了在系統啟動時通過map_desc結構體靜態創建I/O資源到內核地址空間的線性映射表(即page table)的方式,這種映射表是一種一一映射的關系。程序員可以自己定義該I/O內存資源映射后的虛擬地址。創建好了靜態映射表,在內核或驅動中訪問該I/O資源時則無需再進行ioreamp動態映射,可以直接通過映射后的I/O虛擬地址去訪問它。
下面詳細分析這種機制的原理并舉例說明如何通過這種靜態映射的方式訪問外設I/O內存資源。
內核提供了一個重要的結構體struct machine_desc ,這個結構體在內核移植中起到相當重要的作用,內核通過machine_desc結構體來控制系統體系架構相關部分的初始化。
machine_desc結構體的成員包含了體系架構相關部分的幾個最重要的初始化函數,包括map_io, init_irq, init_machine以及phys_io , timer成員等。
machine_desc結構體定義如下:
struct machine_desc {
? ? /*
? ???* Note! The first four elements are used
? ???* by assembler code in head-armv.S
? ???*/
? ? unsigned int? ?? ???nr;? ?? ???/* architecture number? ? */
? ? unsigned int? ?? ???phys_io;? ? /* start of physical io? ? */
? ? unsigned int? ?? ???io_pg_offst;? ? /* byte offset for io?
? ?? ?? ?? ?? ?? ?? ?? ? * page tabe entry? ? */
? ? const char? ?? ???*name;? ?? ???/* architecture name? ? */
? ? unsigned long? ?? ???boot_params;? ? /* tagged list? ?? ???*/
? ? unsigned int? ?? ???video_start;? ? /* start of video RAM? ? */
? ? unsigned int? ?? ???video_end;? ? /* end of video RAM? ? */
? ? unsigned int? ?? ???reserve_lp0 :1;? ? /* never has lp0? ? */
? ? unsigned int? ?? ???reserve_lp1 :1;? ? /* never has lp1? ? */
? ? unsigned int? ?? ???reserve_lp2 :1;? ? /* never has lp2? ? */
? ? unsigned int? ?? ???soft_reboot :1;? ? /* soft reboot? ?? ???*/
? ? void? ?? ?? ?? ?(*fixup)(struct machine_desc *,
? ?? ?? ?? ?? ?? ?? ?struct tag *, char **,
? ?? ?? ?? ?? ?? ?? ?struct meminfo *);
? ? void? ?? ?? ?? ?(*map_io)(void);/* IO mapping function? ? */
? ? void? ?? ?? ?? ?(*init_irq)(void);
? ? struct sys_timer? ? *timer;? ?? ???/* system tick timer? ? */
? ? void? ?? ?? ?? ?(*init_machine)(void);
};
這里的map_io成員即內核提供給用戶的創建外設I/O資源到內核虛擬地址靜態映射表的接口函數。Map_io成員函數會在系統初始化過程中被調用,流程如下:
Start_kernel -> setup_arch() --> paging_init() --> devicemaps_init()中被調用
Machine_desc結構體通過MACHINE_START宏來初始化。
注:MACHINE_START的使用及各個成員函數的調用過程請參考:
http://blog.chinaunix.net/u2/60011/showart_1010489.html
用戶可以在定義Machine_desc結構體時指定Map_io的接口函數,這里以s3c2410平臺為例。
s3c2410 machine_desc結構體定義如下:
/* arch/arm/mach-s3c2410/Mach-smdk2410.c */
MACHINE_START(SMDK2410, "SMDK2410") /* @TODO: request a new identifier and switch
? ?? ?? ?? ?? ???* to SMDK2410 */
? ? /* Maintainer: Jonas Dietsche */
? ? .phys_io? ? = S3C2410_PA_UART,
? ? .io_pg_offst? ? = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc,
? ? .boot_params? ? = S3C2410_SDRAM_PA + 0x100,
? ? .map_io? ?? ???= smdk2410_map_io,
? ? .init_irq? ? = s3c24xx_init_irq,
? ? .init_machine? ? = smdk2410_init,
? ? .timer? ?? ???= &s3c24xx_timer,
MACHINE_END
如上,map_io被初始化為smdk2410_map_io。smdk2410_map_io即我們自己定義的創建靜態I/O映射表的函數。在Porting內核到新開發板時,這個函數需要我們自己實現。
(注:這個函數通常情況下可以實現得很簡單,只要直接調用iotable_init創建映射表就行了,我們的板子內核就是。不過s3c2410平臺這個函數實現得稍微有點復雜,主要是因為它將要創建IO映射表的資源分為了三個部分(smdk2410_iodesc, s3c_iodesc以及s3c2410_iodesc)在不同階段分別創建。這里我們取其中一個部分進行分析,不影響對整個概念的理解。)
S3c2410平臺的smdk2410_map_io函數最終會調用到s3c2410_map_io函數。
流程如下:s3c2410_map_io -> s3c24xx_init_io -> s3c2410_map_io
下面分析一下s3c2410_map_io函數:
void __init s3c2410_map_io(struct map_desc *mach_desc, int mach_size)
{
? ? /* register our io-tables */
? ? iotable_init(s3c2410_iodesc, ARRAY_SIZE(s3c2410_iodesc));
? ? ……
}
iotable_init內核提供,定義如下:?
/*
* Create the architecture specific mappings
*/
void __init iotable_init(struct map_desc *io_desc, int nr)
{
? ? int i;
? ? for (i = 0; i??nr; i++)
? ?? ???create_mapping(io_desc + i);
}
由上知道,s3c2410_map_io最終調用iotable_init建立映射表。
iotable_init函數的參數有兩個:一個是map_desc類型的結構體,另一個是該結構體的數量nr。這里最關鍵的就是struct map_desc。map_desc結構體定義如下:
/* include/asm-arm/mach/map.h */
struct map_desc {
? ? unsigned long virtual;? ? /* 映射后的虛擬地址 */
? ? unsigned long pfn;? ?? ???/* I/O資源物理地址所在的頁幀號 */
? ? unsigned long length;? ? /* I/O資源長度 */
? ? unsigned int type;? ?? ???/* I/O資源類型 */
};
create_mapping函數就是通過map_desc提供的信息創建線性映射表的。
這樣的話我們就知道了創建I/O映射表的大致流程為:只要定義相應I/O資源的map_desc結構體,并將該結構體傳給iotable_init函數執行,就可以創建相應的I/O資源到內核虛擬地址空間的映射表了。
我們來看看s3c2410是怎么定義map_desc結構體的(即上面s3c2410_map_io函數內的s3c2410_iodesc)。
/* arch/arm/mach-s3c2410/s3c2410.c */
static struct map_desc s3c2410_iodesc[] __initdata = {
? ? IODESC_ENT(USBHOST),
? ? IODESC_ENT(CLKPWR),
? ? IODESC_ENT(LCD),
? ? IODESC_ENT(TIMER),
? ? IODESC_ENT(ADC),
? ? IODESC_ENT(WATCHDOG),
};
IODESC_ENT宏如下:
#define IODESC_ENT(x) { (unsigned long)S3C24XX_VA_##x, __phys_to_pfn(S3C24XX_PA_##x), S3C24XX_SZ_##x, MT_DEVICE }
展開后等價于:
static struct map_desc s3c2410_iodesc[] __initdata = {
? ? {
? ?? ???.virtual? ? =? ???(unsigned long)S3C24XX_VA_ LCD),
? ?? ???.pfn? ?? ???=? ???__phys_to_pfn(S3C24XX_PA_ LCD),
? ?? ???.length? ? =? ? S3C24XX_SZ_ LCD,
? ?? ???.type? ? =? ???MT_DEVICE
? ? },
? ? ……
};
S3C24XX_PA_ LCD和S3C24XX_VA_ LCD為定義在map.h內的LCD寄存器的物理地址和虛擬地址。在這里map_desc 結構體的virtual成員被初始化為S3C24XX_VA_ LCD,pfn成員值通過__phys_to_pfn內核函數計算,只需要傳遞給它該I/O資源的物理地址就行。Length為映射資源的大小。MT_DEVICE為I/O類型,通常定義為MT_DEVICE。
這里最重要的即virtual 成員的值S3C24XX_VA_ LCD,這個值即該I/O資源映射后的內核虛擬地址,創建映射表成功后,便可以在內核或驅動中直接通過該虛擬地址訪問這個I/O資源。
S3C24XX_VA_ LCD以及S3C24XX_PA_ LCD定義如下:
/* include/asm-arm/arch-s3c2410/map.h */
/* LCD controller */
#define S3C24XX_VA_LCD? ?? ?? ? S3C2410_ADDR(0x00600000)? ?//LCD映射后的虛擬地址
#define S3C2410_PA_LCD? ?? ?? ???(0x4D000000)? ? //LCD寄存器物理地址
#define S3C24XX_SZ_LCD? ?? ?? ???SZ_1M? ?? ???//LCD寄存器大小
S3C2410_ADDR 定義如下:
#define S3C2410_ADDR(x)? ?? ???((void __iomem *)0xF0000000 + (x))
這里就是一種線性偏移關系,即s3c2410創建的I/O靜態映射表會被映射到0xF0000000之后。(這個線性偏移值可以改,也可以你自己在virtual成員里手動定義一個值,只要不和其他IO資源映射地址沖突,但最好是在0XF0000000之后。)
(注:其實這里S3C2410_ADDR的線性偏移只是s3c2410平臺的一種做法,很多其他ARM平臺采用了通用的IO_ADDRESS宏來計算物理地址到虛擬地址之前的偏移。
IO_ADDRESS宏定義如下:
/* include/asm/arch-versatile/hardware.h */
/* macro to get at IO space when running virtually */
#define IO_ADDRESS(x)? ?? ?? ?? ?(((x) & 0x0fffffff) + (((x) >> 4) & 0x0f000000) + 0xf0000000) )
s3c2410_iodesc這個映射表建立成功后,我們在內核中便可以直接通過S3C24XX_VA_ LCD訪問LCD的寄存器資源。
如:S3c2410 lcd驅動的probe函數內
/* Stop the video and unset ENVID if set */
info->regs.lcdcon1 &= ~S3C2410_LCDCON1_ENVID;
lcdcon1 = readl(S3C2410_LCDCON1); //read映射后的寄存器虛擬地址
writel(lcdcon1 & ~S3C2410_LCDCON1_ENVID, S3C2410_LCDCON1); //write映射后的虛擬地址
S3C2410_LCDCON1寄存器地址為相對于S3C24XX_VA_LCD偏移的一個地址,定義如下:
/* include/asm/arch-s3c2410/regs-lcd.h */
#define S3C2410_LCDREG(x) ((x) + S3C24XX_VA_LCD)
/* LCD control registers */
#define S3C2410_LCDCON1? ?? ???S3C2410_LCDREG(0x00)
到此,我們知道了通過map_desc結構體創建I/O內存資源靜態映射表的原理了。總結一下發現其實過程很簡單,一通過定義map_desc結構體創建靜態映射表,二在內核中通過創建映射后虛擬地址訪問該IO資源。
三、I/O靜態映射方式應用實例
I/O靜態映射方式通常是用在寄存器資源的映射上,這樣在編寫內核代碼或驅動時就不需要再進行ioremap,直接使用映射后的內核虛擬地址訪問。同樣的IO資源只需要在內核初始化過程中映射一次,以后就可以一直使用。
寄存器資源映射的例子上面講原理時已經介紹得很清楚了,這里我舉一個SRAM的實例介紹如何應用這種I/O靜態映射方式。當然原理和操作過程同寄存器資源是一樣的,可以把SRAM看成是大號的I/O寄存器資源。
比如我的板子在0x30000000位置有一塊64KB大小的SRAM。我們現在需要通過靜態映射的方式去訪問該SRAM。我們要做的事內容包括修改kernel代碼,添加SRAM資源相應的map_desc結構,創建sram到內核地址空間的靜態映射表。寫一個Sram Module,在Sram Module 內直接通過靜態映射后的內核虛擬地址訪問該sram。
第一步:創建SRAM靜態映射表
在我板子的map_des結構體數組(xxx_io_desc)內添加SRAM資源相應的map_desc。如下:
static struct map_desc xxx_io_desc[] __initdata = {
? ? …………
? ? {
? ?? ???.virtual? ? = IO_ADDRESS(XXX _UART2_BASE),
? ?? ???.pfn? ?? ???= __phys_to_pfn(XXX _UART2_BASE),
? ?? ???.length? ?? ???= SZ_4K,
? ?? ???.type? ?? ???= MT_DEVICE
? ? },{
? ?? ???.virtual? ? = IO_ADDRESS(XXX_SRAM_BASE),
? ?? ???.pfn? ?? ???= __phys_to_pfn(XXX_SRAM_BASE),
? ?? ???.length? ?? ???= SZ_4K,
? ?? ???.type? ?? ???= MT_DEVICE
? ? },
};
宏XXX_SRAM_BASE為我板子上SRAM的物理地址,定義為0x30000000。我的kernel是通過IO_ADDRESS的方式計算內核虛擬地址的,這點和之前介紹的S3c2410有點不一樣。不過原理都是相同的,為一個線性偏移, 范圍在0xF0000000之后。
第二步:寫個SRAM Module,在Module中通過映射后的虛擬地址直接訪問該SRAM資源
SRAM Module代碼如下:
/* Sram Testing Module */
……
static void sram_test(void)
{
? ? void * sram_p;
? ? char str[] = "Hello,sram!\n";
? ??
? ? sram_p = (void *)IO_ADDRESS (XXX_SRAM_BASE); /* 通過IO_ADDRESS宏得到SRAM映射后的虛擬地址 */
? ? memcpy(sram_p, str, sizeof(str));? ? //將 str字符數組拷貝到sram內
? ? printk(sram_p);
? ? printk("\n");
}
static int __init sram_init(void)
{
? ? struct resource * ret;
? ??
? ? printk("Request SRAM mem region ............\n");
? ? ret = request_mem_region(SRAM_BASE, SRAM_SIZE, "SRAM Region");
? ??
? ? if (ret ==NULL) {
? ?? ???printk("Request SRAM mem region failed!\n");
? ?? ???return -1;
? ? }
? ??
? ? sram_test();
? ? return 0;
}
static void __exit sram_exit(void)
{
? ? release_mem_region(SRAM_BASE, SRAM_SIZE);? ??
? ??
? ? printk("Release SRAM mem region success!\n");
? ? printk("SRAM is closed\n");
}
module_init(sram_init);
module_exit(sram_exit);
在開發板上運行結果如下:
/ # insmod bin/sram.ko?
Request SRAM mem region ............
Hello,sram!? ?? ?ß 這句即打印的SRAM內的字符串
/ # rmmod sram
Release SRAM mem region success!
SRAM is close
實驗發現可以通過映射后的地址正常訪問SRAM。
最后,這里舉SRAM作為例子的還有一個原因是通過靜態映射方式訪問SRAM的話,我們可以預先知道SRAM映射后的內核虛擬地址(通過IOADDRESS計算)。這樣的話就可以嘗試在SRAM上做點文章。比如寫個內存分配的MODULE管理SRAM或者其他方式,將一些critical的數據放在SRAM內運行,這樣可以提高一些復雜程序的運行效率(SRAM速度比SDRAM快多了),比如音視頻的編解碼過程中用到的較大的buffer等。

總結

以上是生活随笔為你收集整理的Linux内核访问外设I/O--动态映射(ioremap)和静态映射(map_desc)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

亚洲激情婷婷 | 青青河边草免费直播 | 日韩欧美在线影院 | 久久影视精品 | 日韩在线精品一区 | 激情婷婷六月 | av一区在线播放 | 久草免费在线观看 | 久久99精品国产一区二区三区 | 亚洲一二视频 | 伊人久久精品久久亚洲一区 | 亚洲一区免费在线 | 久久黄色免费观看 | 亚洲少妇影院 | 国产免费视频在线 | 99热高清| 天天色天天艹 | 在线观看mv的中文字幕网站 | 精品在线视频播放 | 99国内精品 | 国产96av| 丁香激情综合国产 | 久久草在线视频国产 | 精品国产乱子伦一区二区 | 国产亚洲视频在线观看 | 国产精品久久久久久69 | 黄色精品一区二区 | 视频直播国产精品 | 色视频在线| 国产精品99久久免费观看 | 91色影院 | 特级黄录像视频 | 国产视频在线播放 | 99中文字幕 | 97在线看| 免费亚洲黄色 | 久久精品99国产精品亚洲最刺激 | 美女在线免费观看视频 | 99在线免费视频观看 | 成人高清在线 | 一区二区亚洲精品 | 在线观看va| 在线播放一区二区三区 | 日韩中文字幕免费视频 | 日韩三级视频在线看 | 国产成人亚洲在线电影 | 久久国产高清视频 | 精品一区二区三区久久 | 免费在线国产精品 | 亚洲全部视频 | 五月天激情视频在线观看 | 亚洲自拍偷拍色图 | 免费av福利| 香蕉影视在线观看 | 五月婷婷,六月丁香 | 在线探花| 亚洲91视频 | 美女视频久久 | 久久精品99国产精品日本 | 日韩超碰在线 | 国产精品福利在线播放 | 亚洲成免费 | 亚洲欧洲久久久 | 中文字幕二区三区 | 久久久午夜精品理论片中文字幕 | 婷婷激情综合网 | 欧美日韩国产精品一区 | 超碰在线1| 中文字幕欧美激情 | 亚洲视频资源在线 | 在线免费黄网站 | 欧美日韩国产在线精品 | 国产精品com | 国产精品18久久久久久首页狼 | 国产精品一区二区av麻豆 | 日韩在线观看网址 | 91毛片视频 | 色成人亚洲 | 91网站观看 | 日韩精品一区在线播放 | 成人午夜精品 | 五月天中文在线 | 日韩精品久久久久久久电影竹菊 | 日韩激情在线 | 国产一级在线看 | 日韩免费电影在线观看 | 成人电影毛片 | 成人黄色国产 | 超碰97中文 | 激情五月看片 | 日本资源中文字幕在线 | 欧美性黑人 | 国产免费一区二区三区最新6 | 激情欧美日韩一区二区 | 精品一区二区电影 | 在线91网| 国模一二三区 | 国产精品亚洲人在线观看 | 日韩精品免费一区二区三区 | 国产精品福利在线 | 欧美怡红院 | 在线看片成人 | 97超碰总站| 中文字幕在线播放视频 | 精精国产xxxx视频在线播放 | 91一区啪爱嗯打偷拍欧美 | 亚洲高清免费在线 | 国产精品手机在线 | 国产91精品在线播放 | 亚洲精品国偷自产在线99热 | 国内精品久久天天躁人人爽 | 嫩小bbbb摸bbb摸bbb | 2019中文最近的2019中文在线 | 夜夜看av | 国产专区视频在线 | 美女网站一区 | 91精品老司机久久一区啪 | 成人毛片a| 亚洲国产99| 国产在线精品二区 | 涩av在线| 亚洲天天做 | 精品在线视频一区二区三区 | 日韩中文字幕亚洲一区二区va在线 | 国产精品久久片 | 蜜臀av性久久久久蜜臀aⅴ四虎 | 亚洲免费av观看 | 97精品伊人 | 日韩高清久久 | 久久一区二 | 精品免费国产一区二区三区四区 | 黄色av在 | 美女视频久久久 | 欧美91片| 国产黄色高清 | av福利超碰网站 | 国产精品久久久一区二区三区网站 | 国产999在线观看 | 97精品超碰一区二区三区 | 婷婷激情在线观看 | a久久免费视频 | 久久少妇免费视频 | 中文字幕影视 | 亚洲狠狠操 | 日韩在线播放av | 久久这里有精品 | 六月丁香综合网 | 五月天综合网站 | 精品久久精品久久 | 麻豆网站免费观看 | 丰满少妇在线观看网站 | 日韩美在线观看 | 91探花在线视频 | 久草资源在线观看 | 日韩精品久久久久久 | 人人干免费| 丰满少妇高潮在线观看 | 激情视频一区 | 国产女人40精品一区毛片视频 | 色吊丝av中文字幕 | 久久综合九色综合97_ 久久久 | 国产xx视频 | 99久久国产免费免费 | 综合色亚洲 | 最新婷婷色| 免费网站在线观看人 | 亚洲三级视频 | 久久久99精品免费观看app | 精品视频国产 | 国产伦精品一区二区三区四区视频 | 久久dvd| 亚洲精品动漫在线 | 天天射网站| 99精品乱码国产在线观看 | 丁香五月亚洲综合在线 | 亚洲精品av中文字幕在线在线 | 国产一线二线三线在线观看 | 中文字幕欧美日韩va免费视频 | 国产成人av福利 | 九九在线精品视频 | 在线一区av| 免费av免费观看 | 五月开心婷婷 | 亚洲黄色一级大片 | 狠狠操狠狠干2017 | 国产一区自拍视频 | av千婊在线免费观看 | 五月天婷亚洲天综合网精品偷 | 五月花丁香婷婷 | 免费看黄电影 | 一区二区三区在线观看中文字幕 | 免费看一级片 | 免费的黄色av | 丁香婷婷在线观看 | 日本精品久久 | 最新av网站在线观看 | 看黄色.com| www.久艹 | 久久婷婷国产 | 丁香婷婷色| 精品国产一区二区三区久久久蜜月 | 国产视频一区在线播放 | 成人一区二区在线观看 | 国产九色视频在线观看 | 91爱爱免费观看 | 亚洲视频大全 | 成人黄色大片 | 99精品黄色片免费大全 | 国产成人专区 | 久久99国产精品久久99 | 伊人久久影视 | 欧美久久久久久久久久久久 | 日韩欧美在线视频一区二区 | 国产手机视频 | 99色| 成人在线视频论坛 | 日日夜夜操av| 日韩精品一区二区三区在线视频 | 精品999在线观看 | 蜜臀一区二区三区精品免费视频 | 99精品久久久久久久 | 国产成人黄色片 | 国产高清绿奴videos | 五月婷婷综 | 欧美色精品天天在线观看视频 | 99精品一区 | 久青草视频| 成年人黄色在线观看 | 日韩免费在线观看视频 | 日韩av资源在线观看 | 中文字幕 在线 一 二 | 日本精品久久久久影院 | 99九九视频 | 天海翼一区二区三区免费 | 久久国内免费视频 | 免费av成人在线 | 成人av电影在线观看 | 国产精品一区二区三区久久 | 色婷婷成人网 | 国色天香av | 国产女人40精品一区毛片视频 | 99精彩视频在线观看免费 | 三级黄色理论片 | 人人舔人人爽 | 欧美日韩3p | 91九色精品女同系列 | 亚洲国产网址 | 久久成人人人人精品欧 | 一区二区三区在线看 | 成年人网站免费在线观看 | 99久久这里有精品 | 99亚洲国产| 亚洲精品在线网站 | 日本精品中文字幕 | 国产一区在线看 | av资源中文字幕 | 手机色站 | 亚洲综合五月天 | 欧美日韩大片在线观看 | 国产裸体无遮挡 | 91中文字幕在线视频 | 五月黄色 | 精品久久一区二区三区 | 国产亚洲精品无 | 中文乱码视频在线观看 | 91免费国产在线观看 | 日韩免费一级a毛片在线播放一级 | 91视频3p | 中文字幕av免费在线观看 | 欧美精品在线免费 | 这里只有精彩视频 | 免费 在线 中文 日本 | 2019天天干天天色 | 亚洲视频高清 | 国产黄色理论片 | 国产aa精品 | 免费中文字幕 | 国产精品精品久久久 | 日韩国产欧美在线视频 | 狠狠干激情 | 欧美性大战 | 91成人免费在线视频 | www黄色软件 | av中文在线观看 | 美女网站视频久久 | 蜜臀aⅴ精品一区二区三区 久久视屏网 | 欧美日韩精品在线一区二区 | 久久综合色一综合色88 | 日本中文字幕在线播放 | 欧美一级久久久久 | 四虎在线视频免费观看 | 亚洲黄色免费网站 | 天天射天天射天天射 | 欧美日韩精品在线观看视频 | av丁香花 | 超碰97久久| 在线观看激情av | 欧美日韩国产亚洲乱码字幕 | 久久久久久久毛片 | 亚洲国产精品影院 | 黄色资源在线观看 | 国产小视频在线免费观看视频 | 国产视频美女 | 韩日av一区二区 | 国产综合视频在线观看 | 91精品国自产拍天天拍 | 91亚洲精品视频 | 久久久久久久久久网 | 精品在线视频播放 | 91女神的呻吟细腰翘臀美女 | 99久久99久久精品免费 | 欧美va天堂va视频va在线 | 国产精品亚洲片在线播放 | 五月黄色 | 久草电影免费在线观看 | 国内免费久久久久久久久久久 | 一本一道久久a久久精品蜜桃 | 日韩在线网| 手机成人在线电影 | avav99| 色婷婷亚洲综合 | 韩国精品福利一区二区三区 | 香蕉视频色| 国产在线观看午夜 | 成人av免费播放 | 99精品国产99久久久久久福利 | 黄色特一级 | 91久久一区二区 | 久久久www免费电影网 | 亚洲码国产日韩欧美高潮在线播放 | 久久亚洲专区 | 免费看的黄色 | 处女av在线| 五月天伊人网 | 久草影视在线观看 | 在线免费观看av网站 | 黄色精品久久久 | 欧美视频www | 精品久久1 | 色av男人的天堂免费在线 | 高清在线观看av | 一区二区三区免费播放 | 国产一区二区在线视频观看 | 美女一级毛片视频 | 狠狠色丁香婷婷综合欧美 | 久久无码av一区二区三区电影网 | 久久综合毛片 | 五月天久久综合网 | 91视频免费看网站 | 国产精品去看片 | 久久国产电影 | 超碰在线色| 黄色免费观看网址 | 日本久热| 色在线亚洲 | 国产又粗又长又硬免费视频 | 欧美最新另类人妖 | 免费黄色网址网站 | 日本视频不卡 | 久久精彩免费视频 | 亚洲经典视频 | 天天操天天操天天操天天操天天操天天操 | 日韩精品视频在线观看免费 | 国产在线一区二区三区播放 | 右手影院亚洲欧美 | av免费成人| 成年在线观看 | 最新久久久| 精品免费久久 | 在线观看一级视频 | 色婷婷97 | 五月天综合 | 六月丁香婷婷久久 | 精品在线观看视频 | 成人羞羞免费 | 久久久久激情电影 | 中文字幕久久精品一区 | 91成人黄色 | 久久精品2| av 一区二区三区四区 | 欧美日韩高清一区二区 | 在线视频免费观看 | 九九热在线精品视频 | 国产视频中文字幕 | 中文字幕精品一区 | 91中文视频 | 一区二区不卡高清 | 欧美一级片免费观看 | 日韩成年视频 | 亚洲精品美女在线 | 国产成人精品国内自产拍免费看 | 韩国精品视频在线观看 | 中文成人字幕 | 欧美在线视频一区二区三区 | 激情黄色av | 天堂va在线高清一区 | 狠狠五月婷婷 | 婷婷色社区 | 日韩亚洲国产精品 | 人人插超碰 | 日韩在线观看的 | 2017狠狠干| 亚洲日韩欧美视频 | 伊人电影天堂 | 欧美成人91 | 中文字幕在线专区 | 久久久久久美女 | 最新国产在线视频 | 91九色成人 | 亚洲黄色区 | 日韩欧美精品在线观看 | 波多野结衣视频一区 | 色99之美女主播在线视频 | 国产免费亚洲 | 国产成人久久77777精品 | 91精品一区二区在线观看 | 天天在线视频色 | 久久精品一区二区国产 | 久久久久免费精品 | 成人av在线直播 | a级一a一级在线观看 | 天天爱天天干天天爽 | 国产又粗又硬又爽视频 | 一区二区精品国产 | 亚洲激情综合 | 亚洲国产一区在线观看 | 国产va饥渴难耐女保洁员在线观看 | 国产精品日韩欧美一区二区 | 亚洲黄色免费网站 | 高清美女视频 | 国产黄色片一级三级 | 黄色在线免费观看网址 | 色吧av色av | 免费看的黄色录像 | 亚洲综合情 | 精品国产亚洲一区二区麻豆 | 亚洲国产成人在线 | 日韩电影在线观看一区二区 | 午夜三级理论 | 日韩精品一区不卡 | 99 精品 在线 | 狠狠操狠狠干天天操 | 天天操天天干天天 | 欧美日韩啪啪 | 天堂入口网站 | 人人插人人草 | 中文字幕免费观看全部电影 | 国产精品18久久久久久久久 | 午夜狠狠干 | 日韩精品久久久 | 99精品在线免费在线观看 | 久草www| 国产成人精品av | 91精品国产高清 | 日韩免费视频播放 | 日韩有码在线观看视频 | 国产精品短视频 | 99精品久久久久久久久久综合 | 一区二区激情 | 丝袜美腿在线播放 | a特级毛片 | 久久精品这里热有精品 | 波多野结衣小视频 | 国产精品久久久久久久婷婷 | 亚洲欧洲中文日韩久久av乱码 | 日韩理论片 | av免费网页 | 成人免费视频播放 | 亚洲精品美女久久久久 | 欧美性猛片, | 久久久av电影 | 国产一区二区在线免费播放 | 国产精品一级视频 | 91香蕉视频黄 | 欧美精品久久久 | 日韩在线观看电影 | 伊人亚洲综合网 | 国产日韩精品一区二区在线观看播放 | 国产日韩精品久久 | 国产精品日韩欧美一区二区 | 热久久最新地址 | 久99久在线视频 | 最新日韩在线观看视频 | av综合网址 | 久久五月婷婷丁香社区 | 国产人成一区二区三区影院 | 国产99自拍 | 中文字幕日韩精品有码视频 | 国产一区二区久久久久 | 一级α片免费看 | 色综合久久88 | 亚洲精品国产精品国 | 免费观看不卡av | 日韩电影一区二区三区 | 在线观看自拍 | 91在线视频播放 | 国产成人av综合色 | 2024国产精品视频 | 成人免费视频观看 | 99精品国产福利在线观看免费 | 久草在线最新视频 | 国产成人精品一区二区在线 | 有码中文字幕在线观看 | 色噜噜在线观看视频 | 婷婷丁香激情网 | 日日干天天射 | 色夜视频 | 亚洲视频在线播放 | 91九色最新地址 | 中文字幕91 | 日韩1页| 日韩免费观看高清 | 欧美日高清视频 | 日韩精品最新在线观看 | 美女久久久久久久久久久 | 国产精品欧美久久久久三级 | 波多野结衣在线中文字幕 | 精品国产一二三 | 国产一级免费播放 | 97视频在线免费观看 | 四虎在线观看网址 | 精品色999 | 婷婷播播网| 97超碰色| 日韩av成人| 日韩精品视频在线观看网址 | 久久国产精品色婷婷 | 丰满少妇高潮在线观看 | 亚洲激情影院 | 日韩xxxbbb | 国产一区二区中文字幕 | 亚洲国产精彩中文乱码av | 亚洲精品国产精品国自产在线 | www.精选视频.com | 欧美日韩久久不卡 | 久久99免费观看 | 成 人 黄 色 视频 免费观看 | 国产精品自产拍 | 人人天天夜夜 | 欧洲一区二区在线观看 | a色网站 | 天天色宗合| 国产在线看 | 男女全黄一级一级高潮免费看 | 成人午夜在线电影 | a视频免费看 | 狠狠色丁香婷婷综合橹88 | 伊人久久婷婷 | 黄色网址中文字幕 | 黄色亚洲 | 国产视频在| 黄色美女免费网站 | av网站在线免费观看 | 在线免费91 | 国产精品久久久久久久久久尿 | 国产97在线看 | 综合色中色 | 五月天免费网站 | 在线成人一区二区 | 日本久久久亚洲精品 | 免费观看久久久 | 免费观看一区二区三区视频 | 成人影片在线播放 | 免费av高清 | 99re中文字幕 | 91丨九色丨国产在线观看 | 久久婷婷精品视频 | 人人搞人人干 | 欧美伦理电影一区二区 | 国产999精品久久久影片官网 | 激情网第四色 | 日本三级香港三级人妇99 | 国产精品中文久久久久久久 | 99久久国产免费免费 | 久久精品免视看 | 国内外成人免费在线视频 | 热久久在线视频 | 国产小视频福利在线 | 久久乱码卡一卡2卡三卡四 五月婷婷久 | 亚洲成人精品国产 | 日韩中文在线观看 | 99在线精品视频观看 | 婷婷视频 | 欧美日本高清视频 | 91传媒视频在线观看 | 国产精品久久久久av免费 | 久久久福利影院 | 日韩精品久久一区二区 | 三级动图 | 91精品网站在线观看 | 色com网 | 久久99久久99精品免观看粉嫩 | 国产精品久久中文字幕 | 黄色大片日本免费大片 | 成人免费视频视频在线观看 免费 | 日韩在线播放欧美字幕 | 99精品免费视频 | 久久久久伊人 | 日韩欧三级| 有码中文字幕 | 大胆欧美gogo免费视频一二区 | 蜜臀久久99精品久久久无需会员 | www.xxxx变态.com | 日本九九视频 | 91麻豆视频| 久久人人爽爽人人爽人人片av | 亚洲成人黄色av | 日韩伦理片hd | 精品国产一区二区三区久久久蜜月 | 亚洲精品乱码久久久久久按摩 | 亚洲午夜精品久久久久久久久久久久 | 色小说在线 | 91丨九色丨丝袜 | 国产精品黄色影片导航在线观看 | 韩日精品视频 | 久久久久久久久久国产精品 | 一区二区三区观看 | 日韩电影在线观看一区 | 久久久久免费精品视频 | 欧美一区二区在线刺激视频 | 日本性生活免费看 | 69av国产 | 亚洲乱码久久 | 91热爆在线观看 | av一本久道久久波多野结衣 | 视色网站 | 国产在线a视频 | 天天色综合三 | 免费观看mv大片高清 | 日韩久久久久久久久 | www.狠狠插.com | 免费看黄色91 | 久草视频在 | 天天插天天爱 | 久久久久高清毛片一级 | 在线国产中文字幕 | 91网站在线视频 | 久久久精品在线观看 | 久久激情小说 | 亚洲欧洲精品视频 | 免费a网站| 91精品国产高清自在线观看 | 在线观看久久 | 欧美精品久久久久久 | 国产字幕在线播放 | 91视频免费 | 天天插天天色 | 日韩三级不卡 | 欧美大片第1页 | 久久久91精品国产一区二区精品 | 日韩一级成人av | 欧美日韩不卡一区 | 中文字幕视频观看 | 免费下载高清毛片 | 福利一区在线视频 | 黄色网址国产 | 中文字幕 欧美性 | 国产精品一区久久久久 | 一区二区精品视频 | 欧美高清视频不卡网 | 激情视频二区 | 91看片在线| 黄色性av | 色黄视频免费观看 | 亚洲电影免费 | 中文字幕一区2区3区 | 国产一区在线视频 | 中文字幕在线观看不卡 | 国产99亚洲 | 日韩理论在线 | www天天干| 免费中文字幕视频 | 精品一区二区免费视频 | 免费高清在线一区 | 人人干在线| 中文字幕在线观看1 | 国产香蕉97碰碰久久人人 | 夜色资源网 | 日韩视频一区二区 | 国产最新91| 夜夜爱av| 久久精品国产亚洲精品2020 | 亚洲黄色区| 三级视频日韩 | 又黄又爽的视频在线观看网站 | 日日干美女| 在线亚洲欧美视频 | 国产视频 久久久 | 在线不卡中文字幕播放 | www.伊人网| 欧美日韩国产一二三区 | 91豆麻精品91久久久久久 | 天天干,天天操 | 免费99| 欧美日韩中文视频 | 9在线观看免费高清完整版 玖玖爱免费视频 | 欧美激情视频在线观看免费 | 欧美精品黑人性xxxx | 91x色 | 欧美精品一区二区蜜臀亚洲 | 国产亚洲精品成人av久久影院 | 视频成人永久免费视频 | 中文字幕之中文字幕 | 99久久精品国产一区 | 国产美女在线精品免费观看 | 国产精品a级 | 日韩三级视频在线观看 | 久久激情综合网 | 日韩欧美一区二区三区在线观看 | av3级在线 | 在线观看色视频 | 在线观看精品国产 | 一区二区在线电影 | 久久久久久免费视频 | www.久久久久 | 99精品欧美一区二区三区黑人哦 | 狠狠操狠狠干天天操 | 伊人五月婷| 成片免费观看视频大全 | 99精品视频网 | 日韩精品一区二区在线观看 | 国产视频中文字幕在线观看 | 日韩精品一卡 | 日韩视频在线观看视频 | 亚洲一区二区麻豆 | 中文字幕视频在线播放 | 成人av亚洲 | 一区二区欧美日韩 | 久久高清精品 | 中文字幕免费高清在线观看 | 在线观看精品黄av片免费 | 91久色蝌蚪 | 人人插人人插 | 亚洲精品在线播放视频 | 亚洲一区 av | 久久久久电影 | 国产手机免费视频 | 人人爽人人爱 | 天天操天天玩 | 久久精品久久99 | 国产中出在线观看 | 91禁在线看 | 午夜av激情 | 国产中文字幕国产 | 国产精品福利在线播放 | 亚洲男男gaygay无套 | 亚洲色视频 | 2023亚洲精品国偷拍自产在线 | 久爱精品在线 | 日韩中文字幕在线不卡 | 最新久久免费视频 | 国产福利不卡视频 | 99久高清在线观看视频99精品热在线观看视频 | 1000部国产精品成人观看 | 国产精品美女久久久免费 | 国产亚洲精品精品精品 | 99这里只有久久精品视频 | 青青草国产精品 | 免费看高清毛片 | 97夜夜澡人人爽人人免费 | 色.com| 久久人人爽人人爽人人 | 欧美久久久久 | 中文字幕在线播放一区 | 91视频免费观看 | 国产一区在线不卡 | 91在线视频在线 | 99精品久久久久久久久久综合 | 成人精品视频 | 日韩av一区二区三区在线观看 | 成人黄色大片网站 | 99热这里是精品 | 国产在线不卡一区 | 日日夜夜免费精品 | 成年人在线免费视频观看 | 在线视频婷婷 | 欧美动漫一区二区三区 | 久久精品国产亚洲 | 天天干天天操天天射 | 婷婷六月在线 | 久久久久久久久久久国产精品 | 国产精品综合av一区二区国产馆 | 欧美一二三区在线播放 | 国产在线观看午夜 | 婷婷六月天在线 | 久草视频资源 | 日本中文字幕网 | 久久久久久久久久久网站 | 欧美一区二区在线刺激视频 | 日韩免费福利 | 久久精品久久精品久久精品 | 激情伊人 | 久草视频首页 | 欧美婷婷色 | 日本久久免费视频 | 精品999在线| 超碰在线cao | 国产一区在线看 | 在线观看av的网站 | 激情久久久| 国产一级片久久 | 日韩在线一区二区免费 | 日韩不卡高清视频 | 亚洲欧美视频网站 | 91视频这里只有精品 | 国产第一福利 | 亚洲精品一区二区三区新线路 | 日韩成人av在线 | 麻豆免费视频网站 | 久久精品综合一区 | www色com| 伊人婷婷色 | 公开超碰在线 | 91精品国产自产在线观看 | 久久久久久久网站 | 亚洲成 人精品 | 日韩电影在线一区 | 一区在线观看视频 | 国产做aⅴ在线视频播放 | 69国产在线观看 | 大胆欧美gogo免费视频一二区 | 黄色一级在线视频 | 在线一二三四区 | 在线视频观看你懂的 | 91禁在线看| 亚洲精品a区 | 亚洲日本在线视频观看 | 中文字幕刺激在线 | 欧美激情视频一区 | 最近中文字幕视频完整版 | 国产最新福利 | 91av网址| 麻豆传媒视频在线免费观看 | 久久免费精品国产 | 天天操天天色天天射 | 久久字幕| 91精品久久久久久久91蜜桃 | 狠狠色狠狠色综合日日92 | 欧美一区二区免费在线观看 | 99福利影院| 日韩精品1区2区 | 国产视频一区二区在线播放 | 五月天亚洲综合 | 激情在线免费视频 | 欧美成人性战久久 | 免费在线激情电影 | 国产又粗又长的视频 | 日韩欧美精选 | 99在线视频播放 | 久久婷婷影视 | 国产视频一二三 | 国产精品av免费 | 成人久久精品视频 | 亚洲 欧洲 国产 日本 综合 | 久久精品伊人 | 成人av免费播放 | 国产成人av网址 | 国产 成人 久久 | 亚洲精品三级 | 日韩在线观看你懂得 | 99久久99久国产黄毛片 | 精品久久国产精品 | 黄色小说在线免费观看 | 国产一级电影网 | 中文字幕在线观看av | www成人精品| 欧美精品亚州精品 | 天天搞天天干天天色 | 欧美视频在线观看免费网址 | 国产91免费在线 | 久久午夜精品影院一区 | 狠狠躁夜夜a产精品视频 | 中文字幕一区二区在线观看 | 日韩欧美精品免费 | 美女av免费看 | 999久久国精品免费观看网站 | 日韩电影一区二区在线 | 91爱爱视频 | 亚洲精品乱码久久久久久蜜桃不爽 | 99理论片| 久操操| 日韩av视屏在线观看 | 成年人免费电影 | 九九日九九操 | 欧美日韩一区三区 | 日韩在线观看视频在线 | 在线视频99 | 精品亚洲欧美无人区乱码 | 久久96| 午夜三级理论 | 亚洲专区中文字幕 | 手机看片中文字幕 | 国产伦精品一区二区三区在线 | 91香蕉视频污在线 | 久久黄色影视 | 亚洲精品a区 | 国产精品久久久久影视 | 国产尤物一区二区三区 | 免费看的视频 | 99自拍视频在线观看 | 成人在线网站观看 | 在线网站黄 | 五月婷婷在线视频观看 | 免费观看全黄做爰大片国产 | 精品久久久久久综合日本 | 91在线小视频 | 久久久久一区二区三区四区 | 五月天婷婷在线观看视频 | 国产日韩精品一区二区 | 欧美激情va永久在线播放 | av在线收看 | 黄色小说在线免费观看 | 国产不卡精品 | 免费合欢视频成人app | 久久久免费在线观看 | 97电影在线看视频 | 99久e精品热线免费 99国产精品久久久久久久久久 | 一区二区免费不卡在线 | 欧美精品午夜 | 日韩免费一区二区三区 | 色综合久久88 | 99精品免费久久久久久久久 | 国产69精品久久久久久久久久 | 最近中文字幕在线中文高清版 | 99性视频 | 精品91| 亚洲精选在线观看 | 中文在线免费一区三区 | 九九九九热精品免费视频点播观看 | 色婷婷福利 | 狠狠狠操 | 日韩午夜大片 | 中文字幕免费在线看 | 久久久久久久久国产 | 国产精品99视频 | 在线黄色国产电影 | 成人免费网视频 | 午夜精品久久久久久久久久久久 | 91亚洲在线 | 人人干人人上 | 超碰人人草 | 香蕉日日| 我爱av激情网 | 久草免费电影 | 午夜精品视频免费在线观看 | 亚洲一级二级三级 | 2018亚洲男人天堂 | 国产 欧美 日产久久 | 亚洲午夜久久久久久久久电影网 | 久久久久免费精品视频 | 国产资源av | 91精品啪在线观看国产线免费 | 天天天天色综合 | 欧美激情视频一区二区三区免费 | 欧美激情综合五月 | 少妇视频在线播放 | 三级黄色理论片 | 亚洲精品高清视频在线观看 | 国产丝袜美腿在线 | 欧美黄色特级片 | 一区二区三区不卡在线 | 91 中文字幕| 五月开心色 | 天天伊人网 | 涩涩色亚洲一区 | 欧美精品一区二区蜜臀亚洲 | 国模视频一区二区三区 | www.99在线观看 | 午夜精品福利一区二区 | 黄色免费大片 | 在线观看免费黄色 | 亚洲免费av一区二区 | 国产资源精品 | 久久人人爽人人片 | 在线观看黄网站 | 国产精品免费在线视频 | 99久久精品免费看国产免费软件 | 99re中文字幕| 国产一级一片免费播放放a 一区二区三区国产欧美 | 亚洲五月婷婷 | 手机av片| 天天想夜夜操 | 香蕉一区| 国产精品久久久久三级 | 日韩精品中文字幕一区二区 | 有码视频在线观看 | 精品国产成人av在线免 | 国产91亚洲精品 | 69精品视频在线观看 | 国产1区在线 | 在线观看av免费 | 欧美成人黄色 | 美女网站视频免费都是黄 | 99婷婷狠狠成为人免费视频 | 99久久99久久免费精品蜜臀 | 久久精品aaa | 欧美一区二区日韩一区二区 | 国产高清永久免费 |