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

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

?? i2o1.c

?? 自己修改的U-boot1.1.4For AT91RM9200DK. 請用armgcc3.3.2編譯。
?? C
?? 第 1 頁 / 共 2 頁
字號:
	/* QBA must be aligned at 1Mbyte boundary */	return I2OQUEINVALID;    }    store_runtime_reg( eumbbar, I2O_QBAR, qba );    store_runtime_reg( eumbbar, I2O_MUCR, (unsigned int)sz );    store_runtime_reg( eumbbar, I2O_IFHPR, qba );    store_runtime_reg( eumbbar, I2O_IFTPR, qba );    store_runtime_reg( eumbbar, I2O_IPHPR, qba + 1 * ( sz << 11 ));    store_runtime_reg( eumbbar, I2O_IPTPR, qba + 1 * ( sz << 11 ));    store_runtime_reg( eumbbar, I2O_OFHPR, qba + 2 * ( sz << 11 ));    store_runtime_reg( eumbbar, I2O_OFTPR, qba + 2 * ( sz << 11 ));    store_runtime_reg( eumbbar, I2O_OPHPR, qba + 3 * ( sz << 11 ));    store_runtime_reg( eumbbar, I2O_OPTPR, qba + 3 * ( sz << 11 ));    fifo_stat.qsz = sz;    fifo_stat.qba = qba;    return I2OSUCCESS;}/************************************************** * function: I2OFIFOEnable * * description: Enable the circular queue *              return I2OSUCCESS if no error. *              Otherwise I2OQUEINVALID is returned. * * note: *************************************************/I2OSTATUS I2OFIFOEnable( unsigned int eumbbar ){    unsigned int val;    if ( fifo_stat.qba == 0xfffffff )    {	return I2OQUEINVALID;    }    val = load_runtime_reg( eumbbar, I2O_MUCR );    store_runtime_reg( eumbbar, I2O_MUCR, val | 0x1 );    return I2OSUCCESS;}/************************************************** * function: I2OFIFODisable * * description: Disable the circular queue * * note: *************************************************/void I2OFIFODisable( unsigned int eumbbar ){    if ( fifo_stat.qba == 0xffffffff )    {	/* not enabled */	return;    }    unsigned int val = load_runtime_reg( eumbbar, I2O_MUCR );    store_runtime_reg( eumbbar, I2O_MUCR, val & 0xfffffffe );}/**************************************************** * function: I2OFIFOAlloc * * description: Allocate a free MFA from free FIFO. *              return I2OSUCCESS if no error. *              return I2OQUEEMPTY if no more free MFA. *              return I2OINVALID on other errors. * *              A free MFA must be allocated before a *              message can be posted. * * note: * PCI Master allocates a free MFA from inbound queue of device * (pcsrbar is the base,) through the inbound queue port of device * while local processor allocates a free MFA from its outbound * queue (eumbbar is the base.) * ****************************************************/I2OSTATUS I2OFIFOAlloc( LOCATION loc,			unsigned int base,			void         **pMsg ){    I2OSTATUS stat = I2OSUCCESS;    void *pHdr, *pTil;    if ( pMsg == 0 || *pMsg == 0 || fifo_stat.qba == 0xffffffff )    {	/* not configured */	return I2OQUEINVALID;    }    if ( loc == REMOTE )    {	/* pcsrbar is the base and read the inbound free tail ptr */	pTil = (void *)load_runtime_reg( base, I2O_IFQPR );	if ( ( (unsigned int)pTil & 0xFFFFFFF ) == 0xFFFFFFFF )	{	    stat = I2OQUEEMPTY;	}	else	{	    *pMsg = pTil;	}    }    else    {	/* eumbbar is the base and read the outbound free tail ptr */	pHdr = (void *)load_runtime_reg( base, I2O_OFHPR ); /* queue head */	pTil = (void *)load_runtime_reg( base, I2O_OFTPR ); /* queue tail */	/* check underflow */	if ( pHdr == pTil )	{	    /* hdr and til point to the same fifo item, no free MFA */	    stat = I2OQUEEMPTY;	}	else	{	  /* update OFTPR */	  *pMsg = (void *)(*(unsigned char *)pTil);	  pTil = (void *)((unsigned int)pTil + 4);	  if ( (unsigned int)pTil == fifo_stat.qba + ( 4 * ( fifo_stat.qsz << 11 ) ) )	  {		/* reach the upper limit */		pTil = (void *)(fifo_stat.qba + ( 3 * (fifo_stat.qsz << 11) ));	  }	  store_runtime_reg( base, I2O_OFTPR, (unsigned int)pTil );	}    }    return stat;}/****************************************************** * function: I2OFIFOFree * * description: Free a used MFA back to free queue after *              use. *              return I2OSUCCESS if no error. *              return I2OQUEFULL if inbound free queue *              overflow * * note: PCI Master frees a MFA into device's outbound queue *       (OFQPR) while local processor frees a MFA into its *       inbound queue (IFHPR). *****************************************************/I2OSTATUS I2OFIFOFree( LOCATION loc,		  unsigned int base,		  void *pMsg ){    void **pHdr, **pTil;    I2OSTATUS stat = I2OSUCCESS;    if ( fifo_stat.qba == 0xffffffff || pMsg == 0 )    {	    return I2OQUEINVALID;    }    if ( loc == REMOTE )    {	/* pcsrbar is the base */	store_runtime_reg( base, I2O_OFQPR, (unsigned int)pMsg );    }    else    {	/* eumbbar is the base */	pHdr = (void **)load_runtime_reg( base, I2O_IFHPR );	pTil = (void **)load_runtime_reg( base, I2O_IFTPR );	/* store MFA */	*pHdr = pMsg;	/* update IFHPR */	pHdr += 4;	if ( (unsigned int)pHdr == fifo_stat.qba + ( fifo_stat.qsz << 11 ) )	{	  /* reach the upper limit */	  pHdr = (void **)fifo_stat.qba;	}	/* check inbound free queue overflow */	if ( pHdr != pTil )	{	   store_runtime_reg( base, I2O_OPHPR, (unsigned int)pHdr);	}	else	{	    stat = I2OQUEFULL;	}    }    return stat;}/********************************************* * function: I2OFIFOPost * * description: Post a msg into FIFO post queue *              the value of msg must be the one *              returned by I2OFIFOAlloc * * note: PCI Master posts a msg into device's inbound queue *       (IFQPR) while local processor post a msg into device's *       outbound queue (OPHPR) *********************************************/I2OSTATUS I2OFIFOPost( LOCATION loc,		       unsigned int base,		       void *pMsg ){    void **pHdr, **pTil;    I2OSTATUS stat = I2OSUCCESS;    if ( fifo_stat.qba == 0xffffffff || pMsg == 0 )    {	return I2OQUEINVALID;    }    if ( loc == REMOTE )    {	/* pcsrbar is the base */	store_runtime_reg( base, I2O_IFQPR, (unsigned int)pMsg );    }    else    {	/* eumbbar is the base */	pHdr = (void **)load_runtime_reg( base, I2O_OPHPR );	pTil = (void **)load_runtime_reg( base, I2O_OPTPR );	/* store MFA */	*pHdr = pMsg;	/* update IFHPR */	pHdr += 4;	if ( (unsigned int)pHdr == fifo_stat.qba + 3 * ( fifo_stat.qsz << 11 ) )	{	  /* reach the upper limit */	  pHdr = (void **)(fifo_stat.qba + 2 * ( fifo_stat.qsz << 11 ) );	}	/* check post queue overflow */	if ( pHdr != pTil )	{	   store_runtime_reg( base, I2O_OPHPR, (unsigned int)pHdr);	}	else	{	    stat = I2OQUEFULL;	}    }    return stat;}/************************************************ * function: I2OFIFOGet * * description:  Read a msg from FIFO *               This function should be called *               only when there is a corresponding *               msg interrupt. * * note: PCI Master reads a msg from device's outbound queue *       (OFQPR) while local processor reads a msg from device's *       inbound queue (IPTPR) ************************************************/I2OSTATUS I2OFIFOGet( LOCATION loc,		       unsigned int base,		       void **pMsg ){    I2OSTATUS stat = I2OSUCCESS;    void *pHdr, *pTil;    if ( pMsg == 0 || *pMsg == 0 || fifo_stat.qba == 0xffffffff )    {	/* not configured */	return I2OQUEINVALID;    }    if ( loc == REMOTE )    {	/* pcsrbar is the base */	pTil = (void *)load_runtime_reg( base, I2O_OFQPR );	if ( ( (unsigned int)pTil & 0xFFFFFFF ) == 0xFFFFFFFF )	{	    stat = I2OQUEEMPTY;	}	else	{	    *pMsg = pTil;	}    }    else    {	/* eumbbar is the base and read the outbound free tail ptr */	pHdr = (void *)load_runtime_reg( base, I2O_IPHPR ); /* queue head */	pTil = (void *)load_runtime_reg( base, I2O_IPTPR ); /* queue tail */	/* check underflow */	if ( pHdr == pTil )	{	    /* no free MFA */	    stat = I2OQUEEMPTY;	}	else	{	  /* update OFTPR */	  *pMsg = (void *)(*(unsigned char *)pTil);	  pTil = (void *)((unsigned int)pTil + 4);	  if ( (unsigned int)pTil == fifo_stat.qba + 2 * ( fifo_stat.qsz << 11 ) )	  {		/* reach the upper limit */		pTil = (void *)(fifo_stat.qba + 1 * (fifo_stat.qsz << 11) );	  }	  store_runtime_reg( base, I2O_IPTPR, (unsigned int)pTil );	}    }    return stat;}/******************************************************** * function: I2OIOP * * description: Get the I2O PCI configuration identification *              register. * * note: PCI master should pass pcsrbar while local processor *       should pass eumbbar. *********************************************************/I2OSTATUS I2OPCIConfigGet( LOCATION loc,			unsigned int base,			I2OIOP * val){    unsigned int tmp;    if ( val == 0 )    {	    return I2OINVALID;    }    tmp = load_runtime_reg( base, PCI_CFG_CLA );    val->base_class = ( tmp & 0xFF) << 16;    tmp = load_runtime_reg( base, PCI_CFG_SCL );    val->sub_class= ( (tmp & 0xFF) << 8 );    tmp = load_runtime_reg( base, PCI_CFG_PIC );    val->prg_code = (tmp & 0xFF);    return I2OSUCCESS;}/********************************************************* * function: I2OFIFOIntEnable * * description: Enable the circular post queue interrupt * * note: * PCI master enables outbound FIFO interrupt of device * pscrbar is the base * Device enables its inbound FIFO interrupt * eumbbar is the base *******************************************************/void I2OFIFOIntEnable( LOCATION loc, unsigned int base  ){    unsigned int reg, val;    /* LOCATION - REMOTE : enable outbound message of device, pcsrbar as base     *            LOCAL  : enable local inbound message, eumbbar as base     */    reg = ( loc == REMOTE ? I2O_OMIMR : I2O_IMIMR );    val = load_runtime_reg( base, reg );    val &= 0xffffffdf; /* clear the msg interrupt bits */    store_runtime_reg( base, reg, val );}/**************************************************** * function: I2OFIFOIntDisable * * description: Disable the circular post queue interrupt * * note: * PCI master disables outbound FIFO interrupt of device * (pscrbar is the base) * Device disables its inbound FIFO interrupt * (eumbbar is the base) *****************************************************/void I2OFIFOIntDisable( LOCATION loc, unsigned int base ){    /* LOCATION - REMOTE : disable outbound message interrupt of device, pcsrbar as base     *            LOCAL  : disable local inbound message interrupt, eumbbar as base     */    unsigned int reg = ( loc == REMOTE ? I2O_OMIMR : I2O_IMIMR );    unsigned int val = load_runtime_reg( base, reg );    val |= 0x00000020; /* masked out the msg interrupt bits */    store_runtime_reg( base, reg, val );}/********************************************************* * function: I2OFIFOOverflowIntEnable * * description: Enable the circular queue overflow interrupt * * note: * Device enables its inbound FIFO post overflow interrupt * and outbound free overflow interrupt. * eumbbar is the base *******************************************************/void I2OFIFOOverflowIntEnable( unsigned int eumbbar  ){    unsigned int val = load_runtime_reg( eumbbar, I2O_IMIMR );    val &= 0xfffffe7f; /* clear the two overflow interrupt bits */    store_runtime_reg( eumbbar, I2O_IMIMR, val );}/**************************************************** * function: I2OFIFOOverflowIntDisable * * description: Disable the circular queue overflow interrupt * * note: * Device disables its inbound post FIFO overflow interrupt * and outbound free FIFO overflow interrupt * (eumbbar is the base) *****************************************************/void I2OFIFOOverflowIntDisable( unsigned int eumbbar ){    unsigned int val = load_runtime_reg( eumbbar, I2O_IMIMR );    val |= 0x00000180; /* masked out the msg overflow interrupt bits */    store_runtime_reg( eumbbar, I2O_IMIMR, val );}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
