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

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

?? memory.c

?? 三星4510開(kāi)發(fā)板Sdns100上代的演示程序
?? C
字號(hào):
/*************************************************************************/
/*                                                                       */
/* FILE NAME                                      VERSION                */
/*                                                                       */
/*      memory.c                   		 KS32C50100   : version 1.0 */
/*                                                                       */
/* COMPONENT                                                             */
/*                                                                       */
/*                                                                       */
/* DESCRIPTION                                                           */
/*                                                                       */
/*                                                                       */
/* AUTHOR                                                                */
/*                                                                       */
/*                                                                       */
/* DATA STRUCTURES                                                       */
/*                                                                       */
/*                                                                       */
/* FUNCTIONS                                                             */
/*                                                                       */
/*      Evaluation & debugging utility for memory.                       */
/*                                                                       */
/* DEPENDENCIES                                                          */
/*                                                                       */
/*************************************************************************/
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include "snds.h"
#include "uart.h"
#include "isr.h"
#include "std.h"
#include "memory.h"
#include "pollio.h"
#include "sysconf.h"

extern char Image$$RW$$Limit[];
void *mallocPt=Image$$RW$$Limit;
//#define HEAPEND 0x13fffff    /* DATA Area:0x1000000~0x13fffff */

void *nmallocPt = (void *)AllocNonCacheAreaBase ;

// Memory Test 
void MemoryPartTest(void) 
{
	char TestItemSel ;
	IOPDATA = 0x0 ; // All LED On

	do {

	Print("\n+---------------------------------------------------+\r") ;
	Print("|          >>>>>    Memory Test    <<<<<            |\r") ;
	Print("+---------------------------------------------------+\r") ;
	Print("| Memory Copy Test                            - [C] |\r") ;
	Print("| Memory Dump                                 - [R] |\r") ;
	Print("| Memory Pattern Fill                         - [F] |\r") ;
	Print("| Memory Pattern Search                       - [S] |\r") ;
	Print("| External I/O Bank  Test                     - [E] |\r") ;
	Print("| Quit                                        - [Q] |\r") ;
	Print("+---------------------------------------------------+\r") ;

	Print("\rSelect Test Item : ") ;
	TestItemSel = get_byte() ;
	
	switch(TestItemSel)
	{
		case 'C' : case 'c' : MemoryTest() ; break ;
		case 'R' : case 'r' : MemoryDump() ; break ;
		case 'F' : case 'f' : MemPatternFill() ; break ;
		case 'S' : case 's' : MemPatternSearch(); break ;
		case 'E' : case 'e' : ExtIOBankTest(); break ;
		case 'Q' : case 'q' : break ;
		default : Print("\nInvalid Test Item Selected") ; 
				break ;
	}
	Print("\n Press Any Key To Continue ....") ; get_byte() ;

	} while  ( (TestItemSel != 'Q') && (TestItemSel != 'q') ) ;
	IOPDATA = 0x0F ; 
}

// Memory Dump top function
void MemoryDump(void)
{
     U32 DumpInitAdd, DumpSize ;
     U32 *base;  // Dump Memory base address
     U32 *end;   // Dump Memory end address
   
     Print("\n >> Input Memory Dump Base Address (0x1000000) : 0x") ;	
     DumpInitAdd = get_num() ;
     if (DumpInitAdd==0) DumpInitAdd=0x1000000 ;

     Print("\r >> Input Memory Dump Size (0x100) : 0x") ;	
     DumpSize = get_num() ;
     if (DumpSize==0) DumpSize=0x100 ;

     base = (U32 *)DumpInitAdd;
     end = (U32 *)(DumpInitAdd + DumpSize) ;

     Print("\nMemory Dump from %x to %x",base, end) ;
     MemDump(base, end);
}



/*
 * Memory dump program
 * ~~~~~~~~~~~~~~~~~~~~
 */
void MemDump(U32 *base, U32 *end)
{
	int i;
	int j;
	int k;
	int Range;
	U32 *DumpBase;
	U32 *DumpEnd ;

	DumpBase = base;
	DumpEnd =  end;

	Range=DumpEnd-DumpBase ;
	k=0; j=0;

	for (i=0;i < Range+4;i+=j)
	  if (k==20) {
		Print("\nPress Any Key"); 
		get_byte();k=0;}
	  else { 
		k++;
		{
			Print("\r%8x : ",DumpBase) ;
			j=0;

			for (j=0; j<4 ; j++)
				{
				Print(" %08x ",*DumpBase) ;
				DumpBase++ ;
				}
		}
	  }
}

