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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dec2155xcpci.c

?? VxWorks下 Cpv3060的BSP源代碼
?? C
?? 第 1 頁 / 共 4 頁
字號:
        /* examine each bit to determine which bit(s) is set */        for (vecNum = DEC2155X_DOORBELL0_INT_VEC;             vecNum <= DEC2155X_DOORBELL15_INT_VEC;             vecNum++)            {            if (status & mask)                {                if ((currHandler = sysIntTbl[vecNum]) == NULL)                    logMsg ("uninitialized Dec2155x interrupt %d\n", vecNum,                             0,0,0,0,0);                else                    {                    while (currHandler != NULL)                        {                        currHandler->vec (currHandler->arg);                        currHandler = currHandler->next;                        }                    }                }            /* advance to next bit */            mask <<= 1;            }        }    /* check for I2O  event */    intMskAdrs = DEC2155X_CSR_ADRS(DEC2155X_CSR_I2O_IBND_PST_LST_MSK);    intClrAdrs = DEC2155X_CSR_ADRS(DEC2155X_CSR_I2O_IBND_PST_LST_STS);    mask = ~(sysPciInWord (intMskAdrs));    status = sysPciInWord (intClrAdrs) & DEC2155X_I2O_PST_LST_MSK;        if (status & mask)        {        /* clear interrupt source */        sysPciOutWordConfirm (intClrAdrs, status);        vecNum = DEC2155X_I2O_INT_VEC;        if ((currHandler = sysIntTbl[vecNum]) == NULL)            logMsg ("uninitialized Dec2155x interrupt %d\n", vecNum,                     0,0,0,0,0);        else            {            while (currHandler != NULL)                {                currHandler->vec (currHandler->arg);                currHandler = currHandler->next;                }            }        }    /*     * check for Upstream Memory 2 Page Crossing event starting with the     * first 32 bits, followed by the next 32 bits.     */    intMskAdrs = DEC2155X_CSR_ADRS(DEC2155X_CSR_US_PG_BND_IRQ_MSK0);    intClrAdrs = DEC2155X_CSR_ADRS(DEC2155X_CSR_US_PG_BND_IRQ0);    status = sysPciInWord (intClrAdrs) & ~(sysPciInWord (intMskAdrs));    intMskAdrs = DEC2155X_CSR_ADRS(DEC2155X_CSR_US_PG_BND_IRQ_MSK1);    intClrAdrs = DEC2155X_CSR_ADRS(DEC2155X_CSR_US_PG_BND_IRQ1);    /* re-use the mask variable to hold the status for the upper 32 bits */    mask = sysPciInWord (intClrAdrs) & ~(sysPciInWord (intMskAdrs));    if (status || mask)        {        vecNum = DEC2155X_PG_CRSSNG_INT_VEC;        if ((currHandler = sysIntTbl[vecNum]) == NULL)            {            logMsg ("uninitialized Dec2155x interrupt %d\n", vecNum,                     0,0,0,0,0);            /* since there is no registered handler, clear interrupt source */            sysPciOutWordConfirm (intClrAdrs, mask);            intClrAdrs = DEC2155X_CSR_ADRS(DEC2155X_CSR_US_PG_BND_IRQ0);            sysPciOutWordConfirm (intClrAdrs, status);            }        else            {            /* isr handles interrupt clearing */            while (currHandler != NULL)                {                currHandler->vec (currHandler->arg);                currHandler = currHandler->next;                }            }        }    return;    }/******************************************************************************** sysDec2155xCnvrtAdrs - converts an address across the Dec2155x** This routine examines the caller-provided array of Dec2155x windows looking* for a window which maps the target address. If such a window is found, the* caller's address is converted to the equivalent address as it would appear* on the opposite bus.** RETURNS: OK if conversion successful, else ERROR.** SEE ALSO: sysLocalToBusAdrs(), sysBusToLocalAdrs(), sysDec2155xCnvrtAdrs()*/LOCAL STATUS sysDec2155xCnvrtAdrs    (    UINT32 adrsSpace,    UINT32 adrs,    UINT32 *pCnvrtAdrs,    UINT32 winCnt,    WINDOW_PARAMETERS *pWinParam    )    {    while (winCnt--)        {        if ( (pWinParam->windowType == adrsSpace) &&             (adrs >= pWinParam->trgtBase) &&             (adrs <= pWinParam->trgtLimit) )            {            *pCnvrtAdrs = ( adrs - pWinParam->trgtBase + pWinParam->origBase );            return (OK);            };        pWinParam++;        }    /*     * no window was found to contain adrs. indicate that translation was     * not possible.     */    return (ERROR);    }/******************************************************************************** sysDec2155xCaptWindows - captures Dec2155x window configuration** This routine searches through either the upstream or downstream Dec2155x* windows and captures the information required by the sysDec2155xCnvrtAdrs* routine. ** NOTE: This routine should not be called until the responsible processor has* enumerated the PCI bus. This is assured by checking the status of the* enable bits in the Primary and Secondary PCI command registers.** RETURNS: N/A** SEE ALSO: sysLocalToBusAdrs(), sysBusToLocalAdrs(), sysDec2155xCnvrtAdrs()*/LOCAL void sysDec2155xCaptWindows     (    UINT32 winCnt,    WINDOW_OFFSETS *pWinOffsets,    WINDOW_PARAMETERS *pWinParam,    UINT32 *winsValid    )    {    UINT32 bar;   /* holds contents of base address register */    UINT32 mask;  /* holds mask used to isolate valid bits translation reg */    UINT32 trans; /* value used to convert between address spaces */    *winsValid = 0;    while (winCnt--)        {        /* read setup register offset from the offset table. */        mask  = pWinOffsets->setup;        /*         * if the setup value from the table is an offset, then read the setup         * register. if the value from the table is a default setup value         * (indicates no setup register for this bar), then just use it as is.         */        if ( !(mask & DEC2155X_SETUP_REG_BAR_ENABLE) )            DEC2155X_CFG_RD_LONG(mask, &mask);        /* see if the register is enabled */        if ( mask & DEC2155X_SETUP_REG_BAR_ENABLE )            {            /*              * determine which PCI space the register is in (memory or i/o).             * and, setup the window type. adjust the mask to eliminate             * reserved bits from the setup register.             */            if ( (mask & PCI_BAR_SPACE_MASK) == PCI_BAR_SPACE_MEM )                {                pWinParam->windowType = PCI_BAR_SPACE_MEM;                mask &= ~DEC2155X_MEM_TB_RSV_MSK;                }            else               {                pWinParam->windowType = PCI_BAR_SPACE_IO;                mask &= ~DEC2155X_IO_OR_MEM_TB_RSV_MSK;               }            /* read the remaining register contents */            DEC2155X_CFG_RD_LONG(pWinOffsets->bar, &bar);            DEC2155X_CFG_RD_LONG(pWinOffsets->trans, &trans);           /* remove unused bits */            bar   &= mask;            trans &= mask;            /*             * save the base address of the window as seen from the originating             * and target sides. calculate limit of the window as seen from             * the target side.             */             pWinParam->origBase = bar + pWinOffsets->unuseable;             pWinParam->trgtBase = trans + pWinOffsets->unuseable;            pWinParam->trgtLimit = trans + ~mask;            if ( pWinParam->trgtLimit > pWinParam->trgtBase )               {               (*winsValid)++;               pWinParam++;               }            /* advance to next window */            pWinOffsets++;            }        else            {            /*             * pci base address registers must be contiguous, first disabled             * register terminates the loop.             */            break;            }        }    }/******************************************************************************** sysDec2155xChkEnables - check the originating and target bus enables** This routine examines the states of the I/O or Memory enables on the* originating bus and the Master Enable on the target bus. Both must be* enabled before the Dec2155x can pass a transaction across to the opposite* bus.** RETURNS: OK if the bridge is active, else ERROR** SEE ALSO: sysLocalToBusAdrs(), sysBusToLocalAdrs(), sysDec2155xCnvrtAdrs()*/STATUS sysDec2155xChkEnables    (UINT32 origOffset,     UINT32 trgtOffset,     UINT32 adrsSpace     )     {    UINT16 cmdReg;    UINT16 mask;    /* first determine if the required originating side enable is active */    switch (adrsSpace)        {        case PCI_BAR_SPACE_MEM:            mask = PCI_CMD_MEM_ENABLE;            break;        case PCI_BAR_SPACE_IO:            mask = PCI_CMD_IO_ENABLE;            break;        default:            mask = 0;            break;        }    /* read the PCI command register as seen from the originating side */    DEC2155X_CFG_RD_WORD(origOffset, &cmdReg);    if ( !(cmdReg & mask) )        return (ERROR); /* access not enabled */    /* now determine if the target side bus master enable is set */    DEC2155X_CFG_RD_WORD(trgtOffset, &cmdReg);    if (cmdReg & PCI_CMD_MASTER_ENABLE)        return (OK);    else        return (ERROR);    }    /******************************************************************************** sysPciToCpciAdrs - convert a local PCI address to a Compact PCI bus address** Given a local PCI address, this routine returns the corresponding Compact PCI* address provided that such an address exists. The translation is performed by* examining downstream windows in sequence until a window is found which* contains the specified local address. The translation is then performed using * the base addresses of the window as viewed from the local PCI and Compact PCI* bus sides.*** RETURNS: OK, or ERROR if the address space is unknown or the mapping is not* possible.** SEE ALSO: sysCpciToPciAdrs(), sysDec2155xCaptWindows(),*           sysDec2155xCnvrtAdrs()*/LOCAL STATUS sysPciToCpciAdrs    (    int     adrsSpace,     /* bus address space where busAdrs resides */    char *  localAdrs,     /* bus address to convert */    char ** pBusAdrs       /* where to return bus address */    )    {    /*      * before a downstream window can be operational, the host processor must     * have enabled the dec2155x memory and/or i/o access in the PCI primary     * command register and the local processor must have enabled the bus     * master bit in the secondary PCI command register. before proceeding,     * verify that the required access is enabled     */    if ( sysDec2155xChkEnables (PCI_CFG_COMMAND + DEC2155X_PRI_FROM_SEC_OFFSET,                                 PCI_CFG_COMMAND, adrsSpace) != OK )        return (ERROR);    /* if the downstream windows array is un-initialized, go initialize it */    if (dsWindows[0].trgtLimit == 0)        sysDec2155xCaptWindows (DS_WINDOW_COUNT, &dsWindowOffsets[0],                                &dsWindows[0], &dsWinsValid);    /* convert a local pci address to a compact pci address */    return ( sysDec2155xCnvrtAdrs (adrsSpace, (UINT32)localAdrs,                                   (UINT32 *)pBusAdrs, dsWinsValid,                                   &dsWindows[0]) );    }/******************************************************************************** sysCpciToPciAdrs - convert a compact pci bus address to a local pci address** Given a Compact PCI address, this routine returns the corresponding local PCI* address provided that such an address exists. The translation is performed by* examining the upstream windows in sequence until a window is found which* contains the specified Compact PCI bus address. The translation is then* performed using the base addresses of the window as viewed from the bus and* local sides. ** RETURNS: OK, or ERROR if the address space is unknown or the mapping is not* possible.** SEE ALSO: sysPciToCpciAdrs(), sysDec2155xCaptWindows(),*           sysDec2155xCnvrtAdrs()*/LOCAL STATUS sysCpciToPciAdrs    (    int     adrsSpace,      /* bus address space where busAdrs resides */    char *  busAdrs,        /* bus address to convert */    char ** pLocalAdrs      /* where to return local address */    )    {    /*      * before an upstream window can be operational, the local processor must     * have enabled the dec2155x memory and/or i/o spaces in the PCI secondary     * command register and the host processor must have enabled the bus     * master bit in the primary PCI command register. before proceeding     * verify that the required access is enabled.     */    if ( sysDec2155xChkEnables (PCI_CFG_COMMAND,                                PCI_CFG_COMMAND + DEC2155X_PRI_FROM_SEC_OFFSET,                                adrsSpace) != OK )        return (ERROR);    /* if the upstream windows array is un-initialized, go initialize it */    if (usWindows[0].trgtLimit == 0)        sysDec2155xCaptWindows (US_WINDOW_COUNT, &usWindowOffsets[0],                                &usWindows[0], &usWinsValid);    /* convert a compact pci address to a local pci address */    return ( sysDec2155xCnvrtAdrs (adrsSpace, (UINT32)busAdrs,                                   (UINT32 *)pLocalAdrs, usWinsValid,                                   &usWindows[0]) );    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品视频在线免费观看| 欧美色图12p| 丝袜亚洲另类丝袜在线| 欧美国产精品专区| 日韩一级成人av| 在线观看欧美黄色| 成人av网址在线| 精品影院一区二区久久久| 亚洲视频一区二区在线观看| 2023国产精品| 欧美一区二区二区| 欧美色视频一区| av色综合久久天堂av综合| 国产一区不卡精品| 奇米精品一区二区三区在线观看一 | 国产美女av一区二区三区| 亚洲成人动漫在线观看| 亚洲欧美国产毛片在线| 国产精品久久久久影院| 久久久久久久久伊人| 日韩欧美国产精品| 欧美一区二区三区爱爱| 欧美人牲a欧美精品| 色美美综合视频| 91老司机福利 在线| 成人久久18免费网站麻豆| 国产一区二区三区最好精华液| 三级久久三级久久久| 五月婷婷激情综合| 午夜久久久久久久久久一区二区| 亚洲国产精品影院| 亚欧色一区w666天堂| 午夜激情一区二区三区| 香蕉加勒比综合久久| 亚洲午夜精品一区二区三区他趣| 一区二区三区资源| 亚洲综合一区二区| 亚洲一区二区三区中文字幕在线| 一区二区在线观看免费视频播放| 1024国产精品| 亚洲欧美另类久久久精品2019| 一区二区三区在线观看国产 | 亚洲国产中文字幕| 亚洲国产视频在线| 丝袜a∨在线一区二区三区不卡| 午夜电影网亚洲视频| 青青国产91久久久久久| 久久国产乱子精品免费女| 精品一二三四区| 国产在线一区二区| 丰满岳乱妇一区二区三区| 高清国产午夜精品久久久久久| 高清国产午夜精品久久久久久| 丁香激情综合五月| 色综合色综合色综合色综合色综合 | 国产盗摄女厕一区二区三区| 国产.欧美.日韩| 91丨porny丨中文| 欧美视频一区在线| 日韩欧美一区二区三区在线| 久久天天做天天爱综合色| 中文在线免费一区三区高中清不卡| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 日日夜夜一区二区| 激情成人午夜视频| av不卡免费在线观看| 欧美精品1区2区3区| 精品福利二区三区| 中文字幕日韩一区二区| 亚洲成人综合在线| 国产美女av一区二区三区| 99精品在线观看视频| 欧美日韩国产免费| 国产亚洲精品bt天堂精选| 亚洲手机成人高清视频| 青草av.久久免费一区| 成人动漫中文字幕| 91麻豆精品国产91久久久资源速度 | 欧美成人一区二区三区在线观看 | 欧美偷拍一区二区| 精品国产成人系列| 亚洲人成网站影音先锋播放| 日本美女视频一区二区| 成人毛片老司机大片| 91 com成人网| 1区2区3区欧美| 极品销魂美女一区二区三区| 日本高清不卡视频| 亚洲精品一区二区三区99| 伊人性伊人情综合网| 国内精品伊人久久久久影院对白| 日本二三区不卡| 欧美激情一区二区| 日本三级亚洲精品| 91视视频在线观看入口直接观看www| 欧美一区二区免费| 亚洲资源在线观看| 成人精品一区二区三区四区| 日韩三级精品电影久久久| 亚洲免费观看高清完整版在线 | 亚洲mv大片欧洲mv大片精品| 国产91丝袜在线18| 日韩免费观看高清完整版在线观看| 亚洲欧美在线另类| 国产不卡免费视频| 日韩精品一区国产麻豆| 亚洲国产欧美日韩另类综合| 成人免费视频caoporn| 精品国产乱码久久久久久蜜臀| 亚洲精品视频观看| 成人小视频免费观看| 久久综合色天天久久综合图片| 性久久久久久久久久久久| 91麻豆精东视频| 成人欧美一区二区三区在线播放| 国产精品一卡二卡| 精品国精品国产| 青娱乐精品在线视频| 欧美人xxxx| 亚洲成人精品一区| 欧美日韩久久不卡| 亚洲一区二区视频在线观看| 91麻豆.com| 中文字幕欧美一| 91视频国产观看| 亚洲视频资源在线| 91黄视频在线观看| 亚洲精品国产一区二区精华液 | 国产电影精品久久禁18| 久久久综合精品| 狠狠色狠狠色综合系列| 日韩欧美国产一区二区三区| 午夜伊人狠狠久久| 欧美日韩国产免费| 日本一不卡视频| 日韩丝袜情趣美女图片| 蜜桃传媒麻豆第一区在线观看| 91精品国产色综合久久久蜜香臀| 天天综合天天综合色| 欧美日韩一级视频| 日本一区中文字幕| 26uuu国产日韩综合| 国产乱子伦一区二区三区国色天香| 久久综合中文字幕| 国产91丝袜在线播放0| 综合久久久久久| 在线视频亚洲一区| 日韩电影免费在线观看网站| 日韩视频免费观看高清在线视频| 蜜臀久久久99精品久久久久久| 精品伦理精品一区| 成人一级片网址| 蜜桃视频第一区免费观看| 精品国产91亚洲一区二区三区婷婷| 国产一区二区剧情av在线| 中文字幕欧美日本乱码一线二线| 成人短视频下载| 午夜天堂影视香蕉久久| 日韩欧美电影一二三| 国产寡妇亲子伦一区二区| 中文字幕视频一区| 欧美巨大另类极品videosbest| 蜜桃免费网站一区二区三区| 国产午夜精品久久| 在线视频中文字幕一区二区| 蜜桃视频一区二区三区在线观看| 国产亚洲欧美日韩日本| 色呦呦国产精品| 奇米在线7777在线精品 | 国产精品人妖ts系列视频| 色综合久久久久综合体| 日本成人超碰在线观看| 国产欧美日韩三级| 在线亚洲+欧美+日本专区| 精品一区二区三区免费| 亚洲免费av观看| 欧美一区二区日韩| 成人av影视在线观看| 日韩av电影免费观看高清完整版| 国产丝袜欧美中文另类| 欧美日韩高清不卡| 成人免费视频国产在线观看| 日韩高清在线电影| 亚洲日本在线a| 欧美mv日韩mv国产| 91美女片黄在线观看91美女| 九九视频精品免费| 一区二区三区在线播放| 久久伊人中文字幕| 欧美四级电影网| 成人午夜在线免费| 久久精品国产亚洲高清剧情介绍 | 中日韩av电影| 欧美一区二区三区电影| 91亚洲精品一区二区乱码| 奇米影视在线99精品| 亚洲午夜免费电影| 日本一区二区不卡视频| 日韩一级高清毛片| 欧美性受xxxx|