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

鴻蒙輕內(nèi)核A核源碼分析系列之虛實(shí)映射(2)虛實(shí)映射初始化

開發(fā) 前端
虛實(shí)映射其實(shí)就是一個(gè)建立頁表的過程。MMU支持多級頁表,LiteOS-A內(nèi)核采用二級頁表描述進(jìn)程空間。首先介紹下一級頁表和二級頁表。

[[438168]]

想了解更多內(nèi)容,請?jiān)L問:

51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)

https://harmonyos.51cto.com

2、 虛擬映射初始化

在文件kernel/base/vm/los_vm_boot.c中的系統(tǒng)內(nèi)存初始化函數(shù)OsSysMemInit()會調(diào)用虛實(shí)映射初始化函數(shù)OsInitMappingStartUp()。該函數(shù)代碼定義在文件arch/arm/arm/src/los_arch_mmu.c,代碼如下。

⑴處函數(shù)使TLB失效,清理虛實(shí)映射緩存數(shù)據(jù),涉及些cp15寄存器和匯編,后續(xù)再分析。

⑵處函數(shù)切換到臨時(shí)TTB。

⑶處設(shè)置內(nèi)核地址空間的映射。下面分別詳細(xì)這些函數(shù)代碼。

  1. VOID OsInitMappingStartUp(VOID) 
  2. ⑴   OsArmInvalidateTlbBarrier(); 
  3.  
  4. ⑵   OsSwitchTmpTTB(); 
  5.  
  6. ⑶  OsSetKSectionAttr(KERNEL_VMM_BASE, FALSE); 
  7.     OsSetKSectionAttr(UNCACHED_VMM_BASE, TRUE); 
  8.     OsKSectionNewAttrEnable(); 

2.1 函數(shù)OsSwitchTmpTTB

函數(shù)OsSwitchTmpTTB申請16KiB的內(nèi)存存放L1頁表項(xiàng)數(shù)據(jù),把頁表項(xiàng)數(shù)據(jù)從g_firstPageTable復(fù)制到申請的內(nèi)存區(qū)域。⑴處獲取內(nèi)核地址空間。L1頁表由4096個(gè)頁表項(xiàng)組成,每個(gè)4KiB,共需要16KiB大小。所以⑵處代碼按16KiB對齊申請16KiB大小的內(nèi)存區(qū)域存放L1頁表項(xiàng)。⑶處設(shè)置內(nèi)核虛擬內(nèi)存地址空間的轉(zhuǎn)換表基地址TTB。⑷處把g_firstPageTable頁表數(shù)據(jù)復(fù)制到內(nèi)核地址空間的轉(zhuǎn)換表區(qū)域。如果復(fù)制失敗,則直接使用g_firstPageTable。⑸處設(shè)置內(nèi)核虛擬地址空間的TTB轉(zhuǎn)換地址對應(yīng)的物理內(nèi)存地址,然后調(diào)用函數(shù)OsArmWriteTtbr0寫入MMU寄存器。

  1. STATIC VOID OsSwitchTmpTTB(VOID) 
  2.     PTE_T *tmpTtbase = NULL
  3.     errno_t err; 
  4. ⑴   LosVmSpace *kSpace = LOS_GetKVmSpace(); 
  5.  
  6.     /* ttbr address should be 16KByte align */ 
  7. ⑵   tmpTtbase = LOS_MemAllocAlign(m_aucSysMem0, MMU_DESCRIPTOR_L1_SMALL_ENTRY_NUMBERS, 
  8.                                   MMU_DESCRIPTOR_L1_SMALL_ENTRY_NUMBERS); 
  9.     if (tmpTtbase == NULL) { 
  10.         VM_ERR("memory alloc failed"); 
  11.         return
  12.     } 
  13.  
  14. ⑶  kSpace->archMmu.virtTtb = tmpTtbase; 
  15. ⑷  err = memcpy_s(kSpace->archMmu.virtTtb, MMU_DESCRIPTOR_L1_SMALL_ENTRY_NUMBERS, 
  16.                    g_firstPageTable, MMU_DESCRIPTOR_L1_SMALL_ENTRY_NUMBERS); 
  17.     if (err != EOK) { 
  18.         (VOID)LOS_MemFree(m_aucSysMem0, tmpTtbase); 
  19.         kSpace->archMmu.virtTtb = (VADDR_T *)g_firstPageTable; 
  20.         VM_ERR("memcpy failed, errno: %d", err); 
  21.         return
  22.     } 
  23. ⑸  kSpace->archMmu.physTtb = LOS_PaddrQuery(kSpace->archMmu.virtTtb); 
  24.     OsArmWriteTtbr0(kSpace->archMmu.physTtb | MMU_TTBRx_FLAGS); 
  25.     ISB; 

