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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ide-disk.c

?? ep9315平臺下硬盤驅動的源碼
?? C
?? 第 1 頁 / 共 4 頁
字號:
		}		if ((rq->errors & ERROR_RECAL) == ERROR_RECAL)			drive->special.b.recalibrate = 1;		++rq->errors;	}	return ide_stopped;}ide_startstop_t idedisk_abort(ide_drive_t *drive, const char *msg){	ide_hwif_t *hwif;	struct request *rq;	if (drive == NULL || (rq = HWGROUP(drive)->rq) == NULL)		return ide_stopped;	hwif = HWIF(drive);	/* retry only "normal" I/O: */	switch (rq->cmd) {		case IDE_DRIVE_CMD:		case IDE_DRIVE_TASK:		case IDE_DRIVE_TASKFILE:			rq->errors = 1;			ide_end_drive_cmd(drive, BUSY_STAT, 0);			return ide_stopped;#if 0		case IDE_DRIVE_TASKFILE:			rq->errors = 1;			ide_end_taskfile(drive, BUSY_STAT, 0);			return ide_stopped;#endif		default:			break;	}	rq->errors |= ERROR_RESET;	DRIVER(drive)->end_request(drive, 0);	return ide_stopped;}/* * Queries for true maximum capacity of the drive. * Returns maximum LBA address (> 0) of the drive, 0 if failed. */static unsigned long idedisk_read_native_max_address(ide_drive_t *drive){	ide_task_t args;	unsigned long addr = 0;	/* Create IDE/ATA command request structure */	memset(&args, 0, sizeof(ide_task_t));	args.tfRegister[IDE_SELECT_OFFSET]	= 0x40;	args.tfRegister[IDE_COMMAND_OFFSET]	= WIN_READ_NATIVE_MAX;	args.command_type			= ide_cmd_type_parser(&args);	/* submit command request */	ide_raw_taskfile(drive, &args, NULL);	/* if OK, compute maximum address value */	if ((args.tfRegister[IDE_STATUS_OFFSET] & 0x01) == 0) {		addr = ((args.tfRegister[IDE_SELECT_OFFSET] & 0x0f) << 24)		     | ((args.tfRegister[  IDE_HCYL_OFFSET]       ) << 16)		     | ((args.tfRegister[  IDE_LCYL_OFFSET]       ) <<  8)		     | ((args.tfRegister[IDE_SECTOR_OFFSET]       ));	}	addr++;	/* since the return value is (maxlba - 1), we add 1 */	return addr;}static unsigned long long idedisk_read_native_max_address_ext(ide_drive_t *drive){	ide_task_t args;	unsigned long long addr = 0;	/* Create IDE/ATA command request structure */	memset(&args, 0, sizeof(ide_task_t));	args.tfRegister[IDE_SELECT_OFFSET]	= 0x40;	args.tfRegister[IDE_COMMAND_OFFSET]	= WIN_READ_NATIVE_MAX_EXT;	args.command_type			= ide_cmd_type_parser(&args);        /* submit command request */        ide_raw_taskfile(drive, &args, NULL);	/* if OK, compute maximum address value */	if ((args.tfRegister[IDE_STATUS_OFFSET] & 0x01) == 0) {		u32 high = ((args.hobRegister[IDE_HCYL_OFFSET_HOB])<<16) |			   ((args.hobRegister[IDE_LCYL_OFFSET_HOB])<<8) |  			    (args.hobRegister[IDE_SECTOR_OFFSET_HOB]); 		u32 low  = ((args.tfRegister[IDE_HCYL_OFFSET])<<16) |			   ((args.tfRegister[IDE_LCYL_OFFSET])<<8) |			    (args.tfRegister[IDE_SECTOR_OFFSET]);		addr = ((__u64)high << 24) | low;	}	addr++;	/* since the return value is (maxlba - 1), we add 1 */	return addr;}#ifdef CONFIG_IDEDISK_STROKE/* * Sets maximum virtual LBA address of the drive. * Returns new maximum virtual LBA address (> 0) or 0 on failure. */static unsigned long idedisk_set_max_address(ide_drive_t *drive, unsigned long addr_req){	ide_task_t args;	unsigned long addr_set = 0;		addr_req--;	/* Create IDE/ATA command request structure */	memset(&args, 0, sizeof(ide_task_t));	args.tfRegister[IDE_SECTOR_OFFSET]	= ((addr_req >>  0) & 0xff);	args.tfRegister[IDE_LCYL_OFFSET]	= ((addr_req >>  8) & 0xff);	args.tfRegister[IDE_HCYL_OFFSET]	= ((addr_req >> 16) & 0xff);	args.tfRegister[IDE_SELECT_OFFSET]	= ((addr_req >> 24) & 0x0f) | 0x40;	args.tfRegister[IDE_COMMAND_OFFSET]	= WIN_SET_MAX;	args.command_type			= ide_cmd_type_parser(&args);	/* submit command request */	ide_raw_taskfile(drive, &args, NULL);	/* if OK, read new maximum address value */	if ((args.tfRegister[IDE_STATUS_OFFSET] & 0x01) == 0) {		addr_set = ((args.tfRegister[IDE_SELECT_OFFSET] & 0x0f) << 24)			 | ((args.tfRegister[  IDE_HCYL_OFFSET]       ) << 16)			 | ((args.tfRegister[  IDE_LCYL_OFFSET]       ) <<  8)			 | ((args.tfRegister[IDE_SECTOR_OFFSET]       ));	}	addr_set++;	return addr_set;}static unsigned long long idedisk_set_max_address_ext(ide_drive_t *drive, unsigned long long addr_req){	ide_task_t args;	unsigned long long addr_set = 0;	addr_req--;	/* Create IDE/ATA command request structure */	memset(&args, 0, sizeof(ide_task_t));	args.tfRegister[IDE_SECTOR_OFFSET]	= ((addr_req >>  0) & 0xff);	args.tfRegister[IDE_LCYL_OFFSET]	= ((addr_req >>= 8) & 0xff);	args.tfRegister[IDE_HCYL_OFFSET]	= ((addr_req >>= 8) & 0xff);	args.tfRegister[IDE_SELECT_OFFSET]      = 0x40;	args.tfRegister[IDE_COMMAND_OFFSET]	= WIN_SET_MAX_EXT;	args.hobRegister[IDE_SECTOR_OFFSET_HOB]	= ((addr_req >>= 8) & 0xff);	args.hobRegister[IDE_LCYL_OFFSET_HOB]	= ((addr_req >>= 8) & 0xff);	args.hobRegister[IDE_HCYL_OFFSET_HOB]	= ((addr_req >>= 8) & 0xff);	args.hobRegister[IDE_SELECT_OFFSET_HOB]	= 0x40;	args.hobRegister[IDE_CONTROL_OFFSET_HOB]= (drive->ctl|0x80);	args.command_type			= ide_cmd_type_parser(&args);	/* submit command request */	ide_raw_taskfile(drive, &args, NULL);	/* if OK, compute maximum address value */	if ((args.tfRegister[IDE_STATUS_OFFSET] & 0x01) == 0) {		u32 high = ((args.hobRegister[IDE_HCYL_OFFSET_HOB])<<16) |			   ((args.hobRegister[IDE_LCYL_OFFSET_HOB])<<8) |			    (args.hobRegister[IDE_SECTOR_OFFSET_HOB]);		u32 low  = ((args.tfRegister[IDE_HCYL_OFFSET])<<16) |			   ((args.tfRegister[IDE_LCYL_OFFSET])<<8) |			    (args.tfRegister[IDE_SECTOR_OFFSET]);		addr_set = ((__u64)high << 24) | low;	}	return addr_set;}#endif /* CONFIG_IDEDISK_STROKE *//* * Tests if the drive supports Host Protected Area feature. * Returns true if supported, false otherwise. */static inline int idedisk_supports_host_protected_area(ide_drive_t *drive){	int flag = (drive->id->cfs_enable_1 & 0x0400) ? 1 : 0;	if (flag)		printk("%s: host protected area => %d\n", drive->name, flag);	return flag;}/* * Compute drive->capacity, the full capacity of the drive * Called with drive->id != NULL. * * To compute capacity, this uses either of * *    1. CHS value set by user       (whatever user sets will be trusted) *    2. LBA value from target drive (require new ATA feature) *    3. LBA value from system BIOS  (new one is OK, old one may break) *    4. CHS value from system BIOS  (traditional style) * * in above order (i.e., if value of higher priority is available, * reset will be ignored). */#define IDE_STROKE_LIMIT	(32000*1024*2)static void init_idedisk_capacity (ide_drive_t  *drive){	struct hd_driveid *id = drive->id;	unsigned long capacity = drive->cyl * drive->head * drive->sect;	unsigned long set_max = idedisk_read_native_max_address(drive);	unsigned long long capacity_2 = capacity;	unsigned long long set_max_ext;	drive->capacity48 = 0;	drive->select.b.lba = 0;	(void) idedisk_supports_host_protected_area(drive);	if (id->cfs_enable_2 & 0x0400) {		capacity_2 = id->lba_capacity_2;		drive->head		= drive->bios_head = 255;		drive->sect		= drive->bios_sect = 63;		drive->cyl = (unsigned int) capacity_2 / (drive->head * drive->sect);		drive->select.b.lba	= 1;		set_max_ext = idedisk_read_native_max_address_ext(drive);		if (set_max_ext > capacity_2 && capacity_2 > IDE_STROKE_LIMIT) {#ifdef CONFIG_IDEDISK_STROKE			set_max_ext = idedisk_read_native_max_address_ext(drive);			set_max_ext = idedisk_set_max_address_ext(drive, set_max_ext);			if (set_max_ext) {				drive->capacity48 = capacity_2 = set_max_ext;				drive->cyl = (unsigned int) set_max_ext / (drive->head * drive->sect);				drive->select.b.lba = 1;				drive->id->lba_capacity_2 = capacity_2;                        }#else /* !CONFIG_IDEDISK_STROKE */			printk(KERN_INFO "%s: setmax_ext LBA %llu, native  %llu\n",				drive->name, set_max_ext, capacity_2);#endif /* CONFIG_IDEDISK_STROKE */		}		drive->cyl = (unsigned int) capacity_2 / (drive->head * drive->sect);		drive->bios_cyl		= drive->cyl;		drive->capacity48	= capacity_2;		drive->capacity		= (unsigned long) capacity_2;		return;	/* Determine capacity, and use LBA if the drive properly supports it */	} else if ((id->capability & 2) && lba_capacity_is_ok(id)) {		capacity = id->lba_capacity;		drive->cyl = capacity / (drive->head * drive->sect);		drive->select.b.lba = 1;	}	if (set_max > capacity && capacity > IDE_STROKE_LIMIT) {#ifdef CONFIG_IDEDISK_STROKE		set_max = idedisk_read_native_max_address(drive);		set_max = idedisk_set_max_address(drive, set_max);		if (set_max) {			drive->capacity = capacity = set_max;			drive->cyl = set_max / (drive->head * drive->sect);			drive->select.b.lba = 1;			drive->id->lba_capacity = capacity;		}#else /* !CONFIG_IDEDISK_STROKE */		printk(KERN_INFO "%s: setmax LBA %lu, native  %lu\n",			drive->name, set_max, capacity);#endif /* CONFIG_IDEDISK_STROKE */	}	drive->capacity = capacity;	if ((id->command_set_2 & 0x0400) && (id->cfs_enable_2 & 0x0400)) {		drive->capacity48 = id->lba_capacity_2;		drive->head = 255;		drive->sect = 63;		drive->cyl = (unsigned long)(drive->capacity48) / (drive->head * drive->sect);	}}static unsigned long idedisk_capacity (ide_drive_t *drive){	if (drive->id->cfs_enable_2 & 0x0400)		return (drive->capacity48 - drive->sect0);	return (drive->capacity - drive->sect0);}static ide_startstop_t idedisk_special (ide_drive_t *drive){	special_t *s = &drive->special;	if (s->b.set_geometry) {		s->b.set_geometry	= 0;		if (!IS_PDC4030_DRIVE) {			ide_task_t args;			memset(&args, 0, sizeof(ide_task_t));			args.tfRegister[IDE_NSECTOR_OFFSET] = drive->sect;			args.tfRegister[IDE_SECTOR_OFFSET]  = drive->sect;			args.tfRegister[IDE_LCYL_OFFSET]    = drive->cyl;			args.tfRegister[IDE_HCYL_OFFSET]    = drive->cyl>>8;			args.tfRegister[IDE_SELECT_OFFSET]  = ((drive->head-1)|drive->select.all)&0xBF;			args.tfRegister[IDE_COMMAND_OFFSET] = WIN_SPECIFY;			args.command_type = ide_cmd_type_parser(&args);			do_rw_taskfile(drive, &args);		}	} else if (s->b.recalibrate) {		s->b.recalibrate = 0;		if (!IS_PDC4030_DRIVE) {			ide_task_t args;			memset(&args, 0, sizeof(ide_task_t));			args.tfRegister[IDE_NSECTOR_OFFSET] = drive->sect;			args.tfRegister[IDE_COMMAND_OFFSET] = WIN_RESTORE;			args.command_type = ide_cmd_type_parser(&args);			do_rw_taskfile(drive, &args);		}	} else if (s->b.set_multmode) {		s->b.set_multmode = 0;		if (drive->mult_req > drive->id->max_multsect)			drive->mult_req = drive->id->max_multsect;		if (!IS_PDC4030_DRIVE) {			ide_task_t args;			memset(&args, 0, sizeof(ide_task_t));			args.tfRegister[IDE_NSECTOR_OFFSET] = drive->mult_req;			args.tfRegister[IDE_COMMAND_OFFSET] = WIN_SETMULT;			args.command_type = ide_cmd_type_parser(&args);			do_rw_taskfile(drive, &args);		}	} else if (s->all) {		int special = s->all;		s->all = 0;		printk(KERN_ERR "%s: bad special flag: 0x%02x\n", drive->name, special);		return ide_stopped;	}	return IS_PDC4030_DRIVE ? ide_stopped : ide_started;}static void idedisk_pre_reset (ide_drive_t *drive){	int legacy = (drive->id->cfs_enable_2 & 0x0400) ? 0 : 1;	drive->special.all = 0;	drive->special.b.set_geometry = legacy;	drive->special.b.recalibrate  = legacy;	if (OK_TO_RESET_CONTROLLER)		drive->mult_count = 0;	if (!drive->keep_settings && !drive->using_dma)		drive->mult_req = 0;	if (drive->mult_req != drive->mult_count)		drive->special.b.set_multmode = 1;}#ifdef CONFIG_PROC_FSstatic int smart_enable(ide_drive_t *drive){	ide_task_t args;	memset(&args, 0, sizeof(ide_task_t));	args.tfRegister[IDE_FEATURE_OFFSET]	= SMART_ENABLE;	args.tfRegister[IDE_LCYL_OFFSET]	= SMART_LCYL_PASS;	args.tfRegister[IDE_HCYL_OFFSET]	= SMART_HCYL_PASS;	args.tfRegister[IDE_COMMAND_OFFSET]	= WIN_SMART;	args.command_type			= ide_cmd_type_parser(&args);	return ide_raw_taskfile(drive, &args, NULL);}static int get_smart_values(ide_drive_t *drive, u8 *buf){	ide_task_t args;	memset(&args, 0, sizeof(ide_task_t));	args.tfRegister[IDE_FEATURE_OFFSET]	= SMART_READ_VALUES;	args.tfRegister[IDE_NSECTOR_OFFSET]	= 0x01;	args.tfRegister[IDE_LCYL_OFFSET]	= SMART_LCYL_PASS;	args.tfRegister[IDE_HCYL_OFFSET]	= SMART_HCYL_PASS;	args.tfRegister[IDE_COMMAND_OFFSET]	= WIN_SMART;	args.command_type			= ide_cmd_type_parser(&args);	(void) smart_enable(drive);	return ide_raw_taskfile(drive, &args, buf);}static int get_smart_thresholds(ide_drive_t *drive, u8 *buf){	ide_task_t args;	memset(&args, 0, sizeof(ide_task_t));	args.tfRegister[IDE_FEATURE_OFFSET]	= SMART_READ_THRESHOLDS;	args.tfRegister[IDE_NSECTOR_OFFSET]	= 0x01;	args.tfRegister[IDE_LCYL_OFFSET]	= SMART_LCYL_PASS;	args.tfRegister[IDE_HCYL_OFFSET]	= SMART_HCYL_PASS;	args.tfRegister[IDE_COMMAND_OFFSET]	= WIN_SMART;	args.command_type			= ide_cmd_type_parser(&args);	(void) smart_enable(drive);	return ide_raw_taskfile(drive, &args, buf);}static int proc_idedisk_read_cache	(char *page, char **start, off_t off, int count, int *eof, void *data){	ide_drive_t	*drive = (ide_drive_t *) data;	char		*out = page;	int		len;	if (drive->id_read)		len = sprintf(out,"%i\n", drive->id->buf_size / 2);	else		len = sprintf(out,"(none)\n");	PROC_IDE_READ_RETURN(page,start,off,count,eof,len);}static int proc_idedisk_read_smart_thresholds	(char *page, char **start, off_t off, int count, int *eof, void *data){	ide_drive_t	*drive = (ide_drive_t *)data;	int		len = 0, i = 0;	if (!get_smart_thresholds(drive, page)) {		unsigned short *val = (unsigned short *) page;		char *out = ((char *)val) + (SECTOR_WORDS * 4);		page = out;		do {			out += sprintf(out, "%04x%c", le16_to_cpu(*val), (++i & 7) ? ' ' : '\n');			val += 1;		} while (i < (SECTOR_WORDS * 2));		len = out - page;	}	PROC_IDE_READ_RETURN(page,start,off,count,eof,len);}static int proc_idedisk_read_smart_values	(char *page, char **start, off_t off, int count, int *eof, void *data){	ide_drive_t	*drive = (ide_drive_t *)data;	int		len = 0, i = 0;	if (!get_smart_values(drive, page)) {		unsigned short *val = (unsigned short *) page;		char *out = ((char *)val) + (SECTOR_WORDS * 4);		page = out;		do {			out += sprintf(out, "%04x%c", le16_to_cpu(*val), (++i & 7) ? ' ' : '\n');			val += 1;		} while (i < (SECTOR_WORDS * 2));		len = out - page;	}	PROC_IDE_READ_RETURN(page,start,off,count,eof,len);}static ide_proc_entry_t idedisk_proc[] = {	{ "cache",		S_IFREG|S_IRUGO,	proc_idedisk_read_cache,		NULL },	{ "geometry",		S_IFREG|S_IRUGO,	proc_ide_read_geometry,			NULL },	{ "smart_values",	S_IFREG|S_IRUSR,	proc_idedisk_read_smart_values,		NULL },	{ "smart_thresholds",	S_IFREG|S_IRUSR,	proc_idedisk_read_smart_thresholds,	NULL },	{ NULL, 0, NULL, NULL }};#else#define	idedisk_proc	NULL#endif	/* CONFIG_PROC_FS *//* * This is tightly woven into the driver->do_special can not touch. * DON'T do it again until a total personality rewrite is committed. */static int set_multcount(ide_drive_t *drive, int arg){	struct request rq;	if (drive->special.b.set_multmode)		return -EBUSY;	ide_init_drive_cmd (&rq);	rq.cmd = IDE_DRIVE_CMD;	drive->mult_req = arg;	drive->special.b.set_multmode = 1;	(void) ide_do_drive_cmd (drive, &rq, ide_wait);	return (drive->mult_count == arg) ? 0 : -EIO;}static int set_nowerr(ide_drive_t *drive, int arg){	if (ide_spin_wait_hwgroup(drive))		return -EBUSY;	drive->nowerr = arg;	drive->bad_wstat = arg ? BAD_R_STAT : BAD_W_STAT;	spin_unlock_irq(&io_request_lock);	return 0;}static int write_cache (ide_drive_t *drive, int arg){	ide_task_t args;	if (!(drive->id->cfs_enable_2 & 0x3000))		return 1;	memset(&args, 0, sizeof(ide_task_t));	args.tfRegister[IDE_FEATURE_OFFSET]	= (arg) ?			SETFEATURES_EN_WCACHE : SETFEATURES_DIS_WCACHE;	args.tfRegister[IDE_COMMAND_OFFSET]	= WIN_SETFEATURES;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品一区二区在线观看| 国产在线播精品第三| 91国偷自产一区二区三区成为亚洲经典 | 欧美一区二区黄色| 欧美aaaaa成人免费观看视频| 日韩免费在线观看| 成人网男人的天堂| 一区二区三区四区亚洲| 欧美日韩黄色一区二区| 青青草精品视频| 国产午夜精品久久久久久免费视| 成人av先锋影音| 亚洲福利国产精品| 欧美一级黄色录像| 国产成人在线观看免费网站| 亚洲欧洲日本在线| 欧美日韩大陆在线| 国产精品中文字幕一区二区三区| 中文字幕视频一区二区三区久| 欧美午夜精品一区二区蜜桃| 激情综合网av| 亚洲欧美一区二区久久| 日韩手机在线导航| 91香蕉国产在线观看软件| 奇米精品一区二区三区在线观看 | 欧美va亚洲va香蕉在线| 国产高清成人在线| 悠悠色在线精品| www精品美女久久久tv| 99久久亚洲一区二区三区青草 | 性久久久久久久久久久久| 精品国产电影一区二区| 色综合久久六月婷婷中文字幕| 天堂蜜桃91精品| 国产精品女同一区二区三区| 欧美日韩一区二区三区视频| 国产成人亚洲综合a∨婷婷| 亚洲一区二区3| 国产精品嫩草影院com| 欧美一区二区三区日韩| 99re这里只有精品视频首页| 美女视频网站黄色亚洲| 一区二区三区四区国产精品| 精品处破学生在线二十三| 欧日韩精品视频| 国产99久久久国产精品免费看 | 国产一区二区h| 亚洲国产sm捆绑调教视频| 国产农村妇女精品| 精品国产一区二区在线观看| 欧洲av在线精品| av电影天堂一区二区在线观看| 欧美aaaaaa午夜精品| 亚洲va欧美va人人爽| 亚洲女人小视频在线观看| 久久免费视频色| 日韩精品一区二区三区在线播放| 日本精品视频一区二区三区| 国产精品亚洲视频| 蜜臀av性久久久久av蜜臀妖精| 亚洲综合在线电影| 曰韩精品一区二区| 亚洲精品精品亚洲| 国产精品三级电影| 日本一区二区免费在线| 国产日韩综合av| 久久久久久久久伊人| 精品国产一区二区精华| 日韩精品自拍偷拍| 欧美成人乱码一区二区三区| 欧美videos中文字幕| 精品国产乱码久久久久久牛牛| 7799精品视频| 日韩一级黄色大片| 精品少妇一区二区三区日产乱码 | 精品日韩一区二区| 久久伊99综合婷婷久久伊| 精品国产免费视频| 2020国产精品自拍| 中文字幕不卡一区| 中文字幕一区在线| 一区二区三区毛片| 天堂va蜜桃一区二区三区漫画版| 亚洲第一狼人社区| 免费观看久久久4p| 国产在线日韩欧美| 国产91精品一区二区| 99re热这里只有精品免费视频| 91在线无精精品入口| 欧亚洲嫩模精品一区三区| 欧美日本一区二区三区四区 | 久久综合久久99| 国产欧美精品国产国产专区| 国产精品毛片大码女人| 亚洲美女在线一区| 亚洲3atv精品一区二区三区| 蜜臀av性久久久久蜜臀aⅴ| 国产乱人伦偷精品视频不卡| 成人av网在线| 欧美男男青年gay1069videost | 欧美日韩一区二区三区视频| 欧美一级理论片| 国产欧美一区二区三区网站 | 久久国产精品免费| 高清av一区二区| 欧美亚洲日本国产| 欧美v日韩v国产v| 亚洲女爱视频在线| 蜜乳av一区二区| 成人黄动漫网站免费app| 欧美综合色免费| 精品国产乱码久久久久久图片 | 日本怡春院一区二区| 国产电影一区二区三区| 91高清视频在线| 欧美精品一区二区三区视频| 亚洲图片你懂的| 毛片不卡一区二区| 99热这里都是精品| 欧美一区二区精品在线| 综合分类小说区另类春色亚洲小说欧美| 午夜精品久久久久久久99樱桃| 国产在线精品一区二区三区不卡| 色欲综合视频天天天| 精品国产伦一区二区三区免费 | 色综合天天狠狠| 久久男人中文字幕资源站| 亚洲在线成人精品| 国产精品小仙女| 91麻豆精品国产91| 亚洲精品视频免费看| 狠狠v欧美v日韩v亚洲ⅴ| 欧美日韩精品福利| 亚洲欧美综合色| 国产一区在线不卡| 日韩午夜激情电影| 亚洲成a人v欧美综合天堂下载| 成人免费毛片高清视频| 精品女同一区二区| 日韩精品欧美精品| 欧美午夜精品久久久久久孕妇| 欧美高清在线一区二区| 国产在线不卡视频| 日韩欧美在线网站| 五月天欧美精品| 色综合天天综合狠狠| 亚洲国产精品成人综合| 精品一区二区在线观看| 在线综合视频播放| 日韩av中文字幕一区二区三区| 色天天综合久久久久综合片| 国产日韩精品一区二区浪潮av| 久久成人精品无人区| 日韩亚洲欧美一区| 午夜av电影一区| 欧美三级日韩在线| 亚洲国产婷婷综合在线精品| 色综合色综合色综合| 中文字幕在线观看不卡| 成人18视频日本| 国产精品美女久久久久久久久| 国产v日产∨综合v精品视频| 久久久激情视频| 国产成人精品亚洲777人妖| 久久久久久99精品| 国产成人激情av| 国产人久久人人人人爽| 成人免费高清视频| 欧美国产综合一区二区| 成人午夜av影视| 一区在线中文字幕| 日本精品一级二级| 亚洲va欧美va天堂v国产综合| 欧美唯美清纯偷拍| 同产精品九九九| 91精品国产欧美日韩| 精品制服美女丁香| 国产日韩av一区| jizzjizzjizz欧美| 夜色激情一区二区| 91精品国产美女浴室洗澡无遮挡| 美脚の诱脚舐め脚责91| 国产亚洲短视频| 91视频观看视频| 日韩电影在线一区| 久久先锋影音av| 99久久精品国产一区| 亚洲国产精品久久久久婷婷884| 欧美理论片在线| 国产一区二区福利| 日韩毛片视频在线看| 精品视频1区2区3区| 奇米色一区二区三区四区| 久久精品免费在线观看| 91麻豆国产精品久久| 亚洲18色成人| 亚洲国产精品黑人久久久 | 9191成人精品久久| 精品一区二区在线视频| 亚洲图片欧美激情|