精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

鴻蒙輕內核A核源碼分析系列之虛實映射(1)基礎概念

開發 前端
虛實映射其實就是一個建立頁表的過程。MMU支持多級頁表,LiteOS-A內核采用二級頁表描述進程空間。首先介紹下一級頁表和二級頁表。

[[437938]]

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

虛實映射是指系統通過內存管理單元(Memory Management Unit,MMU)將進程空間的虛擬地址(VA)與實際的物理地址(PA)做映射,并指定相應的訪問權限、緩存屬性等。程序執行時,CPU訪問的是虛擬內存,通過MMU找到映射的物理內存,并做相應的代碼執行或數據讀寫操作。MMU的映射由頁表(Page Table)來描述,頁表保存虛擬地址和物理地址的映射關系以及訪問權限等。每個進程在創建的時候都會創建一個頁表,頁表由一個個頁表條目(Page Table Entry, PTE)構成,每個頁表條目描述虛擬地址區間與物理地址區間的映射關系。頁表數據在內存區域存儲位置的開始地址叫做轉換表基地址/頁表基地址(Translation Table Base,TTB)。MMU中有一塊頁表緩存,稱為快表(Translation Lookaside Buffers, TLB),它緩存最近查找過的VA對應的頁表項。做地址轉換時,MMU首先在TLB中查找,如果找到對應的頁表項,則可直接進行轉換,否則就要去物理內存中讀取頁表項。TLB緩存可以減少訪問物理內存的次數,提升查詢效率。

本文中所涉及的源碼,以OpenHarmony LiteOS-A內核為例,均可以在開源站點https://gitee.com/openharmony/kernel_liteos_a 獲取。如果涉及開發板,則默認以hispark_taurus為例。MMU相關的操作函數主要在文件arch/arm/arm/src/los_arch_mmu.c中定義。

虛實映射其實就是一個建立頁表的過程。MMU支持多級頁表,LiteOS-A內核采用二級頁表描述進程空間。首先介紹下一級頁表和二級頁表。

1、一級頁表L1和二級頁表L2

1.1 頁表項基礎概念

L1頁表將全部的4GiB虛擬內存地址空間劃分為4096份,每份大小1MiB。每份對應一個32位的頁表項,內容是L2頁表基地址TTB或某個1MiB大小的物理內存的地址。其中高12位記錄頁號,用于對頁表項定位,也就是4096個頁表項的索引;低20位記錄頁內偏移值,虛實地址頁內偏移值相等。使用虛擬地址中的虛擬頁號查詢頁表得到對應的物理頁號,然后與虛擬地址中的頁內位移組成物理地址。每個L1頁表項將1MiB的虛擬內存地址轉換為物理地址。如下圖所示:

鴻蒙輕內核A核源碼分析系列五 虛實映射(1)基礎概念-鴻蒙HarmonyOS技術社區

對于用戶進程,每個一級頁表條目描述符占用4個字節(即32位的L1頁表項),可表示1MiB的內存空間的映射關系,即1GiB用戶空間(LiteOS-A內核中用戶空間占用1GiB)的虛擬內存空間需要1024個L1頁表項。系統創建用戶進程時,在內存中申請一塊4KiB大小(=4byte*1024)的內存塊作為一級頁表項的存儲區域,系統根據當前進程的需要會動態申請內存作為二級頁表的存儲區域。現在我們就知道,在虛擬內存章節,用戶進程虛擬地址空間初始化函數OsCreateUserVmSpace()申請了4KiB的內存作為頁表存儲區域的依據了:VADDR_T *ttb = LOS_PhysPagesAllocContiguous(1);,這段內存的開始地址就是TTB頁表基地址。每個用戶進程需要申請自己的頁表項存儲區域,對于內核進程,頁表項存儲區域是固定的,即UINT8 g_firstPageTable[0x4000],大小為16KiB。

L1頁表項的低2位用于定義頁表項的類型,頁表項類型有如下3種:

  • Invalid 無效頁表項,虛擬地址沒有映射到物理地址,訪問會產生缺頁異常;
  • Page Table 指向L2頁表的頁表項;
  • Section Section 頁表項對應1MiB大小的內存塊,直接使用頁表項的最高12位替代虛擬地址的高12位即可得到物理地址。

