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

loongarch架構介紹(四)TLB異常處理

開發 架構
本文介紹了loongarch架構中軟件管理TLB的機制、TLB重填異常和其他TLB相關的異常,以及相應的異常處理和代碼分析。

??想了解更多關于開源的內容,請訪問:??

??51CTO 開源基礎軟件社區??

??https://ost.51cto.com??

前言

上一篇文章中介紹了loongarch架構中的地址翻譯模式及其配置方法,涉及到虛擬內存系統中頁表相關的管理。本文中則介紹TLB相關的異常處理,并結合代碼進行分析。因為loongarch架構中采用的是一種軟件管理TLB的方法,所以其處理流程和軟件所需要進行的管理操作與很多常見的架構不同。

1、TLB表項和頁表項

首先介紹TLB表項和頁表項的格式,作基本的了解。

(1)頁表項格式

下圖為loongarch中的頁表項格式:

# loongarch架構介紹# [四] TLB異常處理-開源基礎軟件社區

下面為各位的說明:

  • V:有效位。標志頁表項是否有效。
  • D:臟位。標志頁內容是否需要回寫。
  • MAT:存儲訪問類型。見前面的文章。
  • G:是否為全局頁。
  • P:物理頁是否存在。
  • W:是否可寫。
  • H:是否為大頁。
  • PA:物理地址高地址部分。
  • NR:不可讀位。表示該頁不可讀。
  • NX:不可執行位。表示該頁不可執行。
  • PLV和RPLV:特權級,當RPLV=0,表示可以被任何特權級不低于PLV的程序訪問;當RPLV=1,表示僅可以被特權級等于PLV的程序訪問

其中,大頁的頁表項和基本頁的頁表項在格式上的主要區別是H位和G位。并且基本頁的頁表項在末級頁表,而大頁的頁表項實際上是替代了原來的頁目錄項。

另外,對于基本頁的頁表項,loongarch中每個頁表項存放了相鄰的一對奇偶相鄰頁表信息。如下圖:

# loongarch架構介紹# [四] TLB異常處理-開源基礎軟件社區

(2)TLB表項格式

下圖為loongarch中的TLB表項格式:

# loongarch架構介紹# [四] TLB異常處理-開源基礎軟件社區

其中,每個TLB表項分為兩個部分:第一行為比較部分,下面兩行為物理轉換部分。

TLB表項的比較部分包括:

  • E:存在位,1比特。為1時表示存在。用于TLB查找時判斷。
  • ASID:address space identifier,10比特。用于區分不同的進程或虛擬地址空間,減少進程上下文切換等操作時刷新TLB的性能損失。TLB查找時也需匹配ASID。具體見后面的文章。
  • G:全局位,1比特。用于取消ASID的作用,標識為全局的表項。
  • PS:頁大小,6比特。用于支持不同的頁大小。如對于16KB的頁,PS=14。
  • VPPN:虛雙頁號,對應一對頁表項信息。對于基本頁的頁表項,loongarch中每個頁表項存放了相鄰的一對奇偶相鄰頁表信息,所以TLB表項中存放的虛頁號是系統中虛頁號/2的內容,即虛頁號的最低位不需要放在TLB中。查找TLB時根據被查找虛頁號的最低位決定是選擇奇數號頁還是偶數號頁的物理轉換信息。
    而對于大頁的頁表項,硬件上會自動將其拆分為兩個尺寸折半的頁表項存儲在TLB中。如對于32MB的大頁,TLB會存儲兩個16MB大小的表項。

因為TLB和頁表雙頁存儲的特性,每個TLB表項中有兩個物理轉換信息。物理轉換信息中PPN即物理頁號,其他和上文中頁表中的對應。

2、軟件管理TLB

類似于MIPS架構,loongarch中使用的是一種軟件管理TLB的方式。在大多數其他的架構中,采用的都是通過硬件管理TLB的方式。軟件管理TLB帶來了更多的靈活性,但性能相對較差。

硬件管理TLB中,在忽略page fault的細節和cache的情況下,虛擬地址轉換到物理地址的過程如下圖:

# loongarch架構介紹# [四] TLB異常處理-開源基礎軟件社區

