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

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

?? cachearchlib.c

?? vxworks的源代碼
?? C
?? 第 1 頁 / 共 4 頁
字號:
/* cacheArchLib.c - ARM cache support library *//* Copyright 1996-2001 Wind River Systems, Inc. */#include "copyright_wrs.h"/*modification history--------------------01v,17dec02,jb   Adding ARM 926e and ARM 102xE support01v,20jan03,jb   Resolve SPR 8203701u,13nov01,to   hand over global variables to cacheArchVars.c,		 synchronize with AE, style and spelling fix,		 initialise (UK) -> initialize (US), etc.01t,03oct01,jpd  corrected ARM946E code (SPR #68958).01s,26sep01,scm  XScale should support CACHE_WRITETHROUGH...01r,19sep01,scm  XScale compatibility with visionProbe requires full                 instruction cache flush instead of single line flush...01q,25jul01,scm  add support for btbInvalidate...01p,23jul01,scm  change XScale name to conform to coding standards...01o,21jul00,jpd  added support for ARM946E.01n,04apr00,jpd  fix bug in 920T cacheInvalidate SPR #30698 and cacheDmaMalloc		 SPR #30697.01m,26oct99,jpd  cacheArchLibInstall documentation changes.01l,10sep99,jpd  add support for ARM740T, ARM720T, ARM920T.01k,21jan99,jpd  documentation changes.01j,20jan99,cdp  removed support for old ARM libraries.01i,24nov98,jpd  add support for ARM 940T, SA-1100, SA-1500; add variable		 cacheArchAlignSize; added option not to disable I-cache on		 SA-1500; removed use of mmuIntLock; vmBaseLib cacheDmaFree now		 marks buffer cacheable (SPR #22407); add cacheArchLibInstall();            cdp  added support for generic ARM ARCH3/ARCH4.01h,09mar98,jpd  added cacheLib.dmaVirtToPhys etc. setting.01g,31oct97,jpd  fixed cache invalidation faults on 810.01f,27oct97,kkk  took out "***EOF***" line from end of file.01e,10oct97,jpd  Restrict include of dsmArmLib.h to 810.01d,18sep97,jpd  Check SWI vector initialised before issuing IMB. Add		 use of IMBRange. Defer setting of cacheDataEnabled,		 when MMU is off. Modified FIQ protection, added		 BSP-specific cache flush area. Added ARM7TDMI_T		 support. Made cacheArchState, cacheArchIntMask not		 specific to ARMSA110.01c,03mar97,jpd  Tidied comments/documentation.01b,29jan97,jpd  Added dummy cacheArchLibInit for ARM7TDMI.01a,04sep96,jpd  written, based on Am29K version 01c and 68k version 03j*//*DESCRIPTIONThis library contains architecture-specific cache library functions for theARM family instruction and data caches.  The various members of the ARMfamily of processors support different cache mechanisms; thus, someoperations cannot be performed by certain processors because they lackparticular functionalities.  In such cases, the routines in thislibrary return ERROR.  Processor-specific constraints are addressed inthe manual entries for routines in this library.  If the caches areunavailable or uncontrollable, the routines return ERROR.STRONGARM CACHE FLUSHINGOn ARM SA-110, the BSP must provide the (virtual) address(sysCacheFlushReadArea) of a readable, cached block of address space,used for nothing else, which will be read to force the D-cache to bewritten out to memory.  If the BSP has an area of the address spacewhich is usable for this purpose, which does not actually containmemory, it should set the pointer to that area.  If it does not, itshould allocate some RAM for this. In either case, the area must bemarked as readable and cacheable in the page tables.On ARM SA-1100/ARM SA-1500, in addition to sysCacheFlushReadArea, theBSP must provide the (virtual) address (sysMinicacheFlushReadArea) of areadable, block of address space, marked as minicacheable, used fornothing else, which will be used to force the minicache to be writtenout to memory.ARM 940TThe BSP must declare a pointer (sysCacheUncachedAdrs) to a readable,uncached word of address space used for reading, to drain thewrite-buffer.  The area containing this address must be marked as validand non-cacheable, and the address must be safe to read, i.e. have noside-effects.ARM 926EJ-SThe BSP must declare a pointer (sysCacheUncachedAdrs) to a readable,uncached word of address space used for reading, to synchronise thedata and instruction streams in Level 2 AHB subsystems. The addressmust be marked as valid and non-cacheable, and the address must be safeto read, i.e. have no side-effects.INTERNALAlthough this library contains code written for the ARM810 CPU, at thetime of writing, this code has not been tested fully on that CPU.(YOU HAVE BEEN WARNED).NOTEAll caching functions on the ARM require the MMU to be enabled,except for XSCALE, StrongARM, ARM920T, ARM926E and ARM1020E, wherethe I-cache can be enabled without enabling the MMU.  No specificsupport for this mode of operation is included.INTERNALThere are some terminology problems. VxWorks uses the following definitions:Clear = VxWorks "Flush" then VxWorks "Invalidate"Flush = write out to memory = ARM "clean"Invalidate = make cache entry invalid = ARM "flush"INTERNALThe cache enable and disable processes consist of the following actions,executed by cacheArchEnable() and cacheArchDisable().  To enablea disabled cache, first the cache is fully invalidated.  Then the cache mode(write-through, copy-back, etc.) is configured.  Finally, the cache is turnedon.  Enabling an already enabled cache results in no operation.INTERNALTo disable an enabled cache, first the cache is invalidated.  However, a cacheconfigured in copy-back mode must first have been pushed out to memory.  Onceinvalidated, the cache is turned off.  Disabling an already disabled cacheresults in no operation.For general information about caching, see the manual entry for cacheLib.INCLUDE FILES: cacheLib.h, mmuLib.hSEE ALSO: cacheLib, vmLib,.I "ARM Architecture Reference Manual,".I "ARM 710A Data Sheet,".I "ARM 810 Data Sheet,".I "Digital Semiconductor SA-110 Microprocessor Technical Reference Manual,".I "Digital Semiconductor SA-1100 Microprocessor Technical Reference Manual,".I "Digital Semiconductor SA-1500 Mediaprocessor Data Sheet,".I "ARM 720T Data Sheet,".I "ARM 740T Data Sheet,".I "ARM 920T Technical Reference Manual,".I "ARM 926EJ-S Technical Reference Manual,".I "ARM 940T Technical Reference Manual.".I "ARM 1020E Technical Reference Manual.".I "ARM 1022E Technical Reference Manual."*//* includes */#include "vxWorks.h"#if !defined(ARMCACHE)#error ARMCACHE not defined#endif#include "errnoLib.h"#include "cacheLib.h"#include "arch/arm/mmuArmLib.h"#include "arch/arm/intArmLib.h"#if ARMCACHE_NEEDS_IMB#include "arch/arm/dsmArmLib.h"#include "arch/arm/excArmLib.h"#endif#include "stdlib.h"#include "private/memPartLibP.h"#include "private/vmLibP.h"#include "private/funcBindP.h"#include "intLib.h"/* externals */#if (ARM_HAS_MPU)IMPORT int ffsMsb (UINT32 val);#endif/* * The following variables are declared outside this file in a file that is * not compiled in a manner such that variables end up with different names. */IMPORT FUNCPTR	sysCacheLibInit;IMPORT UINT32	cacheArchState;/* * Globals. * * Those globals which have values assigned to them in cacheArchLibInit(), * need to be predefined, else they may be put in BSS.  Since BSS is not * cleared until after cacheArchLibInit() has been called, this would be a * problem. */#if ((ARMCACHE == ARMCACHE_926E)   ||  (ARMCACHE == ARMCACHE_946E)  || \     (ARMCACHE == ARMCACHE_1020E)  ||  (ARMCACHE == ARMCACHE_1022E))#if ((ARMCACHE == ARMCACHE_946E)   || (ARMCACHE == ARMCACHE_1020E) || \     (ARMCACHE == ARMCACHE_1022E))/* * Mask to get cache index number from address. As it happens, this is * also the number we can use in the cache Flush/Clean code, to build * index/segment format values, as it corresponds to the largest index * number, already shifted to the correct place within the word. */UINT32  cacheArchIndexMask = 0;#if (ARMCACHE == ARMCACHE_1020E) || (ARMCACHE == ARMCACHE_1022E)UINT32  cacheArchSegMask = 0;#endif#endif /* (ARMCACHE == ARMCACHE_946E, 1020E, 1022E) */LOCAL UINT32 cacheDCacheSize = 0;LOCAL UINT32 cacheICacheSize = 0;#define D_CACHE_SIZE cacheDCacheSize#define I_CACHE_SIZE cacheICacheSize#endif /* (ARMCACHE == ARMCACHE_926E, 946E, 1020E, 1022E) *//* forward declarations */LOCAL STATUS cacheArchLibInit (CACHE_MODE instMode, CACHE_MODE dataMode);#if ((ARMCACHE == ARMCACHE_710A)   || (ARMCACHE == ARMCACHE_720T)   || \     (ARMCACHE == ARMCACHE_740T)   || (ARMCACHE == ARMCACHE_810)    || \     (ARMCACHE == ARMCACHE_SA110)  || (ARMCACHE == ARMCACHE_SA1100) || \     (ARMCACHE == ARMCACHE_SA1500) || (ARMCACHE == ARMCACHE_920T)   || \     (ARMCACHE == ARMCACHE_926E)   || (ARMCACHE == ARMCACHE_940T)   || \     (ARMCACHE == ARMCACHE_946E)   || (ARMCACHE == ARMCACHE_XSCALE) || \     (ARMCACHE == ARMCACHE_1020E)  || (ARMCACHE == ARMCACHE_1022E))LOCAL STATUS	cacheArchEnable (CACHE_TYPE cache);LOCAL STATUS	cacheArchDisable (CACHE_TYPE cache);LOCAL STATUS	cacheArchFlush (CACHE_TYPE cache, void * address, size_t bytes);LOCAL STATUS	cacheArchInvalidate (CACHE_TYPE cache, void * address,				     size_t bytes);LOCAL STATUS	cacheArchClear (CACHE_TYPE cache, void * address, size_t bytes);LOCAL STATUS	cacheArchTextUpdate (void * address, size_t bytes);LOCAL void *	cacheArchDmaMalloc (size_t bytes);LOCAL STATUS	cacheArchDmaFree (void * pBuf);LOCAL STATUS	cacheProbe (CACHE_TYPE cache);LOCAL BOOL	cacheIsOn (CACHE_TYPE cache);LOCAL BOOL	cacheMmuIsOn (void);#endif#if ((ARMCACHE == ARMCACHE_740T)   || (ARMCACHE == ARMCACHE_810)  || \     (ARMCACHE == ARMCACHE_920T)   || (ARMCACHE == ARMCACHE_926E) || \     (ARMCACHE == ARMCACHE_940T)   || (ARMCACHE == ARMCACHE_946E) || \     (ARMCACHE == ARMCACHE_XSCALE) || (ARMCACHE == ARMCACHE_1020E) || \     (ARMCACHE == ARMCACHE_1022E))/* * Cache locking capability is only present in hardware on these CPUs and * is not yet implemented. */#if FALSELOCAL STATUS	cacheArchLock (CACHE_TYPE cache, void * address, size_t bytes);LOCAL STATUS	cacheArchUnlock (CACHE_TYPE cache, void * address,				 size_t bytes);#endif#endif/* * Do not support the use of Branch Prediction yet, as we have not had time to * test it properly */#undef BPRED_SUPPORT/********************************************************************************* cacheArchLibInstall - install specific ARM cache library** This routine is provided so that a call to this routine selects the* specific cache library.  It also allows any virtual <-> physical address* translation routines provided by the BSP to be passed to the cache* library as parameters rather than as global data.  These are then used by* cacheDrvVirtToPhys() and cacheDrvPhysToVirt().** If the default address map is such that virtual and physical* addresses are identical (this is normally the case with BSPs), the* parameters to this routine can be NULL pointers.  Only where the* default memory map is such that virtual and physical addresses are* different, need the translation routines be provided.** If the address map is such that the mapping described within the* sysPhysMemDesc structure of the BSP is accurate, then the parameters to* this routine can be mmuPhysToVirt and mmuVirtToPhys: two routines* provided within the architecture code that perform the conversion based* on the information within that structure.  If that assumption is not* true, then the BSP must provide its own translation routines.** RETURNS: N/A** The specification of the translation routines is as follows:** void * virtToPhys*     (*     void *	virtAddr  /@ virtual addr to be translated @/*     )** RETURNS: the physical address** void * physToVirt*     (*     void *	physAddr  /@ physical addr to be translated @/*     )** RETURNS: the virtual address** The caching capabilities and modes for different cache types vary* considerably (see below).  The memory map is BSP-specific and some* functions need knowledge of the memory map, so they have to be provided* in the BSP.  Moreover, now that chips are being made on a* "mix-and-match" basis, selection of the cache type is now a BSP issue.** ARM 7TDMI* No cache or MMU at all (in ARM or Thumb state).  Dummy routine* provided, so that INCLUDE_CACHE_SUPPORT can be defined (the default BSP* configuration).** ARM 710A, 720T AND ARM 740T* Combined instruction and data cache. Actually a write-through cache,* but separate write-buffer could be considered to make this a* copy-back cache if the write-buffer is enabled.  Use the* write-through/copy-back argument to decide whether to enable write* buffer globally.  Marking individual pages (using the MMU) as* write-through or copy-back will control the use of the write-buffer for* those pages if the write-buffer is enabled. Data and instruction cache* modes must be identical.** ARM 810* Combined instruction and data cache.  Write-through and copy-back cache* modes, but separate write-buffer could be considered to make even* write-through a copy-back cache as all writes are buffered, when cache* is enabled. Data and instruction cache modes must be identical.** ARM SA-110* Separate instruction and data caches.  Cache hardware only supports* copy-back mode for data cache.** ARM SA-1100/SA-1110* Separate instruction and data caches.  Cache hardware only supports* copy-back mode for data cache.  D-cache is 8 kbytes in size as* opposed to 16 kbytes for SA-110 and SA-1500.  Minicache of 512 bytes.** ARM SA-1500* Separate instruction and data caches.  Cache hardware only supports* copy-back mode for data cache.  Minicache of 1 kbytes.** ARM 920T, 926E, 1020E, 1022E, AND 946E XSCALE* Separate instruction and data caches.  The global mode of the data* cache cannot be configured and must be copy-back.  Individual pages* can be marked (using the MMU) as write-through or copy-back but* separate write-buffer (which is always enabled) is used for all* cacheable writes (even write-through).  The cache replacement* algorithm can be set to be random or round-robin in hardware.  No* reliance on the method should be present in this code, but it has only* been tested in the default state (random replacement).** ARM 940T* As 920T, but no configurable cache-replacement algorithm.** INTERNAL* This routine is called (from sysHwInit0()), before cacheLibInit() has* been called, before sysHwInit has been called, and before BSS has been* cleared.**/void cacheArchLibInstall    (    void * (physToVirt) (void *), /* phys to virt addr translation rtn */    void * (virtToPhys) (void *)  /* virt to phys addr translation rtn */    )    {    static BOOL initialized = FALSE;    /* protect against being called twice */    if (initialized)	return;    /*     * Normally, cacheArchDmaMalloc() will return addresses with the     * same virtual to physical address mapping as the rest of the system     * (which is normally identical), so the following two routines do     * not need to be provided.  However, on some systems it is not     * possible for a memory mapping to be created where virtual and     * physical addresses are identical.  In that case, the BSP will     * provide routines to perform this mapping, and we should use     * them.     */    cacheLib.dmaPhysToVirtRtn	= (FUNCPTR) physToVirt;    cacheLib.dmaVirtToPhysRtn	= (FUNCPTR) virtToPhys;    /*     * Initialize the function pointer so that the     * architecture-independent code calls the correct code.     */    sysCacheLibInit = cacheArchLibInit;    initialized = TRUE;    return;    }/********************************************************************************* cacheArchLibInit - initialize ARM cache library function pointers** This routine initializes the cache library for ARM processors.  It* initializes the function pointers and configures the caches to the* specified cache modes.  Modes should be set before caching is* enabled.  If two complementary flags are set (enable/disable), no* action is taken for any of the input flags.** NOTE* This routine should not be called directly from cacheLibInit() on the* new (generic) architectures.  Instead, cacheArchLibInstall() should* be called.** INTERNAL* This routine is called (from cacheLibInit()), before sysHwInit has* been called, and before BSS has been cleared.** RETURNS: OK always**/LOCAL STATUS cacheArchLibInit    (    CACHE_MODE	instMode,	/* instruction cache mode */    CACHE_MODE	dataMode	/* data cache mode */    )    {    static BOOL initialized = FALSE;#if ((ARMCACHE == ARMCACHE_926E)   || (ARMCACHE == ARMCACHE_946E)   || \     (ARMCACHE == ARMCACHE_1020E)  || (ARMCACHE == ARMCACHE_1022E))    UINT32 temp, temp2, temp3;#endif    /* protect (silently) against being called twice */    if (initialized)	return OK;#if ((ARMCACHE == ARMCACHE_710A)   || (ARMCACHE == ARMCACHE_720T)   || \     (ARMCACHE == ARMCACHE_740T)   || (ARMCACHE == ARMCACHE_810)    || \     (ARMCACHE == ARMCACHE_SA110)  || (ARMCACHE == ARMCACHE_SA1100) || \     (ARMCACHE == ARMCACHE_SA1500) || (ARMCACHE == ARMCACHE_920T)   || \     (ARMCACHE == ARMCACHE_926E)   || (ARMCACHE == ARMCACHE_940T)   || \     (ARMCACHE == ARMCACHE_946E)   || (ARMCACHE == ARMCACHE_XSCALE) || \     (ARMCACHE == ARMCACHE_1020E)  || (ARMCACHE == ARMCACHE_1022E))    /*     * Initialize the variable that we want others to use in preference     * to the symbolic constant. Set it to the cache-type-specific value.     */

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人午夜激情在线| 91在线播放网址| 日韩伦理免费电影| 日韩亚洲欧美在线| 99久久er热在这里只有精品15| 蜜臀va亚洲va欧美va天堂| 亚洲精品免费看| 欧美国产乱子伦| 日韩欧美一二三区| 欧美午夜精品久久久久久超碰| 国产高清久久久| 青青草伊人久久| 亚洲五月六月丁香激情| 国产精品水嫩水嫩| 欧美精品一区二区精品网| 欧美日韩国产影片| 一本色道久久综合亚洲aⅴ蜜桃| 国产乱人伦偷精品视频免下载 | 欧美日韩中文精品| 成人av网址在线观看| 国产一区啦啦啦在线观看| 奇米影视一区二区三区小说| 亚洲va欧美va天堂v国产综合| 亚洲人成亚洲人成在线观看图片| 国产日韩精品一区| 久久久精品免费免费| 日韩精品一区二区在线观看| 3atv一区二区三区| 欧美肥妇bbw| 欧美日韩高清一区| 欧美日韩色综合| 欧美三级视频在线观看| 欧美性三三影院| 欧美在线观看禁18| 欧美调教femdomvk| 欧美日韩高清在线播放| 欧美高清性hdvideosex| 欧美日韩国产在线观看| 欧美日韩mp4| 777色狠狠一区二区三区| 欧美日韩久久久一区| 精品视频在线视频| 欧美丰满嫩嫩电影| 日韩女优av电影在线观看| 欧美大尺度电影在线| 日韩欧美一级在线播放| 久久亚洲一区二区三区明星换脸| 久久久久88色偷偷免费 | 亚洲成人自拍网| 午夜精品久久久| 免费观看91视频大全| 极品瑜伽女神91| 国产成人免费av在线| 91丨porny丨最新| 日本道色综合久久| 欧美精品在线一区二区三区| 日韩一区二区三区视频| 久久这里都是精品| 国产精品久久久久久久岛一牛影视 | 亚洲欧洲av另类| 亚洲精品欧美二区三区中文字幕| 一区二区三区中文在线| 日本中文字幕不卡| 国产精品亚洲综合一区在线观看| 99久久综合99久久综合网站| 欧美综合久久久| 欧美xxx久久| 日本一区二区免费在线| 亚洲激情第一区| 老司机精品视频在线| 成人av影视在线观看| 欧美专区日韩专区| 2020日本不卡一区二区视频| 亚洲欧洲国产日韩| 日本女人一区二区三区| 国产在线精品一区二区三区不卡 | 日韩毛片精品高清免费| 日韩精品乱码免费| 成人三级伦理片| 欧美日韩免费观看一区二区三区 | 色婷婷综合在线| 日韩欧美中文字幕制服| 国产精品美女视频| 天天色天天操综合| www.视频一区| 欧美一区二区三区四区高清| 国产精品久久久久久久岛一牛影视| 五月婷婷激情综合网| 国产高清精品在线| 69成人精品免费视频| 亚洲欧洲性图库| 久久精品国内一区二区三区| 色伊人久久综合中文字幕| 26uuu精品一区二区在线观看| 亚洲小说春色综合另类电影| 丁香亚洲综合激情啪啪综合| 欧美片网站yy| 亚洲欧美日韩一区二区 | 91精品国产综合久久精品 | 美女视频免费一区| 色成人在线视频| 国产性天天综合网| 日韩国产一二三区| 一道本成人在线| 亚洲国产高清不卡| 久久99精品久久久| 欧美视频第二页| 亚洲三级免费观看| 国产毛片精品视频| 欧美一区二区免费视频| 亚洲自拍都市欧美小说| av高清不卡在线| 日本一区二区三区四区| 国产在线不卡一区| 欧美不卡一区二区三区| 日韩国产欧美三级| 欧美日韩一区高清| 一区二区三区中文字幕精品精品| 成人免费福利片| 国产免费成人在线视频| 国产高清精品网站| 久久久.com| 国产一区二区三区在线观看免费| 欧美一区二区精美| 日日噜噜夜夜狠狠视频欧美人| 欧美视频完全免费看| 亚洲永久精品大片| 欧美丝袜丝交足nylons图片| 亚洲国产婷婷综合在线精品| 91论坛在线播放| 一区二区三区资源| 欧美性猛交xxxx乱大交退制版 | 在线精品亚洲一区二区不卡| 日韩伦理电影网| 色乱码一区二区三区88| 亚洲免费三区一区二区| 91丨九色丨国产丨porny| 亚洲欧美日韩在线播放| 色婷婷久久99综合精品jk白丝| 亚洲久草在线视频| 欧美制服丝袜第一页| 午夜精品一区在线观看| 欧美人妇做爰xxxⅹ性高电影| 午夜精品福利在线| 日韩欧美一区二区久久婷婷| 精品一区二区在线看| 久久美女艺术照精彩视频福利播放| 国产一级精品在线| 国产精品麻豆网站| 日本乱人伦aⅴ精品| 亚洲成人av一区| 精品久久久久久久久久久久包黑料| 国内成+人亚洲+欧美+综合在线| 国产日韩av一区二区| 成人av动漫在线| 亚洲午夜av在线| 日韩视频在线永久播放| 国产成人精品免费一区二区| 国产精品三级av| 欧美揉bbbbb揉bbbbb| 久久福利资源站| 国产精品免费视频观看| 在线观看视频一区二区| 久久99久久99| 亚洲欧洲日韩av| 在线不卡中文字幕| 国产在线一区二区综合免费视频| 自拍偷拍亚洲欧美日韩| 欧美视频你懂的| 国产主播一区二区三区| 亚洲伦在线观看| 日韩一区二区中文字幕| 成人av在线一区二区三区| 亚洲成人免费在线观看| 久久久精品国产免费观看同学| 在线中文字幕不卡| 精品在线视频一区| 一区二区三区中文在线| 26uuu亚洲婷婷狠狠天堂| 91啪在线观看| 激情综合网天天干| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 欧美日韩亚洲综合一区二区三区| 国模娜娜一区二区三区| 亚洲一区二区三区四区中文字幕| 久久综合色综合88| 欧美性受xxxx| 成人一区二区三区| 日韩福利电影在线观看| 亚洲柠檬福利资源导航| 精品国一区二区三区| 欧美在线免费视屏| 成人精品免费网站| 青青青爽久久午夜综合久久午夜| 国产精品高潮呻吟| 亚洲曰韩产成在线| 国产欧美精品一区二区色综合| 欧美日本一道本在线视频| 99久久精品费精品国产一区二区| 国产综合色产在线精品|