/* 
 *  Memory Clear
 *  ~~~~~~~~~~~~~~~~~~~
 */
void MemClear(U32 *startaddr, U32 *endaddr) 
{
	int cnt ;
	cnt = (int)(endaddr - startaddr) ;
	while(cnt--) *startaddr++ = 0x00000000 ;
}

/* 
 *  Memory Pattern Fill
 *  ~~~~~~~~~~~~~~~~~~~
 */
void MemPatternFill(void) 
{
	U32 *StartAddr, *EndAddr ;
	U32 Pattern ;
	int cnt ;

     	Print("\n >>> Memory Pattern Fill  <<< ") ;

     	Print("\r $$ Memory Pattern Fill Start Address : 0x") ;	
     	StartAddr = (U32 *)get_num() ;
     	Print("\r $$ Memory Pattern Fill End Address : 0x") ;	
     	EndAddr = (U32 *)get_num() ;
     	Print("\r $$ Memor Fill Pattern : 0x") ;	
     	Pattern = get_num() ;

	cnt = (int)(EndAddr - StartAddr) ;

	Print("\n >> Memory Fill %x to %x, Pattern : %x",\
		StartAddr, EndAddr,Pattern) ;

	while(cnt--) *StartAddr++ = Pattern ;
}

/* 
 *  Memory Pattern Search
 *  ~~~~~~~~~~~~~~~~~~~~~
 */
void MemPatternSearch(void)
{
	U32 *StartAddr, *EndAddr ;
	U32 Pattern ;
	int cnt ;

     	Print("\n >>> Memory Pattern Search  <<< ") ;

     	Print("\r $$ Memory Pattern Search Start Address : 0x") ;	
     	StartAddr = (U32 *)get_num() ;
     	Print("\r $$ Memory Pattern Search End Address : 0x") ;	
     	EndAddr = (U32 *)get_num() ;
     	Print("\r $$ Memory Search Pattern : 0x") ;	
     	Pattern = get_num() ;

	cnt = (int)(EndAddr - StartAddr) ;

	Print("\n >> Memory Pattern Search 0x%x to 0x%x, Pattern : %x\n", \
		StartAddr, EndAddr,Pattern) ;

	while(cnt--) 
	{
	if (*StartAddr == Pattern) 
		Print("\r +-- Pattern is Searched : %x (%x)",\
				StartAddr, *StartAddr);
	StartAddr++ ;
	}
}

/* 
 *  Memory Test Top Program
 *  ~~~~~~~~~~~~~~~~~~~~~~~~
 */
void MemoryTest(void) 
{
	U32 MemCopyDest ; // Input Memory Test Address
	U32 MemTestSize ; // Input Memory Test Size
        U32 *src;    // Memory source address
        U32 *dst;    // Memory destination address
        int tsize;   // Memory Test size
        int lsize;   // memory test loop size

	Print("\n >> Input Memory Test Location(0x1200000) : 0x") ;
	MemCopyDest = get_num() ;
	if (MemCopyDest==0) MemCopyDest=0x1200000 ;

	Print("\n >> Input Memory Test Size(0x10000) : 0x") ;
	MemTestSize = get_num() ;
	if (MemTestSize==0) MemTestSize=0x500 ;

	Print("\n >> Input Memory Test repeat number(0x10000) : 0x") ;
	lsize = get_num();
	if (lsize==0) lsize=(int)MemTestLoop;


        src = (U32 *)MemCopySrc;
        dst = (U32 *)MemCopyDest;
        tsize = (int)MemTestSize;
        
	Print("\n - Source Memory Location      : 0x%08x",src) ;
	Print("\r - Destination Memory Location : 0x%08x",dst) ;
	Print("\r - Memory Test Size            : 0x%08x",tsize) ;
	Print("\r - Memory Test Loop Count      : %d\r",lsize) ;

        if (!MemTest(src,dst,tsize,lsize)) 
			Print("\n $$$ Memory Test Fail !!! ") ;
	else Print("\n $$$ Memory Test Success !!! ") ;
}


