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

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

?? rominit.s

?? miceteck_MPC860_BSP源碼,基于VXWORK
?? S
字號:
/* romInit.s - Motorola 860DAB ROM initialization module */

/* Copyright 1998 Teltec UCD-CS */
/* Copyright 1984-1996 Wind River Systems, Inc. */
	.data
	.globl  copyright_wind_river
	.long   copyright_wind_river

/*
modification history
--------------------
01a,15sep98,rkh  started for DAB
01h,17dec96,tpr  fixed MAMR init. bug with 16 and 32 Mbytes dram (SPR #7661)
01g,10nov96,tpr  updated UPM table. 
		 removed RTCSC initialization.
01f,08nov96,tpr  modified UPM table for EDO Dram @ 50 Mhz.
01e,06nov96,tpr  replaced PLPRCR_MF_SFT by PLPRCR_MF_SHIFT.
01d,06nov96,tpr  Clean up the code (SPR #7336).
		 added DRAM speed selection (SPR #7335).
01c,24jun96,tpr  Reworked all initialization code.
01b,04jun96,cah  Add mem controller minimal init sequence
01a,19apr96,tpr  written.
*/

/*
DESCRIPTION
This module contains the entry code for the VxWorks bootrom.
The entry point romInit, is the first code executed on power-up.
It sets the BOOT_COLD parameter to be passed to the generic
romStart() routine.

The routine sysToMonitor() jumps to the location 4 bytes
past the beginning of romInit, to perform a "warm boot".
This entry point allows a parameter to be passed to romStart().

*/

#define	_ASMLANGUAGE
#include "vxWorks.h"
#include "asm.h"
#include "cacheLib.h"
#include "config.h"
#include "regs.h"	
#include "sysLib.h"
#include "drv/multi/ppc860Siu.h"
	
	/* internals */

	.globl	_romInit	/* start of system code */
	.globl	romInit		/* start of system code */
	
	/* externals */

	.extern romStart	/* system initialization routine */

	.text
	.align 2

/******************************************************************************
*
* romInit - entry point for VxWorks in ROM
*

* romInit
*     (
*     int startType	/@ only used by 2nd entry point @/
*     )

*/

_romInit:
romInit:
	bl	cold		/* jump to the cold boot initialization */
	
	bl	start		/* jump to the warm boot initialization */

	/* copyright notice appears at beginning of ROM (in TEXT segment) */

	.ascii   "Copyright 1984-1996 Wind River Systems, Inc."
	.align 2

cold:
	li	r3, BOOT_COLD	/* set cold boot as start type */

	/*
	 * When the PowerPC 860 is powered on, the processor fletch the
	 * instructions located at the address 0x100. We need to jump
	 * from the address 0x100 to the Flash space.
	 */

	lis	r4, HIADJ(start)		/* load r4 with the address */
	addi	r4, r4, LO(start)		/* of start */

	lis	r5, HIADJ(romInit)		/* load r5 with the address */
	addi	r5, r5, LO(romInit)		/* of romInit() */

	lis	r6, HIADJ(ROM_TEXT_ADRS)	/* load r6 with the address */
	addi	r6, r6, LO(ROM_TEXT_ADRS)	/* of ROM_TEXT_ADRS */

	sub	r4, r4, r5			/*  */
	add	r4, r4, r6 

	mtspr	LR, r4				/* save destination address*/
						/* into LR register */
	blr					/* jump to flash mem address */
			
