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

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

?? semmalib.s

?? vxworks的源代碼
?? S
字號:
/* semMALib.s - VxWorks mutual-exclusion semaphore assembler library *//* Copyright 1996-2001 Wind River Systems, Inc. *//*modification history--------------------01k,29may02,m_h  recurse problems from MSRNE (78125)01j,20may02,m_h  reenable interrupts on error and recurse (77430)01i,12mar02,m_h  semTake must return error if called from ISR (74202)01h,30oct01,pcm  added VxWorks semaphore events01g,17oct01,t_m  convert to FUNC_LABEL:01f,11oct01,jb  Enabling removal of pre-pended underscores for new compilers                 (Diab/Gnu elf)01e,22jun98,cdp  added big-endian support.01d,17feb98,cdp  rewritten with intrumentation work.01c,27oct97,kkk  took out "***EOF***" line from end of file.01b,27may97,jpd  Amalgamated into VxWorks.01a,15jul96,ams  Written.*//*DESCRIPTIONThis library provides the interface to VxWorks mutual-exclusionsemaphores.  Mutual-exclusion semaphores offer convenient optionssuited for situations requiring mutually exclusive access to resources.Typical applications include sharing devices and protecting datastructures.  Mutual-exclusion semaphores are used by many higher-levelVxWorks facilities.The mutual-exclusion semaphore is a specialized version of the binarysemaphore, designed to address issues inherent in mutual exclusion, suchas recursive access to resources, priority inversion, and deletion safety.The fundamental behavior of the mutual-exclusion semaphore is identicalto the binary semaphore (see the manual entry for semBLib), except forthe following restrictions:    - It can only be used for mutual exclusion.    - It can only be given by the task that took it.    - It may not be taken or given from interrupt level.    - The semFlush() operation is illegal.These last two operations have no meaning in mutual-exclusion situations.*/#define _ASMLANGUAGE#include "vxWorks.h"#include "semLib.h"#include "private/semLibP.h"#include "private/sigLibP.h"#include "private/taskLibP.h"	.data	.globl	FUNC(copyright_wind_river)	.long	FUNC(copyright_wind_river)#if (defined(PORTABLE))#define semMALib_PORTABLE#endif#ifndef semMALib_PORTABLE/* globals */	.global	FUNC(semMGive)		/* give a mutual exclusion semaphore */	.global	FUNC(semMTake)		/* take a mutual exclusion semaphore *//* externals */	.extern	FUNC(_func_sigTimeoutRecalc)	.extern	FUNC(intCnt)	.extern	FUNC(kernelState)	.extern FUNC(semClass)	.extern	FUNC(semIntRestrict)	.extern	FUNC(semInvalid)	.extern	FUNC(semMGiveKern)	.extern	FUNC(semMGiveKernWork)	.extern	FUNC(semMPendQPut)	.extern	FUNC(semTake)	.extern	FUNC(taskIdCurrent)	.extern	FUNC(windExit)#ifdef WV_INSTRUMENTATION	.extern	FUNC(semInstClass)#endif	.text	.balign	4/******************************************************************************//* * PC-relative-addressable pointers - LDR Rn,=sym was (is?) broken * note "_" after "$" to stop preprocessor performing substitution */L$__func_sigTimeoutRecalc:	.long	FUNC(_func_sigTimeoutRecalc)L$_intCnt:	.long	FUNC(intCnt)L$_kernelState:	.long	FUNC(kernelState)L$_semClass:	.long	FUNC(semClass)L$_semMGiveKernWork:	.long	FUNC(semMGiveKernWork)L$_taskIdCurrent:	.long	FUNC(taskIdCurrent)#ifdef WV_INSTRUMENTATIONL$_semInstClass:	.long	FUNC(semInstClass)#endif/********************************************************************************* semMGive - give a semaphore** Gives the semaphore.  If a higher priority task has already taken* the semaphore (so that it is now pended waiting for it), that task* will now become ready to run, and preempt the task that does the semGive().* If the semaphore is already full (it has been given but not taken) this* call is essentially a no-op.** If deletion safe option is enabled, an implicit taskUnsafe() operation will* occur.** If priority inversion safe option is enabled, and this is the last priority* inversion safe semaphore to be released, the calling task will revert to* its normal priority.** This routine may not be used from interrupt level.* In this case it sets errno to S_intLib_NOT_ISR_CALLABLE and returns ERROR** RETURNS: OK, or ERROR if the semaphore ID is invalid.* STATUS semMGive*	(*	SEM_ID semId	/@ semaphore ID to give @/*	)*/FUNC_LABEL(semMGive)	/* check if called from ISR */	LDR	r2, L$_intCnt		/* restrict ISR use */	LDR	r2, [r2]	TEQS	r2, #0	BNE	FUNC(semIntRestrict)		/* if ISR, let C function do the work */	/* LOCK INTERRUPTS */	MRS	r3, cpsr	ORR	r12, r3, #I_BIT	MSR	cpsr, r12	/* check validity of semaphore */	LDR	r2, [r0]		/* get class of semaphore */	LDR	r12, L$_semClass	/* get address of semClass */	TEQS	r12, r2#ifdef WV_INSTRUMENTATION	LDRNE	r12, L$_semInstClass	/* if not semClass, semInstClass? */	TEQNES	r12, r2#endif	BNE	L3_semMGiveInvalid	/* return error if invalid */	/* semaphore is valid - check if current task is owner */	LDR	r1, L$_taskIdCurrent	LDR	r1, [r1]	LDR	r12, [r0, #SEM_STATE]	/* r12 = owner */	TEQS	r12, r1	BNE	L3_semMGiveInvalid	/* return error if invalid */	/* check recursion count */#if ARM_HAS_HALFWORD_INSTRUCTIONS	LDRH	r12, [r0, #SEM_RECURSE]	/* r12 = recursion count */	TEQS	r12, #0	BEQ	L3_semMGive	SUB	r12, r12, #1		/* decrement count if != 0 */	STRH	r12, [r0, #SEM_RECURSE]#else /* ARM_HAS_HALFWORD_INSTRUCTIONS */	LDR	r12, [r0, #(SEM_RECURSE & ~3)] /* word-aligned load */#if (_BYTE_ORDER == _BIG_ENDIAN)#if (SEM_RECURSE & 2)	MOVS	r2, r12, LSL #16	/* set flags */#else	MOVS	r12, r12, LSR #16	/* move count to b15..b0, set flags */#endif	BEQ	L3_semMGive	SUB	r12, r12, #1		/* decrement count if != 0 */	STRB	r12, [r0, #SEM_RECURSE+1]	MOV	r12, r12, LSR #8	STRB	r12, [r0, #SEM_RECURSE+0]#else  	/* _BYTE_ORDER == _BIG_ENDIAN */#if (SEM_RECURSE & 2)	MOVS	r12, r12, LSR #16	/* move count to b15..b0, set flags */#else	MOVS	r2, r12, LSL #16	/* set flags */#endif	BEQ	L3_semMGive	SUB	r12, r12, #1		/* decrement count if != 0 */	STRB	r12, [r0, #SEM_RECURSE+0]	MOV	r12, r12, LSR #8	STRB	r12, [r0, #SEM_RECURSE+1]#endif 	/* _BYTE_ORDER == _BIG_ENDIAN */#endif	/* ARM_HAS_HALFWORD_INSTRUCTIONS */	MSR	cpsr, r3		/* UNLOCK INTERRUPTS */	MOV	r0, #OK			/* ..and return OK */	MOV	pc, lrL3_semMGive:/* * this semaphore is not recursive * * r0: semId * r1: taskIdCurrent * r2: Available * r3: previous cpsr * r12: Available */	/* recursion count was zero - check if inversion safe */	LDRB	r12, [r0, #SEM_OPTIONS]	TSTS	r12, #SEM_INVERSION_SAFE	MOVEQ	r12, #0			/* zero flags */	BEQ	L0_semMGive		/* if not, test semQ */	/*	 * it is inversion safe - decrement and check mutex count	 * r1 = taskIdCurrent	 */	LDR	r12, [r1, #WIND_TCB_MUTEX_CNT]	SUBS	r12, r12, #1	STR	r12, [r1, #WIND_TCB_MUTEX_CNT]	MOVNE	r12, #0			/* zero flag */	BNE	L0_semMGive		/* if non-zero, test semQ */	/* check priority */	LDR	r2, [r1, #WIND_TCB_PRIORITY] 	/* r2 = current priority */	LDR	r12, [r1, #WIND_TCB_PRI_NORMAL]	/* r12 = normal priority */	TEQS	r2, r12			/* are they the same? */	MOVNE	r12, #SEM_M_PRI_RESORT	/* if not, OR in RESORT flag */	MOVEQ	r12, #0L0_semMGive:	/* set owner to head of queue and check if queue was empty */	LDR	r2, [r0, #SEM_Q_HEAD]	/* set owner = head of queue */	STR	r2, [r0, #SEM_STATE]	TEQS	r2, #0			/* queue empty? */	ORRNE	r12, r12, #SEM_M_Q_GET	/* if not, OR in Q_GET flag */	BNE	semMDeleteSafe	/*	 * The queue is empty.  If semId->events.taskId is not NULL, then	 * set the SEM_M_SEND_EVENTS bit in the <kernWork> variable.  Although	 * inserting an alogithm similar to semEvRsrcSend in semALib.s could	 * be used here, it is more convenient to simply set the bit, and let	 * the work be done in the C function semMGiveKern (semId).	 */	LDR	r2, [r0, #SEM_EVENTS_TASKID]	TEQ	r2, #0	ORRNE	r12, r12, #SEM_M_SEND_EVENTS	/* check if delete safe */semMDeleteSafe:	LDRB	r2, [r0, #SEM_OPTIONS]	TSTS	r2, #SEM_DELETE_SAFE	BEQ	L1_semMGive		/* branch if not delete safe */	LDR	r2, [r1, #WIND_TCB_SAFE_CNT] /* decrement safety count */	SUBS	r2, r2, #1	STR	r2, [r1, #WIND_TCB_SAFE_CNT]	BNE	L1_semMGive		/* branch if count not zero */	LDR	r2, [r1, #WIND_TCB_SAFETY_Q_HEAD] /* check for pended deleters*/	TEQS	r2, #0	ORRNE	r12, r12, #SEM_M_SAFE_Q_FLUSH /* OR in if Q not empty */L1_semMGive:	/*	 * have we accumulated any work to do	 * r0-> semaphore	 * r1 = taskIdCurrent	 * r3 = previous cpsr	 * r12 = flags indicating work to do	 */	TEQS	r12, #0			/* anything to do? */	BNE	L2_semMGive		/* branch if yes */	/* all done */	MSR	cpsr, r3		/* UNLOCK INTERRUPTS */	MOV	r0, #OK			/* return OK */	MOV	pc, lr	/* NEVER FALL THROUGH */L2_semMGive:	/*	 * we have got some work to do	 * r0-> semaphore	 * r1 = taskIdCurrent	 * r3 = previous cpsr	 * r12 = flags indicating work to do	 */	LDR	r2, L$_kernelState	/* KERNEL ENTER */	MOV	r1, #1	STR	r1, [r2]	MSR	cpsr, r3		/* UNLOCK INTERRUPTS */	LDR	r2, L$_semMGiveKernWork	/* setup work for semMGiveKern */	STR	r12, [r2]	B	FUNC(semMGiveKern)	/* NEVER FALL THROUGH */L3_semMGiveInvalid:	/*	 * semaphore is invalid	 * r3 = previous cpsr	 * interrupts are locked	 */	MSR	cpsr, r3		/* UNLOCK INTERRUPTS */	B	FUNC(semInvalid)/********************************************************************************* semMTake - take a semaphore** Takes the semaphore.  If the semaphore is empty, i.e., it has not been given* since the last semTake() or semInit(), this task will become pended until* the semaphore becomes available by some other task doing a semGive()* of it.  If the semaphore is already available, this call will empty* the semaphore, so that no other task can take it until this task gives* it back, and this task will continue running.** If deletion safe option is enabled, an implicit taskSafe() operation will* occur.** If priority inversion safe option is enabled, and the calling task blocks,* and the priority of the calling task is greater than the semaphore owner,* the owner will inherit the caller's priority.** WARNING* This routine may not be used from interrupt level.* STATUS semMTake*	(*	SEM_ID	semId,		/@ semaphore ID to take @/*	int	timeout		/@ timeout in ticks @/*	)*/FUNC_LABEL(semMTake)	/* check if called from ISR */	LDR	r2, L$_intCnt		/* restrict ISR use */	LDR	r2, [r2]	TEQS	r2, #0	BNE	FUNC(semIntRestrict)	/* if ISR, let C function do the work */	STMFD	sp!, {r0, r1, lr}	/* save args and link */	LDR	r1, L$_taskIdCurrent	LDR	r1, [r1]		/* r1 = taskIdCurrent */	/* LOCK INTERRUPTS */	MRS	r3, cpsr	ORR	r12, r3, #I_BIT	MSR	cpsr, r12	/* check validity of semaphore */	LDR	r2, [r0]		/* get class of semaphore */	LDR	r12, L$_semClass	/* get address of semClass */	TEQS	r12, r2#ifdef WV_INSTRUMENTATION	LDRNE	r12, L$_semInstClass	/* if not semClass, semInstClass? */	TEQNES	r12, r2#endif	BNE	L3_semMTakeInvalid	/* return error if invalid */	/* semaphore is valid - check if owned */	LDR	r12, [r0, #SEM_STATE]	/* r12 = owner */	TEQS	r12, #0			/* is it owned? */	BNE	L0_semMTake		/* branch if it is owned */	/* semaphore is not owned - set owner to current task (r1) */	STR	r1, [r0, #SEM_STATE]	/* we now own semaphore */	/* check if delete safe */	LDRB	r2, [r0, #SEM_OPTIONS]	TSTS	r2, #SEM_DELETE_SAFE	LDRNE	r12, [r1, #WIND_TCB_SAFE_CNT] /* if del safe, inc safety cnt */	ADDNE	r12, r12, #1	STRNE	r12, [r1, #WIND_TCB_SAFE_CNT]	/* check if inversion safe */	TSTS	r2, #SEM_INVERSION_SAFE	LDRNE	r12, [r1, #WIND_TCB_MUTEX_CNT] /* if inv safe, inc mutex cnt */	ADDNE	r12, r12, #1	STRNE	r12, [r1, #WIND_TCB_MUTEX_CNT]	MSR	cpsr, r3		/* UNLOCK INTERRUPTS */	ADD	sp, sp, #12		/* flatten stack */	MOV	r0, #OK			/* return OK */	MOV	pc, lr	/* NEVER FALL THROUGH */L0_semMTake:	/*	 * semaphore is owned	 * r0-> semaphore	 * r1 = taskIdCurrent	 * r3 = previous cpsr	 * r12 = owner of semaphore	 */	TEQS	r1, r12			/* does this task own semaphore? */	BNE	L1_semMTake		/* branch if not (block) */	/* recursive take - increment count */#if ARM_HAS_HALFWORD_INSTRUCTIONS	LDRH	r2, [r0, #SEM_RECURSE]	/* r2 = recursion count */	ADD	r2, r2, #1		/* bump count */	STRH	r2, [r0, #SEM_RECURSE]#else	LDR	r2, [r0, #(SEM_RECURSE & ~3)] /* word-aligned load */#if (_BYTE_ORDER == _BIG_ENDIAN)#if ((SEM_RECURSE & 2) == 0)	MOV	r2, r2, LSR #16		/* move count to b15..b0 */#endif	ADD	r2, r2, #1		/* bump count */	STRB	r2, [r0, #SEM_RECURSE+1]	MOV	r2, r2, LSR #8	STRB	r2, [r0, #SEM_RECURSE+0]#else#if (SEM_RECURSE & 2)	MOV	r2, r2, LSR #16		/* move count to b15..b0 */#endif	ADD	r2, r2, #1		/* bump count */	STRB	r2, [r0, #SEM_RECURSE+0]	MOV	r2, r2, LSR #8	STRB	r2, [r0, #SEM_RECURSE+1]#endif	/* _BYTE_ORDER == _BIG_ENDIAN */#endif	/* ARM_HAS_HALFWORD_INSTRUCTIONS */	MSR	cpsr, r3		/* UNLOCK INTERRUPTS */	ADD	sp, sp, #12		/* flatten stack */	MOV	r0, #OK			/* return OK */	MOV	pc, lr	/* NEVER FALL THROUGH */L1_semMTake:	/*	 * this task does not own the semaphore - block	 * r0-> semaphore	 * r3 = previous cpsr	 */	LDR	r2, L$_kernelState	/* KERNEL ENTER */	MOV	r1, #1	STR	r1, [r2]	MSR	cpsr, r3		/* UNLOCK INTERRUPTS */	LDR	r1, [sp, #4]		/* reload timeout */	BL	FUNC(semMPendQPut)		/* let C function do the work */	TEQS	r0, #OK			/* check result */	BNE	L2_semMTake		/* branch if not OK */	/* succeeded */	BL	FUNC(windExit)		/* KERNEL EXIT */	TEQS	r0, #RESTART		/* if not RESTART.. */	ADDNE	sp, sp, #8		/* ..flatten stack */	LDMNEFD	sp!, {pc}		/* ..and return */	/* restart: recalculate the timeout and try again */	LDR	r0, [sp, #4]		/* get timeout from stack */	LDR	r1, L$__func_sigTimeoutRecalc	MOV	lr, pc			/* recalculate the timeout */	LDR	pc, [r1]	MOV	r1, r0			/* r1 = timeout */	LDMFD	sp!, {r0,r2,lr}		/* restore r0,lr/flatten stack */	B	FUNC(semTake)		/* go again */	/* NEVER FALL THROUGH */L2_semMTake:	/* could not block (semMPendQPut failed) - return ERROR */	BL	FUNC(windExit)		/* KERNEL EXIT */	MOV	r0, #ERROR		/* return ERROR */	ADD	sp, sp, #8		/* flatten stack */	LDMFD	sp!, {pc}	/* NEVER FALL THROUGH */L3_semMTakeInvalid:	/*	 * semaphore is invalid	 * r3 = previous cpsr	 * interrupts are locked	 * sp-> {original r0,r1,lr}	 */	MSR	cpsr, r3		/* UNLOCK INTERRUPTS */	LDMFD	sp!, {r0,r1,lr}		/* restore regs/flatten stack */	B	FUNC(semInvalid)#endif /* ! semMALib_PORTABLE */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久国产精品72免费观看| 国产一区二区三区免费播放| 久久婷婷久久一区二区三区| 色偷偷久久人人79超碰人人澡| 日韩综合小视频| 亚洲欧美怡红院| 精品剧情在线观看| 欧美日韩午夜在线视频| 成人午夜激情片| 久久激情五月婷婷| 五月天视频一区| 亚洲美腿欧美偷拍| 国产精品久久久久久福利一牛影视| 欧美一区三区四区| 欧美日韩中文另类| 91麻豆福利精品推荐| 国产91丝袜在线观看| 日本成人在线一区| 亚洲国产精品人人做人人爽| 亚洲欧美偷拍三级| 中文字幕在线免费不卡| 国产色91在线| 久久免费视频一区| 精品欧美一区二区三区精品久久 | 亚洲aaa精品| 亚洲人精品一区| **欧美大码日韩| 国产精品美女一区二区在线观看| 久久婷婷色综合| 久久久噜噜噜久噜久久综合| 精品免费视频.| 精品国产网站在线观看| 精品欧美一区二区久久| 精品国偷自产国产一区| 精品国产亚洲一区二区三区在线观看| 5月丁香婷婷综合| 欧美一区二区私人影院日本| 6080午夜不卡| 欧美一卡在线观看| 日韩一级在线观看| 2023国产精品自拍| 久久久三级国产网站| 国产欧美精品在线观看| 国产婷婷色一区二区三区在线| 26uuu另类欧美亚洲曰本| 久久亚洲综合色| 久久精品综合网| 中文字幕亚洲一区二区av在线| 亚洲日本欧美天堂| 亚洲国产一二三| 日本不卡视频在线观看| 经典三级视频一区| 国产v日产∨综合v精品视频| eeuss鲁片一区二区三区在线观看| 成人av资源在线观看| 色欲综合视频天天天| 欧美欧美午夜aⅴ在线观看| 91精品国产丝袜白色高跟鞋| 精品人在线二区三区| 中文成人综合网| 一区二区三区欧美久久| 日韩电影在线看| 国产一区在线精品| 99国产精品久久久久久久久久久 | 欧美第一区第二区| wwwwxxxxx欧美| 亚洲免费在线视频| 日韩精品免费专区| 国产成人无遮挡在线视频| 99riav一区二区三区| 欧美高清视频在线高清观看mv色露露十八 | 国内久久精品视频| eeuss影院一区二区三区| 欧美视频一区二区三区在线观看 | 日韩免费视频线观看| 国产精品全国免费观看高清| 一区二区三区四区五区视频在线观看| 亚洲图片欧美视频| 国产一区美女在线| 在线免费观看日本欧美| 日韩欧美国产高清| 亚洲三级久久久| 麻豆91精品91久久久的内涵| 99精品视频在线观看免费| 日韩欧美国产1| 自拍偷拍欧美激情| 美国十次了思思久久精品导航| 99麻豆久久久国产精品免费优播| 欧美久久婷婷综合色| 国产精品久久一级| 日本美女一区二区三区视频| 99免费精品视频| 久久青草国产手机看片福利盒子| 亚洲国产日日夜夜| 国产精品1区2区| 91精品啪在线观看国产60岁| 国产精品高潮久久久久无| 毛片基地黄久久久久久天堂| 欧美在线视频日韩| 国产欧美一区视频| 美女免费视频一区| 欧美日韩亚洲国产综合| 亚洲三级免费电影| 国产激情视频一区二区三区欧美| 在线综合+亚洲+欧美中文字幕| 国产精品第一页第二页第三页| 九色porny丨国产精品| 欧美丰满一区二区免费视频| 亚洲免费观看高清完整版在线观看 | 亚洲一区二区三区视频在线| 国产91在线观看| xfplay精品久久| 三级久久三级久久| 欧美日韩午夜影院| 亚洲综合在线五月| 91色婷婷久久久久合中文| 久久久www免费人成精品| 美日韩一区二区| 欧美精品粉嫩高潮一区二区| 亚洲国产精品精华液网站| 色婷婷综合久色| 亚洲人亚洲人成电影网站色| 丁香啪啪综合成人亚洲小说 | 久久精品视频在线免费观看| 免费看欧美女人艹b| 欧美精选一区二区| 亚洲一卡二卡三卡四卡五卡| 欧美自拍偷拍一区| 夜夜精品视频一区二区| 日本韩国一区二区三区视频| 日韩一区欧美小说| 99vv1com这只有精品| 1区2区3区精品视频| 99久久婷婷国产综合精品电影| 国产精品国产三级国产普通话三级 | 成人国产亚洲欧美成人综合网| 久久久99精品久久| 国产精品1区2区3区| 中文字幕乱码亚洲精品一区| 成人av中文字幕| 亚洲欧美日韩中文字幕一区二区三区 | 久久久综合精品| 国产成人av电影在线| 国产精品精品国产色婷婷| 99久久精品99国产精品| 一区二区三区精品在线| 欧美三级在线视频| 日本女人一区二区三区| 精品成人免费观看| 国产成人亚洲综合a∨猫咪| 国产精品午夜免费| 色狠狠一区二区三区香蕉| 五月天国产精品| 欧美成人女星排行榜| 国产黑丝在线一区二区三区| 欧美国产欧美综合| 日本福利一区二区| 午夜一区二区三区在线观看| 欧美一级在线免费| 国产精品一区专区| 亚洲精品久久久蜜桃| 91麻豆精品国产自产在线观看一区 | 一本久久a久久精品亚洲| 午夜私人影院久久久久| 日韩一卡二卡三卡四卡| 岛国av在线一区| 亚洲成人7777| 久久欧美中文字幕| 91成人在线免费观看| 免费高清视频精品| 国产精品久久久久久福利一牛影视| 在线观看亚洲a| 韩国精品主播一区二区在线观看 | 亚洲一区二区不卡免费| 欧美成人伊人久久综合网| 粉嫩av一区二区三区| 亚洲自拍偷拍麻豆| 日韩精品中文字幕在线一区| a在线欧美一区| 日本强好片久久久久久aaa| 国产日韩精品一区| 欧美日韩国产大片| 国产乱码精品1区2区3区| 一级做a爱片久久| 久久嫩草精品久久久精品一| 欧美在线视频日韩| 成人亚洲一区二区一| 三级影片在线观看欧美日韩一区二区 | 99精品视频在线播放观看| 另类的小说在线视频另类成人小视频在线 | 国产成人精品一区二区三区四区| 亚洲综合激情网| 欧美国产97人人爽人人喊| 制服丝袜亚洲色图| 白白色 亚洲乱淫| 激情成人午夜视频| 视频一区二区三区中文字幕| 亚洲人妖av一区二区| 国产日本欧洲亚洲| 日韩一区二区在线看|