其中,TLB miss后查找頁表的這個過程是由硬件自動完成的,軟件只需處理后面產生的page fault。整個過程中最多產生一次page fault。

下圖則為軟件管理TLB方案中虛擬地址轉換到物理地址的過程:

# loongarch架構介紹# [四] TLB異常處理-開源基礎軟件社區

具體解釋如下:

  1. TLB miss后會產生第一次TLB重填(TLB refill)異常,在TLB重填異常中需要軟件去遍歷頁表并填充TLB表項,這里應該是軟件管理TLB和硬件管理TLB最大的不同。
  2. 然后TLB重填異常處理中,如果填充的頁表項仍然無效,那么在返回后再次查詢TLB時,會第二次產生其他的fault處理,以填充頁表項、或填充頁表項和TLB項。
  3. 如果第二次fault處理中沒有重填TLB表項,那么在返回后再次查詢TLB時,還會產生第三次TLB重填異常。

可以看到,TLB miss后查找頁表的這個過程需要軟件進行處理,并且整個過程中最多能產生三次異常。

另外,硬件上會保證在TLB重填異常中不能再次產生TLB重填異常。

3、TLB相關異常

loongarch中TLB相關的異常有:

  • TLB重填異常:TLB miss后產生該異常
  • load操作頁無效異常:load操作的虛擬地址在TLB中找到了匹配項,但該匹配項的V=0時觸發
  • store操作頁無效異常:store操作的虛擬地址在TLB中找到了匹配項,但該匹配項的V=0時觸發
  • 取指操作頁無效異常:取指操作的虛擬地址在TLB中找到了匹配項,但該匹配項的V=0時觸發
  • 頁特權等級不合規異常:訪存操作的虛擬地址在TLB中找到了匹配項且V=1,但訪問的特權等級不合規時觸發。參考上文頁表項中的PLV和RPLV域。
  • 頁修改異常:store操作的虛擬地址在TLB中找到了匹配項且V=1且特權合規,但該匹配項的D=0時觸發
  • 頁不可讀異常:load操作的虛擬地址在TLB中找到了匹配項且V=1且特權合規,但該匹配項的NR=1時觸發
  • 頁不可執行異常:取指操作的虛擬地址在TLB中找到了匹配項且V=1且特權合規,但該匹配項的NX=1時觸發

其中,TLB重填異常時需遍歷頁表進行重填工作。TLB重填異常于一般的異常不同,其擁有獨立的異常入口、獨立的用于維護現場的控制狀態寄存器和一套獨立的TLB訪問接口控制寄存器,并且因此TLB重填異??梢栽谄渌惓L幚磉^程中被觸發。而當進入TLB重填異常時,硬件會自動設置CSR.CRMD.DA=1和CSR.CRMD.PG=0,即進入直接地址翻譯模式,從而避免在TLB重填異常中不能再次產生TLB重填異常。

而如load操作頁無效異常等異常,則需要完成類似于page fault的工作。

4、相關指令

在介紹TLB相關異常的處理之前,先對loongarch中相關的指令進行介紹。

(1)TLB異常處理相關指令

  • tlbsrch:查詢TLB對應index。該指令使用CSR.ASID和CSR.TLBEHI中的信息查詢TLB,如果命中則將其對應index寫入CSR.TLBIDX.Index,否則將CSR.TLBIDX.NE置為1。index可用于tlbwr等指令,指示操作的TLB索引。
  • tlbrd:讀取index對應TLB表項。將CSR.TLBIDX.Index作為索引,讀取TLB中的指定項。如果該TLB項有效,則將該TLB項的頁表項信息寫入到CSR.TLBEHI、CSR.TLBELO0、CSR.TLBELO1和CSR.TLBINX.PS這些相關寄存器,并將CSR.TLBIND.NE置0;如果無效,則將CSR.TLBIND.NE置1。
  • tlbwr:寫入index對應TLB表項。將CSR.TLBIDX.Index作為索引,把CSR.TLBEHI、CSR.TLBELO0、CSR.TLBELO1和CSR.TLBINX.PS這些相關寄存器中的頁表項信息寫入TLB中的指定項。其中,如果CSR.TLBIND.NE置為1,寫入的是一個無效TLB項。
  • tlbfill:類似于tlbwr指令,不同的是tlbfill寫入TLB位置由硬件隨機決定。