2.2 函數(shù)OsSetKSectionAttr

內(nèi)部函數(shù)OsSetKSectionAttr用于設(shè)置內(nèi)核虛擬地址空間的區(qū)間屬性,分別針對內(nèi)核虛擬地址空間的內(nèi)核區(qū)間[KERNEL_ASPACE_BASE,KERNEL_ASPACE_BASE+KERNEL_ASPACE_SIZE]和未緩存區(qū)間[UNCACHED_VMM_BASE,UNCACHED_VMM_BASE+UNCACHED_VMM_SIZE]進(jìn)行設(shè)置。內(nèi)核虛擬地址空間是固定映射到物理內(nèi)存的,內(nèi)核地址空間的映射包含代碼段、數(shù)據(jù)段、堆棧區(qū)間映射,如下示意圖所示:

鴻蒙輕內(nèi)核A核源碼分析系列五 虛實(shí)映射(2)虛實(shí)映射初始化-鴻蒙HarmonyOS技術(shù)社區(qū)

⑴處計(jì)算相對內(nèi)核虛擬地址空間基地址KERNEL_VMM_BASE的偏移大小。⑵處先計(jì)算相對偏移值的text、rodata、data_bss段的虛擬內(nèi)存地址,然后創(chuàng)建這些段的虛實(shí)映射關(guān)系數(shù)組mmuKernelMappings。⑶處設(shè)置內(nèi)核虛擬地址區(qū)間的虛擬轉(zhuǎn)換基地址TTB和物理轉(zhuǎn)換基地址TTB。然后解除虛擬地址virtAddr的虛實(shí)映射,解除映射的長度就是代碼段、只讀數(shù)據(jù)段、數(shù)據(jù)BSS段這些內(nèi)存段的長度。⑷處按指定的標(biāo)簽flags對text代碼段之前的內(nèi)存區(qū)間進(jìn)行虛實(shí)映射。⑸處映射text代碼段、rodata只讀數(shù)據(jù)段、data_bss數(shù)據(jù)段的內(nèi)存區(qū)間,并調(diào)用函數(shù)LOS_VmSpaceReserve在進(jìn)程空間中預(yù)定地址區(qū)間。⑹是BSS段后面的heap區(qū)、stack區(qū)的映射,映射虛擬地址空間的內(nèi)存堆棧區(qū)間到對應(yīng)的物理內(nèi)存區(qū)間。

  1. STATIC VOID OsSetKSectionAttr(UINTPTR virtAddr, BOOL uncached) 
  2. ⑴  UINT32 offset = virtAddr - KERNEL_VMM_BASE; 
  3.     /* every section should be page aligned */ 
  4. ⑵  UINTPTR textStart = (UINTPTR)&__text_start + offset; 
  5.     UINTPTR textEnd = (UINTPTR)&__text_end + offset; 
  6.     UINTPTR rodataStart = (UINTPTR)&__rodata_start + offset; 
  7.     UINTPTR rodataEnd = (UINTPTR)&__rodata_end + offset; 
  8.     UINTPTR ramDataStart = (UINTPTR)&__ram_data_start + offset; 
  9.     UINTPTR bssEnd = (UINTPTR)&__bss_end + offset; 
  10.     UINT32 bssEndBoundary = ROUNDUP(bssEnd, MB); 
  11.     LosArchMmuInitMapping mmuKernelMappings[] = { 
  12.         { 
  13.             .phys = SYS_MEM_BASE + textStart - virtAddr, 
  14.             .virt = textStart, 
  15.             .size = ROUNDUP(textEnd - textStart, MMU_DESCRIPTOR_L2_SMALL_SIZE), 
  16.             .flags = VM_MAP_REGION_FLAG_PERM_READ | VM_MAP_REGION_FLAG_PERM_EXECUTE, 
  17.             .name = "kernel_text" 
  18.         }, 
  19.         { 
  20.             .phys = SYS_MEM_BASE + rodataStart - virtAddr, 
  21.             .virt = rodataStart, 
  22.             .size = ROUNDUP(rodataEnd - rodataStart, MMU_DESCRIPTOR_L2_SMALL_SIZE), 
  23.             .flags = VM_MAP_REGION_FLAG_PERM_READ, 
  24.             .name = "kernel_rodata" 
  25.         }, 
  26.         { 
  27.             .phys = SYS_MEM_BASE + ramDataStart - virtAddr, 
  28.             .virt = ramDataStart, 
  29.             .size = ROUNDUP(bssEndBoundary - ramDataStart, MMU_DESCRIPTOR_L2_SMALL_SIZE), 
  30.             .flags = VM_MAP_REGION_FLAG_PERM_READ | VM_MAP_REGION_FLAG_PERM_WRITE, 
  31.             .name = "kernel_data_bss" 
  32.         } 
  33.     }; 
  34.     LosVmSpace *kSpace = LOS_GetKVmSpace(); 
  35.     status_t status; 
  36.     UINT32 length; 
  37.     int i; 
  38.     LosArchMmuInitMapping *kernelMap = NULL
  39.     UINT32 kmallocLength; 
  40.     UINT32 flags; 
  41.  
  42.     /* use second-level mapping of default READ and WRITE */ 
  43. ⑶  kSpace->archMmu.virtTtb = (PTE_T *)g_firstPageTable; 
  44.     kSpace->archMmu.physTtb = LOS_PaddrQuery(kSpace->archMmu.virtTtb); 
  45.     status = LOS_ArchMmuUnmap(&kSpace->archMmu, virtAddr, 
  46.                               (bssEndBoundary - virtAddr) >> MMU_DESCRIPTOR_L2_SMALL_SHIFT); 
  47.     if (status != ((bssEndBoundary - virtAddr) >> MMU_DESCRIPTOR_L2_SMALL_SHIFT)) { 
  48.         VM_ERR("unmap failed, status: %d", status); 
  49.         return
  50.     } 
  51.  
  52.     flags = VM_MAP_REGION_FLAG_PERM_READ | VM_MAP_REGION_FLAG_PERM_WRITE | VM_MAP_REGION_FLAG_PERM_EXECUTE; 
  53.     if (uncached) { 
  54.         flags |= VM_MAP_REGION_FLAG_UNCACHED; 
  55.     } 
  56. ⑷  status = LOS_ArchMmuMap(&kSpace->archMmu, virtAddr, SYS_MEM_BASE, 
  57.                             (textStart - virtAddr) >> MMU_DESCRIPTOR_L2_SMALL_SHIFT, 
  58.                             flags); 
  59.     if (status != ((textStart - virtAddr) >> MMU_DESCRIPTOR_L2_SMALL_SHIFT)) { 
  60.         VM_ERR("mmap failed, status: %d", status); 
  61.         return
  62.     } 
  63.  
  64. ⑸  length = sizeof(mmuKernelMappings) / sizeof(LosArchMmuInitMapping); 
  65.     for (i = 0; i < length; i++) { 
  66.         kernelMap = &mmuKernelMappings[i]; 
  67.         if (uncached) { 
  68.             kernelMap->flags |= VM_MAP_REGION_FLAG_UNCACHED; 
  69.         } 
  70.         status = LOS_ArchMmuMap(&kSpace->archMmu, kernelMap->virt, kernelMap->phys, 
  71.                                  kernelMap->size >> MMU_DESCRIPTOR_L2_SMALL_SHIFT, kernelMap->flags); 
  72.         if (status != (kernelMap->size >> MMU_DESCRIPTOR_L2_SMALL_SHIFT)) { 
  73.             VM_ERR("mmap failed, status: %d", status); 
  74.             return
  75.         } 
  76.         LOS_VmSpaceReserve(kSpace, kernelMap->size, kernelMap->virt); 
  77.     } 
  78.  
  79. ⑹   kmallocLength = virtAddr + SYS_MEM_SIZE_DEFAULT - bssEndBoundary; 
  80.     flags = VM_MAP_REGION_FLAG_PERM_READ | VM_MAP_REGION_FLAG_PERM_WRITE; 
  81.     if (uncached) { 
  82.         flags |= VM_MAP_REGION_FLAG_UNCACHED; 
  83.     } 
  84.     status = LOS_ArchMmuMap(&kSpace->archMmu, bssEndBoundary, 
  85.                             SYS_MEM_BASE + bssEndBoundary - virtAddr, 
  86.                             kmallocLength >> MMU_DESCRIPTOR_L2_SMALL_SHIFT, 
  87.                             flags); 
  88.     if (status != (kmallocLength >> MMU_DESCRIPTOR_L2_SMALL_SHIFT)) { 
  89.         VM_ERR("mmap failed, status: %d", status); 
  90.         return
  91.     } 
  92.     LOS_VmSpaceReserve(kSpace, kmallocLength, bssEndBoundary); 