/* 
 *  Memory  word, halfword, byte copy & Compare test
 *  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 */
int MemTest(U32 *src,U32 *dst,int tsize,int lsize)
{
	int i;
	int j;

	// Word Test
	Print("\r ++   Memory Test (Long) ....    ");
	for (i=0 ; i < lsize ; i++) 
	{
		for (j=0 ; j < 4 ; j++)
		{
			MemTestInit(src, tsize);
			if ( !WordCopyTest(src, dst, tsize) ) 
				{ 
				Print(" Fail !!") ;
				return MemTestFail ;
				}
			PrintMemTestStatus(j) ;
		}
	}
	Print("Ok") ;

	// Half Word Test
	Print("\r ++   Memory Test (Short) ...    ") ;
	for (i=0 ; i < lsize ; i++) 
	{
		for (j=0 ; j < 4 ; j++)
		{
			MemTestInit(src, tsize);
			if ( !SWordCopyTest(src, dst, tsize) ) 
				{ 
				Print(" Fail !!") ;
				return MemTestFail ;
				}
			PrintMemTestStatus(j) ;
		}
	}
	Print("Ok") ;

	// Byte Test
	Print("\r ++   Memory Test (Byte) ....    ") ;
	for (i=0 ; i < lsize ; i++) 
	{
		for (j=0 ; j < 4 ; j++)
		{
			MemTestInit(src, tsize);
			if ( !ByteCopyTest(src, dst, tsize) ) 
				{ 
				Print(" Fail !!") ;
				return MemTestFail ;
				}
			PrintMemTestStatus(j) ;
		}
	}
	Print("Ok") ;

	return MemTestOk ;
}




// Initialize Memory Test, Test Pattern Generation
void MemTestInit(U32 *src, int tsize)
{
	U32 *InitSrcAddr;
	int cnt ;
	int pat ;

	InitSrcAddr = src ;
	cnt = tsize ;
	pat = 0;

	while(cnt--) {
		*InitSrcAddr++ = (U32)PatternGen(pat++);
        }
}

int ByteCopyTest(U32 *src,U32 *dst,int tsize) 
{
	bcopy(src, dst, tsize) ;
	if (!bcomp(src, dst, tsize)) return MemTestFail  ;

	return MemTestOk ;
}
int SWordCopyTest(U32 *src,U32 *dst,int tsize) 
{
	scopy(src, dst, tsize) ;
	if (!scomp(src, dst, tsize)) return MemTestFail  ;

	return MemTestOk ;
}
int WordCopyTest(U32 *src,U32 *dst,int tsize) 
{
	wcopy(src, dst, tsize) ;
	if (!wcomp(src, dst, tsize)) return MemTestFail  ;

	return MemTestOk ;
}

// Byte Copy Function
void bcopy(void *src, void *dst, int tsize)
{
	U8 *SrcAddr; 
	U8 *DstAddr;
	int cnt ;

	SrcAddr	= (U8 *)src ;
	DstAddr	= (U8 *)dst ;
	cnt	= tsize;

	while(cnt--)
		*DstAddr++ = *SrcAddr++ ;
}

// Half Word Copy Function
void scopy(void *src, void *dst, int tsize)
{
	U16 *SrcAddr; 
	U16 *DstAddr;
	int cnt ;

	SrcAddr	= (U16 *)src;
	DstAddr	= (U16 *)dst;
	cnt	= tsize ;

	while(cnt--)
		*DstAddr++ = *SrcAddr++ ;
}

// Word Copy Function
void wcopy(void *src, void *dst, int tsize)
{
	U32 *SrcAddr; 
	U32 *DstAddr;
	int cnt ;

	SrcAddr	= (U32 *)src ;
	DstAddr	= (U32 *)dst ;
	cnt	= tsize ;

	while(cnt--)
		*DstAddr++ = *SrcAddr++ ;
}

// Byte Compare Function
int bcomp(void *src, void *dst, int tsize)
{
	U8 *SrcAddr; 
	U8 *DstAddr;
	int cnt ;

	SrcAddr	= (U8 *)src ;
	DstAddr	= (U8 *)dst ;
	cnt	= tsize ;

	while(cnt--)
	{
		if ( *DstAddr != *SrcAddr )
			{
			Print("\rMemory Byte Test Error") ;
			Print("\rSource Data is %02x at Addr %08x",*SrcAddr,SrcAddr) ;
			Print("\rDestin Data is %02x at Addr %08x",*DstAddr,DstAddr) ;
			return MemTestFail ;
			}
                DstAddr++;
                SrcAddr++;
	}
	return MemTestOk ;
}