具體案例可見后文相關代碼分析。

(2)頁表遍歷相關指令

  • lddir rd, rj, level:訪問頁目錄項。
  • level表示訪問頁表的級別。參考上一篇文章中的頁表分級。level為1-4分別對應CSR.PWCL中的PT、Dir1、Dir2、Dir3。
  • 如果通用寄存器rj中第6位是0,則rj表示第level級頁表的基址。此時lddir指令會根據當前處理的TLB重填地址訪問level級頁表,取回對應level-1級頁表的基址到rd中。
  • 如果通用寄存器rj中第6位是1,則rj為一個大頁的頁表項。此時lddir指令會直接將rj寫入到rd中。
  • ldpte rj, req:訪問頁表項。
  • seq表示訪問的是奇數頁還是偶數頁。訪問偶數頁時結果將寫入CSR.TLBRELO0,訪問奇數頁時結果將寫入CSR.TLBRELO1。
  • 如果通用寄存器rj中第6位是0,則rj表示末級頁表的基址。此時ldpte指令會根據當前處理的TLB重填地址訪問末級頁表,取回對應頁表項到CSR.TLBRELO0或CSR.TLBRELO1中。
  • 如果通用寄存器rj中第6位是1,則rj為一個大頁的頁表項。此時lddir指令會直接將rj轉換為最終的頁表項格式寫入到CSR.TLBRELO0或CSR.TLBRELO1中。

具體案例可見后文相關代碼分析。

5、TLB相關異常處理

下面結合linux源碼對TLB相關異常處理進行分析。

linux中TLB相關異常和相關處理函數的對應關系如下:

  • TLB重填異常:handle_tlb_refill
  • load/取指操作頁無效異常:handle_tlb_load
  • store操作頁無效異常:handle_tlb_store
  • 頁修改異常:handle_tlb_modify
  • 頁不可讀/不可寫/特權不合規異常:handle_tlb_protect

這里分析handle_tlb_refill、handle_tlb_load和handle_tlb_protect函數。其中handle_tlb_store和handle_tlb_modify實際上流程與handle_tlb_load基本一致,只是更新頁表項時更新的位不同。

(1)TLB重填異常

TLB重填異常(handle_tlb_refill)觸發前后硬件中的處理與一般異常存在差異,主要是TLB重填異常相關有獨立的一套寄存器。但都會有相應保存和恢復現場、跳轉和返回操作。值得注意的是,TLB重填異常中出錯的地址保存在CSR.TLBRBADV寄存器,而一般異常出錯的地址保存在CSR.BADV寄存器。

TLB重填異常的軟件處理過程如下:

  1. 保存現場
  2. 根據CSR.TLBRBADV中記錄的缺失虛擬地址,和CSR.PGD中pgd基址,遍歷發生TLB重填異常的進程的多級頁表,從內存中取回頁表項信息并填入CSR.TLBELO0和CSR.TLBELO1寄存器的相應域中
  3. 根據填入的CSR.TLBELO0和CSR.TLBELO1寄存器信息,最終用tlbfill指令將頁表項填入TLB
  4. 恢復并返回

代碼分析如下:

SYM_FUNC_START(handle_tlb_refill)
csrwr t0, LOONGARCH_CSR_TLBRSAVE // 將t0保存到CSR.TLBRSAVE寄存器
csrrd t0, LOONGARCH_CSR_PGD // 讀取pgd基址到t0
lddir t0, t0, 3 // 根據CSR.TLBRBADV中記錄的缺失虛擬地址,
// 訪問3級頁表,讀取2級頁表基址到t0(pgd為3級頁表基址)
#if CONFIG_PGTABLE_LEVELS > 3
lddir t0, t0, 2 // 根據CSR.TLBRBADV中記錄的缺失虛擬地址,
// 訪問2級頁表,讀取1級頁表基址到t0
#endif
#if CONFIG_PGTABLE_LEVELS > 2
lddir t0, t0, 1 // 根據CSR.TLBRBADV中記錄的缺失虛擬地址,
// 訪問1級頁表,讀取末級頁表地址或大頁到t0
#endif
ldpte t0, 0 // 根據CSR.TLBRBADV中記錄的缺失虛擬地址,
// 訪問末級頁表或大頁,讀取偶數號頁表項或大頁到CSR.TLBELO0
ldpte t0, 1 // 根據CSR.TLBRBADV中記錄的缺失虛擬地址,
// 訪問末級頁表或大頁,讀取奇數號頁表項或大頁到CSR.TLBELO1
tlbfill // 根據CSR.TLBELO0、CSR.TLBELO1等寄存器中信息,
// 將頁表項填入TLB
csrrd t0, LOONGARCH_CSR_TLBRSAVE // 恢復t0
ertn // 從異常返回
SYM_FUNC_END(handle_tlb_refill)

