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

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

?? ppc860intr.c

?? VxWorks下 Cpv3060的BSP源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
    if (IVEC_TO_INUM(vector) >= NUM_VEC_MAX)	return (ERROR);    /* create a new interrupt handler */    if ((newHandler = 	(INT_HANDLER_DESC *)calloc (1, sizeof (INT_HANDLER_DESC))) == NULL)        return (ERROR);    /* initialize the new handler */    newHandler->vec  = routine;    newHandler->arg  = parameter;    newHandler->next = NULL;    /* install the handler in the system interrupt table */    if (sysIntTbl[IVEC_TO_INUM(vector)] == NULL)	/* single int. handler case */        sysIntTbl[IVEC_TO_INUM(vector)] = newHandler;    else        {	/* multiple intr. handler case */        currHandler = sysIntTbl[IVEC_TO_INUM(vector)];        while (currHandler->next != NULL)            {            currHandler = currHandler->next;            }        currHandler->next = newHandler;        }    return (OK);    }/********************************************************************************* ppc860IntrDeMux - SIU level interrupt demultiplexer ** This routine is bound to external interrupt exception (vector 0x500). * It handles all external interrupts routed through the SIU, including* additional support devices for the board (e.g. PCI ).* It calls the appropriate handler(s) with its argument when an* interrupt occurs to the SIU.** NOTE: when this function is called the interrupts are still locked. It's* this function responsibility to unlock the interrupt.** RETURNS: N/A*/void ppc860IntrDeMux (void)    {#ifdef	INCLUDE_INSTRUMENTATION    UINT32 	evtIntNum;		/* windview interrupt vector */#endif /* INCLUDE_INSTRUMENATATION */    UINT8 		intVec;			/* interrupt vector */    UINT32		regBase;		/* register Base Address */    UINT32		intMask;		/* current interrupt mask */    INT_HANDLER_DESC *  currHandler;    regBase = vxImmrGet();    /* read the interrupt vector register */    intVec = (* SIVEC(regBase)) >> 26;#ifdef  INCLUDE_INSTRUMENTATION    /*     * if it is a cpm interrupt we need to know the correspondingcpm     * level, that we should get from the CPM demultiplexer. But we     * need the value here and the value can be read only once. We      * save the value here so that once the CPM demultiplexer is called,     * it will read the value from the global variable cpmIntNum.     *      * Since we do not know the CPM level a priori, we have to leave     * enough space for the cpm interrupts in the windview list.     * Therefore, any interrupt number bigger than the CPM level will     * be increased of 15 so to leave those spots to the corresponding     * CPM interrupts.     */    if (intVec == cpmVecNum)    {    /* acknowledge the interrupt */        *CIVR(regBase) = CIVR_IACK;            cpmIntNum = * CIVR(regBase) >> 11;     evtIntNum = intVec + (cpmIntNum%15);    }    else	evtIntNum = ((intVec < cpmVecNum)? intVec : (intVec+15));    if (evtLogTIsOn)	(* _func_evtLogT1_noTS) (EVENT_INT_ENT((int)evtIntNum), evtTimeStamp);#endif /* INCLUDE_INSTRUMENTATION */    /* Ignore spurious interrupts */    if (intVec == 0xFF)        {        logMsg ("Spurious External Interrupt!\n", 0,0,0,0,0,0);        return;        }    /* save the current interrupt mask */     intMask = * SIMASK(regBase);    /* lock all levels inferior to the interrupt detected */    * SIMASK(regBase) &= (0xffffffff << (32 - intVec));    /* unlock the interrupt */    intUnlock (_PPC_MSR_EE);    /* call the necessary interrupt handlers */    if ((currHandler = sysIntTbl [intVec]) == NULL)        {        logMsg ("uninitialized external interrupt %d\r\n", intVec, 0,0,0,0,0);        }    else        {        /* Call EACH respective chained interrupt handler */        while (currHandler != NULL)            {            currHandler->vec (currHandler->arg);            currHandler = currHandler->next;            }        }    /* restore the interrupt mask */    * SIMASK(regBase) = intMask;    return;    }/********************************************************************************* ppc860CpmIntrDeMux - CPM interrupt demultiplexer ** This routine must be bound to one of the SIU interrupts, which will cause* the ppc860IntrDeMux handler to call this handler when a CPM interrupt is* received.  ** It is used to call the appropriate handler with its argument when a CPM* interrupt occurs.   Since CPM interrupts cannot be chained, we only make a* single handler call and then exit.** RETURNS: N/A*/void ppc860CpmIntrDeMux     (    int simaskLevel			/* mask out lower level CPM intrs */    )    {    int		intVec;			/* interrupt vector number */    UINT32	regBase;		/* register Base Address */    UINT32	intOldMask;		/* interrupt mask before the interrupt*/    /* get the device register base address */    regBase = vxImmrGet();    /* acknowledge the interrupt */    * CIVR(regBase) = CIVR_IACK;    /* get the interrupt vector */#ifdef  INCLUDE_INSTRUMENTATION    intVec = cpmIntNum; #else    intVec = * CIVR(regBase) >> 11; #endif /* INCLUDE_INSTRUMENTATION */    /* save the interrupt mask before the interrupt */    intOldMask = * CIMR(regBase);    /* lock all levels inferior to the interrupt detected */    * CIMR(regBase) &= (0xffffffff << (intVec + 1));    /* enable the CPM interrupt in the SIU controller */    * SIMASK(regBase) |= simaskLevel;    /* call the Interrupt Handler */    sysIntTbl[intVec + 32]->vec (sysIntTbl[intVec + 32]->arg);    /* clear the bit in the CISR */    * CISR(regBase) = (1 << intVec);    /* restore the interrupt mask */        * CIMR(regBase) = intOldMask;    }/********************************************************************************* ppc860IntEnable - enable one of the Level or IRQ interrupts into the SIU*		    or one of the CPM interrupts** This routine will unmask the bit in the SIMASK register corresponding to* the requested interrupt level for SIU interrupts, or unmask the appropriate* bit in the CIMR register for the CPM.  The interrupt level must be in the* range of 0 - 31 for SIU interrupts, and 32 - 63 for CPM interrupts.* * RETURNS: OK, or ERROR if intNum is out of range*/int ppc860IntEnable    (    int intNum		/* interrupt level to enable */    )    {    UINT32 regBase;    regBase = vxImmrGet();    if ((intNum >= SIU_INT_NUM_LOW) && (intNum <= SIU_INT_NUM_HIGH))	* SIMASK(regBase) |= (1 << (SIU_INT_NUM_HIGH - intNum));    else if ((intNum >= CPM_INT_NUM_LOW) && (intNum <= CPM_INT_NUM_HIGH))	* CIMR(regBase) |= (1 << (intNum - CPM_INT_NUM_LOW));    else	return (ERROR);    return (OK);    }/********************************************************************************* ppc860IntDisable - disable one of the Level or IRQ interrupts into the SIU*                    or one of the CPM interrupts** This routine will mask the bit in the SIMASK register corresponding to* the requested interrupt level for SIU interrupts, or mask the appropriate* bit in the CIMR register for the CPM.  The interrupt level must be in the* range of 0 - 31 for SIU interrupts, and 32 - 63 for CPM interrupts.** RETURNS: OK, or ERROR if intNum is out of range*/int ppc860IntDisable    (    int intNum          /* interrupt level to disable */    )    {    UINT32 regBase;        regBase = vxImmrGet();    if ((intNum >= SIU_INT_NUM_LOW) && (intNum <= SIU_INT_NUM_HIGH))        * SIMASK(regBase) &= ~(1 << (SIU_INT_NUM_HIGH - intNum));    else if ((intNum >= CPM_INT_NUM_LOW) && (intNum <= CPM_INT_NUM_HIGH))        * CIMR(regBase) &= ~(1 << (intNum - CPM_INT_NUM_LOW));    else        return (ERROR);    return (OK);    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲福利一二三区| 亚洲黄色性网站| 884aa四虎影成人精品一区| 日本丶国产丶欧美色综合| 91在线视频免费观看| 色哟哟国产精品| 欧美猛男超大videosgay| 欧美色网一区二区| 制服丝袜亚洲色图| 日韩精品在线网站| 久久天天做天天爱综合色| 久久综合精品国产一区二区三区 | 亚洲成人一区在线| 天堂午夜影视日韩欧美一区二区| 日韩av不卡一区二区| 免费日本视频一区| 国产精品亚洲一区二区三区妖精| 成人一区二区三区视频在线观看 | 91麻豆精品国产91久久久久| 日韩欧美一区二区视频| 国产亚洲女人久久久久毛片| 国产精品不卡在线观看| 亚洲一二三区不卡| 精品伊人久久久久7777人| 成人夜色视频网站在线观看| 色婷婷激情一区二区三区| 欧美精选一区二区| 国产亚洲污的网站| 亚洲午夜羞羞片| 国产精品一区免费视频| 色网综合在线观看| 精品88久久久久88久久久| 日韩一区中文字幕| 蜜臀av一级做a爰片久久| 国产大片一区二区| 91麻豆精品国产91久久久使用方法 | 亚洲国产日韩一级| 国产在线播放一区| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 日韩欧美国产一区二区三区| 亚洲欧美另类图片小说| 经典一区二区三区| 欧美色中文字幕| 国产精品久久久久影院| 日韩av一区二区三区四区| 99久久99久久综合| 久久久三级国产网站| 亚洲成人精品一区二区| 成人h动漫精品一区二区| 欧美老女人在线| 一区二区三区免费| av在线不卡免费看| 国产日韩欧美麻豆| 美女视频黄a大片欧美| 欧美性一级生活| 亚洲同性gay激情无套| 国产成人精品亚洲777人妖| 欧美日韩www| 亚洲福利一区二区| 欧美三区免费完整视频在线观看| 国产精品乱码妇女bbbb| 麻豆国产精品777777在线| 欧美伊人久久久久久久久影院| 国产精品毛片无遮挡高清| 精一区二区三区| 精品免费国产一区二区三区四区| 午夜在线成人av| 日本二三区不卡| 一区二区三区四区高清精品免费观看 | 亚洲午夜精品在线| 欧美做爰猛烈大尺度电影无法无天| 亚洲欧美一区二区视频| www.一区二区| 亚洲免费av高清| 欧美最猛性xxxxx直播| 亚洲一区影音先锋| 欧美性色黄大片| 午夜视频一区二区| 7878成人国产在线观看| 免费人成网站在线观看欧美高清| 91精品国产综合久久香蕉麻豆| 人人超碰91尤物精品国产| 日韩欧美精品三级| 国产剧情一区在线| 亚洲视频网在线直播| 欧美综合一区二区| 日韩成人dvd| 国产网站一区二区| 91最新地址在线播放| 亚洲电影一区二区三区| 91精品免费在线观看| 激情欧美一区二区| 国产精品欧美一区二区三区| 在线观看av一区二区| 日本亚洲一区二区| 国产亚洲美州欧州综合国| 成人网在线播放| 图片区日韩欧美亚洲| 久久久99精品久久| 一本色道亚洲精品aⅴ| 婷婷激情综合网| 2023国产精品视频| 91麻豆精品一区二区三区| 肉色丝袜一区二区| 国产精品久久久久久久久搜平片 | 欧美电影免费观看高清完整版在| 国产白丝网站精品污在线入口 | 欧美揉bbbbb揉bbbbb| 国内精品伊人久久久久av一坑| 中文字幕第一区综合| 欧美日韩国产bt| 国产成人av一区二区三区在线 | 国产午夜亚洲精品羞羞网站| 色婷婷精品久久二区二区蜜臂av| 久色婷婷小香蕉久久| 亚洲欧洲精品一区二区三区| 日韩欧美国产综合一区| 91麻豆精品视频| 国产麻豆视频一区| 亚洲成a人片综合在线| 中文字幕在线不卡一区二区三区| 91麻豆精品国产91久久久更新时间 | 欧美一级精品大片| 91丨九色丨尤物| 国产老妇另类xxxxx| 奇米精品一区二区三区四区| 亚洲丝袜制服诱惑| 国产清纯美女被跳蛋高潮一区二区久久w| 在线观看国产一区二区| 国产白丝精品91爽爽久久| 老司机一区二区| 亚洲成人自拍一区| 一区二区在线观看视频| 国产女人18毛片水真多成人如厕 | 精品影院一区二区久久久| 亚洲福利视频导航| 一区二区三区四区在线播放 | 宅男噜噜噜66一区二区66| 欧美在线综合视频| 99久久国产免费看| 波多野结衣中文字幕一区二区三区| 久久精品国产免费看久久精品| 亚洲成a人片在线不卡一二三区| 亚洲丝袜美腿综合| 亚洲精品国产a久久久久久| 国产精品日韩精品欧美在线| 精品国产91乱码一区二区三区| 91精品国产综合久久久蜜臀粉嫩 | 粉嫩aⅴ一区二区三区四区 | 综合久久久久综合| 亚洲欧美怡红院| 亚洲摸摸操操av| 一区二区三区四区激情| 夜夜爽夜夜爽精品视频| 亚洲香肠在线观看| 日韩国产在线一| 久久国产精品99久久人人澡| 精品中文字幕一区二区小辣椒| 久久精品国产在热久久| 激情综合色综合久久| 国产一区二区三区免费看| 国产盗摄一区二区| 91天堂素人约啪| 欧美日本免费一区二区三区| 欧美精品1区2区3区| 欧美精品一区二区三区蜜臀| 国产女同性恋一区二区| 亚洲乱码精品一二三四区日韩在线| 亚洲美女精品一区| 亚洲成a人v欧美综合天堂下载| 蜜桃视频在线一区| 国产高清不卡一区| 日本韩国欧美一区| 日韩限制级电影在线观看| 久久精品一区二区三区不卡 | 国产精品综合一区二区三区| 韩国欧美国产1区| 国内精品不卡在线| 成熟亚洲日本毛茸茸凸凹| 欧美中文字幕一区| 久久综合丝袜日本网| 亚洲激情图片小说视频| 日本亚洲三级在线| kk眼镜猥琐国模调教系列一区二区| 欧美三片在线视频观看| 精品久久久三级丝袜| 亚洲另类中文字| 黄色日韩三级电影| 色爱区综合激月婷婷| 久久综合网色—综合色88| 亚洲黄色免费电影| 狠狠色狠狠色综合| 色吊一区二区三区| 久久精品欧美一区二区三区麻豆| 一区二区三区在线免费播放| 国产精品综合av一区二区国产馆| 欧美主播一区二区三区| 欧美激情一区二区三区在线| 另类小说欧美激情| 精品婷婷伊人一区三区三|