start:
	/* set the MSR register to a known state */

	xor	r4, r4, r4		/* clear register R4 */
	mtmsr 	r4			/* cleat the MSR register */

	/* DER - clear the Debug Enable Register */

	mtspr	DER, r4

	/* ICR - clear the Interrupt Cause Register */

	mtspr	ICR, r4

	/* 
	 * ICTRL - initialize the Intstruction Support Control register
	 *	   
	 */

	lis	r5, HIADJ(0x00000007)
	addi	r5, r5, LO(0x00000007)
	mtspr	ICTRL, r5

	/* disable the instruction/data cache */
	
	lis	r4, HIADJ ( CACHE_CMD_DISABLE)		/* load disable cmd */
	addi	r4, r4, LO (CACHE_CMD_DISABLE)
	mtspr	IC_CST, r4				/* disable I cache */
	mtspr	DC_CST, r4				/* disable D cache */

	/* unlock the instruction/data cache */

	lis	r4, HIADJ ( CACHE_CMD_UNLOCK_ALL)	/* load unlock cmd */
	addi	r4, r4, LO (CACHE_CMD_UNLOCK_ALL)
	mtspr	IC_CST, r4			/* unlock all I cache lines */
	mtspr	DC_CST, r4			/* unlock all D cache lines */

	/* invalidate the instruction/data cache */

	lis	r4, HIADJ ( CACHE_CMD_INVALIDATE)	/* load invalidate cmd*/
	addi	r4, r4, LO (CACHE_CMD_INVALIDATE)
	mtspr	IC_CST, r4		/* invalidate all I cache lines */
	mtspr	DC_CST, r4		/* invalidate all D cache lines */

	/*
	 * initialize the IMMR register before any non-core registers
	 * modification.
	 */

	lis	r4, HIADJ( INTERNAL_MEM_MAP_ADDR)	
	addi	r4, r4, LO(INTERNAL_MEM_MAP_ADDR)
	mtspr	IMMR, r4		/* initialize the IMMR register */

	mfspr	r4, IMMR		/* read it back, to be sure */
	rlwinm  r4, r4, 0, 0, 15	/* only high 16 bits count */

	/* SYPCR - turn off the system protection stuff */

	lis	r5, HIADJ( SYPCR_SWTC | SYPCR_BMT | SYPCR_BME | SYPCR_SWF)
	addi	r5, r5, LO(SYPCR_SWTC | SYPCR_BMT | SYPCR_BME | SYPCR_SWF)
	stw	r5, SYPCR(0)(r4)

	/* set the SIUMCR register for important debug port, etc... stuff */

	lwz	r5, SIUMCR(0)(r4)
	lis	r6, HIADJ( SIUMCR_FRC	       | SIUMCR_DLK  | SIUMCR_DPC | \
			   SIUMCR_MLRC_3STATES | SIUMCR_AEME | SIUMCR_GB5E)
	addi	r6, r6, LO(SIUMCR_FRC	       | SIUMCR_DLK  | SIUMCR_DPC | \
			   SIUMCR_MLRC_3STATES | SIUMCR_AEME | SIUMCR_GB5E)
	or	r5, r5, r6
	stw	r5, SIUMCR(0)(r4)

	/* TBSCR - initialize the Time Base Status and Control register */

	lis	r5, HIADJ( TBSCR_REFA | TBSCR_REFB)
	addi	r5, r5, LO(TBSCR_REFA | TBSCR_REFB)
	sth	r5, TBSCR(0)(r4)

	/* set PIT status and control init value */

	li	r5, PISCR_PS | PISCR_PITF
	sth	r5, PISCR(0)(r4)

	/* set the SPLL frequency to 50 Mhz : Mo */

	lis	r5, HIADJ( (SPLL_MUL_FACTOR << PLPRCR_MF_SHIFT) | \
								PLPRCR_TEXPS)
	addi	r5, r5, LO((SPLL_MUL_FACTOR << PLPRCR_MF_SHIFT) | \
								PLPRCR_TEXPS)
	stw	r5, PLPRCR(0)(r4)

	/* Power-up SDRAM initialisation */

	lis	r5, HIADJ( 0xfe000300)
	addi	r5, r5, LO(0xfe000300)
	stw	r5, OR5(0)(r4)

	lis	r5, HIADJ( 0x00000081)
	addi	r5, r5, LO( 0x00000081)
	stw	r5, BR5(0)(r4)

	lis	r5, HIADJ( 0x9c822111 )
	addi	r5, r5, LO(0x9c822111 )
	stw	r5, MAMR(0)(r4)

	li	r5, 0x0400
	sth	r5, MPTPR(0)(r4)

	li	r5, 0x0000
	sth	r5, MSTAT(0)(r4)

        /* Select the UPM power-up table for SDRAM */

	lis	r6, HIADJ( UpmPUTable)
	addi	r6, r6, LO(UpmPUTable)

	lis	r7, HIADJ( UpmPUTableEnd)
	addi	r7, r7, LO(UpmPUTableEnd)

	/* power-up init */

	sub	r5, r7, r6		/* compute table size */
	srawi	r5, r5, 2		/* in integer size */

	/* convert UpmPUTable to ROM based addressing */

	lis	r7, HIADJ(romInit)	
	addi	r7, r7, LO(romInit)

	lis	r8, HIADJ(ROM_TEXT_ADRS)
	addi	r8, r8, LO(ROM_TEXT_ADRS)

	sub	r6, r6, r7		/* subtract romInit base address */
	add	r6, r6, r8 		/* add in ROM_TEXT_ADRS address */

					/* Command: OP=Write, UPMA, MAD=0 */
	lis	r9, HIADJ ( 0x0 )
	addi	r9, r9, LO( 0x0 )

	addi	r9, r9, 8
	addi	r5, r5, 8

