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

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

?? dpi.cpp

?? RISC processor ARM-7 emulator
?? CPP
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/*************************************************************************
    Copyright (C) 2002,2003,2004,2005 Wei Qin
    See file COPYING for more information.

    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.
*************************************************************************/

#include <cstdio>
#include <armemul.h>
#include "dpi.h"

#ifdef _MODULARIZE_

using namespace emulator;
#define SHIFTER_CARRY emu->shifter_carry
#define ALU_CARRY emu->alu_carry

#else

#define SHIFTER_CARRY shifter_carry
#define ALU_CARRY alu_carry

#endif

static const char *arm_dpinames[] = 
{"and", "eor", "sub", "rsb", "add", "adc", "sbc", "rsc",
 "tst", "teq", "cmp", "cmn", "orr", "mov", "bic", "mvn"};


/*utilities for alu operations*/
static inline UInt32 rotate_right(UInt32 val, UInt32 imm)
{
	return (val >> imm ) | (val << (32 - imm));
}

/*
  Shifter_operand1 and shifter_operand1_s actually was in one before.
  So does shifter_operand2's and shifter_oeprand3's.
  Separating them helps simulation speed a little bit (8.31->8.49Mips)
*/

/*immediate shifter operand*/
static inline UInt32 shifter_operand1(IMPL_FORMALS)
{
	UInt32 imm = inst & 0xff;
	UInt32 shift = (inst>>7) & 0x1e;
	UInt32 result;

	result = rotate_right(imm, shift);
	return result;
}

/*immediate shifter operand*/
static inline UInt32 shifter_operand1_s(IMPL_FORMALS)
{
	UInt32 imm = inst & 0xff;
	UInt32 shift = (inst>>7) & 0x1e;
	UInt32 result;

	result = rotate_right(imm, shift);

	if (!shift)
		SHIFTER_CARRY = C_FLAG;
	else
		SHIFTER_CARRY = BIT31(result);
	return result;
}

/*shift imediate shifter operand*/
static inline UInt32 shifter_operand2(IMPL_FORMALS)
{
	UInt32 shift_imm = (inst>>7) & 0x01f, val = RM, result;
	UInt8 type = (inst>>5) & 0x03;

	switch (type) {
		case 0: /*LSL*/	
			result = val << shift_imm;
			break;
		case 1: /*LSR*/
			if (shift_imm) {
				result = val >> shift_imm;
			} else {
				result = 0;
			}
			break;
		case 2: /*ASR*/
			if (shift_imm) {
				result = (SInt32)val>>shift_imm;
			}
			else {
				result = BIT31(val)?~0:BIT31(val);
			}
			break;
		default: /*ROR*/
			if (shift_imm) {
				result = rotate_right(val, shift_imm);
			}
			else { /*RRX*/
				result = (val>>1) |	(C_FLAG<<31);
			}
			break;
			
	}
	return result;
}

/*shift imediate shifter operand*/
static inline UInt32 shifter_operand2_s(IMPL_FORMALS)
{
	UInt32 shift_imm = (inst>>7) & 0x01f, val = RM, result;
	UInt8 type = (inst>>5) & 0x03;

	switch (type) {
		case 0: /*LSL*/	
			result = val << shift_imm;
			SHIFTER_CARRY = shift_imm?BITn(val,32-shift_imm):C_FLAG;
			break;
		case 1: /*LSR*/
			if (shift_imm) {
				result = val >> shift_imm;
				SHIFTER_CARRY = BITn(val, shift_imm-1);
			} else {
				result = 0;
				SHIFTER_CARRY = BIT31(val);
			}
			break;
		case 2: /*ASR*/
			if (shift_imm) {
				result = (SInt32)val>>shift_imm;
				SHIFTER_CARRY = BITn(val,shift_imm-1);
			}
			else {
				result = BIT31(val)?~0:BIT31(val);
				SHIFTER_CARRY = BIT31(val);
			}
			break;
		default: /*ROR*/
			if (shift_imm) {
				result = rotate_right(val, shift_imm);
				SHIFTER_CARRY = BITn(val, shift_imm-1);
			}
			else { /*RRX*/
				result = (val>>1) |	(C_FLAG<<31);
				SHIFTER_CARRY = BIT0(val);
			}
			break;
	}
	return result;
}

