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

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

?? trmpc860.c

?? ppc860平臺(tái)上移植uc OS的實(shí)例
?? C
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
/* 
 * SOURCE FILE FOR Motorola MPC860 QUICC Sample Driver
 *
 * This device driver is derived from the Ethernet Bridge example from
 * Motorola.
 * It has been modified to interface to the Treck TCP/IP stack and to
 * provide readability.
 *
 * Since it is a derived work, it remains the property of Motorola Corp.
 *
 * We have left the definintions of the mpc860 registers as they
 * are in the QUICC user manual
 *
 * This is why they do not match TRECK coding standards.
 */


#include <trsocket.h>
#include <trmpc860.h>


/* 
 * IMPORTANT
 * If the mpc860 device only receives a few frames and stops forever,
 * make sure that you are calling the tfMpc860RefillScc1RecvPool()
 * function from a low priority task
 */


/*    
 * Since we do not accept SHORT frames, we use the SHORT bit to 
 * mean that this frame has been notified
 * IF THIS DRIVER IS CHANGED TO ALLOW SHORT FRAMES, ANOTHER BIT
 * WILL NEED TO BE USED
 */
#define TM_MPC860_NOTIFIED TM_MPC860_RECV_E_SHORT
#define TM_MPC860_ERROR_RECV (TM_MPC860_RECV_ERROR & (~TM_MPC860_NOTIFIED))

/*
 * Local Function Prototypes
 */
void tfMpc860CreateXmitPool(int channel, int maxBd);
void tfMpc860CreateRecvPool(int channel, int maxBd);
void tfMpc860IssueCommand(unsigned short command);
void tfMpc860Busy(ttUserInterface interfaceHandle, int channel);
void tfMpc860RecvFrame(ttUserInterface interfaceHandle,
                      int             channel);
void tfMpc860XmitError(ttUserInterface interfaceHandle,int channel);
void tfMpc860Scc1SendComplete(ttUserInterface interfaceHandle);
void tfMpc860EtherUp(int channel);
void tfMpc860EtherScc1BoardInit(void);
void tfMpc860EtherScc1Init(void);
void tfMpc860RefillScc1RecvPool(void);
void tfMpc860Down(int channel);

int tfMpc860SerialClose(ttUserInterface interfaceHandle);
void tfMpc860SerialUp(int channel);
int tfMpc860SerialOpen(ttUserInterface interfaceHandle);
void tfMpc860SerialScc4BoardInit(void);
void tfMpc860SerialScc4Init(void);


static ttMpc860Ptr tlMpc860Ptr;

static ttMpc860BufDescPtr tlMpc860XmitBufDescPtr;
static ttMpc860BufDescPtr tlMpc860XmitIsrBufDescPtr;
static ttMpc860BufDescPtr tlMpc860XmitBufDescStartPtr;

static ttMpc860BufDescPtr tlMpc860RecvBufDescPtr;
static ttMpc860BufDescPtr tlMpc860RecvIsrBufDescPtr;
static ttMpc860BufDescPtr tlMpc860RecvBufDescStartPtr; 
static ttMpc860BufDescPtr tlScatterBufferStart;

static ttMpc860BufDescPtr tlMpc860RecvRefillBufDescPtr; 
unsigned long     tvMpc860RecvErrorCount;
unsigned long     tvMpc860RecvPacketCount;
unsigned long     tvMpc860SendPacketCount;
unsigned long     tvMpc860BusyPacketCount;
unsigned long     tvMpc860XmitWait;
unsigned long     tvMpc860IsrRecvErrorCount;

/*
 * Four Interface handles for four SCC's 
 */
static ttUserInterface tlInterfaceArray[4];

/*
 * Table of ttUserBuffer Handles
 */
static ttUserBuffer    tlUserBufferList[TM_MPC860_ETHER_MAX_RECV_BUFD];

/*
 * Our index to the ttUserBuffer's
 */
static ttUserBufferPtr tlUserBufferPtr; 
static ttUserBufferPtr tlUserRefillBufferPtr; 