UpmPUWriteLoop:	
	/* write the UPM table in the UPM */

	lwz	r10, 0(r6)		/* get data from table */
	stw	r10, MDR(0)(r4)		/* store the data to MD register */

	stw	r9, MCR(0)(r4)		/* issue command to MCR register */

	addi	r6, r6, 4		/* next entry in the table */
	addi	r9, r9, 1		/* next MAD address */
	cmpw	r9, r5			/* done yet ? */
	blt	UpmPUWriteLoop

	/* Run Power-up sequence */

	lis	r5, HIADJ( 0xffffffff)
	addi	r5, r5, LO(0xffffffff )
	stw	r5, MDR(0)(r4)

	lis	r5, HIADJ( 0x02000088)
	addi	r5, r5, LO(0x02000088 )
	stw	r5, MAR(0)(r4)

	lis	r5, HIADJ( 0x8000aa08)
	addi	r5, r5, LO(0x8000aa08 )
	stw	r5, MCR(0)(r4)

        /* Select the UPM table for SDRAM */

	lis	r6, HIADJ( UpmTable)
	addi	r6, r6, LO(UpmTable)

	lis	r7, HIADJ( UpmTableEnd)
	addi	r7, r7, LO(UpmTableEnd)
	b	upmInit	

upmInit:
	/* init UPMA for memory access */

	sub	r5, r7, r6		/* compute table size */
	srawi	r5, r5, 2		/* in integer size */

	/* convert UpmTable to ROM based addressing */

	lis	r7, HIADJ(romInit)	
	addi	r7, r7, LO(romInit)

	lis	r8, HIADJ(ROM_TEXT_ADRS)
	addi	r8, r8, LO(ROM_TEXT_ADRS)

	sub	r6, r6, r7		/* subtract romInit base address */
	add	r6, r6, r8 		/* add in ROM_TEXT_ADRS address */

					/* Command: OP=Write, UPMA, MAD=0 */
	lis	r9, HIADJ ( 0x0 )
	addi	r9, r9, LO( 0x0 )

UpmWriteLoop:	
	/* write the UPM table in the UPM */

	lwz	r10, 0(r6)		/* get data from table */
	stw	r10, MDR(0)(r4)		/* store the data to MD register */

	stw	r9, MCR(0)(r4)		/* issue command to MCR register */

	addi	r6, r6, 4		/* next entry in the table */
	addi	r9, r9, 1		/* next MAD address */
	cmpw	r9, r5			/* done yet ? */
	blt	UpmWriteLoop

sdramInit:	
	/* Map the bank 5 to the SDram area */

 	lis	r5, HIADJ( 0xfe000300 )
	addi	r5, r5, LO( 0xfe000300 )
	stw	r5, OR5(0)(r4)	/* set OR5 to the previously computed value */

	lis	r5, HIADJ( 0x00000081 )
	addi	r5, r5, LO(0x00000081 )
	stw	r5, BR5(0)(r4)

	lis	r5, HIADJ( 0x9c822111 )
	addi	r5, r5, LO( 0x9c822111 )
	stw	r5, MAMR(0)(r4)

	/*
	 * Map the bank 0 to the flash area - On the 860pc board at reset time
	 * the bank 0 is already used to map the flash.
	 */
	lis	r5, HIADJ(0x00000000)
	addi	r5, r5, LO(0x00000000)
	stw	r5, BR1(0)(r4)

	lis	r5, HIADJ(0x00000000)
	addi	r5, r5, LO(0x00000000)
	stw	r5, OR1(0)(r4)

	lis	r5, HIADJ( 0x00000000)
	addi	r5, r5, LO(0x00000000)
	stw	r5, BR2(0)(r4)

	lis	r5, HIADJ(0x00000000)
	addi	r5, r5, LO(0x00000000)
	stw	r5, OR2(0)(r4)