/*shift register shifter operand*/
static inline UInt32 shifter_operand3(IMPL_FORMALS)
{
	UInt32 shift_imm = RS & 0xff, val = RM, result;
	UInt8 type = (inst>>5) & 0x03;

	switch (type) {
		case 0: /*LSL*/	
			if (shift_imm==0) {
				result = val;
			} else if (shift_imm<32) {
				result = val << shift_imm;
			} else if (shift_imm==32) {
				result = 0;
			} else {
				result = 0;
			}
			break;
		case 1: /*LSR*/
			if (shift_imm==0) {
				result = val;
			} else if (shift_imm<32) {
				result = val >> shift_imm;
			} else if (shift_imm==32) {
				result = 0;
			} else {
				result = 0;
			}
			break;
		case 2: /*ASR*/
			if (shift_imm==0) {
				result = val;
			} else if (shift_imm<32) {
				result = (SInt32)val >> shift_imm;
			} else if (BIT31(val)) {
				result = ~0;
			} else {
				result = 0;
			}
			break;
		default: /*ROR*/
			if (shift_imm==0) {
				result = val;
			}
			else if ((shift_imm&0x1f)==0) {
				result = val;
			}
			else {
				result = rotate_right(val, shift_imm&0x1f);
			}
			break;
	}
	return result;
}

/*shift register shifter operand*/
static inline UInt32 shifter_operand3_s(IMPL_FORMALS)
{
	UInt32 shift_imm = RS & 0xff, val = RM, result;
	UInt8 type = (inst>>5) & 0x03;

	switch (type) {
		case 0: /*LSL*/	
			if (shift_imm==0) {
				result = val;
				SHIFTER_CARRY = C_FLAG;
			} else if (shift_imm<32) {
				result = val << shift_imm;
				SHIFTER_CARRY = BITn(val,32-shift_imm);
			} else if (shift_imm==32) {
				result = 0;
				SHIFTER_CARRY = BIT0(val);
			} else {
				result = 0;
				SHIFTER_CARRY = 0;
			}
			break;
		case 1: /*LSR*/
			if (shift_imm==0) {
				result = val;
				SHIFTER_CARRY = C_FLAG;
			} else if (shift_imm<32) {
				result = val >> shift_imm;
				SHIFTER_CARRY = BITn(val,shift_imm-1);
			} else if (shift_imm==32) {
				result = 0;
				SHIFTER_CARRY = BIT31(val);
			} else {
				result = 0;
				SHIFTER_CARRY = 0;
			}
			break;
		case 2: /*ASR*/
			if (shift_imm==0) {
				result = val;
				SHIFTER_CARRY = C_FLAG;
			} else if (shift_imm<32) {
				result = (SInt32)val >> shift_imm;
				SHIFTER_CARRY = BITn(val,shift_imm-1);
			} else if (BIT31(val)) {
				result = ~0;
				SHIFTER_CARRY = BIT31(val);
			} else {
				result = 0;
				SHIFTER_CARRY = BIT31(val);
			}
			break;
		default: /*ROR*/
			if (shift_imm==0) {
				result = val;
				SHIFTER_CARRY = C_FLAG;
			}
			else if ((shift_imm&0x1f)==0) {
				result = val;
				SHIFTER_CARRY = BIT31(val);
			}
			else {
				result = rotate_right(val, shift_imm&0x1f);
				SHIFTER_CARRY = BITn(val, (shift_imm&0x1f)-1);
			}
			break;
	}
	return result;
}

/*data processing instructions*/

/*move*/