不卡av免费在线观看| 国内精品在线播放| 日本高清免费不卡视频| 18欧美亚洲精品| 色综合久久88色综合天天| 亚洲精品国产a久久久久久| 一本一本久久a久久精品综合麻豆| 亚洲欧洲www| 欧美亚洲愉拍一区二区| 日韩国产精品久久| 精品国产一区二区三区不卡 | 国产免费观看久久| 91偷拍与自偷拍精品| 亚洲香蕉伊在人在线观| 日韩亚洲欧美高清| 风流少妇一区二区| 一区二区三区自拍| 欧美影院午夜播放| 午夜精品aaa| 国产亚洲欧美在线| 欧美综合一区二区三区| 麻豆国产精品官网| 亚洲欧洲成人精品av97| 欧美精品久久99久久在免费线 | 精品一二线国产| 亚洲天堂成人网| 69p69国产精品| 成人免费av在线| 午夜伊人狠狠久久| 国产欧美一区二区精品性| 色一情一乱一乱一91av| 老汉av免费一区二区三区| 欧美激情一区二区三区不卡| 欧美日韩一区二区在线观看视频| 国内精品久久久久影院薰衣草| 亚洲日穴在线视频| 久久综合久久99| 欧美性生活久久| 国产高清精品网站| 天天综合日日夜夜精品| 欧美国产欧美综合| 欧美一区二区三区视频免费播放| 成人福利电影精品一区二区在线观看| 日日夜夜免费精品| 亚洲女与黑人做爰| 国产亚洲精品福利| 欧美一二三在线| 欧美性猛片aaaaaaa做受| 国产91综合网| 裸体健美xxxx欧美裸体表演| 一区二区三区中文字幕在线观看| 久久久久久久久久久久久女国产乱| 91久久奴性调教| 成人av片在线观看| 国产精品一级黄| 蜜臀av性久久久久蜜臀aⅴ | 婷婷六月综合亚洲| 亚洲欧美另类综合偷拍| 亚洲国产精品黑人久久久| 日韩一区二区三区在线观看| 日本高清不卡在线观看| 波多野结衣中文字幕一区二区三区| 久久99久久精品| 美女精品自拍一二三四| 天天影视网天天综合色在线播放 | 国产蜜臀av在线一区二区三区| 91精品国产综合久久精品麻豆| 91国在线观看| 91久久一区二区| 91蝌蚪porny成人天涯| 成人黄色在线网站| 99国产欧美久久久精品| 成人app网站| 99在线视频精品| eeuss国产一区二区三区| 成人黄页毛片网站| av电影在线观看完整版一区二区| 国产精华液一区二区三区| 国产伦理精品不卡| 国产a久久麻豆| 成人午夜视频福利| 99在线视频精品| 一本久久a久久免费精品不卡| 91丝袜呻吟高潮美腿白嫩在线观看| 99麻豆久久久国产精品免费优播| 成人av综合一区| 91一区二区在线观看| 日本乱人伦aⅴ精品| 欧美自拍偷拍一区| 在线不卡一区二区| 欧美大胆一级视频| 国产欧美日韩精品a在线观看| 日本一区二区在线不卡| 亚洲欧美日韩中文播放 | 亚洲动漫第一页| 婷婷久久综合九色国产成人| 青青青伊人色综合久久| 黑人精品欧美一区二区蜜桃| 国产精品18久久久久久vr| 不卡一二三区首页| 色偷偷久久一区二区三区| 欧美性欧美巨大黑白大战| 91精品国产麻豆国产自产在线| 日韩欧美一区电影| 日本一区二区三区国色天香 | 一区二区三区丝袜| 日本一道高清亚洲日美韩| 国产综合久久久久影院| 成人激情开心网| 欧美日韩精品一区二区三区蜜桃| 91精品国产综合久久精品性色| 精品国产百合女同互慰| 中文字幕在线免费不卡| 视频一区国产视频| 国产成人精品www牛牛影视| 色激情天天射综合网| 亚洲.国产.中文慕字在线| 麻豆中文一区二区| 成a人片国产精品| 欧美一二三区在线| 综合激情成人伊人| 久久99精品国产麻豆婷婷洗澡| 成人小视频在线观看| 7777精品伊人久久久大香线蕉完整版| 精品粉嫩超白一线天av| 一区二区三区在线播放| 国产精品资源在线观看| 欧美日韩视频在线一区二区| 久久久激情视频| 亚洲一区在线观看视频| 国产精品原创巨作av| 欧美天天综合网| 国产精品天干天干在观线| 免费国产亚洲视频| 日本韩国欧美在线| 欧美极品美女视频| 久久超碰97人人做人人爱| 91麻豆精东视频| 国产免费久久精品| 久久国产剧场电影| 欧美精选一区二区| 亚洲色欲色欲www在线观看| 黑人巨大精品欧美一区| 欧美美女一区二区三区| 亚洲欧美成人一区二区三区| 国产激情一区二区三区桃花岛亚洲| 欧美精品xxxxbbbb| 一区二区三区四区不卡视频| av一本久道久久综合久久鬼色| 久久九九久精品国产免费直播| 午夜成人在线视频| 欧美性生交片4| 亚洲精品高清在线| 99精品久久只有精品| 国产精品三级久久久久三级| 国产一区二区三区免费| 日韩精品一区二区三区老鸭窝| 亚洲成av人影院在线观看网| 91精品办公室少妇高潮对白| 国产激情一区二区三区| 欧美成人a∨高清免费观看| 日韩中文字幕区一区有砖一区 | 国产精品午夜久久| 国产精品 日产精品 欧美精品| 精品国产乱码久久久久久浪潮| 日韩 欧美一区二区三区| 欧美军同video69gay| 午夜影院久久久| 欧美日韩日本视频| 石原莉奈在线亚洲三区| 91精品国产综合久久久蜜臀粉嫩 | 美国三级日本三级久久99| 欧美精品第1页| 免费在线观看一区| 日韩精品一区二| 国产一区999| 亚洲国产精品99久久久久久久久| 成人晚上爱看视频| 日韩美女久久久| 欧美色倩网站大全免费| 亚洲v日本v欧美v久久精品| 欧美日韩精品福利| 免费亚洲电影在线| 久久久影院官网| 福利一区二区在线观看| 亚洲欧洲色图综合| 欧美少妇xxx| 日韩va欧美va亚洲va久久| 精品国产青草久久久久福利| 国产不卡在线播放| 亚洲精品视频在线| 欧美一级一区二区| 国产精品资源网站| 亚洲精品成人天堂一二三| 欧美日本韩国一区| 国产精品1024| 亚洲一区二区三区三| 精品国产伦一区二区三区免费| 国产1区2区3区精品美女| 一区二区三区中文字幕精品精品 |