/* Modified by Tang 2003-2-14 */ 	
/*
	lis	r5, HIADJ( 0x00000000)
	addi	r5, r5, LO(0x00000000)
	stw	r5, BR3(0)(r4)

	lis	r5, HIADJ(0x00000000)
	addi	r5, r5, LO(0x00000000)
	stw	r5, OR3(0)(r4)
*/

	lis	r5, HIADJ( 0x00000000)
	addi	r5, r5, LO(0x00000000)
	stw	r5, BR4(0)(r4)

	lis	r5, HIADJ(0x00000000)
	addi	r5, r5, LO(0x00000000)
	stw	r5, OR4(0)(r4)

	lis	r5, HIADJ( 0x00000000)
	addi	r5, r5, LO(0x00000000)
	stw	r5, BR6(0)(r4)

	lis	r5, HIADJ(0x00000000)
	addi	r5, r5, LO(0x00000000)
	stw	r5, OR6(0)(r4)

	lis	r5, HIADJ( 0x00000000)
	addi	r5, r5, LO(0x00000000)
	stw	r5, BR7(0)(r4)

	lis	r5, HIADJ(0x00000000)
	addi	r5, r5, LO(0x00000000)
	stw	r5, OR7(0)(r4)

	lis	r5, HIADJ( 0x02800401)
	addi	r5, r5, LO(0x02800401)
	stw	r5, BR0(0)(r4)

	lis	r5, HIADJ( 0xffe00920 )
	addi	r5, r5, LO(0xffe00920 )
	stw	r5, OR0(0)(r4)

/* Added by Tang 2003-2-14 */
/* Initialize Chip Select CS3, used for cpld registers */
/* CS3 Address Range: 3000.0000 - 3000.7FFF (32K)      */
        lis     r5,HI(0xFFFF8140)
        ori     r5,r5,LO(0xFFFF8140)
        stw     r5,OR3(0)(r4)              /* OR3 offset address:0x11C */

        lis     r5,HIADJ(0x30000401)
        ori     r5,r5,LO(0x30000401)
        stw     r5,BR3(0)(r4)              /* BR3 offset address:0x118 */
	
	
        /* initialize the stack pointer */

	lis	sp, HIADJ(STACK_ADRS)
	addi	sp, sp, LO(STACK_ADRS)
	
	/* go to C entry point */

	addi	sp, sp, -FRAMEBASESZ		/* get frame stack */

	/* 
	 * calculate C entry point: routine - entry point + ROM base 
	 * routine	= romStart
	 * entry point	= romInit	= R7
	 * ROM base	= ROM_TEXT_ADRS = R8
	 * C entry point: romStart - R7 + R8 
	 */

        lis	r6, HIADJ(romStart)	
        addi	r6, r6, LO(romStart)		/* load R6 with C entry point */

	sub	r6, r6, r7			/* routine - entry point */
	add	r6, r6, r8 			/* + ROM base */

	mtlr	r6				/* move C entry point to LR */
	blr					/* jump to the C entry point */


UpmTable: 
   /* single read. (offset 0 in upm RAM) */
.long   0xfffffc04, 0x0f0cfc04, 0x0ffff804, 0x01bf7004
.long   0x0ffdd000, 0x1ffff447, 0x0ffffc04, 0x1ffffc07

   /* burst read. (offset 8 in upm RAM) */
.long   0xfffffc04, 0x0f0cfc04, 0x0ffff804, 0x00ff3004
.long   0x00fff000, 0x00fff000, 0x00fff000, 0x00fff000
.long   0x00fff000, 0x11fff447, 0xfffffc47, 0xfffffc04
.long   0xfffffc04, 0xfffffc04, 0xfffffc04, 0xfffffc04

   /* single write. (offset 18 in upm RAM) */ 