#ifdef _MODULARIZE_
#define SET_MOVE_FLAGS(val) set_move_flags(emu, val)
static inline void set_move_flags(armulator *emu, UInt32 val)
#else
#define SET_MOVE_FLAGS(val) set_move_flags(val)
static inline void set_move_flags(UInt32 val)
#endif
{
#if 0
	ASGN_N(BIT31(val));
	ASGN_Z(val==0);
	ASGN_C(SHIFTER_CARRY);
#endif
	ASGN_CONDS(ASM_CONDS(BIT31(val), val==0, SHIFTER_CARRY, V_FLAG));
}

void impl_mov_1(IMPL_FORMALS)
{
	WRITE_REG(RDFLD, shifter_operand1(IMPL_ARGS));

	EMULATOR_STUB(mov_1,inst);
}

void impl_mov_1s(IMPL_FORMALS)
{
	WRITE_REG(RDFLD, shifter_operand1_s(IMPL_ARGS));
	if (RDFLD==15)
		WRITE_CPSR(SPSR);
	else 
		SET_MOVE_FLAGS(RD);

	EMULATOR_STUB(mov_1s,inst);
}

void impl_mov_2(IMPL_FORMALS)
{
	WRITE_REG(RDFLD, shifter_operand2(IMPL_ARGS));

	EMULATOR_STUB(mov_2,inst);
}

void impl_mov_2s(IMPL_FORMALS)
{
	WRITE_REG(RDFLD, shifter_operand2_s(IMPL_ARGS));
	if (RDFLD==15)
		WRITE_CPSR(SPSR);
	else 
		SET_MOVE_FLAGS(RD);

	EMULATOR_STUB(mov_2s,inst);
}

void impl_mov_3(IMPL_FORMALS)
{
	WRITE_REG(RDFLD, shifter_operand3(IMPL_ARGS));

	EMULATOR_STUB(mov_3,inst);
}

void impl_mov_3s(IMPL_FORMALS)
{
	WRITE_REG(RDFLD, shifter_operand3_s(IMPL_ARGS));
	if (RDFLD==15)
		WRITE_CPSR(SPSR);
	else 
		SET_MOVE_FLAGS(RD);

	EMULATOR_STUB(mov_3s,inst);
}

/*MVN*/
void impl_mvn_1(IMPL_FORMALS)
{
	WRITE_REG(RDFLD, ~shifter_operand1(IMPL_ARGS));

	EMULATOR_STUB(mvn_1,inst);
}

void impl_mvn_1s(IMPL_FORMALS)
{
	WRITE_REG(RDFLD, ~shifter_operand1_s(IMPL_ARGS));
	if (RDFLD==15)
		WRITE_CPSR(SPSR);
	else 
		SET_MOVE_FLAGS(RD);

	EMULATOR_STUB(mvn_1s,inst);
}

void impl_mvn_2(IMPL_FORMALS)
{
	WRITE_REG(RDFLD, ~shifter_operand2(IMPL_ARGS));

	EMULATOR_STUB(mvn_2,inst);
}

void impl_mvn_2s(IMPL_FORMALS)
{
	WRITE_REG(RDFLD, ~shifter_operand2_s(IMPL_ARGS));
	if (RDFLD==15)
		WRITE_CPSR(SPSR);
	else 
		SET_MOVE_FLAGS(RD);

	EMULATOR_STUB(mvn_2s,inst);
}

void impl_mvn_3(IMPL_FORMALS)
{
	WRITE_REG(RDFLD, ~shifter_operand3(IMPL_ARGS));

	EMULATOR_STUB(mvn_3,inst);
}

void impl_mvn_3s(IMPL_FORMALS)
{
	WRITE_REG(RDFLD, ~shifter_operand3_s(IMPL_ARGS));
	if (RDFLD==15)
		WRITE_CPSR(SPSR);
	else
		SET_MOVE_FLAGS(RD);

	EMULATOR_STUB(mvn_3s,inst);
}

/*ADD*/

