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

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

?? m5200intr.c

?? mpc5200 for bsp,it is have passed built.
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* m5200Intr.c - Motorola MPC5200 interrupt driver *//* Copyright 1989-2003 Wind River Systems, Inc. */#include "copyright_wrs.h"/*modification history--------------------01d,11nov03,pdr  added support for main interrupt.01c,24sep03,pdr  added support for Slice Timer 1.            pkr01b,17sep03,pdr  changed registers method access.01a,03jul03,pkr  derived from ppc860Intr.c*//*DESCRIPTIONThis module provides the interrupt handler libary for the MPC5200. *//* includes */#include "intLib.h"#include "dbgLib.h"#include "iv.h"#include "drv/intrCtl/m5200Intr.h"#include "rebootLib.h"#include "fioLib.h"#ifdef  INCLUDE_WINDVIEW#include "private/funcBindP.h"#include "private/eventP.h"#include "wdb/wdbDbgLib.h"#endif /* INCLUDE_WINDVIEW */FUNCPTR _func_sdmaIntEnableRtn = NULL;FUNCPTR _func_sdmaIntDisableRtn = NULL;FUNCPTR _func_sdmaIntSetLevelRtn = NULL;void m5200SdmaIntTrigger(int intNum);/* local */LOCAL INTR_HANDLER	intrVecTable[NUM_VEC_MAX];	/*  Intr vector table *//* all peripheral sources at level i have their corresponding PIMR bit set in   lvlPIMR[i].   mskPIMR[i] is the union of all lvlPIMR[j] with j > i */   LOCAL UINT32		lvlPIMR[16];LOCAL UINT32		mskPIMR[16];/* forward declarations */LOCAL void	m5200ExtIntrDeMux (void);LOCAL void	m5200SysMngIntrDeMux (void);LOCAL STATUS	m5200IntConnect (VOIDFUNCPTR *, VOIDFUNCPTR, int);LOCAL int	m5200IntEnable (int);LOCAL int	m5200IntDisable (int);LOCAL void	m5200MachCheckHandler(ESFPPC *pEsf);LOCAL void	m5200ExcInfoShow (EXC_INFO *pExcInfo, BOOL doBell);LOCAL VOIDFUNCPTR org_func_excInfoShow = NULL;#if USE_CRITICAL_INTERRUPT#define _EXC_OFF_CRIT _EXC_OFF_RES1LOCAL void	m5200CriticalIntrDeMux (int);#endif/********************************************************************************* m5200IntrInit - initialize the interrupt manager for the PowerPC 800 series** This routine connects the default demultiplexers, m5200IntrDeMux() and * m5200CpmIntrDeMux, to the external interrupt vector and associates all * interrupt sources with the default interrupt handler.  This routine is* called by sysHwInit() in sysLib.c.** NOTE: All interrupt from the SIU and CPM unit are enabled, CICR is setup so* that SCC1 has the highest relative interrupt priority, through SCC4 with the* lowest.** RETURN : OK or ERROR if the SUI interrupt level to connect the CPM * interrupt contoller is wrong.*/STATUS m5200IntrInit     (    void    )    {    VOIDFUNCPTR defaultVec;     	/* INTR3 default vector */    int		vector;    int 	level;    /* Get the default vector connected to the Machine Check exception */    defaultVec = (VOIDFUNCPTR) excVecGet ((FUNCPTR *) _EXC_OFF_MACH);    /* Connect new machine check handler */    excConnect ((VOIDFUNCPTR *) _EXC_OFF_MACH, m5200MachCheckHandler);    /* Get the default vector connected to the External Interrupt (0x500) */    defaultVec = (VOIDFUNCPTR) excVecGet ((FUNCPTR *) _EXC_OFF_INTR);    /* Connect the interrupt demultiplexer to External Interrupt (0x500) */    excIntConnect ((VOIDFUNCPTR *) _EXC_OFF_INTR, m5200ExtIntrDeMux);    /* Get the default vector connected to the System Mng Interrupt (0x1400) */    defaultVec = (VOIDFUNCPTR) excVecGet ((FUNCPTR *) _EXC_OFF_SYS_MNG);    /* Connect the interrupt demultiplexer to System Mng Interrupt (0x1400) */    excIntConnect ((VOIDFUNCPTR *) _EXC_OFF_SYS_MNG, m5200SysMngIntrDeMux);#if USE_CRITICAL_INTERRUPT    /* Get the default vector connected to the Critical Interrupt (0xA00) */    defaultVec = (VOIDFUNCPTR) excVecGet ((FUNCPTR *) _EXC_OFF_CRIT);    /* Connect the interrupt demultiplexer to Critical Interrupt (0xA00) */    excIntConnect ((VOIDFUNCPTR *) _EXC_OFF_CRIT, m5200CriticalIntrDeMux);#endif    /* Install `system' intConnect routine */    if (_func_intConnectRtn == NULL)        _func_intConnectRtn = m5200IntConnect;    if (_func_intEnableRtn == NULL)        _func_intEnableRtn = m5200IntEnable;    if (_func_intDisableRtn == NULL)        _func_intDisableRtn = m5200IntDisable;    /* Set all vectors to default handler */    for (vector = 0; vector < NUM_VEC_MAX; vector++)	intConnect (INUM_TO_IVEC(vector), defaultVec, 0);    /* initially we have all masked and level is all 0 */    lvlPIMR[0] = 0xFFFFFFFF;    for(level=1; level < 15; level++)	lvlPIMR[level] = 0;    mskPIMR[0] = 0x0;    for(level=1; level < 15; level++)	mskPIMR[level] = 0xFFFFFFFF;    /* Init SIU  */    *ICTL_PIMR   = 0xFFFFFFFF; /* mask all peripheral interrupts */    ICTL_PPR[0]  = 0x0;        /* peripherals prio 0 */    ICTL_PPR[1]  = 0x0;        /* peripherals prio 0 */    ICTL_PPR[2]  = 0x0;        /* peripherals prio 0 */    /* clear and disable all IRQ's */    *ICTL_EEETR  = ICTL_EEETR_ECLR0_MASK | ICTL_EEETR_ECLR1_MASK | ICTL_EEETR_ECLR2_MASK		     | ICTL_EEETR_ECLR3_MASK;    *ICTL_EEETR  |= ICTL_EEETR_MEE;#if !USE_CRITICAL_INTERRUPT    *ICTL_EEETR  |= ICTL_EEETR_CEb; /* set CEb */#endif    *ICTL_CPMIMR = 0x0001EFFF;  /* mask all main interrupts but LO */    ICTL_MIPR[0] = 0x00070000;  /* main ints prio 0, LO to prio 7 */    ICTL_MIPR[1] = 0x0;         /* main ints prio 0 */    /* make sure no critical interrupt is pending */    /* Reset Slice Timer 0 */    *SLT0_CTRL = 0;    /* Reset Slice Timer 0 Status Bit */    *SLT0_STATUS = SLT_STATUS_RESET;    /* Setup XLB  */    /* addresss and data timeout */    *XLB_CR	|= XLB_CR_DT_ENABLED | XLB_CR_AT_ENABLED;    *XLB_SR	= XLB_SR_CLEAR_ALL;    *XLB_IER	= 0;    *XLB_ATTOR	= XLB_ADDR_TO;    *XLB_DTTOR	= XLB_DATA_TO;    return (OK);     }/********************************************************************************* m5200IntConnect - connect a routine to an interrupt ** This routine connects any C or assembly routine to one of the multiple * sources of interrupts.** The connected routine can be any normal C code, except that it must not * invoke certain operating system functions that may block or perform I/O* operations.** <vector> types are defined in h/drv/intrClt/m5200Intr.h.** RETURNS: OK, or ERROR if <vector> is unknown.** SEE ALSO: m5200Intr.h*/LOCAL STATUS m5200IntConnect    (    VOIDFUNCPTR *	vector,		/* interrupt vector to attach to */    VOIDFUNCPTR		routine,	/* routine to be called */    int 		parameter	/* parameter to be passed to routine */    )    {    int inum = IVEC_TO_INUM(vector);    /* test the vector */    if (inum >= NUM_VEC_MAX)	return (ERROR);    intrVecTable[IVEC_TO_INUM(vector)].vec = routine;    intrVecTable[IVEC_TO_INUM(vector)].arg = parameter;    m5200IntrSetLevel (inum, INTR_LEVEL_DEFAULT);    return (OK);    }void m5200SdmaIntTrigger(int intNum){    if (intNum < INUM_SDMA_FIRST || intNum > INUM_SDMA_LAST)	return;    /* make sure other sdma interrupts can be handled while this on is served */    /* TBD */    /* EE is already unlocked but SDMA int level is masked */        intrVecTable[intNum].vec (intrVecTable[intNum].arg);}/********************************************************************************* m5200ExtIntrDeMux - SIU interrupt demultiplexer ** This routine must be bound to external interrupt exception (vector 0x500). * It is used to call the appropriate handler with its argument when an* interrupt occurs. ** The interrupts are prioritized in the following order:** NOTE: when this function is called the interrupts are still locked. It's* this function responsability to unlock the interrupt.** RETURNS: N/A*/LOCAL void m5200ExtIntrDeMux (void)    {    UINT32 isr;    UINT32 isr_PSe;    UINT32 isr_MSe;#if !USE_CRITICAL_INTERRUPT    UINT32 isr_CSe;    UINT32 isr_CSe_Nr;#endif    VOIDFUNCPTR *vector;    UINT32 intMask;    isr = *ICTL_ISR;			/* get interrupt status */#if !USE_CRITICAL_INTERRUPT    /* check for critical interrupt */    if ((isr_CSe = (isr & ICTL_ISR_CSe_MASK)) != 0)        {	isr_CSe_Nr = isr_CSe &  ICTL_ISR_CSe_MASK_NR;        isr_CSe_Nr >>= ICTL_ISR_CSe_SHIFT;        vector = INUM_TO_IVEC(INUM_CRITICAL_FIRST + isr_CSe_Nr);        }    else#endif    /* check for peripheral interrupt BEFORE main interrupt */    if ((isr_PSe = (isr & ICTL_ISR_PSe_MASK)) != 0)        { 	isr_PSe &= ICTL_ISR_PSe_MASK_NR;        isr_PSe >>= ICTL_ISR_PSe_SHIFT;        vector = INUM_TO_IVEC(INUM_PERIPHERAL_FIRST + isr_PSe);        }    else    /* check for main interrupt routed this way */    if ((isr_MSe = (isr & ICTL_ISR_MSe_MASK)) != 0)	{	isr_MSe  &= ICTL_ISR_MSe_MASK_NR;	isr_MSe >>= ICTL_ISR_MSe_SHIFT;	vector    = INUM_TO_IVEC(INUM_MAIN_FIRST + isr_MSe);	}    else    /* spurious interrupt */	{	return;	}#ifdef  INCLUDE_WINDVIEW    WV_EVT_INT_ENT(vector)#endif#if !USE_CRITICAL_INTERRUPT/* TBD correct prio handling */    if (isr_CSe > 0)        {	/* as there is no masking of the critical interrupts, the MSR_EE needs	   to remain set until the ISR deasserts the interrupt cause	   It shall call m5200IntAck() for that purpose */        }     else#endif    if (isr_MSe > 0)	{	/* save the current interrupt mask */ 	intMask = *ICTL_CPMIMR;		*ICTL_CPMIMR |= ICTL_CPMIMR_MASK_ALL; /* mask all for now -> no nesting */		/* unlock the interrupt */	#if 0        /* TBD: remove to enable nesting */	intUnlock (_PPC_MSR_EE);#endif	}    else        {        intMask = *ICTL_PIMR;        /* lock all levels inferior to the interrupt detected */        /* those with lower priority level are all in mskPIMR[isr_PSe] */        *ICTL_PIMR |= mskPIMR[isr_PSe];        /* those with same priority level are all in lvlPIMR[isr_PSe]           mask only those bits on the right hand side and including isr_PSe */        *ICTL_PIMR |= (lvlPIMR[isr_PSe] & ( ( 1 << (32-isr_PSe) ) - 1));        /* unlock the interrupt */#if 0        /* TBD: remove to enable nesting */        intUnlock (_PPC_MSR_EE);#endif        }    /* call the Interrupt Handler */    intrVecTable[IVEC_TO_INUM(vector)].vec (intrVecTable[IVEC_TO_INUM(vector)].arg);    /* restore the interrupt mask */#if !USE_CRITICAL_INTERRUPT    if (isr_CSe > 0)        {        /* unlock the interrupt in case the ISR did not call m5200IntAck */            intUnlock (_PPC_MSR_EE);        }     else#endif        if (isr_MSe >0)        {        *ICTL_CPMIMR = intMask;        }    else	{        *ICTL_PIMR = intMask;	}    return;    }/********************************************************************************* m5200SysMngIntrDeMux - SIU interrupt demultiplexer ** This routine must be bound to system management interrupt exception (vector 0x1400). * It is used to call the appropriate handler with its argument when an* interrupt occurs. ** The interrupts are prioritized in the following order:** NOTE: when this function is called the interrupts are still locked. It's* this function responsability to unlock the interrupt.** RETURNS: N/A*/LOCAL void m5200SysMngIntrDeMux (void)    {    UINT32 isr;    UINT32 isr_MSe;    VOIDFUNCPTR *vector;    UINT32 intMask;    isr = *ICTL_ISR;			/* get interrupt status */    /* check for main interrupt */    if ((isr_MSe = (isr & ICTL_ISR_MSe_MASK)) != 0)        { 	isr_MSe &= ICTL_ISR_MSe_MASK_NR;        isr_MSe >>= ICTL_ISR_MSe_SHIFT;        vector = INUM_TO_IVEC(INUM_MAIN_FIRST + isr_MSe);        }     else        {	return;	}#ifdef  INCLUDE_WINDVIEW    WV_EVT_INT_ENT(vector)#endif	    /* save the current interrupt mask */ 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区四区激情| 日本欧美久久久久免费播放网| 亚洲欧美日韩久久| 丝袜诱惑制服诱惑色一区在线观看| 国产风韵犹存在线视精品| 91成人免费电影| 久久久久久久av麻豆果冻| 亚洲成人综合在线| 99久久亚洲一区二区三区青草 | 91老司机福利 在线| 日韩精品专区在线影院重磅| 一区二区三区四区在线播放| 国产精品一级二级三级| 欧美不卡一区二区三区四区| 亚洲一二三区视频在线观看| 不卡的av电影在线观看| 久久精品亚洲精品国产欧美kt∨| 日本一不卡视频| 在线观看国产日韩| 中文字幕一区二区三区精华液| 激情综合五月天| 日韩一区二区在线看| 亚洲午夜在线观看视频在线| 在线观看av一区二区| 综合久久国产九一剧情麻豆| 成人精品一区二区三区中文字幕 | 国产精品久久久久三级| 国产乱子伦一区二区三区国色天香| 在线播放日韩导航| 亚洲一区二区三区爽爽爽爽爽 | 国产剧情一区在线| 日韩欧美色电影| 久久精品国产网站| 欧美成人三级在线| 久久99在线观看| 久久久久久亚洲综合影院红桃 | 国产精品午夜电影| 国产精品99精品久久免费| 久久综合久久99| 国产盗摄视频一区二区三区| 久久久99精品久久| 国产高清成人在线| 亚洲精品成a人| 91丨九色丨国产丨porny| 综合激情网...| 欧美午夜精品久久久久久孕妇| 亚洲成av人片在线观看无码| 欧美精品123区| 麻豆中文一区二区| 久久男人中文字幕资源站| 国产98色在线|日韩| 亚洲素人一区二区| 欧美色中文字幕| 看片的网站亚洲| 国产色产综合产在线视频| www.欧美亚洲| 视频在线观看91| 久久免费视频一区| 色综合天天性综合| 日本不卡一区二区三区高清视频| 精品欧美一区二区在线观看 | 免费看精品久久片| 久久久www成人免费毛片麻豆| av亚洲精华国产精华| 亚洲超丰满肉感bbw| 久久综合久久鬼色中文字| www.欧美色图| 久久99在线观看| 一区二区在线观看免费视频播放| 91超碰这里只有精品国产| 国产成人亚洲综合a∨猫咪| 亚洲少妇中出一区| 日韩色在线观看| 色综合久久66| 国产精品一二一区| 污片在线观看一区二区| 久久久国产一区二区三区四区小说 | 亚洲成国产人片在线观看| 欧美不卡一区二区三区| 色中色一区二区| 国产成人在线视频网站| 亚洲国产一区二区三区青草影视| 久久久久久亚洲综合| 欧美日韩国产美| yourporn久久国产精品| 日本一不卡视频| 亚洲一区在线免费观看| 国产亚洲自拍一区| 欧美日韩黄色影视| 成人激情图片网| 久久99九九99精品| 亚洲国产精品久久人人爱 | 亚洲一区二区四区蜜桃| 国产欧美日韩精品一区| 日韩一区二区三区四区| 色丁香久综合在线久综合在线观看| 国产在线国偷精品产拍免费yy| 亚洲国产视频直播| 亚洲人成影院在线观看| 国产日本欧美一区二区| 欧美一级片在线| 欧美日韩亚洲另类| 色婷婷av一区二区三区gif | 欧美日韩美女一区二区| 91免费版在线看| 99re成人精品视频| 国产精品888| 国产高清精品久久久久| 国产一区二三区好的| 青椒成人免费视频| 人人狠狠综合久久亚洲| 三级影片在线观看欧美日韩一区二区| 一区二区三区日韩欧美| 亚洲人妖av一区二区| 中文字幕一区二区三区色视频| 国产精品色婷婷| 国产欧美va欧美不卡在线 | 日韩免费视频一区| 日韩三级视频在线观看| 69久久99精品久久久久婷婷| 欧美日韩精品电影| 欧美一区二区三区婷婷月色| 7777精品伊人久久久大香线蕉经典版下载| 欧美视频一区在线| 欧美日本不卡视频| 欧美一区二区成人6969| 欧美xxxxx裸体时装秀| 久久亚洲一级片| 中文字幕一区二区三区乱码在线| 国产成人一级电影| 久久99国产精品免费网站| 国产精品成人免费在线| 国产精品久久久久桃色tv| 亚洲色图19p| 亚洲一区二区三区四区中文字幕 | 久久亚洲一区二区三区明星换脸| 久久亚洲精华国产精华液| 国产人伦精品一区二区| 色综合中文字幕| 亚洲大片免费看| 精品免费国产二区三区| 91福利国产精品| 国产精品天天摸av网| 肉色丝袜一区二区| 午夜国产精品一区| 久久99久久精品| 99精品久久免费看蜜臀剧情介绍| 欧美亚洲国产一区二区三区va| 欧美肥妇bbw| 中文av一区二区| 青青草成人在线观看| 成人开心网精品视频| 欧美日韩精品一区二区三区蜜桃| 欧美zozozo| 亚洲一区二区三区不卡国产欧美| 精品一区二区三区在线播放| 91在线观看下载| 欧美丰满高潮xxxx喷水动漫| 国产精品区一区二区三| 婷婷国产v国产偷v亚洲高清| 成人小视频在线| 制服丝袜中文字幕亚洲| 最新不卡av在线| 黄色日韩三级电影| 欧美亚一区二区| 中文字幕av一区二区三区高| 日韩电影在线免费观看| 波多野结衣中文字幕一区二区三区| 91精品中文字幕一区二区三区| 国产精品午夜在线| 激情六月婷婷久久| 欧美三级乱人伦电影| 欧美韩国日本一区| 久久精品99国产国产精| 欧美在线小视频| 亚洲色图制服丝袜| 国产乱子伦视频一区二区三区 | 国产精品亚洲一区二区三区在线| 欧美在线视频全部完| 国产精品伦一区二区三级视频| 蜜桃精品视频在线观看| 欧美日韩中文国产| 亚洲免费av在线| 成人av在线看| 国产清纯在线一区二区www| 美美哒免费高清在线观看视频一区二区| 91国偷自产一区二区三区成为亚洲经典| 欧美国产97人人爽人人喊| 精品一区免费av| 538prom精品视频线放| 亚洲另类中文字| 99在线视频精品| 国产精品无人区| 高清在线成人网| 久久久久99精品国产片| 国产专区综合网| 久久精品在这里| 国产精品自拍毛片| 久久精品视频在线免费观看| 国产在线播放一区二区三区|