.long   0xfffffc04, 0xfffffc04, 0x0f0cfc04, 0x0ffff800
.long   0x00af0004, 0x1ffdd447, 0xfffffc44, 0xfffffd47

   /* burst write. (offset 20 in upm RAM) */
.long   0xfffffc04, 0xfffffc04, 0x0f0cfc04, 0x0ffff800
.long   0x00ff0000, 0x00fff000, 0x00fff000, 0x00fff004
.long   0x11fff447, 0xfffffc47, 0xfffffc04, 0xfffffc04
.long   0xfffffc04, 0xfffffc04, 0xfffffc04, 0xfffffc04

   /* refresh. (offset 30 in upm RAM) */
.long   0xeffeb804, 0x0ffc3004, 0xfffff004, 0xfffff004
.long   0xfffff447, 0xfffffc04, 0xfffffc04, 0xfffffc04
.long   0xfffffc04, 0xfffffc04, 0xfffffc04, 0xfffffc04

/* exception. (offset 3c in upm RAM) */
.long   0xffffec07, 0xffffffff, 0xffffffff, 0xffffffff

UpmTableEnd:

UpmPUTable:

.long   0xfffff004, 0x0ffcc004, 0xfffff004, 0xfffff034
.long   0x0fac0034, 0xfffff004, 0xfffff004, 0x0ffc3084
.long   0xfffff004, 0xfffff004, 0xfffff004, 0xfffff004
.long   0xfffff084, 0xfffff407