#ifdef _MODULARIZE_
#define SET_ADD_FLAGS(_res) set_add_flags(emu, _res)
static inline void set_add_flags(armulator *emu, UInt64 result)
#else
#define SET_ADD_FLAGS(_res) set_add_flags(_res)
static inline void set_add_flags(UInt64 result)
#endif
{

	UInt32 l_res = result, u_res = result>>32;
#if 0
	ASGN_N(BIT31(l_res));
	ASGN_Z(l_res==0);
	ASGN_C(ALU_CARRY);
	ASGN_V(BIT0(u_res)!=BIT31(l_res));
#endif
	ASGN_CONDS(ASM_CONDS(BIT31(l_res), l_res==0, ALU_CARRY,
		BIT0(u_res)!=BIT31(l_res)));
}

#ifdef _MODULARIZE_
#define IMPL_ADD64(_src_a, _src_b) impl_add64(emu, _src_a, _src_b)
static inline UInt64 impl_add64(armulator *emu, SInt32 a, SInt32 b)
#else
#define IMPL_ADD64(_src_a, _src_b) impl_add64(_src_a, _src_b)
static inline UInt64 impl_add64(SInt32 a, SInt32 b)
#endif
{
	UInt64 lhs = a, rhs = b;
	UInt64 result = lhs+rhs;

	ALU_CARRY = ((UInt32)a>>31) ^ ((UInt32)b>>31);
	ALU_CARRY ^= (((UInt32)(result>>32))&0x1);

	return result;
}

#ifdef _MODULARIZE_
#define IMPL_ADD64_W_CARRY(_src_a, _src_b, _src_c) \
	impl_add64_w_carry(emu, _src_a, _src_b, _src_c);
static inline UInt64 impl_add64_w_carry(armulator *emu, 
	SInt32 a, SInt32 b, UInt32 c)
#else
#define IMPL_ADD64_W_CARRY(_src_a, _src_b, _src_c) \
	impl_add64_w_carry(_src_a, _src_b, _src_c);
static inline UInt64 impl_add64_w_carry(
	SInt32 a, SInt32 b, UInt32 c)
#endif
{
	UInt64 lhs = a, rhs = b;
	UInt64 result = lhs+rhs+c;

	ALU_CARRY = ((UInt32)a>>31) ^ ((UInt32)b>>31);
	ALU_CARRY ^= (((UInt32)(result>>32))&0x1);

	return result;
}

void impl_add_1(IMPL_FORMALS)
{
	WRITE_REG(RDFLD, RN + shifter_operand1(IMPL_ARGS));

	EMULATOR_STUB(add_1,inst);
}

void impl_add_1s(IMPL_FORMALS)
{
	UInt64 result;
	result = IMPL_ADD64(RN, shifter_operand1(IMPL_ARGS));
	WRITE_REG(RDFLD, (UInt32)result);

	if (RDFLD==15)
		WRITE_CPSR(SPSR);
	else 
		SET_ADD_FLAGS(result);

	EMULATOR_STUB(add_1s,inst);
}

void impl_add_2(IMPL_FORMALS)
{
	WRITE_REG(RDFLD, RN + shifter_operand2(IMPL_ARGS));

	EMULATOR_STUB(add_2,inst);
}

void impl_add_2s(IMPL_FORMALS)
{
	UInt64 result;
	result = IMPL_ADD64(RN, shifter_operand2(IMPL_ARGS));
	WRITE_REG(RDFLD, (UInt32)result);

	if (RDFLD==15)
		WRITE_CPSR(SPSR);
	else 
		SET_ADD_FLAGS(result);

	EMULATOR_STUB(add_2s,inst);
}

void impl_add_3(IMPL_FORMALS)
{
	WRITE_REG(RDFLD, RN + shifter_operand3(IMPL_ARGS));

	EMULATOR_STUB(add_3,inst);
}

void impl_add_3s(IMPL_FORMALS)
{
	UInt64 result;
	result = IMPL_ADD64(RN, shifter_operand3(IMPL_ARGS));
	WRITE_REG(RDFLD, (UInt32)result);

	if (RDFLD==15)
		WRITE_CPSR(SPSR);
	else
		SET_ADD_FLAGS(result);

	EMULATOR_STUB(add_3s,inst);
}