// Half Word Compare Function
int scomp(void *src, void *dst, int tsize)
{
	U16 *SrcAddr;
	U16 *DstAddr;
	int cnt ;

	SrcAddr	= (U16 *)src ;
	DstAddr	= (U16 *)dst ;
	cnt	= tsize ;

	while(cnt--)
	{
		if ( *DstAddr != *SrcAddr )
			{
			Print("\rMemory Short Test Error") ;
			Print("\rSource Data is %04x at Addr %08x",*SrcAddr,SrcAddr) ;
			Print("\rDestin Data is %04x at Addr %08x",*DstAddr,DstAddr) ;
			return MemTestFail ;
			}
                DstAddr++;
                SrcAddr++;
                
	}
	return MemTestOk ;
}

// Word Compare Function
int wcomp(void *src, void *dst, int tsize)
{
	U32 *SrcAddr;
	U32 *DstAddr;
	int cnt ;

	SrcAddr	= (U32 *)src ;
	DstAddr	= (U32 *)dst ;
	cnt	= tsize ;

	while(cnt--)
	{
		if ( *DstAddr != *SrcAddr )
			{
			Print("\rMemory Long Test Error") ;
			Print("\rSource Data is %08x at Addr %08x",*SrcAddr,SrcAddr) ;
			Print("\rDestin Data is %08x at Addr %08x",*DstAddr,DstAddr) ;
			return MemTestFail ;
			}
                DstAddr++;
                SrcAddr++;
	}
	return MemTestOk ;
}

// External I/O Bank Test
void ExtIOBankTest(void)
{

	U32 *ExtIoBase0, *ExtIoBase1, *ExtIoBase2, *ExtIoBase3 ;
	U32 *src ;
	U32 ExtIoTestSize = 0xFF0 ; 
        int lsize = 5 ;   // Ext IO test loop count
	char TestBankSel ;

	EXTACON0  = TCOS0 | TACS0 | TCOH0 | TACC0 ; 
	EXTACON0 |= TCOS1 | TACS1 | TCOH1 | TACC1 ; 
	EXTACON1  = TCOS2 | TACS2 | TCOH2 | TACC2 ; 
	EXTACON1 |= TCOS3 | TACS3 | TCOH3 | TACC3 ; 

	Print("\n >> External I/O Bank Test <<") ;
	ExtIoBase0 = (U32 *)EXTIOBASE ;
	ExtIoBase1 = ExtIoBase0 + 4096 ;
	ExtIoBase2 = ExtIoBase1 + 4096 ;
	ExtIoBase3 = ExtIoBase2 + 4096 ;

	Print("\r +- External I/O Bank #0 Base Addr : 0x%x",ExtIoBase0) ;
	Print("\r +- External I/O Bank #1 Base Addr : 0x%x",ExtIoBase1) ;
	Print("\r +- External I/O Bank #2 Base Addr : 0x%x",ExtIoBase2) ;
	Print("\r +- External I/O Bank #3 Base Addr : 0x%x",ExtIoBase3) ;

        src = (U32 *)MemCopySrc;

	Print("\n $$ Select Test External I/O Bank (0,1,2,3,Q) ? ") ;
	TestBankSel = get_byte() ;
	

	if (TestBankSel == '0' )
	{
		Print("\n <<>> External I/O Bank #0 Test ") ;
        	MemTest(src,ExtIoBase0,ExtIoTestSize,lsize);
	}

	else if (TestBankSel == '1' )
	{
		Print("\n <<>> External I/O Bank #1 Test ") ;
        	MemTest(src,ExtIoBase1,ExtIoTestSize,lsize);
	}

	else if (TestBankSel == '2' )
	{
		Print("\n <<>> External I/O Bank #2 Test ") ;
        	MemTest(src,ExtIoBase2,ExtIoTestSize,lsize);
	}

	else if (TestBankSel == '3' )
	{
		Print("\n <<>> External I/O Bank #3 Test ") ;
        	MemTest(src,ExtIoBase3,ExtIoTestSize,lsize);
	}
	else Print("\r +- Invalid External I/O Bank Selected") ;
}