UpmPUTableEnd:

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国模大尺度一区二区三区| 欧美精品一区二区三| 国产精品不卡一区二区三区| 九色porny丨国产精品| 久久久夜色精品亚洲| 天堂蜜桃一区二区三区| 欧美精品电影在线播放| 天使萌一区二区三区免费观看| 午夜影视日本亚洲欧洲精品| 精品日韩成人av| 717成人午夜免费福利电影| 亚洲精品国产成人久久av盗摄| 欧美一a一片一级一片| 国产在线不卡一区| 亚洲精品视频免费看| 亚洲综合一二区| 欧美午夜精品久久久| 丝袜a∨在线一区二区三区不卡| 欧美日韩国产欧美日美国产精品| 国产a久久麻豆| 欧美福利视频一区| 亚洲最大成人综合| 粉嫩av一区二区三区在线播放 | 国产美女视频一区| 一本到高清视频免费精品| 91在线云播放| a在线欧美一区| 亚洲成人动漫一区| 国产欧美精品一区aⅴ影院| 成人开心网精品视频| 亚洲777理论| 日韩国产一区二| 亚洲同性同志一二三专区| 国产日韩三级在线| 欧美国产日产图区| 国产欧美一区二区在线| 日韩亚洲欧美在线| 国产一区二区三区免费| 欧美一区二区三区在线观看| 夜夜嗨av一区二区三区四季av| gogogo免费视频观看亚洲一| 国产香蕉久久精品综合网| 国产黑丝在线一区二区三区| 日韩欧美中文字幕一区| 伊人色综合久久天天| 99re热这里只有精品视频| 亚洲欧美另类久久久精品2019| 色综合久久综合网97色综合 | 尤物在线观看一区| 欧美在线免费观看亚洲| 国产精品欧美一区喷水| 亚洲综合丁香婷婷六月香| ●精品国产综合乱码久久久久 | 久久99精品久久久久久动态图 | 欧美怡红院视频| 在线视频亚洲一区| 日韩电影免费在线看| 欧洲国产伦久久久久久久| 国产精品乱人伦| 91女人视频在线观看| 亚洲夂夂婷婷色拍ww47| 欧美高清视频一二三区| 91在线porny国产在线看| 亚洲图片欧美综合| 欧美一区二区三区色| 国产专区欧美精品| 亚洲日本在线天堂| 欧美年轻男男videosbes| 蜜桃传媒麻豆第一区在线观看| 久久久久久99久久久精品网站| 97久久超碰国产精品| 日本vs亚洲vs韩国一区三区 | 国产欧美一区二区精品性色超碰| av资源网一区| 日本欧美久久久久免费播放网| 久久人人97超碰com| 91视频你懂的| 国内精品久久久久影院薰衣草| 亚洲伦在线观看| 欧美成人精品二区三区99精品| 91免费看视频| 精品一区二区三区在线播放| 亚洲最新在线观看| 国产三级三级三级精品8ⅰ区| 欧美日韩视频在线观看一区二区三区| 国产一区二区视频在线| 亚洲一区二区不卡免费| 欧美韩国日本综合| 日韩欧美国产一区二区在线播放| 99精品久久99久久久久| 国产一区二区三区四| 亚洲国产成人精品视频| 国产精品久久99| 久久影院午夜论| 欧美肥妇free| 欧美日韩一级黄| 一本大道av一区二区在线播放| 国产另类ts人妖一区二区| 免费人成网站在线观看欧美高清| 亚洲黄色免费电影| 国产精品免费av| 国产午夜精品一区二区三区嫩草| ...中文天堂在线一区| 麻豆精品国产传媒mv男同| 亚洲国产成人av好男人在线观看| 欧美美女一区二区在线观看| 青青草精品视频| 国产精品毛片久久久久久久| 欧美精品一卡二卡| 国内精品伊人久久久久av一坑 | 自拍偷拍国产精品| 精品一区二区三区av| 亚洲不卡av一区二区三区| 国产精品成人午夜| 国产精品无遮挡| 国产欧美日产一区| 亚洲国产精品成人综合色在线婷婷| 欧美成人福利视频| 亚洲精品在线电影| 欧美精品一区二区三区高清aⅴ| 日韩精品一区国产麻豆| 欧美videos中文字幕| 久久亚洲一级片| 久久久精品免费网站| 国产欧美精品一区aⅴ影院| 欧美国产成人在线| 亚洲免费成人av| 亚洲午夜av在线| 麻豆91精品视频| 精品写真视频在线观看| 国产精品系列在线观看| 成人午夜激情影院| 色婷婷精品久久二区二区蜜臂av| 91成人在线精品| 欧美一级专区免费大片| 久久亚洲欧美国产精品乐播| 中文字幕欧美日本乱码一线二线 | 亚洲mv在线观看| 风间由美性色一区二区三区| 国产精品久久久久久久岛一牛影视 | 午夜欧美视频在线观看 | 亚洲一区二区欧美激情| 免费观看30秒视频久久| 欧美在线一区二区三区| 欧美性猛交一区二区三区精品| 国内精品伊人久久久久av影院 | 99热99精品| 欧美日韩在线播放三区四区| 日韩欧美国产小视频| 国产精品传媒视频| 美国三级日本三级久久99| 久久99九九99精品| 日韩情涩欧美日韩视频| 久久精品人人爽人人爽| 亚洲欧洲日韩av| 欧美a级一区二区| 成人动漫在线一区| 在线观看区一区二| 久久综合成人精品亚洲另类欧美| 日韩美女视频在线| 国产精品美女一区二区三区| 懂色一区二区三区免费观看| 国产精品视频你懂的| 日韩午夜在线观看| 自拍偷拍国产亚洲| 久久精品国产亚洲aⅴ| 色婷婷精品大视频在线蜜桃视频| 精品免费国产一区二区三区四区| 亚洲精品视频一区二区| 国产成人精品综合在线观看 | 欧美在线一二三四区| 久久奇米777| 日日夜夜免费精品视频| 97精品国产露脸对白| 久久久综合精品| 日韩高清不卡一区二区| 91免费看视频| 欧美激情资源网| 精品中文字幕一区二区小辣椒| 在线国产电影不卡| 国产精品美日韩| 国产成人精品亚洲午夜麻豆| 日韩一区二区在线观看| 亚洲国产精品视频| 99re免费视频精品全部| 国产视频一区二区三区在线观看| 青青草国产精品亚洲专区无| 欧美日韩视频在线第一区 | 精品亚洲成a人在线观看| 欧美日韩一区精品| 粉嫩一区二区三区在线看| 成人蜜臀av电影| 欧美精品一区二区三区蜜臀| 爽好多水快深点欧美视频| 91久久精品一区二区| 亚洲欧洲成人精品av97| 成人午夜碰碰视频| 国产精品成人午夜| 99久久久久免费精品国产| 国产精品麻豆久久久|