/*ADC*/
void impl_adc_1(IMPL_FORMALS)
{
	WRITE_REG(RDFLD, RN + shifter_operand1(IMPL_ARGS) + C_FLAG);

	EMULATOR_STUB(adc_1,inst);
}

void impl_adc_1s(IMPL_FORMALS)
{
	UInt64 result;
	result = IMPL_ADD64_W_CARRY(RN, shifter_operand1(IMPL_ARGS), C_FLAG);
	WRITE_REG(RDFLD, (UInt32)result);

	if (RDFLD==15)
		WRITE_CPSR(SPSR);
	else 
		SET_ADD_FLAGS(result);

	EMULATOR_STUB(adc_1s,inst);
}

void impl_adc_2(IMPL_FORMALS)
{
	WRITE_REG(RDFLD, RN + shifter_operand2(IMPL_ARGS) + C_FLAG);

	EMULATOR_STUB(adc_2,inst);
}

void impl_adc_2s(IMPL_FORMALS)
{
	UInt64 result;
	result = IMPL_ADD64_W_CARRY(RN, shifter_operand2(IMPL_ARGS), C_FLAG);
	WRITE_REG(RDFLD, (UInt32)result);

	if (RDFLD==15)
		WRITE_CPSR(SPSR);
	else 
		SET_ADD_FLAGS(result);

	EMULATOR_STUB(adc_2s,inst);
}

void impl_adc_3(IMPL_FORMALS)
{
	WRITE_REG(RDFLD, RN + shifter_operand3(IMPL_ARGS) + C_FLAG);

	EMULATOR_STUB(adc_3,inst);
}

void impl_adc_3s(IMPL_FORMALS)
{
	UInt64 result;
	result = IMPL_ADD64_W_CARRY(RN, shifter_operand3(IMPL_ARGS), C_FLAG);
	WRITE_REG(RDFLD, (UInt32)result);

	if (RDFLD==15)
		WRITE_CPSR(SPSR);
	else
		SET_ADD_FLAGS(result);

	EMULATOR_STUB(adc_3s,inst);
}

/*SUB*/
#ifdef _MODULARIZE_
#define SET_SUB_FLAGS(_res) set_sub_flags(emu, _res)
static inline void set_sub_flags(armulator *emu, UInt64 result)
#else
#define SET_SUB_FLAGS(_res) set_sub_flags(_res)
static inline void set_sub_flags(UInt64 result)
#endif
{
	UInt32 l_res = result, u_res = result>>32;
#if 0
	ASGN_N(BIT31(l_res));
	ASGN_Z(l_res==0);
	ASGN_C(!ALU_CARRY);
	ASGN_V(BIT0(u_res)!=BIT31(l_res));
#endif
	ASGN_CONDS(ASM_CONDS(BIT31(l_res), l_res==0, !ALU_CARRY,
		BIT0(u_res)!=BIT31(l_res)));
}

#ifdef _MODULARIZE_
#define IMPL_SUB64(_src_a, _src_b) impl_sub64(emu, _src_a, _src_b)
static inline UInt64 impl_sub64(armulator *emu, SInt32 a, SInt32 b)
#else
#define IMPL_SUB64(_src_a, _src_b) impl_sub64(_src_a, _src_b)
static inline UInt64 impl_sub64(SInt32 a, SInt32 b)
#endif
{
	UInt64 lhs = a, rhs = b;
	UInt64 result = lhs - rhs;

	ALU_CARRY = ((UInt32)a>>31) ^ ((UInt32)b>>31);
	ALU_CARRY ^= (((UInt32)(result>>32))&0x1);

	return result;
}

#ifdef _MODULARIZE_
#define IMPL_SUB64_W_CARRY(_src_a, _src_b, _src_c) \
	impl_sub64_w_carry(emu, _src_a, _src_b, _src_c)
static inline UInt64 impl_sub64_w_carry(armulator *emu, SInt32 a, SInt32 b, UInt32 c)
#else
#define IMPL_SUB64_W_CARRY(_src_a, _src_b, _src_c) \
	impl_sub64_w_carry(_src_a, _src_b, _src_c)