// Print Memory Test Status
void PrintMemTestStatus(int j)
{

	if (j==0) PrintStatus(0xE,'/') ;
	else if (j==1) PrintStatus(0xD,'-') ;
	else if (j==2) PrintStatus(0xB,'\\') ;
	else PrintStatus(0x7,'|') ;
}

int PatternGen(unsigned int seed)
{
     if(!(seed%0x100)) srand(seed);
     return(rand());
}

// Allocation for NonCacheable Area
void *nmalloc(unsigned nbyte) 
/*Very simple; Use nmalloc() & free() like Stack*/
{
        void *returnPt=nmallocPt;

        nmallocPt= (int *)nmallocPt+nbyte/4+((nbyte%4)>0);
        if( (int)nmallocPt > AllocNonCacheAreaEnd)return NULL;
        return returnPt;
}

// Allocation for Cacheable Area
/*
 * Function : *malloc
 * Input    : Number of byte for necessary
 * Output   : Start pointer of allocated memory location.
 */
void *malloc(unsigned nbyte) 
{
        void *returnPt=mallocPt;

        mallocPt= (int *)mallocPt+nbyte/4+((nbyte%4)>0);
        if( (int)mallocPt > HEAPEND)return NULL;
        return returnPt;
}

/*
 * Function : free
 * Input    : Start pointer for freeze memory location
 * Output   : No
 */
void free(void *pt)
{
        mallocPt=pt;
}

