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

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

?? common_util.c

?? 針對yassylcd的uboot源碼
?? C
字號:
/* * (C) Copyright 2001 * Denis Peter, MPL AG Switzerland, d.peter@mpl.ch * * See file CREDITS for list of people who contributed to this * project. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA * */#include <common.h>#include <command.h>#include <video_fb.h>#include "common_util.h"#include <asm/processor.h>#include <asm/byteorder.h>#include <i2c.h>#include <devices.h>#include <pci.h>#include <malloc.h>#include <bzlib.h>#ifdef CONFIG_PIP405#include "../pip405/pip405.h"#include <405gp_pci.h>#endif#ifdef CONFIG_MIP405#include "../mip405/mip405.h"#include <405gp_pci.h>#endif#if defined(CONFIG_PATI)#define FIRM_START 0xFFF00000#endifextern int gunzip(void *, int, uchar *, unsigned long *);extern int mem_test(ulong start, ulong ramsize, int quiet);#define I2C_BACKUP_ADDR 0x7C00		/* 0x200 bytes for backup */#define IMAGE_SIZE CFG_MONITOR_LEN	/* ugly, but it works for now */extern flash_info_t flash_info[];	/* info for FLASH chips */static image_header_t header;static intmpl_prg(uchar *src, ulong size){	ulong start;	flash_info_t *info;	int i, rc;#if defined(CONFIG_PATI)	int start_sect;#endif#if defined(CONFIG_PIP405) || defined(CONFIG_MIP405) || defined(CONFIG_PATI)	char *copystr = (char *)src;	ulong *magic = (ulong *)src;#endif	info = &flash_info[0];#if defined(CONFIG_PIP405) || defined(CONFIG_MIP405) || defined(CONFIG_PATI)	if (ntohl(magic[0]) != IH_MAGIC) {		puts("Bad Magic number\n");		return -1;	}	/* some more checks before we delete the Flash... */	/* Checking the ISO_STRING prevents to program a	 * wrong Firmware Image into the flash.	 */	i = 4; /* skip Magic number */	while (1) {		if (strncmp(&copystr[i], "MEV-", 4) == 0)			break;		if (i++ >= 0x100) {			puts("Firmware Image for unknown Target\n");			return -1;		}	}	/* we have the ISO STRING, check */	if (strncmp(&copystr[i], CONFIG_ISO_STRING, sizeof(CONFIG_ISO_STRING)-1) != 0) {		printf("Wrong Firmware Image: %s\n", &copystr[i]);		return -1;	}#if !defined(CONFIG_PATI)	start = 0 - size;	for (i = info->sector_count-1; i > 0; i--) {		info->protect[i] = 0; /* unprotect this sector */		if (start >= info->start[i])			break;	}	/* set-up flash location */	/* now erase flash */	printf("Erasing at %lx (sector %d) (start %lx)\n",				start,i,info->start[i]);	if ((rc = flash_erase (info, i, info->sector_count-1)) != 0) {		puts("ERROR ");		flash_perror(rc);		return (1);	}#else /* #if !defined(CONFIG_PATI */	start = FIRM_START;	start_sect = -1;	for (i = 0; i < info->sector_count; i++) {		if (start < info->start[i]) {			start_sect = i - 1;			break;		}	}	info->protect[i - 1] = 0;	/* unprotect this sector */	for (; i < info->sector_count; i++) {		if ((start + size) < info->start[i])			break;		info->protect[i] = 0;	/* unprotect this sector */	}	i--;	/* set-up flash location */	/* now erase flash */	printf ("Erasing at %lx to %lx (sector %d to %d) (%lx to %lx)\n",		start, start + size, start_sect, i,		info->start[start_sect], info->start[i]);	if ((rc = flash_erase (info, start_sect, i)) != 0) {		puts ("ERROR ");		flash_perror (rc);		return (1);	}#endif /* defined(CONFIG_PATI) */#elif defined(CONFIG_VCMA9)	start = 0;	for (i = 0; i <info->sector_count; i++) {		info->protect[i] = 0; /* unprotect this sector */		if (size < info->start[i])		    break;	}	/* set-up flash location */	/* now erase flash */	printf("Erasing at %lx (sector %d) (start %lx)\n",				start,0,info->start[0]);	if ((rc = flash_erase (info, 0, i)) != 0) {		puts("ERROR ");		flash_perror(rc);		return (1);	}#endif	printf("flash erased, programming from 0x%lx 0x%lx Bytes\n",		(ulong)src, size);	if ((rc = flash_write (src, start, size)) != 0) {		puts("ERROR ");		flash_perror(rc);		return (1);	}	puts("OK programming done\n");	return 0;}static intmpl_prg_image(uchar *ld_addr){	unsigned long len, checksum;	uchar *data;	image_header_t *hdr = &header;	int rc;	/* Copy header so we can blank CRC field for re-calculation */	memcpy (&header, (char *)ld_addr, sizeof(image_header_t));	if (ntohl(hdr->ih_magic)  != IH_MAGIC) {		puts("Bad Magic Number\n");		return 1;	}	print_image_hdr(hdr);	if (hdr->ih_os  != IH_OS_U_BOOT) {		puts("No U-Boot Image\n");		return 1;	}	if (hdr->ih_type  != IH_TYPE_FIRMWARE) {		puts("No Firmware Image\n");		return 1;	}	data = (uchar *)&header;	len  = sizeof(image_header_t);	checksum = ntohl(hdr->ih_hcrc);	hdr->ih_hcrc = 0;	if (crc32 (0, (char *)data, len) != checksum) {		puts("Bad Header Checksum\n");		return 1;	}	data = ld_addr + sizeof(image_header_t);	len  = ntohl(hdr->ih_size);	puts("Verifying Checksum ... ");	if (crc32 (0, (char *)data, len) != ntohl(hdr->ih_dcrc)) {		puts("Bad Data CRC\n");		return 1;	}	puts("OK\n");	if (hdr->ih_comp != IH_COMP_NONE) {		uchar *buf;		/* reserve space for uncompressed image */		if ((buf = malloc(IMAGE_SIZE)) == NULL) {		    	puts("Insufficient space for decompression\n");			return 1;		}		switch (hdr->ih_comp) {		case IH_COMP_GZIP:			puts("Uncompressing (GZIP) ... ");			rc = gunzip ((void *)(buf), IMAGE_SIZE, data, &len);			if (rc != 0) {				puts("GUNZIP ERROR\n");				free(buf);				return 1;			}			puts("OK\n");			break;#ifdef CONFIG_BZIP2		case IH_COMP_BZIP2:			puts("Uncompressing (BZIP2) ... ");			{			uint retlen = IMAGE_SIZE;			rc = BZ2_bzBuffToBuffDecompress ((char *)(buf), &retlen,				(char *)data, len, 0, 0);			len = retlen;			}			if (rc != BZ_OK) {				printf ("BUNZIP2 ERROR: %d\n", rc);				free(buf);				return 1;			}			puts("OK\n");			break;#endif		default:			printf ("Unimplemented compression type %d\n", hdr->ih_comp);			free(buf);			return 1;		}		rc = mpl_prg(buf, len);		free(buf);	} else {		rc = mpl_prg(data, len);	}	return(rc);}#if !defined(CONFIG_PATI)void get_backup_values(backup_t *buf){	i2c_read(CFG_DEF_EEPROM_ADDR, I2C_BACKUP_ADDR,2,(void *)buf,sizeof(backup_t));}void set_backup_values(int overwrite){	backup_t back;	int i;	get_backup_values(&back);	if(!overwrite) {		if(strncmp(back.signature,"MPL\0",4)==0) {			puts("Not possible to write Backup\n");			return;		}	}	memcpy(back.signature,"MPL\0",4);	i = getenv_r("serial#",back.serial_name,16);	if(i < 0) {		puts("Not possible to write Backup\n");		return;	}	back.serial_name[16]=0;	i = getenv_r("ethaddr",back.eth_addr,20);	if(i < 0) {		puts("Not possible to write Backup\n");		return;	}	back.eth_addr[20]=0;	i2c_write(CFG_DEF_EEPROM_ADDR, I2C_BACKUP_ADDR,2,(void *)&back,sizeof(backup_t));}void clear_env_values(void){	backup_t back;	unsigned char env_crc[4];	memset(&back,0xff,sizeof(backup_t));	memset(env_crc,0x00,4);	i2c_write(CFG_DEF_EEPROM_ADDR,I2C_BACKUP_ADDR,2,(void *)&back,sizeof(backup_t));	i2c_write(CFG_DEF_EEPROM_ADDR,CFG_ENV_OFFSET,2,(void *)env_crc,4);}/* * check crc of "older" environment */int check_env_old_size(ulong oldsize){	ulong crc, len, new;	unsigned off;	uchar buf[64];	/* read old CRC */	eeprom_read (CFG_DEF_EEPROM_ADDR,		     CFG_ENV_OFFSET,		     (uchar *)&crc, sizeof(ulong));	new = 0;	len = oldsize;	off = sizeof(long);	len = oldsize-off;	while (len > 0) {		int n = (len > sizeof(buf)) ? sizeof(buf) : len;		eeprom_read (CFG_DEF_EEPROM_ADDR, CFG_ENV_OFFSET+off, buf, n);		new = crc32 (new, buf, n);		len -= n;		off += n;	}	return (crc == new);}static ulong oldsizes[] = {	0x200,	0x800,	0};void copy_old_env(ulong size){	uchar name_buf[64];	uchar value_buf[0x800];	uchar c;	ulong len;	unsigned off;	uchar *name, *value;	name=&name_buf[0];	value=&value_buf[0];	len=size;	off = sizeof(long);	while (len > off) {		eeprom_read (CFG_DEF_EEPROM_ADDR, CFG_ENV_OFFSET+off, &c, 1);		if(c != '=') {			*name++=c;			off++;		}		else {			*name++='\0';			off++;			do {				eeprom_read (CFG_DEF_EEPROM_ADDR, CFG_ENV_OFFSET+off, &c, 1);				*value++=c;				off++;				if(c == '\0')					break;			} while(len > off);			name=&name_buf[0];			value=&value_buf[0];			if(strncmp(name,"baudrate",8)!=0) {				setenv(name,value);			}		}	}}void check_env(void){	unsigned char *s;	int i=0;	char buf[32];	backup_t back;	s=getenv("serial#");	if(!s) {		while(oldsizes[i]) {			if(check_env_old_size(oldsizes[i]))				break;			i++;		}		if(!oldsizes[i]) {			/* no old environment has been found */			get_backup_values (&back);			if (strncmp (back.signature, "MPL\0", 4) == 0) {				sprintf (buf, "%s", back.serial_name);				setenv ("serial#", buf);				sprintf (buf, "%s", back.eth_addr);				setenv ("ethaddr", buf);				printf ("INFO:  serial# and ethaddr recovered, use saveenv\n");				return;			}		}		else {			copy_old_env(oldsizes[i]);			puts("INFO:  old environment ajusted, use saveenv\n");		}	}	else {		/* check if back up is set */		get_backup_values(&back);		if(strncmp(back.signature,"MPL\0",4)!=0) {			set_backup_values(0);		}	}}extern device_t *stdio_devices[];extern char *stdio_names[];void show_stdio_dev(void){	/* Print information */	puts("In:    ");	if (stdio_devices[stdin] == NULL) {		puts("No input devices available!\n");	} else {		printf ("%s\n", stdio_devices[stdin]->name);	}	puts("Out:   ");	if (stdio_devices[stdout] == NULL) {		puts("No output devices available!\n");	} else {		printf ("%s\n", stdio_devices[stdout]->name);	}	puts("Err:   ");	if (stdio_devices[stderr] == NULL) {		puts("No error devices available!\n");	} else {		printf ("%s\n", stdio_devices[stderr]->name);	}}#endif /* #if !defined(CONFIG_PATI) */int do_mplcommon(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]){ 	ulong size,src,ld_addr;	int result;#if !defined(CONFIG_PATI)	backup_t back;	src = MULTI_PURPOSE_SOCKET_ADDR;	size = IMAGE_SIZE;#endif	if (strcmp(argv[1], "flash") == 0)	{#if (CONFIG_COMMANDS & CFG_CMD_FDC)		if (strcmp(argv[2], "floppy") == 0) { 			char *local_args[3];			extern int do_fdcboot (cmd_tbl_t *, int, int, char *[]);			puts("\nupdating bootloader image from floppy\n");			local_args[0] = argv[0];	    		if(argc==4) {				local_args[1] = argv[3];				local_args[2] = NULL;				ld_addr=simple_strtoul(argv[3], NULL, 16);				result=do_fdcboot(cmdtp, 0, 2, local_args);			}			else {				local_args[1] = NULL;				ld_addr=CFG_LOAD_ADDR;				result=do_fdcboot(cmdtp, 0, 1, local_args);			}			result=mpl_prg_image((uchar *)ld_addr);			return result;		}#endif /* (CONFIG_COMMANDS & CFG_CMD_FDC) */		if (strcmp(argv[2], "mem") == 0) {	    		if(argc==4) {				ld_addr=simple_strtoul(argv[3], NULL, 16);			}			else {				ld_addr=load_addr;			}			printf ("\nupdating bootloader image from memory at %lX\n",ld_addr);			result=mpl_prg_image((uchar *)ld_addr);			return result;		}#if !defined(CONFIG_PATI)		if (strcmp(argv[2], "mps") == 0) {			puts("\nupdating bootloader image from MPS\n");			result=mpl_prg((uchar *)src,size);			return result;		}#endif /* #if !defined(CONFIG_PATI)	*/	}	if (strcmp(argv[1], "mem") == 0)	{		result=0;		if(argc==3)		{			result = (int)simple_strtol(argv[2], NULL, 16);	    }	    src=(unsigned long)&result;	    src-=CFG_MEMTEST_START;	    src-=(100*1024); /* - 100k */	    src&=0xfff00000;	    size=0;	    do {	    	size++;			printf("\n\nPass %ld\n",size);			mem_test(CFG_MEMTEST_START,src,1);			if(ctrlc())				break;			if(result>0)				result--;		}while(result);		return 0;	}#if !defined(CONFIG_PATI)	if (strcmp(argv[1], "clearenvvalues") == 0)	{ 		if (strcmp(argv[2], "yes") == 0)		{			clear_env_values();			return 0;		}	}	if (strcmp(argv[1], "getback") == 0) {		get_backup_values(&back);		back.signature[3]=0;		back.serial_name[16]=0;		back.eth_addr[20]=0;		printf("GetBackUp: signature: %s\n",back.signature);		printf("           serial#:   %s\n",back.serial_name);		printf("           ethaddr:   %s\n",back.eth_addr);		return 0;	}	if (strcmp(argv[1], "setback") == 0) {		set_backup_values(1);		return 0;	}#endif	printf("Usage:\n%s\n", cmdtp->usage);	return 1;}#if (CONFIG_COMMANDS & CFG_CMD_DOC)extern void doc_probe(ulong physadr);void doc_init (void){  doc_probe(MULTI_PURPOSE_SOCKET_ADDR);}#endif#ifdef CONFIG_VIDEO/****************************************************** * Routines to display the Board information * to the screen (since the VGA will be initialized as last, * we must resend the infos) */#ifdef CONFIG_CONSOLE_EXTRA_INFOextern GraphicDevice ctfb;extern int get_boot_mode(void);void video_get_info_str (int line_number, char *info){	/* init video info strings for graphic console */	DECLARE_GLOBAL_DATA_PTR;	PPC405_SYS_INFO sys_info;	char rev;	int i,boot;	unsigned long pvr;	char buf[64];	char tmp[16];	char cpustr[16];	unsigned char *s, *e, bc;	switch (line_number)	{	case 2:		/* CPU and board infos */		pvr=get_pvr();		get_sys_info (&sys_info);		switch (pvr) {			case PVR_405GP_RB: rev='B'; break;			case PVR_405GP_RC: rev='C'; break;			case PVR_405GP_RD: rev='D'; break;			case PVR_405GP_RE: rev='E'; break;			case PVR_405GPR_RB: rev='B'; break;			default:           rev='?'; break;		}		if(pvr==PVR_405GPR_RB)			sprintf(cpustr,"PPC405GPr %c",rev);		else			sprintf(cpustr,"PPC405GP %c",rev);		/* Board info */		i=0;		s=getenv ("serial#");#ifdef CONFIG_PIP405		if (!s || strncmp (s, "PIP405", 6)) {			sprintf(buf,"### No HW ID - assuming PIP405");		}#endif#ifdef CONFIG_MIP405		if (!s || strncmp (s, "MIP405", 6)) {			sprintf(buf,"### No HW ID - assuming MIP405");		}#endif		else {			for (e = s; *e; ++e) {				if (*e == ' ')					break;			}			for (; s < e; ++s) {				if (*s == '_') {					++s;					break;				}				buf[i++]=*s;			}			sprintf(&buf[i]," SN ");			i+=4;			for (; s < e; ++s) {				buf[i++]=*s;			}			buf[i++]=0;		}		sprintf (info," %s %s %s MHz (%lu/%lu/%lu MHz)",			buf, cpustr,			strmhz (tmp, gd->cpu_clk), sys_info.freqPLB / 1000000,			sys_info.freqPLB / sys_info.pllOpbDiv / 1000000,			sys_info.freqPLB / sys_info.pllExtBusDiv / 1000000);		return;	case 3:		/* Memory Info */		boot = get_boot_mode();		bc = in8 (CONFIG_PORT_ADDR);		sprintf(info, " %luMB RAM, %luMB Flash Cfg 0x%02X %s %s",			gd->bd->bi_memsize / 0x100000,			gd->bd->bi_flashsize / 0x100000,			bc,			(boot & BOOT_MPS) ? "MPS boot" : "Flash boot",			ctfb.modeIdent);		return;	case 1:		sprintf	(buf, "%s",CONFIG_IDENT_STRING);		sprintf (info, " %s", &buf[1]);		return;    }    /* no more info lines */    *info = 0;    return;}#endif /* CONFIG_CONSOLE_EXTRA_INFO */#endif /* CONFIG_VIDEO */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产成人一区二区三区| 国产亚洲成av人在线观看导航| 欧美三级乱人伦电影| 884aa四虎影成人精品一区| 日韩精品一区二区三区在线观看| 久久久蜜桃精品| 亚洲人成网站影音先锋播放| 日本网站在线观看一区二区三区| 国产一区二区三区综合 | 亚洲不卡一区二区三区| 樱桃国产成人精品视频| 国产在线视频不卡二| 欧美性色黄大片| 国产精品日韩精品欧美在线| 成人免费在线视频观看| jlzzjlzz国产精品久久| 五月开心婷婷久久| 中文字幕一区二区不卡| 欧美一级日韩免费不卡| 欧美一区二区福利视频| 亚洲国产一区二区在线播放| 国产成人精品一区二区三区网站观看| 91精品免费在线| 亚洲最大的成人av| 91免费版在线| 亚洲欧美视频在线观看视频| 国产99久久久国产精品潘金 | 亚洲国产欧美在线| 色婷婷综合视频在线观看| 91日韩精品一区| 综合久久久久久久| 国产成人小视频| 中文字幕免费不卡| 国产成人99久久亚洲综合精品| 26uuu亚洲| 国产成人免费在线观看不卡| 久久久久久久电影| 国产成人在线免费| 久久久久国产精品免费免费搜索| 国产伦理精品不卡| 久久精品视频一区| 成人黄色av电影| 亚洲精品精品亚洲| 欧美三级三级三级爽爽爽| 亚洲成人av在线电影| 制服.丝袜.亚洲.中文.综合| 美女视频免费一区| 久久久久久久久久久久电影| 国产成a人无v码亚洲福利| 中国av一区二区三区| 91首页免费视频| 亚洲国产精品一区二区尤物区| 欧美日韩高清一区| 捆绑调教美女网站视频一区| 国产亚洲精品资源在线26u| 岛国av在线一区| 亚洲视频在线一区二区| 欧美三区在线视频| 久久99精品国产91久久来源| 久久久久久综合| 色欲综合视频天天天| 免费人成在线不卡| 国产精品污污网站在线观看| 欧美日韩免费不卡视频一区二区三区| 琪琪久久久久日韩精品| 久久精品欧美一区二区三区麻豆| 91亚洲精品一区二区乱码| 日韩中文字幕亚洲一区二区va在线| 精品国产一区二区三区不卡| 91视频一区二区三区| 日韩电影在线观看网站| 国产精品私人影院| 69堂成人精品免费视频| 成人福利视频网站| 日韩和的一区二区| 亚洲欧洲日产国码二区| 91麻豆精品国产91久久久久久久久 | 成人国产精品视频| 亚洲bt欧美bt精品777| 国产女人18水真多18精品一级做| 欧美在线视频不卡| 粉嫩一区二区三区在线看| 婷婷一区二区三区| 国产精品久久久久永久免费观看| 日韩一区二区精品在线观看| 91在线视频18| 日本韩国精品一区二区在线观看| 久久99国内精品| 国产精品视频一二三区 | 99国产精品久久久久久久久久久| 中文文精品字幕一区二区| 欧美亚洲国产一区二区三区va | 丰满亚洲少妇av| 日韩精品亚洲一区二区三区免费| 亚洲视频一区二区在线| 欧美激情一区二区三区四区| 欧美一卡二卡三卡| 欧美日韩在线播放一区| eeuss国产一区二区三区| 精品一区二区三区在线播放| 婷婷综合在线观看| 亚洲制服丝袜av| 亚洲猫色日本管| 亚洲丝袜制服诱惑| 中文字幕一区二区三区在线观看 | 久久99在线观看| 青青草97国产精品免费观看无弹窗版| 亚洲一区二区三区视频在线 | 久久综合久久综合亚洲| 亚洲欧美另类图片小说| 色婷婷香蕉在线一区二区| 国产成人免费视频网站高清观看视频 | 亚洲欧洲精品一区二区三区 | 亚洲视频免费观看| 中文字幕在线观看不卡| 欧美韩国日本综合| 欧美激情综合五月色丁香小说| 久久久久久电影| 久久无码av三级| 久久久久久一级片| 日本一区二区三区高清不卡| 久久蜜桃一区二区| 欧美国产日产图区| 国产精品久久久久三级| 中文字幕佐山爱一区二区免费| 欧美一二三区在线| 欧美高清dvd| 色综合久久综合| 亚洲午夜久久久久久久久久久| 国产精品久久久久久久久免费丝袜| 亚洲成人第一页| 偷拍自拍另类欧美| 六月丁香婷婷久久| 国产乱子伦一区二区三区国色天香| 国产一区在线观看视频| 成人黄色软件下载| 欧美色图12p| 欧美xxxxx牲另类人与| 日本一区二区视频在线| 综合久久给合久久狠狠狠97色| 一区二区三区四区在线| 天天av天天翘天天综合网色鬼国产| 青草国产精品久久久久久| 成人在线视频一区| 欧美性视频一区二区三区| 精品国产91九色蝌蚪| 国产精品人妖ts系列视频| 亚洲午夜在线电影| 国内国产精品久久| 日本精品裸体写真集在线观看 | 久久精品一区二区三区四区| 国产精品久久久久一区| 亚洲国产美女搞黄色| 精品一区二区三区免费观看| 91在线国产观看| 欧美大片免费久久精品三p| 国产目拍亚洲精品99久久精品| 亚洲一区二区综合| 国产乱国产乱300精品| 91成人在线观看喷潮| 久久精品亚洲精品国产欧美| 亚洲国产精品久久久久婷婷884 | 久久久99精品久久| 一区二区三区在线观看动漫| 国产一区福利在线| 欧美日韩在线直播| 国产精品看片你懂得| 老司机午夜精品| 91久久精品一区二区三区| 久久综合狠狠综合久久激情| 亚洲国产一区二区三区青草影视| 国产精品综合在线视频| 337p亚洲精品色噜噜| 亚洲男同性恋视频| 国产jizzjizz一区二区| 欧美一级片免费看| 亚洲国产成人va在线观看天堂| 国产成人aaaa| 久久综合久色欧美综合狠狠| 青青草精品视频| 欧美日韩大陆在线| 亚洲午夜久久久| 色94色欧美sute亚洲线路二| 国产精品婷婷午夜在线观看| 韩国欧美国产一区| 欧美一区二区三区性视频| 亚洲国产aⅴ成人精品无吗| 91精品国产高清一区二区三区蜜臀 | 99久久伊人网影院| 久久久美女艺术照精彩视频福利播放| 日韩福利视频网| 欧美人成免费网站| 亚洲国产精品天堂| 欧美在线观看视频在线| 亚洲另类在线一区| 99国产精品久久久久久久久久| 日本一区二区三区四区在线视频| 国产一区视频导航| 久久久久久电影| 国产成人av一区二区|