(2)load/取指操作頁無效異常

load/取指操作頁無效異常觸發前后硬件中的處理與一般異常相同。

handle_tlb_load處理的過程如下:

  1. 保存現場
  2. 根據CSR.BADV中記錄的缺失虛擬地址,和CSR.PGD中pgd基址,遍歷發生異常的進程的多級頁表,從內存中取回頁表項(或大頁)信息
  3. 判斷該頁表項是否存在,如果不存在則會跳轉執行缺頁處理函數
  4. 如果存在則將頁表項置為有效并填入TLB。最后恢復并返回

代碼分析如下:

SYM_FUNC_START(handle_tlb_load)
// 將t0、t1、ra寫入CSR.SAVE0-CSR.SAVE3,暫存寄存器
csrwr t0, EXCEPTION_KS0
csrwr t1, EXCEPTION_KS1
csrwr ra, EXCEPTION_KS2
/*
* The vmalloc handling is not in the hotpath.
*/
// 如果CSR.BADV不小于0,則繼續執行到vmalloc_done_load
// 將CSR.BADV和CSR.PGDL讀入t0和t1
// 否則跳轉到vmalloc_load將CSR.BADV和swapper_pg_dir讀入t0和t1
// 即CSR.BADV不小于0時使用低半部分內核地址的pgd,
// 否則使用高半部分用戶地址的pgd
csrrd t0, LOONGARCH_CSR_BADV
bltz t0, vmalloc_load
csrrd t1, LOONGARCH_CSR_PGDL
vmalloc_done_load:
/* Get PGD offset in bytes */
// 根據t0中CSR.BADV地址和t1中pgd基址,遍歷頁表查找
bstrpick.d ra, t0, PTRS_PER_PGD_BITS + PGDIR_SHIFT - 1, PGDIR_SHIFT
alsl.d t1, ra, t1, 3
#if CONFIG_PGTABLE_LEVELS > 3
ld.d t1, t1, 0
bstrpick.d ra, t0, PTRS_PER_PUD_BITS + PUD_SHIFT - 1, PUD_SHIFT
alsl.d t1, ra, t1, 3
#endif
#if CONFIG_PGTABLE_LEVELS > 2
ld.d t1, t1, 0
bstrpick.d ra, t0, PTRS_PER_PMD_BITS + PMD_SHIFT - 1, PMD_SHIFT
alsl.d t1, ra, t1, 3
// 到這里t1中為1級頁表(pmd)地址
#endif
// 將1級頁表中第一個表項讀取到ra
ld.d ra, t1, 0
/*
* For huge tlb entries, pmde doesn't contain an address but
* instead contains the tlb pte. Check the PAGE_HUGE bit and
* see if we need to jump to huge tlb processing.
*/
// 如果ra中表項為大頁,則跳轉到tlb_huge_update_load
rotri.d ra, ra, _PAGE_HUGE_SHIFT + 1
bltz ra, tlb_huge_update_load

rotri.d ra, ra, 64 - (_PAGE_HUGE_SHIFT + 1)
bstrpick.d t0, t0, PTRS_PER_PTE_BITS + PAGE_SHIFT - 1, PAGE_SHIFT
alsl.d t1, t0, ra, _PTE_T_LOG2
// 到這里t1中為CSR.BADV對應末級頁表項地址

// 讀取頁表項到t0
#ifdef CONFIG_SMP
smp_pgtable_change_load:
ll.d t0, t1, 0 // smp中使用ll/sc原子指令對循環寫入
#else
ld.d t0, t1, 0
#endif
// 如果頁表項不存在,則跳轉到nopage_tlb_load調用缺頁處理函數
// 否則繼續向下執行,寫入對應有效的頁表項到TLB
andi ra, t0, _PAGE_PRESENT
beqz ra, nopage_tlb_load