L2頁表把1MiB的地址范圍按4KiB的內存頁大小繼續分成256個小頁。內存的高20位記錄頁號,用于對頁表項定位;低12位記錄頁內偏移值,虛實地址頁內偏移值相等。使用虛擬地址中的虛擬頁號查詢頁表得到對應的物理頁號,然后與虛擬地址中的頁內位移組成物理地址。每個L2頁表項將4KiB的虛擬內存地址轉換為物理地址。如下圖所示:

鴻蒙輕內核A核源碼分析系列五 虛實映射(1)基礎概念-鴻蒙HarmonyOS技術社區

L2頁表項的低2位用于識別頁表項的類型,類型有如下4種:

Invalid 無效頁表項,虛擬地址沒有映射到物理地址,訪問會產生缺頁異常;

Large Page 大頁表項,支持64KiB大頁,暫不支持;

Small Page 小頁表項,支持4KiB小頁的二級頁表映射;

Small Page XN 小頁表項擴展。

在文件arch/arm/arm/include/los_mmu_descriptor_v6.h中定義了頁表項類型,代碼如下:

  1. /* L1 descriptor type */ 
  2. #define MMU_DESCRIPTOR_L1_TYPE_INVALID                          (0x0 << 0) 
  3. #define MMU_DESCRIPTOR_L1_TYPE_PAGE_TABLE                       (0x1 << 0) 
  4. #define MMU_DESCRIPTOR_L1_TYPE_SECTION                          (0x2 << 0) 
  5. #define MMU_DESCRIPTOR_L1_TYPE_MASK                             (0x3 << 0) 
  6.  
  7. /* L2 descriptor type */ 
  8. #define MMU_DESCRIPTOR_L2_TYPE_INVALID                          (0x0 << 0) 
  9. #define MMU_DESCRIPTOR_L2_TYPE_LARGE_PAGE                       (0x1 << 0) 
  10. #define MMU_DESCRIPTOR_L2_TYPE_SMALL_PAGE                       (0x2 << 0) 
  11. #define MMU_DESCRIPTOR_L2_TYPE_SMALL_PAGE_XN                    (0x3 << 0) 
  12. #define MMU_DESCRIPTOR_L2_TYPE_MASK                             (0x3 << 0)     

1.2 頁表項操作

在文件arch/arm/arm/include/los_pte_ops.h定義了頁表項相關的操作。

1.2.1 函數OsGetPte1獲取虛擬地址的L1頁表項

⑴處的OsGetPte1Index()內聯函數獲取虛擬地址的高12位作為頁表號。

⑵處的OsGetPte1Ptr()內聯函數根據頁表項基地址和虛擬地址獲取對應的L1頁表項地址。

⑶處的函數OsGetPte1()用于獲取指定虛擬地址對應的L1頁表項數據。該L1頁表項地址由頁表項基地址pte1BasePtr加上虛擬地址va對應的頁表項索引(頁表號)組成,其中頁表項索引等于虛擬地址的高12位。

需要注意函數OsGetPte1Index()和OsGetPte1()的區別,前者是頁表項內存地址,后者是頁表項地址上保持的頁表項數據。

  1.    STATIC INLINE UINT32 OsGetPte1Index(vaddr_t va) 
  2.     { 
  3. ⑴      return va >> MMU_DESCRIPTOR_L1_SMALL_SHIFT; 
  4.     } 
  5.  
  6.     STATIC INLINE PTE_T *OsGetPte1Ptr(PTE_T *pte1BasePtr, vaddr_t va) 
  7.     { 
  8. ⑵      return (pte1BasePtr + OsGetPte1Index(va)); 
  9.     } 
  10.  
  11.     STATIC INLINE PTE_T OsGetPte1(PTE_T *pte1BasePtr, vaddr_t va) 
  12.     { 
  13. ⑶      return *OsGetPte1Ptr(pte1BasePtr, va); 
  14.     } 

1.2.2 函數OsGetPte2獲取虛擬地址的L2頁表項

⑴處OsGetPte2Index()函數根據虛擬地址獲取對應頁表項的頁表號,計算方式是把虛擬地址對1MiB取余,然后取高20位。因為L2頁表項細分的是1MiB內存塊,這里把虛擬地址對1MiB取余。