static inline UInt64 impl_sub64_w_carry(SInt32 a, SInt32 b, UInt32 c)
#endif
{
	UInt64 lhs = a, rhs = b;
	UInt64 result = lhs - rhs - c;

	ALU_CARRY = ((UInt32)a>>31) ^ ((UInt32)b>>31);
	ALU_CARRY ^= (((UInt32)(result>>32))&0x1);

	return result;
}

void impl_sub_1(IMPL_FORMALS)
{
	WRITE_REG(RDFLD, RN - shifter_operand1(IMPL_ARGS));

	EMULATOR_STUB(sub_1,inst);
}

void impl_sub_1s(IMPL_FORMALS)
{
	UInt64 result;
	result = IMPL_SUB64(RN, shifter_operand1(IMPL_ARGS));
	WRITE_REG(RDFLD, (UInt32)result);

	if (RDFLD==15)
		WRITE_CPSR(SPSR);
	else 
		SET_SUB_FLAGS(result);

	EMULATOR_STUB(sub_1s,inst);
}

void impl_sub_2(IMPL_FORMALS)
{
	WRITE_REG(RDFLD, RN - shifter_operand2(IMPL_ARGS));

	EMULATOR_STUB(sub_2,inst);
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人精品免费看| 中文成人av在线| 欧美精品第1页| 欧美三级电影在线观看| 欧美又粗又大又爽| 91热门视频在线观看| 91欧美一区二区| 五月开心婷婷久久| 日产国产高清一区二区三区| 亚洲成在线观看| 亚洲香肠在线观看| 首页国产欧美日韩丝袜| 日韩电影在线一区二区三区| 污片在线观看一区二区| 日本亚洲一区二区| 狠狠色丁香久久婷婷综合_中 | 成人国产精品免费网站| 国产成人av一区二区| 成人免费av资源| 色综合久久综合网| 欧美日韩情趣电影| 日韩精品一区二区在线| 久久亚洲欧美国产精品乐播| 日本一区二区三级电影在线观看| 国产精品色在线观看| 亚洲欧美日韩成人高清在线一区| 亚洲精品免费电影| 五月天精品一区二区三区| 蜜臀av性久久久久av蜜臀妖精| 久久不见久久见免费视频1| 国产麻豆成人传媒免费观看| 成人黄页毛片网站| 欧美日韩小视频| 日韩免费观看高清完整版 | 中文字幕一区二区三区不卡在线 | 国产精品美女久久久久久久| 亚洲日穴在线视频| 日本伊人午夜精品| 顶级嫩模精品视频在线看| 91老司机福利 在线| 91精品国产综合久久蜜臀| 久久精品夜色噜噜亚洲aⅴ| 国产精品成人免费| 午夜精品福利视频网站| 黑人巨大精品欧美一区| 91色|porny| 欧美成va人片在线观看| 中文字幕在线不卡| 日韩国产精品久久久| 国产精品一区三区| 91免费版在线| 久久先锋影音av| 亚洲激情一二三区| 国产揄拍国内精品对白| 色综合中文字幕国产 | 午夜激情一区二区三区| 国产高清久久久久| 欧美精品三级在线观看| 欧美激情一区二区三区四区| 亚洲国产一二三| 国产成人精品亚洲777人妖| 欧美日韩一二三区| 国产精品毛片高清在线完整版| 午夜视频一区二区| bt7086福利一区国产| 欧美刺激脚交jootjob| 亚洲欧美视频在线观看| 国产原创一区二区| 在线91免费看| 综合在线观看色| 国产真实乱偷精品视频免| 欧美猛男超大videosgay| 国产精品久久久久久久久搜平片 | 亚洲欧美色综合| 国产乱子伦一区二区三区国色天香| 一本色道久久综合亚洲91| wwww国产精品欧美| 日本不卡一二三| 色婷婷综合激情| 欧美极品少妇xxxxⅹ高跟鞋| 奇米精品一区二区三区在线观看一| 91麻豆国产精品久久| 欧美国产欧美亚州国产日韩mv天天看完整 | 26uuu亚洲综合色| 性感美女极品91精品| 99精品国产99久久久久久白柏| 精品理论电影在线| 青青草成人在线观看| 在线观看视频91| 亚洲视频一区在线| www.日本不卡| 国产片一区二区| 国产一区二区按摩在线观看| 日韩一区二区三区在线| 天堂影院一区二区| 日本精品一区二区三区高清| 国产精品萝li| av男人天堂一区| 国产精品美女久久久久久久久久久| 国产麻豆一精品一av一免费| 欧美成人a∨高清免费观看| 蜜桃av噜噜一区| 精品日本一线二线三线不卡 | 91久久精品网| 一区二区三区欧美在线观看| 成人福利电影精品一区二区在线观看| 国产婷婷色一区二区三区四区| 国产一区二区美女诱惑| 久久久久久久久久久电影| 狠狠色综合日日| 国产亚洲精品资源在线26u| 国内精品嫩模私拍在线| 欧美大白屁股肥臀xxxxxx| 精品亚洲aⅴ乱码一区二区三区| 欧美一卡二卡在线| 美女任你摸久久 | 一区二区三区视频在线看| 精品成人免费观看| 国产伦精品一区二区三区视频青涩 | 精品一区二区精品| 日韩无一区二区| 精久久久久久久久久久| 欧美精品一区二区三区四区| 精品亚洲成a人在线观看| 国产人伦精品一区二区| 99国产精品视频免费观看| 亚洲四区在线观看| 精品视频在线免费| 美女免费视频一区二区| 久久久精品tv| 一本久道久久综合中文字幕| 亚洲成av人影院| 欧美videos大乳护士334| 国产成人av一区二区三区在线 | 国产成人精品一区二区三区四区| 国产精品久久久久永久免费观看| 色综合一区二区| 日韩制服丝袜av| 国产偷国产偷精品高清尤物| 99久久久国产精品| 亚洲国产精品一区二区尤物区| 91精品国产高清一区二区三区蜜臀| 经典一区二区三区| 亚洲欧美中日韩| 欧美一区二区三区播放老司机| 韩国女主播一区| 亚洲免费观看在线视频| 欧美大胆人体bbbb| 91在线小视频| 免费不卡在线观看| 亚洲欧美一区二区在线观看| 欧美精品久久99久久在免费线 | 久久蜜桃av一区二区天堂 | 91麻豆精品91久久久久同性| 国产成人自拍高清视频在线免费播放| 亚洲精品高清在线| 欧美精品一区二区三区蜜桃视频| 99国产一区二区三精品乱码| 麻豆国产一区二区| 综合激情网...| 精品第一国产综合精品aⅴ| 一本到高清视频免费精品| 精品亚洲免费视频| 亚洲一区二区三区四区五区中文 | 国产日韩综合av| 欧美三级中文字幕| 成人晚上爱看视频| 另类专区欧美蜜桃臀第一页| 亚洲欧美韩国综合色| 久久精子c满五个校花| 欧美日韩在线一区二区| 成人高清伦理免费影院在线观看| 日韩黄色一级片| 亚洲欧美日韩一区二区三区在线观看| 精品日本一线二线三线不卡| 欧美羞羞免费网站| 成人精品gif动图一区| 久久国产精品区| 香蕉成人伊视频在线观看| 中文字幕日韩一区| 久久精品免费在线观看| 欧美精品18+| 在线精品视频一区二区| 粉嫩嫩av羞羞动漫久久久 | 欧美激情中文字幕一区二区| 欧美一卡二卡三卡四卡| 欧美日本韩国一区二区三区视频| 99久久综合国产精品| 国产在线精品一区二区不卡了 | 日韩电影免费在线观看网站| 一区在线中文字幕| 中文字幕乱码久久午夜不卡| 精品捆绑美女sm三区| 91精品国产一区二区三区香蕉| 日本高清无吗v一区| www.激情成人| 成人激情动漫在线观看| 成人在线视频一区| 国产精品123区| 岛国一区二区三区|