// 設置有效位并更新頁表項
ori t0, t0, _PAGE_VALID
#ifdef CONFIG_SMP
sc.d t0, t1, 0
beqz t0, smp_pgtable_change_load // 寫入失敗時跳轉
#else
st.d t0, t1, 0
#endif
// 根據CSR.ASID和CSR.TLBEHI的信息查詢TLB,以便tlbwr指令寫入
// 如果命中則將其索引寫入CSR.TLBIDX,否則將CSR.TLBIDX.NE置為1
// 這里必然會命中
tlbsrch

// t0 = 偶數項頁表項,t1 = 奇數項頁表項
bstrins.d t1, zero, 3, 3
ld.d t0, t1, 0
ld.d t1, t1, 8
// 寫入TLB相關寄存器
csrwr t0, LOONGARCH_CSR_TLBELO0
csrwr t1, LOONGARCH_CSR_TLBELO1
// 根據CSR.TLBELO0、CSR.TLBELO1、CSR.TBLIDX等相關寄存器信息,
// 將頁表項信息寫入TLB中CSR.TBLIDX.index對應位置
tlbwr
// 恢復并返回
csrrd t0, EXCEPTION_KS0
csrrd t1, EXCEPTION_KS1
csrrd ra, EXCEPTION_KS2
ertn
#ifdef CONFIG_64BIT
vmalloc_load:
la.abs t1, swapper_pg_dir
b vmalloc_done_load
#endif
/* This is the entry point of a huge page. */
tlb_huge_update_load:
// 對于大頁,異常處理的流程和上面基本頁表項的處理流程基本一致
// 只是填入TLB時會做一些額外的格式轉換處理等,這里不再贅述
...
nopage_tlb_load:
dbar 0
csrrd ra, EXCEPTION_KS2
la.abs t0, tlb_do_page_fault_0
jr t0
SYM_FUNC_END(handle_tlb_load)

(3)頁不可讀/不可寫/特權不合規異常

頁不可讀/不可寫/特權不合規異常觸發前后硬件中的處理與一般異常相同。

handle_tlb_protect處理的過程實際上就是調用缺頁處理函數,來填入頁表。

代碼分析如下:

SYM_FUNC_START(handle_tlb_protect)
// 保存寄存器
BACKUP_T0T1
SAVE_ALL
// 設置傳參
move a0, sp
move a1, zero
csrrd a2, LOONGARCH_CSR_BADV
REG_S a2, sp, PT_BVADDR
// 調用do_page_fault
la.abs t0, do_page_fault
jirl ra, t0, 0
// 恢復并返回
RESTORE_ALL_AND_RET
SYM_FUNC_END(handle_tlb_protect)

總結

本文介紹了loongarch架構中軟件管理TLB的機制、TLB重填異常和其他TLB相關的異常,以及相應的異常處理和代碼分析。

軟件管理TLB機制、處理TLB相關異常,算是loongarch架構中TLB相關軟件維護中較為特別的地方。下一篇文章將繼續介紹loongarch中其他的TLB維護和相關指令。

??想了解更多關于開源的內容,請訪問:??

??51CTO 開源基礎軟件社區??

??https://ost.51cto.com??

責任編輯:jianghua 來源: 51CTO 開源基礎軟件社區
相關推薦

2023-03-01 14:59:08

TLB維護架構

2022-12-15 17:31:41

架構龍芯

2023-02-03 14:41:03

地址翻譯模式loongarch

2023-01-04 15:20:51

loongarch架構

2009-09-14 14:17:11

Linq異常處理

2009-12-17 10:29:04

Ruby異常處理結構

2011-07-21 15:20:41

java異常處理機制

2009-08-05 18:28:05

C#異常處理

2023-12-13 13:28:00

Spring全局異常處理架構

2023-12-11 14:19:00

Java程序異常

2013-08-22 17:10:09

.Net異常處理

2012-12-21 10:48:20

Java異常

2022-10-08 11:16:04

UbuntuLoongArch

2019-11-14 09:19:47

Python程序員系統

2012-11-12 10:32:48