void nmfree(void *pt)
{
        nmallocPt=pt;
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
麻豆专区一区二区三区四区五区| 99国产精品视频免费观看| 午夜精品爽啪视频| 亚洲地区一二三色| 亚洲国产成人av网| 亚洲午夜私人影院| 性做久久久久久久免费看| 亚洲综合丁香婷婷六月香| 亚洲国产精品影院| 亚洲成av人片一区二区三区| 亚洲成人精品影院| 美女网站在线免费欧美精品| 国产一区在线不卡| 成人午夜又粗又硬又大| 不卡欧美aaaaa| 色婷婷久久久亚洲一区二区三区| 91久久精品一区二区| 精品视频一区二区三区免费| 欧美女孩性生活视频| 精品国产一区二区精华| 久久色在线视频| 中文字幕免费一区| 亚洲欧美一区二区三区国产精品| 夜夜夜精品看看| 男女性色大片免费观看一区二区| 国产真实精品久久二三区| 波多野结衣中文字幕一区| 91视频一区二区| 3atv在线一区二区三区| 欧美精品一区在线观看| 国产精品国产三级国产有无不卡| 亚洲欧美激情插| 蜜臀av一区二区三区| 成人午夜精品一区二区三区| 欧美在线free| 欧美成人一区二区三区| 国产精品嫩草99a| 亚洲福利一区二区三区| 国产综合久久久久久久久久久久| 成人一区二区三区视频| 欧美少妇一区二区| 久久精品日产第一区二区三区高清版| 国产精品国产三级国产aⅴ中文 | 亚洲自拍偷拍图区| 免费成人av资源网| 91影院在线免费观看| 欧美一区二区黄色| 国产精品初高中害羞小美女文| 亚洲a一区二区| 国产91清纯白嫩初高中在线观看 | 欧美伦理电影网| 日本一区二区三区四区在线视频| 亚洲国产视频一区| 国产成人午夜电影网| 欧美最猛黑人xxxxx猛交| 26uuu成人网一区二区三区| 亚洲欧美精品午睡沙发| 国产剧情一区在线| 欧美日韩精品专区| 1024成人网色www| 久久国产精品一区二区| 欧美丝袜丝交足nylons图片| 久久精品视频免费观看| 日本aⅴ亚洲精品中文乱码| 99精品欧美一区二区蜜桃免费 | 自拍偷拍欧美激情| 久久99热这里只有精品| 欧美日韩一二三区| 亚洲欧洲精品成人久久奇米网| 蜜臀av国产精品久久久久| 91国偷自产一区二区使用方法| 久久先锋影音av鲁色资源网| 日精品一区二区三区| 97久久精品人人做人人爽50路 | 久久99久久99精品免视看婷婷| 色综合久久天天综合网| 久久福利视频一区二区| 色狠狠综合天天综合综合| 欧美经典一区二区| 麻豆国产91在线播放| 欧美日本韩国一区| 亚洲一区在线观看免费| 一本大道久久a久久综合| 中文字幕乱码亚洲精品一区| 国产一区三区三区| 日韩欧美国产系列| 日本成人在线视频网站| 欧美日韩国产欧美日美国产精品| 亚洲欧美电影一区二区| 91亚洲大成网污www| 国产精品欧美精品| caoporn国产一区二区| 亚洲国产成人自拍| 粉嫩在线一区二区三区视频| 精品国产凹凸成av人导航| 美女性感视频久久| 欧美电影免费观看高清完整版| 日本免费新一区视频| 欧美一区二区精品在线| 蜜臀av一区二区在线免费观看 | 亚洲国产精品精华液2区45| 国内偷窥港台综合视频在线播放| 欧美一二三四在线| 美腿丝袜在线亚洲一区| 欧美一二三区在线| 麻豆91在线播放| 日韩欧美在线123| 久久99精品久久久久久久久久久久 | 视频一区视频二区中文| 5566中文字幕一区二区电影| 日本特黄久久久高潮| 日韩免费看的电影| 国内欧美视频一区二区| 国产欧美一二三区| 99国产精品久久久| 亚洲一区二区三区小说| 欧美群妇大交群的观看方式| 日韩国产欧美在线观看| 日韩精品中文字幕在线不卡尤物| 激情六月婷婷综合| 欧美国产在线观看| 色综合久久中文字幕| 日日摸夜夜添夜夜添精品视频| 91精品国产高清一区二区三区| 九九国产精品视频| 国产精品美女久久久久av爽李琼| 97精品超碰一区二区三区| 亚洲成av人影院| 精品国精品自拍自在线| 成人毛片视频在线观看| 亚洲激情欧美激情| 日韩一卡二卡三卡| 丁香五精品蜜臀久久久久99网站| 日韩毛片在线免费观看| 欧美日本韩国一区| 国产传媒欧美日韩成人| 亚洲精选免费视频| 日韩一级片在线播放| 国产传媒欧美日韩成人| 亚洲一区二区三区四区的| 日韩一区二区三区免费看| 国产91丝袜在线播放九色| 亚洲一区二区四区蜜桃| 26uuu另类欧美| 日本高清不卡一区| 精品一区二区久久久| 高清成人免费视频| 亚洲成av人片在线观看| 国产亚洲精品免费| 欧美午夜精品久久久久久孕妇| 久久超碰97中文字幕| 亚洲欧美一区二区三区极速播放| 91精品午夜视频| 91麻豆免费看片| 国产乱一区二区| 亚洲地区一二三色| 国产精品久久看| 日韩精品一区国产麻豆| 91小视频免费看| 久久99九九99精品| 亚洲综合成人在线视频| 中文字幕欧美三区| 日韩精品一区二区三区视频| 一本一道久久a久久精品综合蜜臀| 日韩不卡免费视频| 日韩毛片在线免费观看| 久久综合久久综合亚洲| 欧美巨大另类极品videosbest | 91在线视频官网| 精品中文字幕一区二区小辣椒| 亚洲蜜臀av乱码久久精品| 2021国产精品久久精品| 欧美日韩国产小视频在线观看| 成人av影视在线观看| 国产制服丝袜一区| 日本最新不卡在线| 亚洲国产精品影院| 亚洲另类色综合网站| 国产精品你懂的在线欣赏| 精品国产乱码久久久久久浪潮 | 国产综合色视频| 视频一区欧美精品| 亚洲自拍偷拍网站| 一区在线观看免费| 久久久精品国产免费观看同学| 91精品国产综合久久精品| 欧美专区亚洲专区| 97久久精品人人做人人爽50路| 国产精品123| 国产另类ts人妖一区二区| 久久www免费人成看片高清| 日本va欧美va精品发布| 天堂久久久久va久久久久| 亚洲亚洲人成综合网络| 1000部国产精品成人观看| 国产精品嫩草影院av蜜臀| 国产精品美女久久久久久久网站| 久久网这里都是精品| 久久日一线二线三线suv| 日韩欧美精品在线|