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

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

?? pci_fire.c

?? linux 內(nèi)核源代碼
?? C
字號:
/* pci_fire.c: Sun4u platform PCI-E controller support. * * Copyright (C) 2007 David S. Miller (davem@davemloft.net) */#include <linux/kernel.h>#include <linux/pci.h>#include <linux/slab.h>#include <linux/init.h>#include <linux/msi.h>#include <linux/irq.h>#include <asm/oplib.h>#include <asm/prom.h>#include <asm/irq.h>#include "pci_impl.h"#define fire_read(__reg) \({	u64 __ret; \	__asm__ __volatile__("ldxa [%1] %2, %0" \			     : "=r" (__ret) \			     : "r" (__reg), "i" (ASI_PHYS_BYPASS_EC_E) \			     : "memory"); \	__ret; \})#define fire_write(__reg, __val) \	__asm__ __volatile__("stxa %0, [%1] %2" \			     : /* no outputs */ \			     : "r" (__val), "r" (__reg), \			       "i" (ASI_PHYS_BYPASS_EC_E) \			     : "memory")static void __init pci_fire_scan_bus(struct pci_pbm_info *pbm){	pbm->pci_bus = pci_scan_one_pbm(pbm);	/* XXX register error interrupt handlers XXX */}#define FIRE_IOMMU_CONTROL	0x40000UL#define FIRE_IOMMU_TSBBASE	0x40008UL#define FIRE_IOMMU_FLUSH	0x40100UL#define FIRE_IOMMU_FLUSHINV	0x40108ULstatic int pci_fire_pbm_iommu_init(struct pci_pbm_info *pbm){	struct iommu *iommu = pbm->iommu;	u32 vdma[2], dma_mask;	u64 control;	int tsbsize, err;	/* No virtual-dma property on these guys, use largest size.  */	vdma[0] = 0xc0000000; /* base */	vdma[1] = 0x40000000; /* size */	dma_mask = 0xffffffff;	tsbsize = 128;	/* Register addresses. */	iommu->iommu_control  = pbm->pbm_regs + FIRE_IOMMU_CONTROL;	iommu->iommu_tsbbase  = pbm->pbm_regs + FIRE_IOMMU_TSBBASE;	iommu->iommu_flush    = pbm->pbm_regs + FIRE_IOMMU_FLUSH;	iommu->iommu_flushinv = pbm->pbm_regs + FIRE_IOMMU_FLUSHINV;	/* We use the main control/status register of FIRE as the write	 * completion register.	 */	iommu->write_complete_reg = pbm->controller_regs + 0x410000UL;	/*	 * Invalidate TLB Entries.	 */	fire_write(iommu->iommu_flushinv, ~(u64)0);	err = iommu_table_init(iommu, tsbsize * 8 * 1024, vdma[0], dma_mask);	if (err)		return err;	fire_write(iommu->iommu_tsbbase, __pa(iommu->page_table) | 0x7UL);	control = fire_read(iommu->iommu_control);	control |= (0x00000400 /* TSB cache snoop enable */	|		    0x00000300 /* Cache mode */			|		    0x00000002 /* Bypass enable */		|		    0x00000001 /* Translation enable */);	fire_write(iommu->iommu_control, control);	return 0;}#ifdef CONFIG_PCI_MSIstruct pci_msiq_entry {	u64		word0;#define MSIQ_WORD0_RESV			0x8000000000000000UL#define MSIQ_WORD0_FMT_TYPE		0x7f00000000000000UL#define MSIQ_WORD0_FMT_TYPE_SHIFT	56#define MSIQ_WORD0_LEN			0x00ffc00000000000UL#define MSIQ_WORD0_LEN_SHIFT		46#define MSIQ_WORD0_ADDR0		0x00003fff00000000UL#define MSIQ_WORD0_ADDR0_SHIFT		32#define MSIQ_WORD0_RID			0x00000000ffff0000UL#define MSIQ_WORD0_RID_SHIFT		16#define MSIQ_WORD0_DATA0		0x000000000000ffffUL#define MSIQ_WORD0_DATA0_SHIFT		0#define MSIQ_TYPE_MSG			0x6#define MSIQ_TYPE_MSI32			0xb#define MSIQ_TYPE_MSI64			0xf	u64		word1;#define MSIQ_WORD1_ADDR1		0xffffffffffff0000UL#define MSIQ_WORD1_ADDR1_SHIFT		16#define MSIQ_WORD1_DATA1		0x000000000000ffffUL#define MSIQ_WORD1_DATA1_SHIFT		0	u64		resv[6];};/* All MSI registers are offset from pbm->pbm_regs */#define EVENT_QUEUE_BASE_ADDR_REG	0x010000UL#define  EVENT_QUEUE_BASE_ADDR_ALL_ONES	0xfffc000000000000UL#define EVENT_QUEUE_CONTROL_SET(EQ)	(0x011000UL + (EQ) * 0x8UL)#define  EVENT_QUEUE_CONTROL_SET_OFLOW	0x0200000000000000UL#define  EVENT_QUEUE_CONTROL_SET_EN	0x0000100000000000UL#define EVENT_QUEUE_CONTROL_CLEAR(EQ)	(0x011200UL + (EQ) * 0x8UL)#define  EVENT_QUEUE_CONTROL_CLEAR_OF	0x0200000000000000UL#define  EVENT_QUEUE_CONTROL_CLEAR_E2I	0x0000800000000000UL#define  EVENT_QUEUE_CONTROL_CLEAR_DIS	0x0000100000000000UL#define EVENT_QUEUE_STATE(EQ)		(0x011400UL + (EQ) * 0x8UL)#define  EVENT_QUEUE_STATE_MASK		0x0000000000000007UL#define  EVENT_QUEUE_STATE_IDLE		0x0000000000000001UL#define  EVENT_QUEUE_STATE_ACTIVE	0x0000000000000002UL#define  EVENT_QUEUE_STATE_ERROR	0x0000000000000004UL#define EVENT_QUEUE_TAIL(EQ)		(0x011600UL + (EQ) * 0x8UL)#define  EVENT_QUEUE_TAIL_OFLOW		0x0200000000000000UL#define  EVENT_QUEUE_TAIL_VAL		0x000000000000007fUL#define EVENT_QUEUE_HEAD(EQ)		(0x011800UL + (EQ) * 0x8UL)#define  EVENT_QUEUE_HEAD_VAL		0x000000000000007fUL#define MSI_MAP(MSI)			(0x020000UL + (MSI) * 0x8UL)#define  MSI_MAP_VALID			0x8000000000000000UL#define  MSI_MAP_EQWR_N			0x4000000000000000UL#define  MSI_MAP_EQNUM			0x000000000000003fUL#define MSI_CLEAR(MSI)			(0x028000UL + (MSI) * 0x8UL)#define  MSI_CLEAR_EQWR_N		0x4000000000000000UL#define IMONDO_DATA0			0x02C000UL#define  IMONDO_DATA0_DATA		0xffffffffffffffc0UL#define IMONDO_DATA1			0x02C008UL#define  IMONDO_DATA1_DATA		0xffffffffffffffffUL#define MSI_32BIT_ADDR			0x034000UL#define  MSI_32BIT_ADDR_VAL		0x00000000ffff0000UL#define MSI_64BIT_ADDR			0x034008UL#define  MSI_64BIT_ADDR_VAL		0xffffffffffff0000ULstatic int pci_fire_get_head(struct pci_pbm_info *pbm, unsigned long msiqid,			     unsigned long *head){	*head = fire_read(pbm->pbm_regs + EVENT_QUEUE_HEAD(msiqid));	return 0;}static int pci_fire_dequeue_msi(struct pci_pbm_info *pbm, unsigned long msiqid,				unsigned long *head, unsigned long *msi){	unsigned long type_fmt, type, msi_num;	struct pci_msiq_entry *base, *ep;	base = (pbm->msi_queues + ((msiqid - pbm->msiq_first) * 8192));	ep = &base[*head];	if ((ep->word0 & MSIQ_WORD0_FMT_TYPE) == 0)		return 0;	type_fmt = ((ep->word0 & MSIQ_WORD0_FMT_TYPE) >>		    MSIQ_WORD0_FMT_TYPE_SHIFT);	type = (type_fmt >> 3);	if (unlikely(type != MSIQ_TYPE_MSI32 &&		     type != MSIQ_TYPE_MSI64))		return -EINVAL;	*msi = msi_num = ((ep->word0 & MSIQ_WORD0_DATA0) >>			  MSIQ_WORD0_DATA0_SHIFT);	fire_write(pbm->pbm_regs + MSI_CLEAR(msi_num),		   MSI_CLEAR_EQWR_N);	/* Clear the entry.  */	ep->word0 &= ~MSIQ_WORD0_FMT_TYPE;	/* Go to next entry in ring.  */	(*head)++;	if (*head >= pbm->msiq_ent_count)		*head = 0;	return 1;}static int pci_fire_set_head(struct pci_pbm_info *pbm, unsigned long msiqid,			     unsigned long head){	fire_write(pbm->pbm_regs + EVENT_QUEUE_HEAD(msiqid), head);	return 0;}static int pci_fire_msi_setup(struct pci_pbm_info *pbm, unsigned long msiqid,			      unsigned long msi, int is_msi64){	u64 val;	val = fire_read(pbm->pbm_regs + MSI_MAP(msi));	val &= ~(MSI_MAP_EQNUM);	val |= msiqid;	fire_write(pbm->pbm_regs + MSI_MAP(msi), val);	fire_write(pbm->pbm_regs + MSI_CLEAR(msi),		   MSI_CLEAR_EQWR_N);	val = fire_read(pbm->pbm_regs + MSI_MAP(msi));	val |= MSI_MAP_VALID;	fire_write(pbm->pbm_regs + MSI_MAP(msi), val);	return 0;}static int pci_fire_msi_teardown(struct pci_pbm_info *pbm, unsigned long msi){	unsigned long msiqid;	u64 val;	val = fire_read(pbm->pbm_regs + MSI_MAP(msi));	msiqid = (val & MSI_MAP_EQNUM);	val &= ~MSI_MAP_VALID;	fire_write(pbm->pbm_regs + MSI_MAP(msi), val);	return 0;}static int pci_fire_msiq_alloc(struct pci_pbm_info *pbm){	unsigned long pages, order, i;	order = get_order(512 * 1024);	pages = __get_free_pages(GFP_KERNEL | __GFP_COMP, order);	if (pages == 0UL) {		printk(KERN_ERR "MSI: Cannot allocate MSI queues (o=%lu).\n",		       order);		return -ENOMEM;	}	memset((char *)pages, 0, PAGE_SIZE << order);	pbm->msi_queues = (void *) pages;	fire_write(pbm->pbm_regs + EVENT_QUEUE_BASE_ADDR_REG,		   (EVENT_QUEUE_BASE_ADDR_ALL_ONES |		    __pa(pbm->msi_queues)));	fire_write(pbm->pbm_regs + IMONDO_DATA0,		   pbm->portid << 6);	fire_write(pbm->pbm_regs + IMONDO_DATA1, 0);	fire_write(pbm->pbm_regs + MSI_32BIT_ADDR,		   pbm->msi32_start);	fire_write(pbm->pbm_regs + MSI_64BIT_ADDR,		   pbm->msi64_start);	for (i = 0; i < pbm->msiq_num; i++) {		fire_write(pbm->pbm_regs + EVENT_QUEUE_HEAD(i), 0);		fire_write(pbm->pbm_regs + EVENT_QUEUE_TAIL(i), 0);	}	return 0;}static void pci_fire_msiq_free(struct pci_pbm_info *pbm){	unsigned long pages, order;	order = get_order(512 * 1024);	pages = (unsigned long) pbm->msi_queues;	free_pages(pages, order);	pbm->msi_queues = NULL;}static int pci_fire_msiq_build_irq(struct pci_pbm_info *pbm,				   unsigned long msiqid,				   unsigned long devino){	unsigned long cregs = (unsigned long) pbm->pbm_regs;	unsigned long imap_reg, iclr_reg, int_ctrlr;	unsigned int virt_irq;	int fixup;	u64 val;	imap_reg = cregs + (0x001000UL + (devino * 0x08UL));	iclr_reg = cregs + (0x001400UL + (devino * 0x08UL));	/* XXX iterate amongst the 4 IRQ controllers XXX */	int_ctrlr = (1UL << 6);	val = fire_read(imap_reg);	val |= (1UL << 63) | int_ctrlr;	fire_write(imap_reg, val);	fixup = ((pbm->portid << 6) | devino) - int_ctrlr;	virt_irq = build_irq(fixup, iclr_reg, imap_reg);	if (!virt_irq)		return -ENOMEM;	fire_write(pbm->pbm_regs +		   EVENT_QUEUE_CONTROL_SET(msiqid),		   EVENT_QUEUE_CONTROL_SET_EN);	return virt_irq;}static const struct sparc64_msiq_ops pci_fire_msiq_ops = {	.get_head	=	pci_fire_get_head,	.dequeue_msi	=	pci_fire_dequeue_msi,	.set_head	=	pci_fire_set_head,	.msi_setup	=	pci_fire_msi_setup,	.msi_teardown	=	pci_fire_msi_teardown,	.msiq_alloc	=	pci_fire_msiq_alloc,	.msiq_free	=	pci_fire_msiq_free,	.msiq_build_irq	=	pci_fire_msiq_build_irq,};static void pci_fire_msi_init(struct pci_pbm_info *pbm){	sparc64_pbm_msi_init(pbm, &pci_fire_msiq_ops);}#else /* CONFIG_PCI_MSI */static void pci_fire_msi_init(struct pci_pbm_info *pbm){}#endif /* !(CONFIG_PCI_MSI) *//* Based at pbm->controller_regs */#define FIRE_PARITY_CONTROL	0x470010UL#define  FIRE_PARITY_ENAB	0x8000000000000000UL#define FIRE_FATAL_RESET_CTL	0x471028UL#define  FIRE_FATAL_RESET_SPARE	0x0000000004000000UL#define  FIRE_FATAL_RESET_MB	0x0000000002000000UL#define  FIRE_FATAL_RESET_CPE	0x0000000000008000UL#define  FIRE_FATAL_RESET_APE	0x0000000000004000UL#define  FIRE_FATAL_RESET_PIO	0x0000000000000040UL#define  FIRE_FATAL_RESET_JW	0x0000000000000004UL#define  FIRE_FATAL_RESET_JI	0x0000000000000002UL#define  FIRE_FATAL_RESET_JR	0x0000000000000001UL#define FIRE_CORE_INTR_ENABLE	0x471800UL/* Based at pbm->pbm_regs */#define FIRE_TLU_CTRL		0x80000UL#define  FIRE_TLU_CTRL_TIM	0x00000000da000000UL#define  FIRE_TLU_CTRL_QDET	0x0000000000000100UL#define  FIRE_TLU_CTRL_CFG	0x0000000000000001UL#define FIRE_TLU_DEV_CTRL	0x90008UL#define FIRE_TLU_LINK_CTRL	0x90020UL#define FIRE_TLU_LINK_CTRL_CLK	0x0000000000000040UL#define FIRE_LPU_RESET		0xe2008UL#define FIRE_LPU_LLCFG		0xe2200UL#define  FIRE_LPU_LLCFG_VC0	0x0000000000000100UL#define FIRE_LPU_FCTRL_UCTRL	0xe2240UL#define  FIRE_LPU_FCTRL_UCTRL_N	0x0000000000000002UL#define  FIRE_LPU_FCTRL_UCTRL_P	0x0000000000000001UL#define FIRE_LPU_TXL_FIFOP	0xe2430UL#define FIRE_LPU_LTSSM_CFG2	0xe2788UL#define FIRE_LPU_LTSSM_CFG3	0xe2790UL#define FIRE_LPU_LTSSM_CFG4	0xe2798UL#define FIRE_LPU_LTSSM_CFG5	0xe27a0UL#define FIRE_DMC_IENAB		0x31800UL#define FIRE_DMC_DBG_SEL_A	0x53000UL#define FIRE_DMC_DBG_SEL_B	0x53008UL#define FIRE_PEC_IENAB		0x51800ULstatic void pci_fire_hw_init(struct pci_pbm_info *pbm){	u64 val;	fire_write(pbm->controller_regs + FIRE_PARITY_CONTROL,		   FIRE_PARITY_ENAB);	fire_write(pbm->controller_regs + FIRE_FATAL_RESET_CTL,		   (FIRE_FATAL_RESET_SPARE |		    FIRE_FATAL_RESET_MB |		    FIRE_FATAL_RESET_CPE |		    FIRE_FATAL_RESET_APE |		    FIRE_FATAL_RESET_PIO |		    FIRE_FATAL_RESET_JW |		    FIRE_FATAL_RESET_JI |		    FIRE_FATAL_RESET_JR));	fire_write(pbm->controller_regs + FIRE_CORE_INTR_ENABLE, ~(u64)0);	val = fire_read(pbm->pbm_regs + FIRE_TLU_CTRL);	val |= (FIRE_TLU_CTRL_TIM |		FIRE_TLU_CTRL_QDET |		FIRE_TLU_CTRL_CFG);	fire_write(pbm->pbm_regs + FIRE_TLU_CTRL, val);	fire_write(pbm->pbm_regs + FIRE_TLU_DEV_CTRL, 0);	fire_write(pbm->pbm_regs + FIRE_TLU_LINK_CTRL,		   FIRE_TLU_LINK_CTRL_CLK);	fire_write(pbm->pbm_regs + FIRE_LPU_RESET, 0);	fire_write(pbm->pbm_regs + FIRE_LPU_LLCFG,		   FIRE_LPU_LLCFG_VC0);	fire_write(pbm->pbm_regs + FIRE_LPU_FCTRL_UCTRL,		   (FIRE_LPU_FCTRL_UCTRL_N |		    FIRE_LPU_FCTRL_UCTRL_P));	fire_write(pbm->pbm_regs + FIRE_LPU_TXL_FIFOP,		   ((0xffff << 16) | (0x0000 << 0)));	fire_write(pbm->pbm_regs + FIRE_LPU_LTSSM_CFG2, 3000000);	fire_write(pbm->pbm_regs + FIRE_LPU_LTSSM_CFG3, 500000);	fire_write(pbm->pbm_regs + FIRE_LPU_LTSSM_CFG4,		   (2 << 16) | (140 << 8));	fire_write(pbm->pbm_regs + FIRE_LPU_LTSSM_CFG5, 0);	fire_write(pbm->pbm_regs + FIRE_DMC_IENAB, ~(u64)0);	fire_write(pbm->pbm_regs + FIRE_DMC_DBG_SEL_A, 0);	fire_write(pbm->pbm_regs + FIRE_DMC_DBG_SEL_B, 0);	fire_write(pbm->pbm_regs + FIRE_PEC_IENAB, ~(u64)0);}static int __init pci_fire_pbm_init(struct pci_controller_info *p,				    struct device_node *dp, u32 portid){	const struct linux_prom64_registers *regs;	struct pci_pbm_info *pbm;	int err;	if ((portid & 1) == 0)		pbm = &p->pbm_A;	else		pbm = &p->pbm_B;	pbm->next = pci_pbm_root;	pci_pbm_root = pbm;	pbm->scan_bus = pci_fire_scan_bus;	pbm->pci_ops = &sun4u_pci_ops;	pbm->config_space_reg_bits = 12;	pbm->index = pci_num_pbms++;	pbm->portid = portid;	pbm->parent = p;	pbm->prom_node = dp;	pbm->name = dp->full_name;	regs = of_get_property(dp, "reg", NULL);	pbm->pbm_regs = regs[0].phys_addr;	pbm->controller_regs = regs[1].phys_addr - 0x410000UL;	printk("%s: SUN4U PCIE Bus Module\n", pbm->name);	pci_determine_mem_io_space(pbm);	pci_get_pbm_props(pbm);	pci_fire_hw_init(pbm);	err = pci_fire_pbm_iommu_init(pbm);	if (err)		return err;	pci_fire_msi_init(pbm);	return 0;}static inline int portid_compare(u32 x, u32 y){	if (x == (y ^ 1))		return 1;	return 0;}void __init fire_pci_init(struct device_node *dp, const char *model_name){	struct pci_controller_info *p;	u32 portid = of_getintprop_default(dp, "portid", 0xff);	struct iommu *iommu;	struct pci_pbm_info *pbm;	for (pbm = pci_pbm_root; pbm; pbm = pbm->next) {		if (portid_compare(pbm->portid, portid)) {			if (pci_fire_pbm_init(pbm->parent, dp, portid))				goto fatal_memory_error;			return;		}	}	p = kzalloc(sizeof(struct pci_controller_info), GFP_ATOMIC);	if (!p)		goto fatal_memory_error;	iommu = kzalloc(sizeof(struct iommu), GFP_ATOMIC);	if (!iommu)		goto fatal_memory_error;	p->pbm_A.iommu = iommu;	iommu = kzalloc(sizeof(struct iommu), GFP_ATOMIC);	if (!iommu)		goto fatal_memory_error;	p->pbm_B.iommu = iommu;	if (pci_fire_pbm_init(p, dp, portid))		goto fatal_memory_error;	return;fatal_memory_error:	prom_printf("PCI_FIRE: Fatal memory allocation error.\n");	prom_halt();}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩欧美国产综合一区| av一区二区三区黑人| 日韩无一区二区| 开心九九激情九九欧美日韩精美视频电影 | 麻豆精品视频在线观看视频| 91精品国产色综合久久ai换脸 | 国产日韩精品一区二区浪潮av | 天堂av在线一区| 一区二区三区四区激情| 在线观看日韩高清av| 午夜日韩在线观看| 欧美成人vps| 福利一区二区在线| 亚洲精品乱码久久久久久久久| 欧美羞羞免费网站| 秋霞成人午夜伦在线观看| 26uuu亚洲| 99久久精品国产麻豆演员表| 一区二区免费在线| 日韩欧美一二区| 成人国产精品免费| 亚洲精品高清在线| 欧美一区二区三区啪啪| 国产a精品视频| 亚洲线精品一区二区三区八戒| 日韩一区二区视频在线观看| 国产成a人无v码亚洲福利| 亚洲美腿欧美偷拍| 精品国产免费一区二区三区四区| 成人高清视频在线观看| 午夜视频在线观看一区二区| 久久亚洲捆绑美女| 在线观看成人小视频| 韩国精品免费视频| 一区二区三区色| 久久久久久久久久看片| 欧美三级韩国三级日本三斤| 国产资源在线一区| 亚洲国产精品久久久久秋霞影院| 欧美tickling挠脚心丨vk| 色天使色偷偷av一区二区| 久久精品国产在热久久| 一区二区在线观看视频| 久久久久国产成人精品亚洲午夜| 欧美在线视频你懂得| 国产精品91xxx| 日韩影视精彩在线| 中文字幕在线观看一区| 精品日韩在线观看| 欧美日韩另类一区| 99re这里都是精品| 国产精品一区二区在线播放 | 欧美系列亚洲系列| www.亚洲国产| 国产精品一区二区久久精品爱涩 | 日韩成人一级大片| 一区二区三区四区在线| 国产精品日产欧美久久久久| 337p日本欧洲亚洲大胆精品| 欧美肥胖老妇做爰| 在线中文字幕不卡| 91亚洲精品乱码久久久久久蜜桃| 国产一区二区三区精品视频| 麻豆精品一区二区三区| 婷婷一区二区三区| 亚洲电影欧美电影有声小说| 亚洲视频1区2区| 亚洲天堂免费看| 亚洲丝袜制服诱惑| 1024成人网色www| 国产精品久久久久久久裸模| 国产人妖乱国产精品人妖| 精品国产亚洲在线| 樱桃视频在线观看一区| 欧美韩日一区二区三区| 国产午夜精品一区二区三区视频| 精品入口麻豆88视频| 精品国产乱码久久久久久1区2区| 91精品国产综合久久婷婷香蕉| 欧美日韩国产综合一区二区三区 | 日本福利一区二区| 色婷婷一区二区三区四区| 色综合中文字幕国产| 成人蜜臀av电影| caoporen国产精品视频| 99国产精品99久久久久久| 99久久精品一区二区| 色久优优欧美色久优优| 在线视频一区二区免费| 欧美三级视频在线| 欧美一区二区三区在线电影| 欧美一级电影网站| 久久综合五月天婷婷伊人| 久久综合五月天婷婷伊人| 久久久99精品免费观看| 国产精品美女一区二区| 一区二区三区在线影院| 肉肉av福利一精品导航| 久久国产福利国产秒拍| 国产成人av资源| 色婷婷久久久久swag精品| 欧美蜜桃一区二区三区| 精品欧美一区二区久久| 国产欧美日韩卡一| 一区二区三区视频在线看| 石原莉奈一区二区三区在线观看| 久久99久久久久久久久久久| 国产suv精品一区二区883| 色婷婷国产精品久久包臀| 欧美丰满美乳xxx高潮www| 国产网红主播福利一区二区| 亚洲精品免费看| 蜜臀精品一区二区三区在线观看| 国产精品亚洲成人| 欧美曰成人黄网| 精品国产凹凸成av人网站| 中文字幕日韩一区| 免费精品视频最新在线| 99这里只有久久精品视频| 这里只有精品视频在线观看| 欧美激情一区在线| 亚洲123区在线观看| 成人免费福利片| 日韩视频一区二区三区| 成人激情免费网站| 91麻豆精品91久久久久同性| 欧美国产1区2区| 免费精品视频最新在线| 91香蕉视频mp4| 久久久久免费观看| 天堂一区二区在线免费观看| eeuss鲁一区二区三区| 日韩一区二区免费在线观看| 亚洲嫩草精品久久| 国产成人精品影视| 91精品国产综合久久精品app| 亚洲一区二区五区| **性色生活片久久毛片| 五月天激情综合网| 99精品欧美一区| 精品入口麻豆88视频| 亚洲动漫第一页| 99久久婷婷国产| 久久众筹精品私拍模特| 视频一区视频二区中文字幕| 91香蕉视频污| 国产午夜精品久久| 久久99精品国产| 欧美唯美清纯偷拍| 亚洲色图视频免费播放| 国产91精品露脸国语对白| 欧美一区日本一区韩国一区| 亚洲综合丁香婷婷六月香| 成人免费毛片嘿嘿连载视频| 欧美xxxx老人做受| 日本网站在线观看一区二区三区| 色妹子一区二区| 日韩伦理电影网| a在线播放不卡| 欧美韩日一区二区三区四区| 国产精品综合视频| 久久在线免费观看| 欧美日韩高清一区二区不卡| 亚洲蜜臀av乱码久久精品| 成人app软件下载大全免费| 亚洲国产精品v| 国产成人在线视频播放| 国产亚洲一区字幕| 国产盗摄一区二区| 日本一区二区三区在线观看| 国产精品一级二级三级| 国产婷婷精品av在线| 国产jizzjizz一区二区| 国产精品色眯眯| 97久久精品人人爽人人爽蜜臀| 中文字幕一区二区三区精华液| 成人不卡免费av| 亚洲男人的天堂在线aⅴ视频| 91亚洲精品久久久蜜桃| 亚洲人成在线观看一区二区| 色哦色哦哦色天天综合| 性久久久久久久久久久久| 欧美丰满高潮xxxx喷水动漫| 蜜臀久久久久久久| 久久久国产精华| eeuss鲁片一区二区三区| 一区二区国产视频| 在线成人av网站| 国内精品伊人久久久久av一坑| 久久久精品国产免大香伊| 不卡视频一二三四| 亚洲国产一区视频| 26uuu亚洲综合色| 99久久99久久精品国产片果冻| 亚洲综合激情另类小说区| 日韩一区二区视频| 成人爱爱电影网址| 日韩精品一区第一页| 久久综合九色综合欧美就去吻| 本田岬高潮一区二区三区|