⑵處的函數OsGetPte2()用于獲取指定虛擬地址對應的L2頁表項地址。L2頁表項地址由頁表項基地pte2BasePtr址加上頁表項索引組成,其中頁表項索引等于虛擬地址對1MiB取余后的高20位。

  1.  STATIC INLINE UINT32 OsGetPte2Index(vaddr_t va) 
  2.     { 
  3. ⑴      return (va % MMU_DESCRIPTOR_L1_SMALL_SIZE) >> MMU_DESCRIPTOR_L2_SMALL_SHIFT; 
  4.     } 
  5.  
  6.     STATIC INLINE PTE_T OsGetPte2(PTE_T *pte2BasePtr, vaddr_t va) 
  7.     { 
  8. ⑵      return *(pte2BasePtr + OsGetPte2Index(va)); 
  9.     } 

1.2.3 頁表項類型判斷函數

從上文已經可知,每一個L1頁表項的低2位標記頁表項的類型,OsIsPte1PageTable、OsIsPte1Invalid、OsIsPte1Section等函數分別判斷L1頁表項是否是頁表、無效、Section段類型。

  1. STATIC INLINE BOOL OsIsPte1PageTable(PTE_T pte1) 
  2.  { 
  3.      return (pte1 & MMU_DESCRIPTOR_L1_TYPE_MASK) == MMU_DESCRIPTOR_L1_TYPE_PAGE_TABLE; 
  4.  } 
  5.  
  6.  STATIC INLINE BOOL OsIsPte1Invalid(PTE_T pte1) 
  7.  { 
  8.      return (pte1 & MMU_DESCRIPTOR_L1_TYPE_MASK) == MMU_DESCRIPTOR_L1_TYPE_INVALID; 
  9.  } 
  10.  
  11.  STATIC INLINE BOOL OsIsPte1Section(PTE_T pte1) 
  12.  { 
  13.      return (pte1 & MMU_DESCRIPTOR_L1_TYPE_MASK) == MMU_DESCRIPTOR_L1_TYPE_SECTION; 
  14.  } 

同樣,下面4個函數用于判斷L2頁表項的類型。

  1. STATIC INLINE BOOL OsIsPte2SmallPage(PTE_T pte2) 
  2.     return (pte2 & MMU_DESCRIPTOR_L2_TYPE_MASK) == MMU_DESCRIPTOR_L2_TYPE_SMALL_PAGE; 
  3.  
  4. STATIC INLINE BOOL OsIsPte2SmallPageXN(PTE_T pte2) 
  5.     return (pte2 & MMU_DESCRIPTOR_L2_TYPE_MASK) == MMU_DESCRIPTOR_L2_TYPE_SMALL_PAGE_XN; 
  6.  
  7. STATIC INLINE BOOL OsIsPte2LargePage(PTE_T pte2) 
  8.     return (pte2 & MMU_DESCRIPTOR_L2_TYPE_MASK) == MMU_DESCRIPTOR_L2_TYPE_LARGE_PAGE; 
  9.  
  10. STATIC INLINE BOOL OsIsPte2Invalid(PTE_T pte2) 
  11.     return (pte2 & MMU_DESCRIPTOR_L2_TYPE_MASK) == MMU_DESCRIPTOR_L2_TYPE_INVALID; 

1.2.4 OsTruncPte1函數截取物理地址的高12位

下面代碼的宏定義在文件arch\arm\arm\include\los_mmu_descriptor_v6.h中定義。其中MMU_DESCRIPTOR_L1_SMALL_FRAME等于~(0x100000-1)=0xFFF00000即取高12位。所以函數OsTruncPte1截取物理內存地址的高12位。

  1. #define MMU_DESCRIPTOR_L1_SMALL_SIZE                            0x100000 
  2.    #define MMU_DESCRIPTOR_L1_SMALL_MASK                            (MMU_DESCRIPTOR_L1_SMALL_SIZE - 1) 
  3.    #define MMU_DESCRIPTOR_L1_SMALL_FRAME                           (~MMU_DESCRIPTOR_L1_SMALL_MASK) 
  4.    #define MMU_DESCRIPTOR_L1_SMALL_SHIFT                           20 
  5.    #define MMU_DESCRIPTOR_L1_SECTION_ADDR(x)                       ((x) & MMU_DESCRIPTOR_L1_SMALL_FRAME) 
  6.    ...... 
  7.    STATIC INLINE ADDR_T OsTruncPte1(ADDR_T addr) 
  8.    { 
  9.        return MMU_DESCRIPTOR_L1_SECTION_ADDR(addr); 
  10.    } 