2.3 函數(shù)OsKSectionNewAttrEnable

函數(shù)OsKSectionNewAttrEnable設(shè)置虛實(shí)地址的轉(zhuǎn)換表基地址TTB并清楚TLB緩存。⑴處獲取內(nèi)核虛擬進(jìn)程空間,⑵處設(shè)置進(jìn)程空間MMU的虛擬地址轉(zhuǎn)換表基地址TTB,然后查詢到物理內(nèi)存地址并設(shè)置物理內(nèi)存地址轉(zhuǎn)換表基地址。⑶處從CP15 C2寄存器讀取TTB地址,取高20位。⑷處將內(nèi)核物理內(nèi)存頁表基地址寫入CP15 c2 TTB寄存器。⑸處清空TLB緩沖區(qū),然后釋放內(nèi)存。涉及到了MMU寄存器,后續(xù)系列會專門詳細(xì)講解。

  1. STATIC VOID OsKSectionNewAttrEnable(VOID) 
  2. ⑴  LosVmSpace *kSpace = LOS_GetKVmSpace(); 
  3.     paddr_t oldTtPhyBase; 
  4.  
  5. ⑵  kSpace->archMmu.virtTtb = (PTE_T *)g_firstPageTable; 
  6.     kSpace->archMmu.physTtb = LOS_PaddrQuery(kSpace->archMmu.virtTtb); 
  7.  
  8.     /* we need free tmp ttbase */ 
  9. ⑶  oldTtPhyBase = OsArmReadTtbr0(); 
  10.     oldTtPhyBase = oldTtPhyBase & MMU_DESCRIPTOR_L2_SMALL_FRAME; 
  11. ⑷  OsArmWriteTtbr0(kSpace->archMmu.physTtb | MMU_TTBRx_FLAGS); 
  12.     ISB; 
  13.  
  14.     /* we changed page table entry, so we need to clean TLB here */ 
  15. ⑸  OsCleanTLB(); 
  16.  
  17.     (VOID)LOS_MemFree(m_aucSysMem0, (VOID *)(UINTPTR)(oldTtPhyBase - SYS_MEM_BASE + KERNEL_VMM_BASE)); 

