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

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

?? console.c

?? LINUX 0.11版內(nèi)核代碼。 并有代碼分析說明。
?? C
?? 第 1 頁 / 共 3 頁
字號:
/** linux/kernel/console.c** (C) 1991 Linus Torvalds*//** console.c** This module implements the console io functions* 'void con_init(void)'* 'void con_write(struct tty_queue * queue)'* Hopefully this will be a rather complete VT102 implementation.** Beeping thanks to John T Kohl.*//** 該模塊實現(xiàn)控制臺輸入輸出功能* 'void con_init(void)'* 'void con_write(struct tty_queue * queue)'* 希望這是一個非常完整的VT102 實現(xiàn)。** 感謝John T Kohl 實現(xiàn)了蜂鳴指示。*//** NOTE!!! We sometimes disable and enable interrupts for a short while* (to put a word in video IO), but this will work even for keyboard* interrupts. We know interrupts aren't enabled when getting a keyboard* interrupt, as we use trap-gates. Hopefully all is well.*//** 注意!!! 我們有時短暫地禁止和允許中斷(在將一個字(word)放到視頻IO),但即使* 對于鍵盤中斷這也是可以工作的。因為我們使用陷阱門,所以我們知道在獲得一個* 鍵盤中斷時中斷是不允許的。希望一切均正常。*//** Code to check for different video-cards mostly by Galen Hunt,* <g-hunt@ee.utah.edu>*//** 檢測不同顯示卡的代碼大多數(shù)是Galen Hunt 編寫的,* <g-hunt@ee.utah.edu>*/#include <linux/sched.h>	// 調(diào)度程序頭文件,定義了任務(wù)結(jié)構(gòu)task_struct、初始任務(wù)0 的數(shù)據(jù),// 還有一些有關(guān)描述符參數(shù)設(shè)置和獲取的嵌入式匯編函數(shù)宏語句。#include <linux/tty.h>		// tty 頭文件,定義了有關(guān)tty_io,串行通信方面的參數(shù)、常數(shù)。#include <asm/io.h>		// io 頭文件。定義硬件端口輸入/輸出宏匯編語句。#include <asm/system.h>		// 系統(tǒng)頭文件。定義了設(shè)置或修改描述符/中斷門等的嵌入式匯編宏。/** These are set up by the setup-routine at boot-time:*//** 這些是設(shè)置子程序setup 在引導啟動系統(tǒng)時設(shè)置的參數(shù):*/// 參見對boot/setup.s 的注釋,和setup 程序讀取并保留的參數(shù)表。#define ORIG_X (*(unsigned char *)0x90000)	// 光標列號。#define ORIG_Y (*(unsigned char *)0x90001)	// 光標行號。#define ORIG_VIDEO_PAGE (*(unsigned short *)0x90004)	// 顯示頁面。#define ORIG_VIDEO_MODE ((*(unsigned short *)0x90006) & 0xff)	// 顯示模式。#define ORIG_VIDEO_COLS (((*(unsigned short *)0x90006) & 0xff00) >> 8)	// 字符列數(shù)。#define ORIG_VIDEO_LINES (25)	// 顯示行數(shù)。#define ORIG_VIDEO_EGA_AX (*(unsigned short *)0x90008)	// [??]#define ORIG_VIDEO_EGA_BX (*(unsigned short *)0x9000a)	// 顯示內(nèi)存大小和色彩模式。#define ORIG_VIDEO_EGA_CX (*(unsigned short *)0x9000c)	// 顯示卡特性參數(shù)。// 定義顯示器單色/彩色顯示模式類型符號常數(shù)。#define VIDEO_TYPE_MDA 0x10 /* Monochrome Text Display */	/* 單色文本 */#define VIDEO_TYPE_CGA 0x11 /* CGA Display */	/* CGA 顯示器 */#define VIDEO_TYPE_EGAM 0x20 /* EGA/VGA in Monochrome Mode */	/* EGA/VGA 單色 */#define VIDEO_TYPE_EGAC 0x21 /* EGA/VGA in Color Mode */	/* EGA/VGA 彩色 */#define NPAR 16extern void keyboard_interrupt (void);	// 鍵盤中斷處理程序(keyboard.S)。static unsigned char video_type;	/* Type of display being used *//* 使用的顯示類型 */static unsigned long video_num_columns;	/* Number of text columns *//* 屏幕文本列數(shù) */static unsigned long video_size_row;	/* Bytes per row *//* 每行使用的字節(jié)數(shù) */static unsigned long video_num_lines;	/* Number of test lines *//* 屏幕文本行數(shù) */static unsigned char video_page;	/* Initial video page *//* 初始顯示頁面 */static unsigned long video_mem_start;	/* Start of video RAM *//* 顯示內(nèi)存起始地址 */static unsigned long video_mem_end;	/* End of video RAM (sort of) *//* 顯示內(nèi)存結(jié)束(末端)地址 */static unsigned short video_port_reg;	/* Video register select port *//* 顯示控制索引寄存器端口 */static unsigned short video_port_val;	/* Video register value port *//* 顯示控制數(shù)據(jù)寄存器端口 */static unsigned short video_erase_char;	/* Char+Attrib to erase with *//* 擦除字符屬性與字符(0x0720) */// 以下這些變量用于屏幕卷屏操作。static unsigned long origin;	/* Used for EGA/VGA fast scroll */// scr_start。/* 用于EGA/VGA 快速滾屏 */// 滾屏起始內(nèi)存地址。static unsigned long scr_end;	/* Used for EGA/VGA fast scroll *//* 用于EGA/VGA 快速滾屏 */// 滾屏末端內(nèi)存地址。static unsigned long pos;	// 當前光標對應(yīng)的顯示內(nèi)存位置。static unsigned long x, y;	// 當前光標位置。static unsigned long top, bottom;	// 滾動時頂行行號;底行行號。// state 用于標明處理ESC 轉(zhuǎn)義序列時的當前步驟。npar,par[]用于存放ESC 序列的中間處理參數(shù)。static unsigned long state = 0;	// ANSI 轉(zhuǎn)義字符序列處理狀態(tài)。static unsigned long npar, par[NPAR];	// ANSI 轉(zhuǎn)義字符序列參數(shù)個數(shù)和參數(shù)數(shù)組。static unsigned long ques = 0;static unsigned char attr = 0x07;	// 字符屬性(黑底白字)。static void sysbeep (void);	// 系統(tǒng)蜂鳴函數(shù)。/** this is what the terminal answers to a ESC-Z or csi0c* query (= vt100 response).*//** 下面是終端回應(yīng)ESC-Z 或csi0c 請求的應(yīng)答(=vt100 響應(yīng))。*/// csi - 控制序列引導碼(Control Sequence Introducer)。#define RESPONSE "\033[?1;2c"/* NOTE! gotoxy thinks x==video_num_columns is ok *//* 注意!gotoxy 函數(shù)認為x==video_num_columns,這是正確的 *///// 跟蹤光標當前位置。// 參數(shù):new_x - 光標所在列號;new_y - 光標所在行號。// 更新當前光標位置變量x,y,并修正pos 指向光標在顯示內(nèi)存中的對應(yīng)位置。static inline voidgotoxy (unsigned int new_x, unsigned int new_y){// 如果輸入的光標行號超出顯示器列數(shù),或者光標行號超出顯示的最大行數(shù),則退出。  if (new_x > video_num_columns || new_y >= video_num_lines)    return;// 更新當前光標變量;更新光標位置對應(yīng)的在顯示內(nèi)存中位置變量pos。  x = new_x;  y = new_y;  pos = origin + y * video_size_row + (x << 1);}//// 設(shè)置滾屏起始顯示內(nèi)存地址。static inline voidset_origin (void){  cli ();// 首先選擇顯示控制數(shù)據(jù)寄存器r12,然后寫入卷屏起始地址高字節(jié)。向右移動9 位,表示向右移動// 8 位,再除以2(2 字節(jié)代表屏幕上1 字符)。是相對于默認顯示內(nèi)存操作的。  outb_p (12, video_port_reg);  outb_p (0xff & ((origin - video_mem_start) >> 9), video_port_val);// 再選擇顯示控制數(shù)據(jù)寄存器r13,然后寫入卷屏起始地址底字節(jié)。向右移動1 位表示除以2。  outb_p (13, video_port_reg);  outb_p (0xff & ((origin - video_mem_start) >> 1), video_port_val);  sti ();}//// 向上卷動一行(屏幕窗口向下移動)。// 將屏幕窗口向下移動一行。參見程序列表后說明。static voidscrup (void){// 如果顯示類型是EGA,則執(zhí)行以下操作。  if (video_type == VIDEO_TYPE_EGAC || video_type == VIDEO_TYPE_EGAM)    {// 如果移動起始行top=0,移動最底行bottom=video_num_lines=25,則表示整屏窗口向下移動。      if (!top && bottom == video_num_lines)	{// 調(diào)整屏幕顯示對應(yīng)內(nèi)存的起始位置指針origin 為向下移一行屏幕字符對應(yīng)的內(nèi)存位置,同時也調(diào)整// 當前光標對應(yīng)的內(nèi)存位置以及屏幕末行末端字符指針scr_end 的位置。	  origin += video_size_row;	  pos += video_size_row;	  scr_end += video_size_row;// 如果屏幕末端最后一個顯示字符所對應(yīng)的顯示內(nèi)存指針scr_end 超出了實際顯示內(nèi)存的末端,則將// 屏幕內(nèi)容內(nèi)存數(shù)據(jù)移動到顯示內(nèi)存的起始位置video_mem_start 處,并在出現(xiàn)的新行上填入空格字符。	  if (scr_end > video_mem_end)	    {// %0 - eax(擦除字符+屬性);%1 - ecx((顯示器字符行數(shù)-1)所對應(yīng)的字符數(shù)/2,是以長字移動);// %2 - edi(顯示內(nèi)存起始位置video_mem_start);%3 - esi(屏幕內(nèi)容對應(yīng)的內(nèi)存起始位置origin)。// 移動方向:[edi]??[esi],移動ecx 個長字。	      __asm__ ("cld\n\t"	// 清方向位。		       "rep\n\t"	// 重復操作,將當前屏幕內(nèi)存數(shù)據(jù)		       "movsl\n\t"	// 移動到顯示內(nèi)存起始處。		       "movl _video_num_columns,%1\n\t"	// ecx=1 行字符數(shù)。		       "rep\n\t"	// 在新行上填入空格字符。	    "stosw"::"a" (video_erase_char), "c" ((video_num_lines - 1) * video_num_columns >> 1), "D" (video_mem_start), "S" (origin):"cx", "di",		       "si");// 根據(jù)屏幕內(nèi)存數(shù)據(jù)移動后的情況,重新調(diào)整當前屏幕對應(yīng)內(nèi)存的起始指針、光標位置指針和屏幕末端// 對應(yīng)內(nèi)存指針scr_end。	      scr_end -= origin - video_mem_start;	      pos -= origin - video_mem_start;	      origin = video_mem_start;	    }	  else	    {// 如果調(diào)整后的屏幕末端對應(yīng)的內(nèi)存指針scr_end 沒有超出顯示內(nèi)存的末端video_mem_end,則只需在// 新行上填入擦除字符(空格字符)。// %0 - eax(擦除字符+屬性);%1 - ecx(顯示器字符行數(shù));%2 - edi(屏幕對應(yīng)內(nèi)存最后一行開始處);	      __asm__ ("cld\n\t"	// 清方向位。		       "rep\n\t"	// 重復操作,在新出現(xiàn)行上		       "stosw"	// 填入擦除字符(空格字符)。	    ::"a" (video_erase_char), "c" (video_num_columns), "D" (scr_end - video_size_row):"cx",		       "di");	    }// 向顯示控制器中寫入新的屏幕內(nèi)容對應(yīng)的內(nèi)存起始位置值。	  set_origin ();// 否則表示不是整屏移動。也即表示從指定行top 開始的所有行向上移動1 行(刪除1 行)。此時直接// 將屏幕從指定行top 到屏幕末端所有行對應(yīng)的顯示內(nèi)存數(shù)據(jù)向上移動1 行,并在新出現(xiàn)的行上填入擦// 除字符。// %0-eax(擦除字符+屬性);%1-ecx(top 行下1 行開始到屏幕末行的行數(shù)所對應(yīng)的內(nèi)存長字數(shù));// %2-edi(top 行所處的內(nèi)存位置);%3-esi(top+1 行所處的內(nèi)存位置)。	}      else	{	  __asm__ ("cld\n\t"	// 清方向位。		   "rep\n\t"	// 循環(huán)操作,將top+1 到bottom 行		   "movsl\n\t"	// 所對應(yīng)的內(nèi)存塊移到top 行開始處。		   "movl _video_num_columns,%%ecx\n\t"	// ecx = 1 行字符數(shù)。		   "rep\n\t"	// 在新行上填入擦除字符。	"stosw"::"a" (video_erase_char), "c" ((bottom - top - 1) * video_num_columns >> 1), "D" (origin + video_size_row * top), "S" (origin + video_size_row * (top + 1)):"cx", "di",		   "si");	}    }// 如果顯示類型不是EGA(是MDA),則執(zhí)行下面移動操作。因為MDA 顯示控制卡會自動調(diào)整超出顯示范圍// 的情況,也即會自動翻卷指針,所以這里不對屏幕內(nèi)容對應(yīng)內(nèi)存超出顯示內(nèi)存的情況單獨處理。處理// 方法與EGA 非整屏移動情況完全一樣。  else				/* Not EGA/VGA */    {    __asm__ ("cld\n\t" "rep\n\t" "movsl\n\t" "movl _video_num_columns,%%ecx\n\t" "rep\n\t" "stosw"::"a" (video_erase_char), "c" ((bottom - top - 1) * video_num_columns >> 1), "D" (origin + video_size_row * top), "S" (origin + video_size_row * (top + 1)):"cx", "di",	       "si");    }}//// 向下卷動一行(屏幕窗口向上移動)。// 將屏幕窗口向上移動一行,屏幕顯示的內(nèi)容向下移動1 行,在被移動開始行的上方出現(xiàn)一新行。參見// 程序列表后說明。處理方法與scrup()相似,只是為了在移動顯示內(nèi)存數(shù)據(jù)時不出現(xiàn)數(shù)據(jù)覆蓋錯誤情// 況,復制是以反方向進行的,也即從屏幕倒數(shù)第2 行的最后一個字符開始復制static voidscrdown (void){// 如果顯示類型是EGA,則執(zhí)行下列操作。// [??好象if 和else 的操作完全一樣啊!為什么還要分別處理呢?難道與任務(wù)切換有關(guān)?]  if (video_type == VIDEO_TYPE_EGAC || video_type == VIDEO_TYPE_EGAM)    {// %0-eax(擦除字符+屬性);%1-ecx(top 行開始到屏幕末行-1 行的行數(shù)所對應(yīng)的內(nèi)存長字數(shù));// %2-edi(屏幕右下角最后一個長字位置);%3-esi(屏幕倒數(shù)第2 行最后一個長字位置)。// 移動方向:[esi]??[edi],移動ecx 個長字。      __asm__ ("std\n\t"	// 置方向位。	       "rep\n\t"	// 重復操作,向下移動從top 行到bottom-1 行	       "movsl\n\t"	// 對應(yīng)的內(nèi)存數(shù)據(jù)。	       "addl $2,%%edi\n\t"	/* %edi has been decremented by 4 *//* %edi 已經(jīng)減4,因為也是方向填擦除字符 */	       "movl _video_num_columns,%%ecx\n\t"	// 置ecx=1 行字符數(shù)。	       "rep\n\t"	// 將擦除字符填入上方新行中。    "stosw"::"a" (video_erase_char), "c" ((bottom - top - 1) * video_num_columns >> 1), "D" (origin + video_size_row * bottom - 4), "S" (origin + video_size_row * (bottom - 1) - 4):"ax", "cx", "di",	       "si");    }// 如果不是EGA 顯示類型,則執(zhí)行以下操作(目前與上面完全一樣)。  else				/* Not EGA/VGA */    {      __asm__ ("std\n\t" "rep\n\t" "movsl\n\t" "addl $2,%%edi\n\t"	/* %edi has been decremented by 4 */    "movl _video_num_columns,%%ecx\n\t" "rep\n\t" "stosw"::"a" (video_erase_char), "c" ((bottom - top - 1) * video_num_columns >> 1), "D" (origin + video_size_row * bottom - 4), "S" (origin + video_size_row * (bottom - 1) - 4):"ax", "cx", "di",	       "si");    }}//// 光標位置下移一行(lf - line feed 換行)。static voidlf (void){// 如果光標沒有處在倒數(shù)第2 行之后,則直接修改光標當前行變量y++,并調(diào)整光標對應(yīng)顯示內(nèi)存位置// pos(加上屏幕一行字符所對應(yīng)的內(nèi)存長度)。  if (y + 1 < bottom)    {      y++;      pos += video_size_row;      return;    }// 否則需要將屏幕內(nèi)容上移一行。  scrup ();}//// 光標上移一行(ri - reverse line feed 反向換行)。static voidri (void){// 如果光標不在第1 行上,則直接修改光標當前行標量y--,并調(diào)整光標對應(yīng)顯示內(nèi)存位置pos,減去// 屏幕上一行字符所對應(yīng)的內(nèi)存長度字節(jié)數(shù)。  if (y > top)    {      y--;      pos -= video_size_row;      return;    }// 否則需要將屏幕內(nèi)容下移一行。  scrdown ();}// 光標回到第1 列(0 列)左端(cr - carriage return 回車)。static voidcr (void){// 光標所在的列號*2 即0 列到光標所在列對應(yīng)的內(nèi)存字節(jié)長度。  pos -= x << 1;  x = 0;}// 擦除光標前一字符(用空格替代)(del - delete 刪除)。static voiddel (void){// 如果光標沒有處在0 列,則將光標對應(yīng)內(nèi)存位置指針pos 后退2 字節(jié)(對應(yīng)屏幕上一個字符),然后// 將當前光標變量列值減1,并將光標所在位置字符擦除。  if (x)    {      pos -= 2;      x--;      *(unsigned short *) pos = video_erase_char;    }}//// 刪除屏幕上與光標位置相關(guān)的部分,以屏幕為單位。csi - 控制序列引導碼(Control Sequence// Introducer)。// ANSI 轉(zhuǎn)義序列:'ESC [sJ'(s = 0 刪除光標到屏幕底端;1 刪除屏幕開始到光標處;2 整屏刪除)。// 參數(shù):par - 對應(yīng)上面s。static voidcsi_J (int par){

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久se这里有精品| 精品国产免费一区二区三区四区| 中文字幕乱码一区二区免费| 国产精品亚洲人在线观看| 久久这里只精品最新地址| 久久成人羞羞网站| 久久久电影一区二区三区| 麻豆一区二区在线| 久久久精品中文字幕麻豆发布| 国内精品伊人久久久久av一坑 | 日韩国产精品91| 51精品国自产在线| 久久狠狠亚洲综合| 国产女人水真多18毛片18精品视频| 91麻豆精品在线观看| 国产精品久久久久久亚洲毛片 | 久久精品人人爽人人爽| 成人91在线观看| 一区二区不卡在线视频 午夜欧美不卡在| 一本一道波多野结衣一区二区| 一区二区欧美在线观看| 欧美日韩第一区日日骚| 日韩影院免费视频| 久久久99久久| 欧美日韩一卡二卡三卡| 久久精品久久久精品美女| 中文字幕五月欧美| 欧美一区二区视频网站| 国产不卡视频在线观看| 亚洲一区在线视频观看| 精品av久久707| 一本大道久久a久久精二百| 久久福利视频一区二区| 亚洲欧美一区二区久久| 欧美成人video| 色综合久久久久| 狠狠狠色丁香婷婷综合激情 | 色婷婷久久久亚洲一区二区三区| 手机精品视频在线观看| 日本一区二区三区免费乱视频 | 日韩黄色免费网站| 国产精品天干天干在观线| 精品污污网站免费看| 国产福利一区二区三区视频| 亚洲成人一区在线| 国产日本亚洲高清| 日韩欧美一区二区久久婷婷| 日本精品一级二级| 国产成都精品91一区二区三| 日韩二区在线观看| 亚洲一区二区视频| 国产精品免费视频观看| 日韩限制级电影在线观看| 欧美性猛交一区二区三区精品| 丁香天五香天堂综合| 久久99精品一区二区三区三区| 亚洲综合在线第一页| 国产精品污网站| 欧美大片在线观看一区| 欧美日韩国产小视频在线观看| 99久久99久久精品国产片果冻| 久久国产精品一区二区| 亚洲成av人在线观看| 亚洲欧美激情插| 成人免费一区二区三区视频| 久久久精品免费网站| 日韩欧美中文一区二区| 3d成人h动漫网站入口| 色综合久久久久久久久| 色综合天天视频在线观看| 成人动漫av在线| 成人在线一区二区三区| 国产在线精品一区二区三区不卡| 日本欧美一区二区| 天堂久久一区二区三区| 亚洲成人中文在线| 视频一区中文字幕国产| 午夜精品福利一区二区三区av| 亚洲亚洲精品在线观看| 亚洲综合男人的天堂| 一区二区三区四区乱视频| 亚洲精品伦理在线| 亚洲一区二区三区四区在线 | 日韩精品一二三四| 日日夜夜精品免费视频| 日韩制服丝袜先锋影音| 日韩精品电影在线| 久久国产婷婷国产香蕉| 精品无人码麻豆乱码1区2区 | 337p日本欧洲亚洲大胆精品| 欧美大片免费久久精品三p| 精品裸体舞一区二区三区| 337p粉嫩大胆噜噜噜噜噜91av| 久久综合色综合88| 国产精品欧美一区喷水| 综合激情网...| 亚洲午夜一区二区| 麻豆91在线播放免费| 国产福利视频一区二区三区| 99这里都是精品| 欧美亚洲自拍偷拍| 日韩亚洲电影在线| 欧美激情综合在线| 一区二区三区免费网站| 日本不卡123| 国产精品一级在线| 91黄色免费网站| 欧美日产国产精品| 久久一夜天堂av一区二区三区| 欧美国产日韩一二三区| 亚洲激情av在线| 卡一卡二国产精品 | 中文字幕一区在线观看| 婷婷综合五月天| 韩国av一区二区三区四区| 91网站黄www| 日韩精品在线看片z| 国产精品每日更新在线播放网址 | 91色porny在线视频| 欧美日韩一区二区三区高清 | 欧美视频中文一区二区三区在线观看| 欧美日韩国产大片| 国产欧美日韩另类视频免费观看| 亚洲伦理在线免费看| 美女精品一区二区| 91国内精品野花午夜精品| 精品国产乱码久久| 亚洲卡通动漫在线| 黄色成人免费在线| 在线日韩一区二区| 久久精品视频免费| 热久久久久久久| 色伊人久久综合中文字幕| 亚洲精品在线一区二区| 亚洲一区二区三区中文字幕| 国产成人亚洲精品青草天美| 欧美日韩高清在线播放| 国产精品久久久久久久午夜片| 奇米影视7777精品一区二区| 91视频免费看| 日本一区二区三区dvd视频在线| 三级精品在线观看| 一本色道久久综合亚洲aⅴ蜜桃 | 在线成人av网站| 亚洲三级免费电影| 国产成人亚洲综合a∨猫咪 | 久久久久久免费网| 免费观看成人鲁鲁鲁鲁鲁视频| 色综合色狠狠天天综合色| 国产午夜亚洲精品羞羞网站| 日本va欧美va瓶| 欧美日韩中文字幕一区二区| 亚洲欧美一区二区三区极速播放| 国产成人综合在线观看| 精品国产一区久久| 琪琪一区二区三区| 91精品国产一区二区人妖| 国产盗摄视频一区二区三区| 日韩精品一区二区三区在线观看| 亚洲国产综合色| 欧美性受xxxx黑人xyx性爽| 中文字幕制服丝袜成人av| 国产成人精品午夜视频免费 | 国产日韩影视精品| 韩日精品视频一区| 精品国产一区二区三区不卡| 免费成人小视频| 日韩欧美亚洲一区二区| 久久电影网站中文字幕| 精品久久久三级丝袜| 久久99精品久久久久久动态图| 日韩欧美美女一区二区三区| 日本不卡不码高清免费观看| 欧美一级片在线观看| 美女视频黄频大全不卡视频在线播放 | 亚洲欧美在线观看| 92国产精品观看| 亚洲天堂a在线| 一本久久综合亚洲鲁鲁五月天 | 亚洲国产精品久久艾草纯爱| 欧美主播一区二区三区| 午夜欧美2019年伦理| 欧美精品高清视频| 日本欧美在线观看| 精品欧美一区二区久久| 国产精品一二二区| 国产精品电影一区二区| 一本色道**综合亚洲精品蜜桃冫| 亚洲一区二区三区四区在线观看 | 91色视频在线| 亚洲第一搞黄网站| 日韩欧美色电影| 成人福利视频在线| 亚洲国产一区二区在线播放| 欧美伦理影视网| 国产最新精品精品你懂的| 国产精品美女久久久久久久久久久 | 99久久久国产精品| 亚洲444eee在线观看| 欧美精品一区二区三区久久久|