1.2.5 L2頁表項連續操作函數

⑴處的函數OsSavePte2設置L2頁表項數據,頁表項指針地址pte2Ptr指向的內存保存的數據寫入頁表項數據pte2。OsSavePte2Continuous函數用于連續設置L2頁表項數據,需要的參數分別有pte2BasePtr頁表基地址,index虛擬地址對應的頁號作為開始索引,頁表項地址pte2和連續的頁表項數量count。⑵處設置頁表項基地址,然后頁表號增加1,頁表項數量減1。⑶處更新頁表項地址,增加的大小為MMU_DESCRIPTOR_L2_SMALL_SIZE,即4KiB大小,然后統計保存成功的數量加1。⑷處的while循環的條件中的MMU_DESCRIPTOR_L2_NUMBERS_PER_L1等于256(即每1MiB對應的L2頁表項的數量)。

函數OsClearPte2Continuous用于清理頁表項基地址。

  1. STATIC INLINE VOID OsSavePte2(PTE_T *pte2Ptr, PTE_T pte2) 
  2.     DMB; 
  3. ⑴  *pte2Ptr = pte2; 
  4.     DSB; 
  5.  
  6. STATIC INLINE UINT32 OsSavePte2Continuous(PTE_T *pte2BasePtr, UINT32 index, PTE_T pte2, UINT32 count
  7.     UINT32 saveCounts = 0; 
  8.     if (count == 0) { 
  9.         return 0; 
  10.     } 
  11.  
  12.     DMB; 
  13.     do { 
  14. ⑵      pte2BasePtr[index++] = pte2; 
  15.         count--; 
  16. ⑶      pte2 += MMU_DESCRIPTOR_L2_SMALL_SIZE; 
  17.         saveCounts++; 
  18. ⑷  } while ((count != 0) && (index != MMU_DESCRIPTOR_L2_NUMBERS_PER_L1)); 
  19.     DSB; 
  20.  
  21.     return saveCounts; 
  22.  
  23. STATIC INLINE VOID OsClearPte2Continuous(PTE_T *pte2Ptr, UINT32 count
  24.     UINT32 index = 0; 
  25.  
  26.     DMB; 
  27.     while (count > 0) { 
  28.         pte2Ptr[index++] = 0; 
  29.         count--; 
  30.     } 
  31.     DSB; 

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

 

責任編輯:jianghua 來源: 鴻蒙社區
相關推薦

2021-12-03 16:22:05

鴻蒙HarmonyOS應用

2021-12-02 15:08:23

鴻蒙HarmonyOS應用

2021-12-03 16:20:26

鴻蒙HarmonyOS應用

2022-03-11 20:23:14

鴻蒙源碼分析進程管理

2022-01-12 10:50:23

鴻蒙HarmonyOS應用

2022-01-10 15:31:44

鴻蒙HarmonyOS應用

2022-03-03 18:28:28

Harmony進程任務管理模塊

2022-04-13 11:02:12

鴻蒙事件模塊事件Event

2021-06-04 09:57:49

鴻蒙HarmonyOS應用

2021-11-08 15:06:15

鴻蒙HarmonyOS應用

2021-11-05 15:00:33

鴻蒙HarmonyOS應用

2021-05-17 09:28:59

鴻蒙HarmonyOS應用

2021-06-04 14:15:10

鴻蒙HarmonyOS應用

2021-05-08 15:14:50

鴻蒙HarmonyOS應用

2021-10-20 16:08:57

鴻蒙HarmonyOS應用

2021-05-25 09:28:34

鴻蒙HarmonyOS應用

2022-04-13 11:12:43

鴻蒙輕內核信號量模塊操作系統

2022-01-14 08:39:47

鴻蒙HarmonyOS應用

2021-05-13 09:47:08

鴻蒙HarmonyOS應用

2021-06-17 09:36:07

鴻蒙HarmonyOS應用
點贊
收藏

51CTO技術棧公眾號

国产亚洲欧美日韩高清| a视频免费观看| 黄网址在线观看| 国产一区激情在线| 欧美激情第三页| 中文字幕xxx| 电影中文字幕一区二区| 无码av中文一区二区三区桃花岛| 日产精品久久久一区二区| 国产精品亚洲lv粉色| 99亚洲一区二区| 中文字幕亚洲欧美在线| 中文字幕久久久久久久| 日韩成人av电影| 亚洲精品欧美综合四区| 欧美精品一区二区三区在线四季| 国产精品视频第一页| 国产精品日韩欧美一区| 欧美精品做受xxx性少妇| 成人影视免费观看| 日韩中文字幕| 欧美日韩成人综合| 国产精品一区二区免费在线观看| 激情视频在线观看| 国产三区在线成人av| 国产精品视频免费一区二区三区| 中文字幕精品无码一区二区| 国产精品激情| x99av成人免费| 精品人妻一区二区三区日产乱码卜| 麻豆精品国产| 欧美日韩一区二区三区在线| 日本久久久精品视频| 欧美videosex性极品hd| 国产日韩精品一区| 美女被啪啪一区二区| 亚洲av无码国产精品永久一区 | 88国产精品欧美一区二区三区| 欧美激情精品久久久久久免费| 国产精品探花在线观看| 亚洲国产天堂网精品网站| 久久aaaa片一区二区| 亚洲欧美专区| 欧美少妇一区二区| 欧美成人xxxxx| 蜜桃视频m3u8在线观看| 亚洲国产精品久久人人爱| avove在线观看| 久草免费在线观看| 国产精品国产馆在线真实露脸 | 国产专区一区| 欧美高清视频在线播放| 午夜免费激情视频| 综合日韩在线| 欧美精品亚州精品| 麻豆亚洲av成人无码久久精品| 91精品一区二区三区综合| 色先锋资源久久综合5566| 91免费在线看片| 欧美疯狂party性派对| 色噜噜国产精品视频一区二区 | 国产精品日韩在线| 中文字幕+乱码+中文乱码www| 天堂资源在线中文精品| 国产福利视频一区| 中文字幕 日韩有码| 狠狠色狠狠色综合| 91免费看网站| 香蕉视频黄色片| 久久久久国产精品厨房| 日韩精品一线二线三线| 在线观看免费版| 亚洲美女精品一区| 全黄性性激高免费视频| 中文字幕色婷婷在线视频| 色爱区综合激月婷婷| 日日躁夜夜躁aaaabbbb| 欧美h版在线观看| 亚洲精品国产综合久久| 精品人妻无码一区| 国产精品精品| 欧美精品xxx| 国产精品久久久久久久久久久久久久久久久| 亚洲伊人观看| 国产精品亚洲视频在线观看| 亚洲国产成人一区二区| 91网站在线播放| 亚洲国产欧美日韩| 麻豆蜜桃在线| 欧美在线你懂的| 宇都宫紫苑在线播放| 色综合www| 日韩在线观看高清| 91视频免费在线看| 午夜一区在线| 亚洲一区二区三区四区在线播放| 色欲av永久无码精品无码蜜桃| 99久久夜色精品国产网站| 日韩美女一区| av资源中文在线天堂| 在线观看av一区二区| 免费欧美一级片| 蜜桃国内精品久久久久软件9| 久久综合国产精品台湾中文娱乐网| 日本在线观看中文字幕| 久久99国内精品| 欧美成ee人免费视频| 黄在线免费观看| 色婷婷国产精品| 黄色片子免费看| 精品一二三区| 国内揄拍国内精品少妇国语| 在线观看视频二区| 99国产精品久久久久久久久久久 | 久久av无码精品人妻系列试探| 亚洲精品tv久久久久久久久久| 青草青草久热精品视频在线观看| 国产黄色av片| 国产精品麻豆久久久| 各处沟厕大尺度偷拍女厕嘘嘘| 国产视频网站一区二区三区| 影音先锋日韩有码| 中文字幕日韩一级| 国产69精品久久久久777| 亚洲国产精品久久久久婷婷老年| 欧美一区国产| 亚洲高清av在线| 欧美精品乱码视频一二专区| 久久99久久99| 亚洲v欧美v另类v综合v日韩v| 日本不卡1234视频| 亚洲第一级黄色片| 免费无遮挡无码永久在线观看视频| 男人的j进女人的j一区| 欧美三级电影在线播放| yellow字幕网在线| 日韩一区二区三区视频| 欧美一区二区三区观看| 日本成人在线电影网| 欧美另类高清视频在线| 爱情电影社保片一区| 亚洲国产成人精品久久| 久久久综合久久| 国产酒店精品激情| 免费看污污视频| 国产精品1区在线| 日韩视频在线观看免费| 在线中文字幕网站| 国产精品久久久久久一区二区三区| 免费av网址在线| 蜜臀av免费一区二区三区| 91成人在线播放| 天天影院图片亚洲| 欧美日韩在线影院| 欧美色图亚洲激情| 亚洲女同在线| 日韩精彩视频| 成人午夜一级| 久久中文精品视频| 亚洲春色一区二区三区| 亚洲成人tv网| 成人手机在线免费视频| 午夜综合激情| 日韩电影免费观看在| 精品久久在线| 欧美xxxx做受欧美| 天天色综合久久| 色八戒一区二区三区| 国产高清视频免费在线观看| 国产精品77777竹菊影视小说| 久久福利一区二区| 欧美亚视频在线中文字幕免费| 日韩av片电影专区| 三级外国片在线观看视频| 日韩小视频在线观看专区| 久久精品免费av| 久久美女高清视频| 午夜免费看毛片| 狠狠入ady亚洲精品| 欧美色图亚洲自拍| 国产专区精品| 26uuu另类亚洲欧美日本老年| 精品一二三区视频| 91精品国产日韩91久久久久久| 国产乡下妇女做爰视频| 国产色爱av资源综合区| 中文字幕一区二区三区人妻在线视频| 国产日韩欧美三级| 亚洲国产精品综合| 美女一区二区在线观看| 国产精品久久色| 日本成人不卡| 在线精品高清中文字幕| 99精品人妻无码专区在线视频区| 午夜伊人狠狠久久| 国产馆在线观看| 成人动漫一区二区在线| 一区二区三区 日韩| 精品99视频| 伊甸园精品99久久久久久| 久久综合另类图片小说| 国产日韩欧美中文在线播放| 岛国av在线播放| 日韩一区二区三区国产| 天天操天天操天天| 欧美精品第一页| 日韩美一区二区| 亚洲午夜久久久| 91无套直看片红桃在线观看| 成人国产精品免费观看视频| 中文字幕资源在线观看| 久久婷婷久久| 91专区在线观看| 中文精品久久| 神马影院一区二区| 日韩高清电影免费| av一区和二区| 白嫩亚洲一区二区三区| 国产成人精品在线播放| 高清毛片在线观看| 欧美大片在线看免费观看| 午夜激情视频在线| 亚洲天堂男人天堂| 五月婷婷在线观看视频| 精品少妇一区二区三区免费观看| 亚洲一区二区人妻| 欧洲亚洲精品在线| 久久国产黄色片| 五月婷婷综合网| 久久精品www人人爽人人| 亚洲欧美综合另类在线卡通| 手机毛片在线观看| 国产欧美在线观看一区| 伊人网在线视频观看| www一区二区| 好男人香蕉影院| 成人午夜看片网址| 日本xxxx免费| 福利电影一区二区| 国产成人精品综合久久久久99| 天堂一区二区在线| 国产成人精品视频ⅴa片软件竹菊| 国产欧美亚洲一区| 69堂免费视频| 亚洲一区亚洲| 免费黄色特级片| 三级在线观看一区二区| 亚洲中文字幕久久精品无码喷水| 日韩国产一区二| 色综合色综合色综合色综合| 免费成人在线网站| www.夜夜爽| 精品制服美女丁香| 日本黄色www| 成人免费视频网站在线观看| 男女一区二区三区| 91视频免费看| 熟女少妇内射日韩亚洲| 欧美国产精品久久| 欧美特黄一级片| 亚洲影院理伦片| 在线观看中文字幕视频| 色www精品视频在线观看| 国产又粗又猛又黄视频| 欧美午夜精品理论片a级按摩| 亚洲视频在线免费播放| 欧美剧情片在线观看| 99热这里只有精品9| 欧美成人a视频| 无码国精品一区二区免费蜜桃| 亚洲男人天堂2023| av亚洲在线| 欧美日韩国产第一页| 日韩激情电影| 国产欧亚日韩视频| 99精品国产高清一区二区麻豆| 国产一区喷水| 日韩欧美一区二区三区免费看| 91视频 - 88av| 久久久久国产精品一区二区| 日日夜夜精品视频免费观看| 99精品国产一区二区三区不卡| 黄色片在线观看免费| 亚洲精品国久久99热| 日本熟女毛茸茸| 欧美一区二区三区不卡| 亚洲欧洲视频在线观看| 久久精品99久久久久久久久| av资源网在线播放| 国产欧美一区二区三区在线看| 爱高潮www亚洲精品| 神马影院我不卡午夜| 亚洲一级二级| 激情 小说 亚洲 图片: 伦| 国产成人精品影视| 人妻少妇无码精品视频区| 亚洲欧美区自拍先锋| 少妇高潮av久久久久久| 日韩欧美成人午夜| 九九九伊在人线综合| 久久人91精品久久久久久不卡| 成人免费av电影| 精品国产乱码久久久久久久软件| 首页国产精品| 久久人妻精品白浆国产| 成人小视频免费在线观看| 999福利视频| 日韩欧美高清视频| 国产黄色一级大片| 中文字幕日韩精品在线观看| 国产精品蜜芽在线观看| 91久久精品国产| 成人国产精品一级毛片视频| 国产女大学生av| 国产成人亚洲综合色影视| 国产精品理论在线| 精品人伦一区二区三区蜜桃网站 | 色偷偷av一区二区三区| 最近高清中文在线字幕在线观看1| 91精品久久香蕉国产线看观看| 日本一区二区高清不卡| 日韩一级免费在线观看| 91在线视频免费观看| 国产一二三四在线| 欧美福利视频一区| a√在线中文网新版址在线| 97超碰色婷婷| 国产一区福利| 欧美成人精品免费| 国产盗摄视频一区二区三区| 日韩在线不卡av| 51精品秘密在线观看| 九色porny丨首页在线| 国产精品网址在线| 成人毛片在线| 国产成人黄色网址| 国产欧美一区二区精品性色超碰| 国产伦精品一区二区三区视频网站| 精品国产乱码久久久久久牛牛 | 日本少妇一级片| 亚洲精品综合在线| 99久久精品免费看国产交换| 久久精品久久久久久| 亚洲精品三区| 午夜啪啪福利视频| 国产一区二区三区四| 永久看片925tv| 欧美α欧美αv大片| 91超碰在线免费| 久久精品国产美女| 香蕉久久夜色精品国产| 成人片黄网站色大片免费毛片| 色综合久久精品| h视频在线免费| 国产综合色香蕉精品| 欧美有码视频| 800av在线播放| 色国产精品一区在线观看| av影片免费在线观看| 亚洲影院色无极综合| 欧美三区视频| 捆绑裸体绳奴bdsm亚洲| 欧美性猛交丰臀xxxxx网站| 国外av在线| 国产一区二中文字幕在线看| 欧美人成在线| 国产毛片毛片毛片毛片毛片毛片| 欧美小视频在线观看| av在线收看| 97超级在线观看免费高清完整版电视剧| 欧美全黄视频| 免费观看av网站| 欧美美女网站色| av2020不卡| 日韩欧美第二区在线观看| 精油按摩中文字幕久久| 国产精品9191| 中文字幕精品av| 视频一区日韩精品| 欧美亚洲另类色图| 国产精品二三区| 男人天堂网在线视频| 日韩免费观看av| 欧美一区二区| 精品少妇人妻一区二区黑料社区| 欧美日韩国产一级片| 电影k8一区二区三区久久 | 国产精品免费一区豆花| 牛夜精品久久久久久久99黑人| 色噜噜在线观看| 欧美疯狂性受xxxxx喷水图片| 波多一区二区| 亚洲精品在线免费| 成人av在线影院| 一级黄色免费看| 午夜精品美女自拍福到在线| 欧美3p在线观看| 加勒比精品视频| 91麻豆精品国产91久久久资源速度 | 亚州综合一区|