想了解更多內(nèi)容,請?jiān)L問:

51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)

https://harmonyos.51cto.com

 

責(zé)任編輯:jianghua 來源: 鴻蒙社區(qū)
相關(guān)推薦

2021-12-03 16:22:05

鴻蒙HarmonyOS應(yīng)用

2021-12-03 16:20:26

鴻蒙HarmonyOS應(yīng)用

2021-12-01 15:59:22

鴻蒙HarmonyOS應(yīng)用

2022-03-11 20:23:14

鴻蒙源碼分析進(jìn)程管理

2022-01-10 15:31:44

鴻蒙HarmonyOS應(yīng)用

2022-01-12 10:50:23

鴻蒙HarmonyOS應(yīng)用

2022-03-03 18:28:28

Harmony進(jìn)程任務(wù)管理模塊

2022-04-13 11:02:12

鴻蒙事件模塊事件Event

2021-06-04 09:57:49

鴻蒙HarmonyOS應(yīng)用

2022-04-13 11:12:43

鴻蒙輕內(nèi)核信號量模塊操作系統(tǒng)

2021-10-20 16:08:57

鴻蒙HarmonyOS應(yīng)用

2021-05-25 09:28:34

鴻蒙HarmonyOS應(yīng)用

2021-11-08 15:06:15

鴻蒙HarmonyOS應(yīng)用

2021-11-05 15:00:33

鴻蒙HarmonyOS應(yīng)用

2021-06-04 14:15:10

鴻蒙HarmonyOS應(yīng)用

2021-05-17 09:28:59

鴻蒙HarmonyOS應(yīng)用

