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

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

?? ravenmpic.c

?? mtx604在vxworks下的bsp源代碼
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/* ravenMpic.c - Raven Interrupt Controller driver *//* Copyright 1984-1998 Wind River Systems, Inc. *//* Copyright 1996,1997,1998 Motorola, Inc., All Rights Reserved */#include "copyright_wrs.h"/*modification history--------------------01t,18jul02,dtr  SPR 30704.01s,26mar02,dtr  Removing compiler warnings.01r,24aug98,cjtc windview 2.0 event logging is now single step and handled in		 the interrupt controller driver. Fixes a problem with out of		 sequence timestamps in the event log for this architechture.		 Method of initiating event logging is now via a macro		 (SPR 21868)01q,21sep98,ms_  SPR 21961: fix sysIbcPhantomInt to correctly handle		 phantom interrupts in cascaded interrupt controllers.                 Remove extra semicolons in sysIbcIntHandler()01p,17apr98,pr   added windview 20 support01o,24aug98,mdp  Fixed Phantom IRQ support01n,14apr98,ms_  merged Motorola mv2700 support01m,11apr98,scb  HW rework makes ISA IRQ's 14 & 15 edge (not level) sensitive.01l,22apr98,scb  added phantom IBC int handling for IRQ7 and IRQ1501k,13jan98,srr  updated copyright dates to 1998.01j,11dec97,srr  Updated comment in sysIbcInit to show support for VIA chip.01i,20jul97,srr  send end of interrupt acknowledge to master IBC first.01h,23oct97,dat, removed IACK loop from sysMpicIntHandler() (SPR 9389).            mas01g,20jul97,dat  implemented dave's second revision + some code cleanup01f,11jun97,dmw  MPIC handler cleanup. 01e,06may97,dat  added IBC updates from sl82565 controller.01d,30apr97,dat  added WindView instrumentation SPR 843401c,29apr97,dat  Fixed Motorola MR #62, moved MPIC_EOI01b,23apr97,mas  merged with sl82565IntrCtl.c (SPR 8170).01a,11nov96,rhk  created by Motorola.*//*DESCRIPTIONThis module implements the Raven Mpic and the Winbond W83C553 PCI-ISA Bridge(PIB) drivers.  (The W83C553 PIB was formerly known as the Motorola sl82565 ISABridge Controller (IBC).These merged drivers provide support for initializing their respective devicesand handling interrupts from them.*//* includes */#include "ravenMpic.h"#include "private/eventP.h"/* defines */#define	MPIC_EOI	sysPciWrite32(MPIC_ADDR(MPIC_CPU0_EOI_REG),0)#define IBC_INT_PENDING	0x80/* globals */IMPORT STATUS	      (*_func_intConnectRtn) (VOIDFUNCPTR *, VOIDFUNCPTR, int);IMPORT int	      (*_func_intEnableRtn) (int);IMPORT int	      (*_func_intDisableRtn) (int);IMPORT void		sysOutByte (ULONG, UCHAR);IMPORT UCHAR		sysInByte (ULONG);IMPORT void		sysPciRead32 (UINT32, UINT32 *);IMPORT void		sysPciWrite32 (UINT32, UINT32);IMPORT STATUS		excIntConnect (VOIDFUNCPTR *, VOIDFUNCPTR);void			sysIbcIntEnable (int);void			sysIbcIntDisable (int);void			sysIbcIntHandler (void);void			sysMpicIntHandler (void);IMPORT UINT		sysVectorIRQ0; 	/* vector for IRQ0 */INT_HANDLER_DESC * sysIntTbl [256];	/* system interrupt table */int tpr;/* forward declarations */LOCAL int       getMpicVecOffset (int);LOCAL STATUS	sysMpicIntConnect (VOIDFUNCPTR * vector, VOIDFUNCPTR routine,			       int parameter);LOCAL int	sysMpicIntEnable (int);LOCAL int	sysMpicIntDisable (int);LOCAL void	sysIbcMpicConnect (void);LOCAL BOOL 	sysIbcPhantomInt (UCHAR *intNum, int lvl7Int, int lvl15Int);LOCAL void	sysIbcEndOfInt (int);LOCAL void	sysIbcIntLevelSet (int);/* Mask values are the currently disabled sources */LOCAL UINT8	sysPicMask1 = 0xfb;	/* all levels disabled */LOCAL UINT8	sysPicMask2 = 0xff;/* Level values are the interrupt level masks */LOCAL UINT8	sysPicLevel1;LOCAL UINT8	sysPicLevel2;LOCAL UINT8	sysPicLevelCur;		/* current priority level, 0 to 16 *//* level values by real priority */LOCAL UCHAR sysPicPriMask1[17] = {0xFB,0xFA,0xF8,0xF8,0xF0,0xE0,0xC0,0x80,			     0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0x0};LOCAL UCHAR sysPicPriMask2[17] = {0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,			     0xFF,0xFE,0xFC,0xF8,0xF0,0xE0,0xC0,0x80,0x0};/* Hardware access methods */#ifndef IBC_BYTE_OUT#   define IBC_BYTE_OUT(reg,data) \	(sysOutByte (reg,data))#endif#ifndef IBC_BYTE_IN#   define IBC_BYTE_IN(reg,pData) \	(*pData = sysInByte(reg))#endif#ifndef CPU_INT_LOCK#   define CPU_INT_LOCK(x) \	(*x = intLock ())#endif#ifndef CPU_INT_UNLOCK#   define CPU_INT_UNLOCK(data) \	(intUnlock (data))#endif/********************************************************************************* sysMpicInit - initialize the MPIC in the Raven** This function initializes the Multi-Processor Interrupt Controller (MPIC)* contained in the Raven chip.** It first initializes the system vector table, connects the MPIC interrupt* handler to the PPC external interrupt and attaches the local MPIC routines* for interrupt connecting, enabling and disabling to the corresponding system* routine pointers.** It then initializes the MPIC registers, clears any pending MPIC interrupts,* enables interrupt handling by the MPIC and enables external ISA interrupts* (from the W83C553).** RETURNS: OK always*/STATUS sysMpicInit (void)    {    int			i;    UINT32		timerReg;    UINT32		ipiReg;    UINT32		destReg;    LOCAL_INT_DATA	init;    /* Initialize the interrupt table */    for (i = 0; i < 256; i++)        sysIntTbl[i] = NULL;     /* Connect the interrupt demultiplexer to the PowerPC external interrupt */    excIntConnect ((VOIDFUNCPTR *) _EXC_OFF_INTR, sysMpicIntHandler);    /*     *  Set up the BSP specific routines     *  Attach the local routines to the vxWorks system calls     */    _func_intConnectRtn = sysMpicIntConnect;    _func_intEnableRtn = sysMpicIntEnable;    _func_intDisableRtn = sysMpicIntDisable;    /* Initialize the MPIC */    /* generate a PCI IACK to clear any pending interrupts */    sysPciRead32( MPIC_ADDR(MPIC_CPU0_IACK_REG), (UINT32*)&init.temp );    /* inhibit the timer and IPI regs. and clear the counter regs. */    timerReg = MPIC_TIMER0_BASE_CT_REG;    ipiReg = MPIC_IPI0_VEC_PRI_REG;    for (i=0; i<4; i++)	{	sysPciWrite32( MPIC_ADDR(ipiReg), IPI_INHIBIT );	ipiReg += REG_OFFSET;	sysPciWrite32( MPIC_ADDR(timerReg), TIMER_INHIBIT );	timerReg += REG_OFFSET;	sysPciWrite32( MPIC_ADDR(timerReg), TIMER_INHIBIT );	timerReg += (REG_OFFSET * 3);	}    /* setup the external source vector/priority registers */    sysPciWrite32( MPIC_ADDR(MPIC_EXT_SRC0_VEC_PRI_REG), INIT_EXT_SRC0 );    sysPciWrite32( MPIC_ADDR(MPIC_EXT_SRC1_VEC_PRI_REG), INIT_EXT_SRC1 );    sysPciWrite32( MPIC_ADDR(MPIC_EXT_SRC2_VEC_PRI_REG), INIT_EXT_SRC2 );    sysPciWrite32( MPIC_ADDR(MPIC_EXT_SRC3_VEC_PRI_REG), INIT_EXT_SRC3 );    sysPciWrite32( MPIC_ADDR(MPIC_EXT_SRC4_VEC_PRI_REG), INIT_EXT_SRC4 );    sysPciWrite32( MPIC_ADDR(MPIC_EXT_SRC5_VEC_PRI_REG), INIT_EXT_SRC5 );    sysPciWrite32( MPIC_ADDR(MPIC_EXT_SRC6_VEC_PRI_REG), INIT_EXT_SRC6 );    sysPciWrite32( MPIC_ADDR(MPIC_EXT_SRC7_VEC_PRI_REG), INIT_EXT_SRC7 );    sysPciWrite32( MPIC_ADDR(MPIC_EXT_SRC8_VEC_PRI_REG), INIT_EXT_SRC8 );    sysPciWrite32( MPIC_ADDR(MPIC_EXT_SRC9_VEC_PRI_REG), INIT_EXT_SRC9 );    sysPciWrite32( MPIC_ADDR(MPIC_EXT_SRC10_VEC_PRI_REG), INIT_EXT_SRC10 );    sysPciWrite32( MPIC_ADDR(MPIC_EXT_SRC11_VEC_PRI_REG), INIT_EXT_SRC11 );    sysPciWrite32( MPIC_ADDR(MPIC_EXT_SRC12_VEC_PRI_REG), INIT_EXT_SRC12 );    sysPciWrite32( MPIC_ADDR(MPIC_EXT_SRC13_VEC_PRI_REG), INIT_EXT_SRC13 );    sysPciWrite32( MPIC_ADDR(MPIC_EXT_SRC14_VEC_PRI_REG), INIT_EXT_SRC14 );    sysPciWrite32( MPIC_ADDR(MPIC_EXT_SRC15_VEC_PRI_REG), INIT_EXT_SRC15 );    destReg = MPIC_EXT_SRC0_DEST_REG;    for (i=0; i<=15; i++)	{	sysPciWrite32( MPIC_ADDR(destReg), DESTINATION_CPU0 );	destReg += (REG_OFFSET*2);	}    /* setup the Ext source 0 reg (8259 input) for normal operation */    sysPciRead32( MPIC_ADDR(MPIC_EXT_SRC0_VEC_PRI_REG), &init.regVal );    init.regVal |= PIB_INT_VEC;    init.regVal &= (~INT_MASK_BIT);    sysPciWrite32( MPIC_ADDR(MPIC_EXT_SRC0_VEC_PRI_REG), init.regVal );    /* enable interrupts for this processor */    sysPciWrite32( MPIC_ADDR(MPIC_CPU0_CUR_TASK_PRI_REG), 1 );    /* setup the MPIC to process the 8259 interrupts ( mixed mode ) */    sysPciWrite32( MPIC_ADDR(MPIC_GLOBAL_CONFIG_REG), SET_MIXED_MODE );    return (OK);    }/******************************************************************************** sysMpicIntConnect - connect an interrupt handler to the system vector table** This function connects an interrupt handler to the system vector table.** RETURNS: OK/ERROR.*/ LOCAL STATUS sysMpicIntConnect    (     VOIDFUNCPTR *      vector,         /* interrupt vector to attach */     VOIDFUNCPTR        routine,        /* routine to be called */     int                parameter       /* parameter to be passed to routine */    )    {    INT_HANDLER_DESC * newHandler;    INT_HANDLER_DESC * currHandler;    LOCAL_INT_DATA     connect;    static BOOL	       firstTime = TRUE;    if (((int)vector < 0) || ((int)vector > 0xff))      /* Out of Range? */        return (ERROR);     if (firstTime)	{	/* connect the PIB to MPIC, before any other connections */	firstTime = FALSE;	sysIbcMpicConnect (); /* calls this rtn, recursively */	}    /* 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[(int) vector] == NULL)        sysIntTbl [(int ) vector] = newHandler; /* single int. handler case */    else        {        currHandler = sysIntTbl[(int) vector]; /* multiple int. handler case */        while (currHandler->next != NULL)            {            currHandler = currHandler->next;            }        currHandler->next = newHandler;        }    /*      * if the connect is for an MPIC interrupt,      * then store the vector into the appropriate MPIC vector register     */    connect.regAddr = getMpicVecOffset( (int)vector );    if ( connect.regAddr > 0 )        {        /* read the vector register */        sysPciRead32( MPIC_ADDR(connect.regAddr), &connect.regVal );        /* store the interrupt vector number */        connect.regVal |= (int)vector;        /* write the contents of the vector register back */        sysPciWrite32( MPIC_ADDR(connect.regAddr), connect.regVal );        }    return (OK);    } /********************************************************************************* sysMpicIntEnable - enable an Mpic interrupt level** This routine enables a specified Mpic interrupt level.** RETURNS: OK or ERROR if interrupt level not supported*/ LOCAL int sysMpicIntEnable    (    int intLevel        /* interrupt level to enable */    )    {    LOCAL_INT_DATA	enable;    /*     * if the int. level is not for ISA or MPIC, then it is not supported.     * If not supported, just return.     */    if ((intLevel < 0) || (intLevel > ERR_INTERRUPT_BASE))        return (ERROR);    /* If ISA interrupt level,call the IBC driver enable routine, */    if ( intLevel < EXT_INTERRUPT_BASE )        sysIbcIntEnable( intLevel );    enable.regAddr = getMpicVecOffset( intLevel );    if ( enable.regAddr > 0 )        {        /* read the vector register */        sysPciRead32( MPIC_ADDR(enable.regAddr), &enable.regVal );        /* enable the interrupt */        enable.regVal &= (~INT_MASK_BIT);        /* write the contents of the vector register back */        sysPciWrite32( MPIC_ADDR(enable.regAddr), enable.regVal );        }    return (OK);    }/********************************************************************************* sysMpicIntDisable - disable an Mpic interrupt level** This routine disables a specified Mpic interrupt level.** RETURNS: OK or ERROR if interrupt level not supported*/ LOCAL int sysMpicIntDisable    (    int intLevel        /* interrupt level to disable */    )    {    LOCAL_INT_DATA      disable;     /*     * if the int. level is not for ISA or MPIC, then it is not supported.     * If not supported, just return.     */    if ((intLevel < 0) || (intLevel > ERR_INTERRUPT_BASE))        return (ERROR);    /* If ISA interrupt level, call the IBC driver disable routine, */    if ( intLevel < EXT_INTERRUPT_BASE )        sysIbcIntDisable( intLevel );     /* else, it is an MPIC interrupt level */    else        {        /* get the vector reg. offset value */        disable.regAddr = getMpicVecOffset( intLevel );         if ( disable.regAddr > 0 )            {            /* read the vector register */            sysPciRead32( MPIC_ADDR(disable.regAddr), &disable.regVal );            /* disable the interrupt */            disable.regVal |= INT_MASK_BIT;            /* write the contents of the vector register back */            sysPciWrite32( MPIC_ADDR(disable.regAddr), disable.regVal );            }        }    return (OK);    }/******************************************************************************** sysMpicIntHandler - handle an interrupt received at the Mpic* * This routine will process interrupts received from PCI or ISA devices as* these interrupts arrive via the MPIC.  This routine supports MPIC interrupt* nesting.** RETURNS: N/A*/void sysMpicIntHandler (void)    {    INT_HANDLER_DESC *  currHandler;    UINT32		vecNum;    int			dontCare;    /* get the vector from the MPIC IACK reg. */    sysPciRead32 (MPIC_ADDR (MPIC_CPU0_IACK_REG), &vecNum);    vecNum &= VECTOR_MASK;    /* Ignore spurious interrupts */    if (vecNum == 0xFF)        {        logMsg ("MPIC Spurious Interrupt!\n", 0,0,0,0,0,0);        return;        }     /*     * Allow maskable interrupts to the CPU.  MPIC will hold off     * lower and equal interrupts until MPIC_EOI is performed.     */    CPU_INT_UNLOCK(_PPC_MSR_EE);

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩国产乱码电影| 国产日韩精品一区二区浪潮av| 99re热这里只有精品免费视频| 国产美女娇喘av呻吟久久| 美女诱惑一区二区| 精品伊人久久久久7777人| 蜜桃av一区二区| 久久99久久久久| 国内成+人亚洲+欧美+综合在线| 另类小说色综合网站| 韩国一区二区视频| 国产一区二区三区电影在线观看| 国产精品一区二区视频| 国产精品99久久不卡二区| 国产成人亚洲综合色影视| 国产91精品一区二区麻豆网站| 高清视频一区二区| 97se亚洲国产综合自在线不卡| 99久久综合精品| 在线日韩国产精品| 五月天一区二区| 老司机精品视频在线| 久久精品无码一区二区三区| 91精品国产免费| 国产一区二区女| 国产aⅴ综合色| 91丨九色丨蝌蚪丨老版| 欧美羞羞免费网站| 欧美一区二区三区在线视频| 精品嫩草影院久久| 国产精品久久久久久福利一牛影视 | 麻豆传媒一区二区三区| 国产激情偷乱视频一区二区三区| 成人精品一区二区三区中文字幕| 色哟哟日韩精品| 欧美一级日韩免费不卡| 国产清纯在线一区二区www| 中文字幕亚洲精品在线观看| 三级影片在线观看欧美日韩一区二区| 亚洲综合成人网| 亚洲综合色成人| 国产亚洲成年网址在线观看| 国产精品亲子伦对白| 天天做天天摸天天爽国产一区| 精一区二区三区| 色噜噜偷拍精品综合在线| 欧美一区二区三区婷婷月色| 久久精品一二三| 亚洲精品免费在线观看| 美国欧美日韩国产在线播放| 成人app网站| 91精品国产福利在线观看| 国产欧美日产一区| 五月天精品一区二区三区| 大桥未久av一区二区三区中文| 在线观看一区日韩| 国产午夜精品久久久久久免费视| 一区二区三区在线免费播放| 精品在线观看免费| 欧美在线看片a免费观看| 国产嫩草影院久久久久| 日日噜噜夜夜狠狠视频欧美人| 成人av午夜影院| 日韩欧美在线1卡| 亚洲综合激情另类小说区| 成人久久久精品乱码一区二区三区| 欧美日韩激情一区二区三区| 国产精品天美传媒| 麻豆精品视频在线观看免费| 在线观看亚洲精品视频| 国产精品入口麻豆九色| 国内欧美视频一区二区| 欧美日韩国产色站一区二区三区| 中文在线资源观看网站视频免费不卡| 日本中文字幕一区二区视频| 91成人免费网站| 中文字幕在线观看不卡视频| 国产在线精品免费| 欧美电视剧在线看免费| 亚洲最大色网站| 99精品一区二区三区| 日本一区二区三级电影在线观看| 麻豆精品国产传媒mv男同| 欧美日韩精品二区第二页| 亚洲欧美国产高清| 99在线精品观看| 国产精品麻豆久久久| 国产成人免费在线| 精品国产乱码久久久久久蜜臀 | 精品一区二区三区影院在线午夜 | 欧美在线不卡视频| 国产精品丝袜久久久久久app| 精品中文av资源站在线观看| 日韩欧美电影一二三| 青草国产精品久久久久久| 69av一区二区三区| 无码av中文一区二区三区桃花岛| 欧美日韩一卡二卡三卡| 亚洲成人三级小说| 欧美日韩一区二区三区四区五区| 亚洲人成电影网站色mp4| av在线播放成人| 亚洲女与黑人做爰| 色八戒一区二区三区| 亚洲欧美区自拍先锋| 在线看国产一区二区| 亚洲一级片在线观看| 欧美日韩色综合| 奇米色一区二区| 精品日韩成人av| 国产成人激情av| 亚洲婷婷在线视频| 色综合中文字幕国产 | 日本欧洲一区二区| 欧美va亚洲va在线观看蝴蝶网| 久久99国产精品免费网站| 久久免费看少妇高潮| 国产精品18久久久久久久网站| 国产人成亚洲第一网站在线播放 | 欧美日韩色一区| 免费人成黄页网站在线一区二区| 欧美mv日韩mv亚洲| 国内精品免费在线观看| 国产欧美日韩麻豆91| 色综合av在线| 日本怡春院一区二区| 精品欧美久久久| 成人av在线网站| 亚洲mv在线观看| 精品福利一区二区三区| 成人一区二区三区| 亚洲综合在线电影| 欧美一区二视频| 成人综合在线观看| 亚洲成人自拍偷拍| 精品粉嫩aⅴ一区二区三区四区| 国产不卡视频在线播放| 亚洲激情图片qvod| 91精品黄色片免费大全| 国产91对白在线观看九色| 亚洲激情图片qvod| 日韩精品一区二区三区四区 | 精品国精品自拍自在线| 成人免费视频视频| 午夜视频久久久久久| 国产日韩高清在线| 欧美日韩一区二区在线观看| 国产剧情一区二区三区| 一片黄亚洲嫩模| 亚洲精品一线二线三线| 色综合一个色综合| 久久国产精品露脸对白| 亚洲人成网站精品片在线观看 | 亚洲免费在线播放| 精品久久久久久久久久久久久久久| av成人老司机| 免费成人在线观看视频| 日韩毛片视频在线看| 日韩欧美国产精品一区| 91视频国产观看| 国内一区二区在线| 亚洲成av人片观看| 国产精品福利一区二区| 日韩小视频在线观看专区| 成人国产在线观看| 精品一区二区三区久久久| 一区二区三区美女视频| 久久精品一级爱片| 日韩一级片在线播放| 在线欧美一区二区| 粉嫩久久99精品久久久久久夜| 日本欧美加勒比视频| 亚洲视频在线一区二区| 欧美精品一区二区三区蜜桃| 欧美日韩三级一区| 91网站视频在线观看| 国产一区二区在线电影| 日本特黄久久久高潮| 亚洲午夜久久久久中文字幕久| 中文字幕国产一区二区| 精品久久久久一区| 欧美日韩久久久一区| 91久久精品一区二区三区| av不卡在线播放| 国产激情偷乱视频一区二区三区| 麻豆精品在线看| 男人操女人的视频在线观看欧美| 亚洲高清视频的网址| 亚洲色图.com| 国产精品大尺度| 国产拍欧美日韩视频二区| 亚洲欧洲三级电影| 中文字幕精品一区二区精品绿巨人 | 国模少妇一区二区三区| 五月天国产精品| 一区二区三区蜜桃| 亚洲美女屁股眼交| 国产精品不卡在线观看| 亚洲国产精品99久久久久久久久 | 一区二区三区四区不卡在线|