/*
 * Return the Physical Address for the device
 * For the MPC860, it should be read from EEPROM
 * because every ethernet address is Unique
 *
 * THIS ROUTINE MUST BE MODIFIED!
 *
 * To get an ethernet address address block for 
 * your company, you need to contact IEEE Standards
 * or visit http://standards.ieee.org/faqs/OUI.html
 * for information on getting an Company ID/OUI
 */
int tfMpc860GetPhyAddr(ttUserInterface userInterface,
        char *address)
{
/* 
 * We don't use the interface handle here, but we keep the compiler
 * from complaining about unused formal parameters
 */
    userInterface=userInterface;
    address[0]=0x00;
    address[1]=0xea;
    address[2]=0xc0;
    address[3]=0xf0;
    address[4]=0x08;
    address[5]=0x60;
    return 0;
}


/* 
 * Initialize SCC1 to be an ethernet channel
 */
void tfMpc860EtherScc1Init()
{
    char                  etherAddr[6];
    struct ethernet_pram *enet_pram;
    struct scc_regs *regs;

/* Retrieve the Ethernet Address */
    tfMpc860GetPhyAddr((ttUserInterface)0,
            etherAddr);

    enet_pram = &tlMpc860Ptr->pram[0].enet_scc;          
    regs = &tlMpc860Ptr->scc_regs[0];

/* Disable transmit/receive */
    regs->scc_gsmrl = 0;

/* 
 * Initialize paramater ram 
 */

/* points to start of receiving ring */
    enet_pram->rbase =   TM_MPC860_SCC1_RECV_BASE;
/* points to start of transmiting ring */
    enet_pram->tbase =   TM_MPC860_SCC1_XMIT_BASE;   
/* Function Codes for Transmit and Receive */
    enet_pram->rfcr =    TM_MPC860_SCC1_RECV_FUNC_CODE;
    enet_pram->tfcr =    TM_MPC860_SCC1_XMIT_FUNC_CODE;
/* We always receive a full ethernet frame so we set it to 1518 */
    enet_pram->mrblr =   TM_MPC860_SCC1_MAX_RECV_BUF_LEN;
/* A good ethernet CRC */
    enet_pram->c_mask =  TM_MPC860_ETHER_CRC_MASK;
/* The CRC we start with */
    enet_pram->c_pres =  TM_MPC860_ETHER_CRC_PRES;
/* These three registers are cleared for clarity sake */
    enet_pram->crcec =   TM_MPC860_ETHER_CRCEC;
    enet_pram->alec =    TM_MPC860_ETHER_ALEC;
    enet_pram->disfc =   TM_MPC860_ETHER_DISFC;
/* Pad Character */
    enet_pram->pads =    TM_MPC860_ETHER_PADS;
/* Max Retries when we have a collision */
    enet_pram->ret_lim = TM_MPC860_ETHER_RETRY_LIMIT;
/* Maximum Ethernet Frame Length (Always 1518) */
    enet_pram->mflr =    TM_MPC860_ETHER_MAX_FRAME_LEN;
/* Minimum Ethernet Frame Length (Always 64) */
    enet_pram->minflr =  TM_MPC860_ETHER_MIN_FRAME_LEN;
/* Maximum DMA Counts */
    enet_pram->maxd1 =   TM_MPC860_ETHER_MAX_DMA1_COUNT;
    enet_pram->maxd2 =   TM_MPC860_ETHER_MAX_DMA2_COUNT; 
/* Group Addresses */
    enet_pram->gaddr1 =  TM_MPC860_ETHER_GROUP_ADDR1;    
    enet_pram->gaddr2 =  TM_MPC860_ETHER_GROUP_ADDR2;    
    enet_pram->gaddr3 =  TM_MPC860_ETHER_GROUP_ADDR3;    
    enet_pram->gaddr4 =  TM_MPC860_ETHER_GROUP_ADDR4;    
/* 
 * Our physical (Ethernet) address (IN LITTLE ENDIAN)
 * If the physical address is:
 * 0x112233445566
 *
 * It is stored like this:
 * paddr_l=0x2211
 * paddr_m=0x4433
 * paddr_h=0x6655
 * 
 * If not done correctly, the MPC860 will NOT receive any packets
 * with its destination address 
 */
    enet_pram->paddr_l = ((unsigned short)etherAddr[0]        &0x00ff)|
                         ((((unsigned short)etherAddr[1])<<8) &0xff00);
    enet_pram->paddr_m = ((unsigned short)etherAddr[2]        &0x00ff)|
                         ((((unsigned short)etherAddr[3])<<8) &0xff00);
    enet_pram->paddr_h = ((unsigned short)etherAddr[4]        &0x00ff)|
                         ((((unsigned short)etherAddr[5])<<8) &0xff00);

    enet_pram->p_per =   TM_MPC860_ETHER_P_PER;
/* Individual Hash Addresses */
    enet_pram->iaddr1 =  TM_MPC860_ETHER_INDV_ADDR1; 
    enet_pram->iaddr2 =  TM_MPC860_ETHER_INDV_ADDR2; 
    enet_pram->iaddr3 =  TM_MPC860_ETHER_INDV_ADDR3; 
    enet_pram->iaddr4 =  TM_MPC860_ETHER_INDV_ADDR4; 
/* Temp Registers */
    enet_pram->taddr_h = TM_MPC860_ETHER_T_ADDR_H;   
    enet_pram->taddr_m = TM_MPC860_ETHER_T_ADDR_M;
    enet_pram->taddr_l = TM_MPC860_ETHER_T_ADDR_L;
    tvMpc860RecvPacketCount=0L;
    tvMpc860SendPacketCount=0L;
    tvMpc860XmitWait=0L;
    tvMpc860RecvErrorCount=0L;
    tvMpc860IsrRecvErrorCount=0L;
    tlScatterBufferStart=(ttMpc860BufDescPtr)0;

/* Tell the CP to initialize our Recv/Xmit parameters */
    tfMpc860IssueCommand(TM_MPC860_INIT_RXTX_SCC1);
}