2021-05-08 15:14:50

鴻蒙HarmonyOS應(yīng)用

2022-01-14 08:39:47

鴻蒙HarmonyOS應(yīng)用

2021-05-31 20:30:55

鴻蒙HarmonyOS應(yīng)用

2021-06-17 09:36:07

鴻蒙HarmonyOS應(yīng)用
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

懂色av蜜臀av粉嫩av分享吧| 中文字幕欧美激情极品| 中文字幕在线看片| 国产精品色哟哟| www 成人av com| 麻豆成人免费视频| 99久久亚洲精品| 亚洲精品720p| 手机av在线网站| 日本乱码一区二区三区不卡| 国产精品女主播在线观看| 国产不卡一区二区三区在线观看| 中文字幕一区二区三区四区欧美| 欧美福利电影在线观看| 国产一区二区三区四区福利| 无码人妻aⅴ一区二区三区玉蒲团| 成人教育av| 一区二区三区日韩| 亚洲欧美久久久久一区二区三区| 国产91免费在线观看| 精品一区二区免费| 国产ts一区二区| 国产精品99精品| 91高清一区| 中文字幕不卡在线视频极品| 在线观看国产三级| 中文字幕亚洲在线观看| 欧美日韩激情一区二区三区| 播放灌醉水嫩大学生国内精品| 新版中文在线官网| 尤物视频在线看| 国产一区免费电影| 国产精品久久不能| 精品不卡一区二区| 亚洲精品美女91| 久久99视频免费| 久久久99999| 成人久久电影| 一区二区三区国产在线观看| 成年人的黄色片| 2020国产精品极品色在线观看| 欧美精品v日韩精品v韩国精品v| 无码人妻丰满熟妇区五十路百度| 僵尸再翻生在线观看| 一区二区三区免费网站| 久久久无码中文字幕久...| 男人和女人做事情在线视频网站免费观看 | 一区二区小视频| 免费在线播放第一区高清av| 91精品国产99久久久久久| 国产精品9191| 99亚洲视频| 7777kkkk成人观看| 黄色片中文字幕| 毛片一区二区| 国产精品高清在线观看| 综合久久中文字幕| 理论电影国产精品| 成人福利网站在线观看11| 国产精品亚洲lv粉色| 久久99久国产精品黄毛片色诱| 国产精品网址在线| 91久久久久久久久久久久| 久久精品国产秦先生| 91精品视频在线播放| 国产黄色片网站| 成人免费视频app| 精品伊人久久大线蕉色首页| 极品白浆推特女神在线观看| 国产精品久久久久久久蜜臀| 亚洲一卡二卡| 欧洲黄色一区| 欧美日韩久久久久| 宅男噜噜噜66国产免费观看| 亚洲一区二区av| 欧美成人精品1314www| 久久久久亚洲AV成人无码国产| 神马日本精品| 日日骚久久av| 欧美日韩免费一区二区| 国产欧美另类| 国产在线日韩在线| 老熟妇高潮一区二区高清视频| 99免费精品视频| 亚洲日本精品| 丁香花电影在线观看完整版| 日韩欧美中文在线| 毛片毛片毛片毛| 国产精品中文字幕制服诱惑| 永久555www成人免费| 91porn在线视频| 噜噜噜在线观看免费视频日韩 | 欧美少妇性生活视频| 欧美亚洲二区| 亚洲大胆美女视频| 亚洲图片第一页| 一区久久精品| 国产在线视频一区| 日韩有码电影| 亚洲欧美一区二区三区孕妇| 亚洲国产精品久久久久婷蜜芽| 精品久久久网| 亚洲精品91美女久久久久久久| 国产一二三av| 欧美亚洲一区| 国产91社区| 黄色动漫在线| 91久久线看在观草草青青| 少妇熟女视频一区二区三区| 第一社区sis001原创亚洲| 久久久久久亚洲精品中文字幕| 日批视频免费观看| 久久综合久久综合久久| 国产美女作爱全过程免费视频| 国产精品黄色片| 亚洲成人中文字幕| 欧美色图亚洲视频| 免费成人在线视频观看| 久久久久久一区| 女同一区二区免费aⅴ| 欧美日韩午夜在线视频| 欧美一级二级在线观看| 天天碰免费视频| 欧美理伦片在线播放| 欧美精品一区三区| 中文天堂在线播放| 久久久久成人黄色影片| 黄色www网站| eeuss国产一区二区三区四区| 日韩性生活视频| 这里只有精品999| 久久久噜噜噜久久中文字幕色伊伊| 成人午夜免费在线视频| 麻豆久久一区| 久久综合久久美利坚合众国| 伊人精品在线视频| 国产日韩精品视频一区| 欧美一级片中文字幕| 亚洲第一二三区| 欧美在线不卡区| 亚洲欧洲视频在线观看| 亚洲成人av资源| 丰满熟女人妻一区二区三区| 欧美日韩一区二区国产| 99re视频| 欧美xxxx黑人又粗又长| 精品美女被调教视频大全网站| a级片在线观看免费| 国产精品一区二区91| 国产免费一区二区三区四在线播放| 国产成人精品一区二区三区在线| 在线观看视频99| 亚洲天堂免费av| 综合电影一区二区三区| 色哟哟免费视频| 亚洲精品人人| 欧美性xxxx69| 666av成人影院在线观看| 国产亚洲欧美日韩精品| 一级黄色片在线观看| 国产精品久久久久三级| 小早川怜子一区二区三区| 亚洲欧美伊人| 久久国产精品 国产精品| 在线观看爽视频| 夜夜躁日日躁狠狠久久88av| 国产精品久久久国产盗摄| 亚洲三级在线观看| 在线免费观看污视频| 亚洲欧美日韩综合国产aⅴ| 日韩在线国产| 欧美.com| 57pao成人国产永久免费| 国产在线三区| 91精品国产综合久久精品| 日本在线视频中文字幕| 国产亚洲精品bt天堂精选| 精品久久久久久久无码| 亚洲国产精品久久久久蝴蝶传媒| 成人免费看片网址| 欧美大片1688| 欧美成人免费小视频| 日韩在线视频观看免费| 欧美在线三级电影| 久久久精品人妻一区二区三区四 | 日韩影视在线| 亚洲美女福利视频网站| 国产又粗又猛又黄又爽无遮挡| 亚洲伊人伊色伊影伊综合网| 精品人伦一区二区三电影| 激情国产一区二区| 各处沟厕大尺度偷拍女厕嘘嘘 | 国产精品国三级国产av| 精品影片在线观看的网站| 国产日韩精品在线播放| 白白色在线观看| 日日骚av一区| 免费在线高清av| 日韩网站在线看片你懂的| 成人h动漫精品一区二区下载| 亚洲欧美另类久久久精品2019| 欧美熟妇精品黑人巨大一二三区| 国产一区二区按摩在线观看| 少妇高清精品毛片在线视频| 欧美1区3d| 亚洲一区在线直播| 一道本一区二区三区 | 色老板在线视频一区二区| 成人欧美在线观看| 欧美亚洲韩国| 国内外成人免费激情在线视频| av成人手机在线| 亚洲精品一区二区在线| 亚洲精品视频专区| 在线播放日韩导航| 中文字幕在线观看欧美| 欧美午夜激情小视频| 国产亚洲精品码| 亚洲视频免费观看| 长河落日免费高清观看| 久久久久久久久99精品| 特大黑人巨人吊xxxx| 成人激情免费网站| 亚洲日本韩国一区| 99精品视频免费版的特色功能| 日韩电影一二三区| 一本大道熟女人妻中文字幕在线 | 欧美精品电影在线| 快射av在线播放一区| 一区二区日韩精品| 黄色片在线免费看| 亚洲乱码av中文一区二区| 天天综合网在线观看| 精品嫩草影院久久| 亚洲欧美国产高清va在线播放| 日韩欧美亚洲另类制服综合在线| 国产精品女人久久久| 欧美日本在线视频| 亚洲无码精品在线观看| 欧美视频在线观看一区| 黄色污污网站在线观看| 色婷婷av久久久久久久| 成人毛片在线播放| 日韩欧美999| 香蕉污视频在线观看| 日本精品视频一区二区三区| 日本黄色中文字幕| 欧美在线视频全部完| 亚洲最新av网站| 欧美久久久久久蜜桃| 国产精品视频a| 日韩三级免费观看| 亚洲免费成人网| 日韩成人激情视频| 玖玖综合伊人| 色综合伊人色综合网站| av在线官网| 欧美激情一区二区三区在线视频观看| 激情图片在线观看高清国产| 992tv成人免费影院| 精品91久久| 国产精品直播网红| 精品中文视频| 精品不卡在线| 精品日韩一区| 日本一区二区三区四区五区六区| 中文字幕日韩一区二区不卡| 久艹视频在线免费观看| 久久男女视频| 亚洲色图欧美自拍| 成人国产视频在线观看| 亚欧洲乱码视频| 国产精品色呦呦| 精品一区在线视频| 色妹子一区二区| 91精品在线视频观看| 亚洲精品一区二区三区蜜桃下载| 日本高清中文字幕二区在线| 日韩中文字幕视频在线| 丁香花高清在线观看完整版| 国产精品久久久久久av下载红粉 | 国产很黄免费观看久久| 污片免费在线观看| 国产精品剧情在线亚洲| 日本一级黄色大片| 欧美日韩一区视频| 深夜福利视频网站| 最近2019年中文视频免费在线观看| 尤物在线网址| 国产精品看片资源| 精品素人av| 一区二区三区观看| 亚洲专区免费| 激情成人在线观看| 久久久www成人免费无遮挡大片| 唐朝av高清盛宴| 91久久一区二区| 乱精品一区字幕二区| 中文字幕精品—区二区| 黄色视屏在线免费观看| 91亚洲精品久久久| 自拍亚洲一区| 久久久性生活视频| 国产精品一区二区免费不卡| 欧美福利第一页| 精品美女国产在线| av网站在线免费看| 中文国产成人精品久久一| 麻豆免费在线| www国产亚洲精品| 久久久国产精品| 成人亚洲视频在线观看| 国产成都精品91一区二区三| 国产精品天天干| 色综合天天在线| 色婷婷激情五月| 欧美福利视频在线| a一区二区三区亚洲| 日韩资源av在线| 性欧美暴力猛交另类hd| 欧产日产国产精品98| 一区二区三区精品久久久| 中文字幕在线观看国产| 亚洲午夜色婷婷在线| 欧洲一区精品| 精品中文字幕一区| 1024日韩| 精品一区二区视频在线观看| 一区二区三区在线免费视频| 国产伦精品一区二区三区四区| 亚洲三级理论片| 日本免费不卡一区二区| 日韩成人免费看| 成都免费高清电影| 色综合久久99| 国产小视频免费在线观看| 18久久久久久| 日韩av黄色在线| 国产免费黄色av| 99国产精品久久久久久久久久久| 在线看成人av| 精品在线观看国产| 欧美成人精品三级网站| 人禽交欧美网站免费| 三级久久三级久久| 天堂资源在线视频| 在线成人av影院| av毛片在线看| 国产高清精品一区二区| 在线日本成人| 在线免费观看日韩av| 91国产精品成人| av男人的天堂在线| 91欧美精品成人综合在线观看| 久久精品国内一区二区三区水蜜桃 | 手机看片国产日韩| 欧美日韩一卡二卡三卡| 蜜桃视频在线观看www社区| 亚洲a级在线播放观看| 欧美涩涩视频| 欧美深性狂猛ⅹxxx深喉| 色激情天天射综合网| 91短视频版在线观看www免费| 91日韩在线视频| 尤物在线精品| 免费看污片网站| 91麻豆精品国产91久久久使用方法| caoporn免费在线视频| 国产日韩一区欧美| 日产国产高清一区二区三区| 九九精品视频免费| 精品粉嫩超白一线天av| 欧美xxxx做受欧美护士| 男人天堂网站在线| www激情久久| 在线观看中文字幕码| 欧美高清视频在线| 亚洲小说图片视频| 国产无遮挡猛进猛出免费软件 | 中文字幕一区日韩精品| 国产99久久九九精品无码| 国产精品久久久久国产精品日日| www.国产黄色| 国产成人精品国内自产拍免费看| 婷婷亚洲五月色综合| 俄罗斯黄色录像| 欧美色区777第一页| 天堂av资源在线观看| 欧美一区二区影视| 国产成人一区二区精品非洲| 成人毛片在线播放| 欧美成人午夜激情| 国产欧美一区二区精品久久久| 亚洲黄色av片| 色婷婷综合中文久久一本| 黄色在线观看网站| 欧美乱偷一区二区三区在线| 国产.欧美.日韩| 亚洲一区二区三区网站| 欧美一区视频在线|