IBMdw

2018-07-11 19:41:47

MySQL定義異常異常處理

2010-01-07 09:31:27

Json數據異常

2009-07-17 17:34:03

SwingWorker異常處理

2013-07-15 16:28:15

iOS多線程GCD介紹Dispatch Qu

2025-06-12 03:55:00

項目處理異常代碼
點贊
收藏

51CTO技術棧公眾號

久久久久国产精品麻豆| 国产综合久久| 日韩一区二区免费在线电影| 日产精品久久久久久久蜜臀| 视频在线不卡| 久久国内精品自在自线400部| 久久中文字幕在线| 毛茸茸多毛bbb毛多视频| 福利精品一区| 偷拍一区二区三区| 最新国产精品久久| 日韩av资源站| 国产成人亚洲综合色影视| 欧美孕妇毛茸茸xxxx| 中日韩一级黄色片| 最近国产精品视频| 亚洲成色777777在线观看影院| 乱子伦视频在线看| 丁香高清在线观看完整电影视频| 国产精品丝袜久久久久久app| 国产亚洲自拍偷拍| av官网在线观看| 日韩电影在线一区二区三区| 性色av一区二区咪爱| 五月天色婷婷丁香| 国产日产精品一区二区三区四区的观看方式 | 成人欧美一区二区三区在线观看| 波多野结衣黄色| 日韩午夜av| 欧美精品亚州精品| 欧美日韩国产黄色| 一区二区三区日本久久久| 精品播放一区二区| 国产高清av片| 日韩精品一页| 欧美午夜电影网| 波多野结衣家庭教师视频| 国产盗摄一区二区| 亚洲乱码中文字幕| 中文字幕制服丝袜在线| 懂色av中文在线| 久久久久久9999| 蜜桃999成人看片在线观看| 亚洲黄色在线播放| 丰满岳乱妇一区二区三区| 91香蕉亚洲精品| 国产视频第二页| 极品少妇xxxx精品少妇偷拍| 国产精品永久在线| 中文字幕在线视频免费| 日韩和的一区二区| 国产精品美乳一区二区免费 | 无码人中文字幕| av亚洲免费| 一本久久综合亚洲鲁鲁| youjizz亚洲女人| jlzzjlzz亚洲女人| 丝袜美腿精品国产二区| 国产又色又爽又高潮免费| 欧美肥老太太性生活| 日韩视频免费观看| 欧美 日韩 国产 一区二区三区| 亚洲精品电影| 欧美国产乱视频| jizz国产免费| 香蕉成人久久| 国产精品啪视频| 在线黄色av网站| 国产精品自拍一区| 成人av资源| 免费a在线观看| 中文字幕免费观看一区| 五月天男人天堂| 午夜影院免费在线| 欧美日韩在线一区| 久久这里只精品| 日韩精品三级| 日韩av在线一区| youjizz亚洲女人| 亚洲老妇激情| 4438全国成人免费| 中文字幕免费播放| 高清不卡一区二区在线| 免费精品视频一区二区三区| 91caoporn在线| 一区二区三区在线视频免费观看| 秋霞无码一区二区| 成人国产精选| 亚洲国产高清福利视频| 久久久视频6r| 怡红院精品视频在线观看极品| 欧美一区二区影院| 国产免费福利视频| 26uuu欧美日本| 免费看污污视频| 中日韩脚交footjobhd| 欧美喷潮久久久xxxxx| 国产大尺度视频| 久久性感美女视频| 国内精品久久久久| 正在播放木下凛凛xv99| 99视频在线观看一区三区| 亚洲精品国产精品国自产观看| 国产第一页在线视频| 欧美色视频一区| 波多野结衣先锋影音| 亚洲91精品| 国产国语刺激对白av不卡| 亚洲乱色熟女一区二区三区| 国产欧美日韩视频在线观看| www.av毛片| 午夜不卡一区| 在线日韩中文字幕| 国产三级av片| 高清国产午夜精品久久久久久| 性刺激综合网| 浪潮色综合久久天堂| 精品国产亚洲在线| caoporn91| 蜜桃精品视频在线| 欧美成人一区二区在线| 美女网站视频在线| 91精品国产欧美一区二区| 一道本在线观看| 99国产精品视频免费观看一公开| 91在线精品播放| 午夜免费福利在线观看| 日本高清成人免费播放| 日本黄色免费观看| 黄色av日韩| 国产91视觉| 中文字幕在线播放网址| 91精品国产一区二区| 免费91在线观看| 日韩激情中文字幕| 欧美精品久久久| 高清在线视频不卡| 亚洲精品成人久久电影| 豆国产97在线 | 亚洲| 国产大陆精品国产| 国产911在线观看| 日韩精品一区二区三区中文在线| 最近日韩中文字幕中文| 自拍偷拍第八页| 国产精品久久午夜| 超碰人人草人人| 亚洲激情久久| 97碰碰视频| 国内高清免费在线视频| 精品久久久久久综合日本欧美| 538精品在线观看| 成人一道本在线| 老太脱裤子让老头玩xxxxx| 国产精品调教视频| 555www成人网| 国产一级网站视频在线| 欧美影片第一页| 韩国一级黄色录像| 国产激情一区二区三区四区| 国产青草视频在线观看| 激情小说一区| 日韩av成人在线| 日本成人网址| 欧美成人官网二区| 欧美在线播放视频| 亚洲精品一区二区三区四区| 亚洲午夜久久久久久久久久久 | 九色精品美女在线| 成人午夜免费在线观看| 欧美性猛交xxxx黑人猛交| 成人黄色免费网址| 韩国女主播成人在线| 香港三级日本三级a视频| 乱亲女h秽乱长久久久| 国产成人久久久精品一区| 亚洲图片88| 日韩精品中文字幕一区二区三区 | av网在线播放| 国内成人自拍视频| 国内精品视频一区二区三区| 欧美伦理影院| 国产成人成网站在线播放青青| 最新日韩精品| 久久影视电视剧免费网站| 黑人精品一区二区| 欧美在线观看一区二区| 日本老熟俱乐部h0930| 97精品国产露脸对白| 国产精品拍拍拍| 激情丁香综合| 亚洲一区三区视频在线观看| 爱高潮www亚洲精品| 国产成人综合久久| 欧美xxx黑人xxx水蜜桃| 尤物yw午夜国产精品视频明星| 性生交大片免费看女人按摩| 91九色最新地址| 久久一区二区三| 国产精品私人影院| 人妻在线日韩免费视频| 捆绑紧缚一区二区三区视频| 男女激情无遮挡| 伊人成综合网| 亚洲欧美日韩另类精品一区二区三区| 成人台湾亚洲精品一区二区| 国产精品com| 国产99在线观看| 九九热这里只有精品6| 99视频在线观看地址| 亚洲国产欧美久久| 成人1区2区3区| 欧美精品日日鲁夜夜添| 黄色在线免费观看| 天天操天天综合网| 欧美极品视频在线观看| 国产精品成人在线观看| 精品人妻互换一区二区三区| 成人黄色在线视频| 又黄又爽又色的视频| 日本在线不卡一区| 日韩av播放器| 国产精品普通话对白| 国产一二三区在线播放| 久久久9色精品国产一区二区三区| 蜜桃999成人看片在线观看| 成人免费直播在线| 97伦理在线四区| 亚洲精品黑牛一区二区三区| 国产久一一精品| 99九九久久| 91精品国产91久久久久久| 四季久久免费一区二区三区四区| 日韩有码在线播放| 亚洲天天影视| 久久精品成人欧美大片| 99精品老司机免费视频| 一区二区三区国产视频| 成人18在线| 一本色道久久综合狠狠躁篇的优点 | av爱爱亚洲一区| www.男人天堂| 97se亚洲国产综合自在线观| 强迫凌虐淫辱の牝奴在线观看| 成人一区在线观看| 免费黄色三级网站| 91在线一区二区| 日韩一区二区a片免费观看| 久久人人97超碰com| 色婷婷av777| 国产欧美一区二区三区沐欲 | 色欲久久久天天天综合网 | 国产精品无码专区| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 亚洲四虎影院| 国产精品久久久久久久av大片| 成人看片网站| 成人国产精品色哟哟| 91亚洲精品在看在线观看高清| 成人黄色在线观看| 亚洲国产中文在线| 国产在线精品二区| 伊人久久大香线蕉综合网蜜芽 | 亚洲成人日韩| 日韩成人三级视频| 日韩视频一区| 最新中文字幕2018| 国产美女娇喘av呻吟久久| 99热超碰在线| 欧美激情综合在线| av成人免费网站| 精品人伦一区二区三区蜜桃网站| 久久久久久久久黄色| 欧美另类一区二区三区| 午夜美女福利视频| 亚洲天堂精品在线| 成人片在线看| 奇米一区二区三区四区久久| 日韩国产91| 极品校花啪啪激情久久| 日本一区二区免费高清| 日本黄xxxxxxxxx100| av成人毛片| 日韩av一卡二卡三卡| av网站免费线看精品| 在线观看日本黄色| 亚洲成av人片在www色猫咪| 亚洲永久精品一区| 欧美成人bangbros| 国产精品二线| 久久久久久久久久国产精品| 久久久成人av毛片免费观看| 亚洲一区二区三区久久| 亚洲另类春色校园小说| 男人天堂成人网| 久久综合婷婷| 日本少妇xxxx软件| 国产精品系列在线| 在线天堂中文字幕| 日韩视频123| 在线观看二区| 456亚洲影院| 视频精品一区二区三区| 午夜免费电影一区在线观看| 极品av少妇一区二区| 爱爱爱爱免费视频| 久久免费看少妇高潮| 免费在线一区二区三区| 欧美午夜电影一区| 黄色av网址在线免费观看| 欧美激情女人20p| 亚洲精品aaa| 日韩欧美电影一区二区| 亚洲日本欧美| 香蕉视频在线观看黄| 国产精品久久久久影视| 亚洲婷婷综合网| 亚洲精品久久久久久下一站| 在线观看h网| 91精品国产自产在线| 欧美一区二区性| 日韩精品一区二区三区不卡 | 女人裸体性做爰全过| 日韩欧美精品免费在线| www.精品久久| 欧美久久精品一级黑人c片| 国产91亚洲精品久久久| 日韩欧美视频一区二区| 久久成人国产| 熟妇高潮精品一区二区三区| 亚洲第一久久影院| 国产18精品乱码免费看| 久国内精品在线| 美女精品久久| www.99riav| 国产成人精品免费视频网站| 超碰手机在线观看| 欧美一区二区三区在线| 二区三区四区高清视频在线观看| 国产日韩中文字幕在线| 久久国产精品亚洲人一区二区三区| 福利在线一区二区三区| 国产喷白浆一区二区三区| wwwwww在线观看| 中文日韩电影网站| 精品福利在线| 欧美爱爱视频网站| 天天干,天天干| 欧美性一二三区| 在线观看av黄网站永久| 国产欧美一区二区三区在线看 | av毛片在线免费观看| 亚洲色图综合久久| 99久久久国产精品免费调教网站 | 99在线高清视频在线播放| 在线一区免费| 88av在线播放| 狠狠久久五月精品中文字幕| 噜噜噜在线观看播放视频| 国产精品av网站| 91精品国产乱码久久久久久久| www.五月天色| 午夜亚洲福利老司机| 免费人成在线观看网站| 国产精品久久久久久网站| 嫩草影视亚洲| 日本在线播放一区二区| 亚洲精品乱码久久久久久黑人| 好男人www在线视频| 日韩美女免费线视频| 久久在线电影| av电影在线播放| 色一情一乱一乱一91av| 男人的天堂在线视频免费观看 | 韩国中文免费在线视频| 国产精品久久久久77777| 亚洲天堂一区二区三区四区| 国产欧美视频一区| 色婷婷久久久久swag精品| 日本三级视频在线观看| 国产乱码精品一区二区三区中文 | 国产视频在线一区二区| 手机在线免费看片| 91精品国产免费| 欧美激情网站| 致1999电视剧免费观看策驰影院| 国产美女在线精品| 一级成人黄色片| 久久久av电影| 自拍视频一区| 欧美图片自拍偷拍| 欧洲亚洲精品在线| 黑人精品视频| 午夜精品福利一区二区| 不卡视频一二三四| 亚洲天堂777| 日韩美女视频在线观看| 午夜精品久久| 日本美女bbw| 亚洲精品综合精品自拍| 欧美国产中文高清|