/* 
 * Initialize SCC1 to be an ethernet channel    
 */
void tfMpc860EtherScc1BoardInit()
{
    unsigned char  scc1Vector;
    unsigned long  scc1Location;

/*  tlMpc860Ptr->sim_mcr =   0x608f; */

/*
 * IMPLEMENTATION NOTE:
 *
 * This routine is very board specific
 * In this example we use the Atlas Communications Engines
 * DARWIN devlopment board for an example
 * We assume the the ethernet is in SLOT 0 and at SCC1
 * on the DARWIN
 *
 * Please refer to your boards design to modify this routine
 */

/* clear previous scc1 settings */
        tlMpc860Ptr->si_sicr &= ~(0x3f);  
/* Atlas DARWIN Setup */
    tlMpc860Ptr->si_sicr |=  TM_MPC860_SI_SCC1_RCS_CLK1 |
                             TM_MPC860_SI_SCC1_TCS_CLK2;
                             
/* Disconnect the clock routing source */
    tlMpc860Ptr->si_sicr &=  ~TM_MPC860_SI_SCC1_CONNECT;
                            
/* Make PortA Pins 6,7,14,15 for onchip use */
    tlMpc860Ptr->pio_padir &= ~(TM_MPC860_PORTA_PA6 |
                                TM_MPC860_PORTA_PA7 |
                                TM_MPC860_PORTA_PA14 |
                                TM_MPC860_PORTA_PA15);
    
/* 
 * Use PortA pins 15,14 for SCC1 Ethernet RX/TX and 
 * pins 6,7 for Ethernet TCLK and RCLK 
 */
    tlMpc860Ptr->pio_papar |= TM_MPC860_PORTA_PA6 |
                              TM_MPC860_PORTA_PA7 |
                              TM_MPC860_PORTA_PA14 |
                              TM_MPC860_PORTA_PA15;
/* Turn off the Open Drain */
    tlMpc860Ptr->pio_paodr &= ~TM_MPC860_PORTA_PA14;
                            
/* Clear the pending and in-service registers */
    tlMpc860Ptr->intr_cipr = TM_MPC860_SCC1_INT_MASK;
    tlMpc860Ptr->intr_cisr = TM_MPC860_SCC1_INT_MASK;
/* Set the CP mask register to accept interrupts from SCC1 */
    tlMpc860Ptr->intr_cimr |= TM_MPC860_SCC1_INT_MASK;

    tlMpc860Ptr->sdma_sdcr=TM_MPC860_SDMA_ARB_ID; 

    
 /* PortC Pins 10 & 11 are onchip */
    tlMpc860Ptr->pio_pcdir &=   ~(TM_MPC860_PORTC_PC10 |
                                  TM_MPC860_PORTC_PC11);
 /* PortC Pins 10 & 11 are onchip */
    tlMpc860Ptr->pio_pcpar &=   ~(TM_MPC860_PORTC_PC10 |
                                  TM_MPC860_PORTC_PC11);
                                 
/*
 * Use Pins 10 and 11 (SCC1 CD and CTS) for Ethernet RENA and CLSN  
 */
    tlMpc860Ptr->pio_pcso|=    TM_MPC860_PORTC_PC10 |
                               TM_MPC860_PORTC_PC11;
                              
/* Clear the data register for pins 10 and 11 */
    tlMpc860Ptr->pio_pcdat&=   ~(TM_MPC860_PORTC_PC10 |
                                 TM_MPC860_PORTC_PC11);

/*
 * Port B External Signals 
 * PB14,PB15 are clock select
 * PB26 is Link Enable
 * PB27 Is Full Duplex Select
 */
    tlMpc860Ptr->pip_pbdir |= TM_MPC860_PORTB_PB14 |
                              TM_MPC860_PORTB_PB15 |
                              TM_MPC860_PORTB_PB27 |
                              TM_MPC860_PORTB_PB26;
                                
    tlMpc860Ptr->pip_pbpar &= ~(TM_MPC860_PORTB_PB14 |
                                TM_MPC860_PORTB_PB15 |
                                TM_MPC860_PORTB_PB27 |
                                TM_MPC860_PORTB_PB26);
/* Set clock select to 00 */
    tlMpc860Ptr->pip_pbdat &= ~(TM_MPC860_PORTB_PB14 |
                                TM_MPC860_PORTB_PB15);
/* Set Link Enable */
    tlMpc860Ptr->pip_pbdat |=  TM_MPC860_PORTB_PB26;                                

/* Turn OFF Full Duplex Mode */
    tlMpc860Ptr->pip_pbdat &=  ~TM_MPC860_PORTB_PB27;                                
    


/*
 * IMPLEMENTATION NOTE:
 *
 * The Actual SCC1 ISR Wrapper Function in installed here
 * It must call the tfMpc860Scc1HandlerIsr function
 * This routine may be in "C" if it is supported
 * or assembly if not.  It is VERY RTOS dependent
 * so it cannot be provided with the driver
 *
 * With some RTOS's a wrapper function may not be
 * needed.  All the driver cares about is that the
 * function tfMpc860Scc1HandlerIsr function is called
 * when the interrupt occurs.
 *
 */

/* Port B pin 19 is Ethernet TENA for DARWIN */
    tlMpc860Ptr->pip_pbpar |= TM_MPC860_PORTB_PB19;
    tlMpc860Ptr->pip_pbdir |= TM_MPC860_PORTB_PB19;

/* Install the wrapper function */
    tfKernelInstallIsrHandler(tfMpc860Scc1Isr,TM_MPC860_SCCA_INT);
}



/* 
 * Enable the SCC's  to recieve and transmit 
 */
void tfMpc860EtherUp(int channel)
{
    struct scc_regs *regs;


    regs = &tlMpc860Ptr->scc_regs[channel];

/* clear all events on the SCC event register and CP event reg*/
    regs->scc_scce=0xffff;

/* Clear the appropriate bit in the CISR */
    switch (channel)
    {
        case TM_MPC860_SCC1_CHANNEL:
            tlMpc860Ptr->intr_cisr = TM_MPC860_SCC1_INT_MASK;
            break;
        case TM_MPC860_SCC2_CHANNEL:
            tlMpc860Ptr->intr_cisr = TM_MPC860_SCC2_INT_MASK;
            break;
        case TM_MPC860_SCC3_CHANNEL:
            tlMpc860Ptr->intr_cisr = TM_MPC860_SCC3_INT_MASK;
            break;
        case TM_MPC860_SCC4_CHANNEL:
            tlMpc860Ptr->intr_cisr = TM_MPC860_SCC4_INT_MASK;
            break;
        default:
            break;
    }


/* 
 * mask the events we sich to interrupt on
 */
    regs->scc_sccm = 
/* An error in transmitting has occured */
                     TM_MPC860_INTR_ETHER_E_XMIT |
/* A buffer has completed transmitting */
                     TM_MPC860_INTR_ETHER_XMIT_B |
/* A ethernet frame has been received */
                     TM_MPC860_INTR_ETHER_RECV_F |
/* The busy condition has occured */
                     TM_MPC860_INTR_ETHER_BUSY;
    
/* SCC1 data sync reg  (The pattern for Ethernet)*/
    regs->scc_dsr=   TM_MPC860_SCC_FRAME_SYNC_ETHER;         

/* protocol specific mode register */
    regs->scc_psmr = 
/* To disable the reception of Broadcast packets uncomment this line */
/*                     TM_MPC860_ETHER_BROADCAST | */
/* Turn on the CRC for ethernet */
                     TM_MPC860_ETHER_ENABLE_CRC | 
/* Ignore 22 bits for ethernet */
                     TM_MPC860_ETHER_NBITS_IGNORED;


/* SCC general mode reg */
    regs->scc_gsmrh = 0;

/* SCC general mode reg */
    regs->scc_gsmrl = 
/* Transmit Clock Inversion */
                      TM_MPC860_XMIT_CLOCK_INV | 
/* Preamble Bit Length (48 always for ethernet) */
                      TM_MPC860_PREAMBLE_48 | 
/* Preamble Bit Pattern (Alternating '1' and '0' for ethernet */
                      TM_MPC860_PREAMBLE_PAT_10 | 
/* Ethernet Mode */

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区三区在线看麻豆| 欧美在线三级电影| 免费亚洲电影在线| 亚洲成国产人片在线观看| 国产精品乱人伦| 2021国产精品久久精品| 精品国产一区a| 韩国三级电影一区二区| 日韩不卡一区二区| 五月激情丁香一区二区三区| 亚洲一区成人在线| 亚洲一区在线视频| 亚洲高清中文字幕| 日韩成人伦理电影在线观看| 免费久久精品视频| 国内精品免费**视频| 韩国女主播成人在线| 国产综合久久久久久鬼色| 国内一区二区视频| 国产精品一区不卡| 亚洲777理论| 免费人成精品欧美精品| 久久机这里只有精品| 精品亚洲aⅴ乱码一区二区三区| 精品一区二区三区久久| 国产毛片精品一区| av爱爱亚洲一区| 色婷婷激情一区二区三区| 欧美性大战久久久| 日韩一区二区三区四区| 337p粉嫩大胆色噜噜噜噜亚洲| 国产偷国产偷精品高清尤物| 中文字幕av免费专区久久| 亚洲人成电影网站色mp4| 91精品视频网| 国产欧美综合在线观看第十页| 国产精品福利一区| 夜夜夜精品看看| 六月婷婷色综合| 国产成人激情av| 日本高清不卡aⅴ免费网站| 欧美欧美午夜aⅴ在线观看| 日韩欧美在线不卡| 国产三级一区二区三区| 亚洲人精品一区| 青青国产91久久久久久 | 99精品视频在线观看| 久久电影网站中文字幕| 成人禁用看黄a在线| 在线观看亚洲a| 亚洲精品一线二线三线无人区| 亚洲视频免费在线观看| 石原莉奈在线亚洲二区| 国产成人一级电影| 欧美无人高清视频在线观看| 精品国产髙清在线看国产毛片| 国产精品女主播av| 日韩精品乱码av一区二区| 国产成人av一区| 欧美精品色一区二区三区| 国产日韩欧美精品在线| 亚洲电影欧美电影有声小说| 亚洲一区欧美一区| 国产成人在线看| 欧美高清视频不卡网| 国产精品丝袜91| 免播放器亚洲一区| 91日韩精品一区| 欧美精品一区二区高清在线观看| 亚洲午夜精品在线| 成人av免费在线| 精品少妇一区二区三区免费观看 | 国产在线一区二区| 欧美亚洲综合久久| 国产精品美女久久久久久久久久久 | 欧美国产日产图区| 热久久久久久久| 在线精品亚洲一区二区不卡| 国产日韩一级二级三级| 看电影不卡的网站| 欧美综合在线视频| 亚洲视频免费在线观看| 亚洲欧美日韩一区二区| 国产精品一区二区三区99| 欧美肥妇free| 亚洲一二三专区| 92精品国产成人观看免费| 久久精品欧美一区二区三区不卡 | 国产精品看片你懂得| 久久国产剧场电影| 91精品国产欧美日韩| 亚洲综合一二三区| 成人午夜电影网站| 久久精品视频免费| 精品亚洲成a人| 欧美大片一区二区| 日本vs亚洲vs韩国一区三区| 欧美体内she精高潮| 中文字幕中文字幕在线一区| 国产另类ts人妖一区二区| 日韩你懂的在线观看| 视频一区二区三区中文字幕| 欧美日韩国产成人在线91| 夜夜嗨av一区二区三区网页| 91在线视频在线| 亚洲嫩草精品久久| 91麻豆免费看| 亚洲欧美日韩电影| 99r精品视频| 亚洲欧美一区二区不卡| 色综合久久综合网97色综合 | 久久av资源网| 欧美成人一级视频| 久久aⅴ国产欧美74aaa| 欧美xxxx老人做受| 激情文学综合网| 久久久精品免费网站| 国产传媒一区在线| 久久精品日韩一区二区三区| 成人小视频在线| 欧美午夜精品一区二区三区| 亚洲网友自拍偷拍| 91精品国产综合久久精品图片| 日韩在线观看一区二区| 欧美一级日韩不卡播放免费| 捆绑变态av一区二区三区| 99久久国产免费看| 亚洲永久免费视频| 欧美欧美欧美欧美| 久久成人综合网| 国产片一区二区三区| www.欧美日韩国产在线| 伊人色综合久久天天人手人婷| 欧美日韩黄色一区二区| 久久精品国产亚洲a| 久久久久久久久久久久电影| 成人av在线资源| 精品欧美乱码久久久久久| 国产福利一区二区三区在线视频| 国产精品久久久久永久免费观看| 欧洲在线/亚洲| 看电影不卡的网站| 中文字幕一区不卡| 欧美日韩午夜精品| 国产一区二区导航在线播放| 亚洲视频狠狠干| 日韩一卡二卡三卡四卡| 懂色av噜噜一区二区三区av| 亚洲综合激情另类小说区| 日韩女同互慰一区二区| av在线综合网| 久久久久99精品一区| 色婷婷综合激情| 麻豆91在线播放免费| 中文字幕在线视频一区| 欧美日韩精品高清| 国产成人午夜精品影院观看视频 | 日韩精品乱码免费| 中文字幕+乱码+中文字幕一区| 欧美亚男人的天堂| 国产乱码精品一区二区三区忘忧草| 亚洲精品中文在线观看| 精品国产乱码久久| 欧美综合一区二区| 国产乱国产乱300精品| 亚洲成人自拍一区| 国产精品免费人成网站| 欧美美女激情18p| 99麻豆久久久国产精品免费| 精品一区二区综合| 亚洲国产中文字幕| 中文成人av在线| 久久影院视频免费| 欧美精品三级在线观看| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 色综合天天综合网国产成人综合天 | 欧美一级二级三级乱码| 91国产免费观看| 懂色av噜噜一区二区三区av| 麻豆成人在线观看| 亚洲影院久久精品| 精品视频免费看| 理论电影国产精品| 亚洲六月丁香色婷婷综合久久 | 精品粉嫩超白一线天av| 色哟哟一区二区三区| 97久久精品人人澡人人爽| 蜜臀av一区二区在线观看| 日韩美女视频19| 久久免费看少妇高潮| 91麻豆精品国产自产在线观看一区| 亚洲一级电影视频| 欧美激情一区二区三区不卡| 日韩精品一区二区三区视频| 91黄色免费版| 国产酒店精品激情| 91麻豆精品国产91久久久使用方法 | 欧美一区二区三区影视| 欧美影院午夜播放| 懂色av一区二区三区免费观看|