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

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

?? intarchlib.c

?? vxworks的源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
    {    FAST UCHAR *pCode;		/* pointer to newly synthesized code */    FAST int ix;    pCode = (UCHAR *)memalign (_CACHE_ALIGN_SIZE, sizeof (intConnectCode));    if (pCode != NULL)	{	/* copy intConnectCode into new code area */	bcopy ((char *)intConnectCode, (char *)pCode, sizeof (intConnectCode));	/* set the addresses & instructions */	*(int *)&pCode[ICC_INT_ENT] = (int)intEnt - 				      (int)&pCode[ICC_INT_ENT + 4];	if (routineBoi == NULL)			/* BOI routine */	    {	    for (ix = 0; ix < 10; ix++)		pCode[ICC_BOI_PUSH + ix] = 0x90;	/* replace by NOP */	    pCode[ICC_ADD_N] = 8;			/* pop two params */	    }	else	    {	    *(int *)&pCode[ICC_BOI_PARAM] = (int)parameterBoi;	    *(int *)&pCode[ICC_BOI_ROUTN] = (int)routineBoi - 					    (int)&pCode[ICC_BOI_ROUTN + 4];	    }	*(int *)&pCode[ICC_INT_PARAM] = (int)parameter;	*(int *)&pCode[ICC_INT_ROUTN] = (int)routine - 					(int)&pCode[ICC_INT_ROUTN + 4];	if (routineEoi == NULL)			/* EOI routine */	    {	    for (ix = 0; ix < 5; ix++)		pCode[ICC_EOI_CALL + ix] = 0x90;	/* replace by NOP */	    }	else	    {	    *(int *)&pCode[ICC_EOI_PARAM] = (int)parameterEoi;	    *(int *)&pCode[ICC_EOI_ROUTN] = (int)routineEoi - 					    (int)&pCode[ICC_EOI_ROUTN + 4];	    }	*(int *)&pCode[ICC_INT_EXIT] = (int)intExit - 				       (int)&pCode[ICC_INT_EXIT + 4];	}    CACHE_TEXT_UPDATE ((void *) pCode, sizeof (intConnectCode));    return ((FUNCPTR)(int)pCode);    }/********************************************************************************* intLockLevelSet - set the current interrupt lock-out level** This routine sets the current interrupt lock-out level and stores it* in the globally accessible variable `intLockMask'.  The specified* interrupt level is masked when interrupts are locked by* intLock().  The default lock-out level (1 for I80x86 processors)* is initially set by kernelInit() when VxWorks is initialized.* * RETURNS: N/A*/void intLockLevelSet    (    int newLevel		/* new interrupt level */    )    {    intLockMask    = newLevel;    }/********************************************************************************* intLockLevelGet - get the current interrupt lock-out level* * This routine returns the current interrupt lock-out level, which is* set by intLockLevelSet() and stored in the globally accessible* variable `intLockMask'.  This is the interrupt level currently* masked when interrupts are locked out by intLock().  The default* lock-out level is 1 for I80x86 processors, and is initially set by* kernelInit() when VxWorks is initialized.** RETURNS:* The interrupt level currently stored in the interrupt lock-out mask.*/int intLockLevelGet (void)    {    return ((int)(intLockMask));    }/********************************************************************************* intVecBaseSet - set the vector base address** This routine sets the vector base address.  The CPU's vector base register* is set to the specified value, and subsequent calls to intVecGet() or* intVecSet() will use this base address.  The vector base address is* initially 0, until modified by calls to this routine.** RETURNS: N/A** SEE ALSO: intVecBaseGet(), intVecGet(), intVecSet()*/void intVecBaseSet    (    FUNCPTR *baseAddr	    /* new vector base address */    )    {    char idt[6];		/* interrupt descriptor table register */    char *p = idt;    intVecBase = baseAddr;	/* keep the base address in a static variable */    *(short *)p = 0x07ff;		/* IDT limit */    *(int *)(p + 2) = (int)baseAddr;	/* IDT base address */    intVBRSet ((FUNCPTR *)idt);		/* set the actual IDT register */    CACHE_TEXT_UPDATE ((void *)baseAddr, 256 * 8);    }/********************************************************************************* intVecBaseGet - get the vector base address** This routine returns the current vector base address, which is set* with intVecBaseSet().** RETURNS: The current vector base address.** SEE ALSO: intVecBaseSet()*/FUNCPTR *intVecBaseGet (void)    {    return (intVecBase);    }/******************************************************************************** intVecSet - set a CPU vector** This routine attaches an exception/interrupt handler to a specified vector.* The vector is specified as an offset into the CPU's vector table.  This* vector table starts, by default, at address 0.  * However, the vector table may be set to start at any address with* intVecBaseSet().  The vector table is set up in usrInit().** RETURNS: N/A** SEE ALSO: intVecBaseSet(), intVecGet(), intVecGet2(), intVecSet2()*/void intVecSet    (    FUNCPTR *vector,		/* vector offset              */    FUNCPTR function		/* address to place in vector */    )    {    FUNCPTR *	newVector;    UINT	state;    BOOL	writeProtected = FALSE;    int		pageSize = 0;    char *	pageAddr = 0;    if (intVecSetEnt != NULL)				/* entry hook */	(* intVecSetEnt) (vector, function);    /* vector is offset by the vector base address */    newVector = (FUNCPTR *) ((int) vector + (int) intVecBaseGet ());    /* see if we need to write enable the memory */    if (vmLibInfo.vmLibInstalled)	{	pageSize = VM_PAGE_SIZE_GET();	pageAddr = (char *) ((UINT) newVector / pageSize * pageSize);	if (VM_STATE_GET (NULL, (void *) pageAddr, &state) != ERROR)	    if ((state & VM_STATE_MASK_WRITABLE) == VM_STATE_WRITABLE_NOT)		{		writeProtected = TRUE;		VM_STATE_SET (NULL, pageAddr, pageSize, VM_STATE_MASK_WRITABLE,			      VM_STATE_WRITABLE);		}	}    *(int *)newVector = (sysCsInt << 16) | ((int)function & 0xffff);    *((short *)newVector + 3) = (short)(((int)function & 0xffff0000) >> 16);    if (writeProtected)	{	VM_STATE_SET (NULL, pageAddr, pageSize, 		      VM_STATE_MASK_WRITABLE, VM_STATE_WRITABLE_NOT);	}    if (intVecSetExit != NULL)				/* exit hook */	(* intVecSetExit) (vector, function);    CACHE_TEXT_UPDATE ((void *)newVector, 8);    }/******************************************************************************** intVecSet2 - set a CPU vector, gate type(int/trap), and selector (x86)** This routine attaches an exception handler to a specified vector,* with the type of the gate and the selector of the gate.  * The vector is specified as an offset into the CPU's vector table.  This* vector table starts, by default, at address 0.  * However, the vector table may be set to start at any address with* intVecBaseSet().  The vector table is set up in usrInit().** RETURNS: N/A** SEE ALSO: intVecBaseSet(), intVecGet(), intVecSet(), intVecGet2()*/void intVecSet2    (    FUNCPTR * vector,		/* vector offset              */    FUNCPTR function,		/* address to place in vector */    int idtGate,		/* IDT_TRAP_GATE or IDT_INT_GATE */    int idtSelector		/* sysCsExc or sysCsInt */    )    {    FUNCPTR *	newVector;    UINT	state;    BOOL	writeProtected = FALSE;    int		pageSize = 0;    char *	pageAddr = 0;    if (intVecSetEnt != NULL)				/* entry hook */	(* intVecSetEnt) (vector, function);    /* vector is offset by the vector base address */    newVector = (FUNCPTR *) ((int) vector + (int) intVecBaseGet ());    /* see if we need to write enable the memory */    if (vmLibInfo.vmLibInstalled)	{	pageSize = VM_PAGE_SIZE_GET();	pageAddr = (char *) ((UINT) newVector / pageSize * pageSize);	if (VM_STATE_GET (NULL, (void *) pageAddr, &state) != ERROR)	    if ((state & VM_STATE_MASK_WRITABLE) == VM_STATE_WRITABLE_NOT)		{		writeProtected = TRUE;		VM_STATE_SET (NULL, pageAddr, pageSize, VM_STATE_MASK_WRITABLE,			      VM_STATE_WRITABLE);		}	}    *(int *)newVector = (idtSelector << 16) | ((int)function & 0x0000ffff);    *((int *)newVector + 1) = ((int)function & 0xffff0000) | idtGate;    if (writeProtected)	{	VM_STATE_SET (NULL, pageAddr, pageSize, 		      VM_STATE_MASK_WRITABLE, VM_STATE_WRITABLE_NOT);	}    if (intVecSetExit != NULL)				/* exit hook */	(* intVecSetExit) (vector, function);    CACHE_TEXT_UPDATE ((void *)newVector, 8);    }/********************************************************************************* intVecGet - get an interrupt vector** This routine returns a pointer to the exception/interrupt handler attached* to a specified vector.  The vector is specified as an offset into the CPU's* vector table.  This vector table starts, by default, at address 0.* However, the vector table may be set to start at any address with* intVecBaseSet().** RETURNS:* A pointer to the exception/interrupt handler attached to the specified vector.** SEE ALSO: intVecSet(), intVecBaseSet(), intVecGet2(), intVecSet2()*/FUNCPTR intVecGet    (    FUNCPTR *vector	/* vector offset */    )    {    FUNCPTR *newVector;    /* vector is offset by vector base address */    newVector = (FUNCPTR *) ((int) vector + (int) intVecBaseGet ());    return ((FUNCPTR)(((int)*(newVector + 1) & 0xffff0000) | 			 ((int)*newVector & 0x0000ffff)));    }/******************************************************************************** intVecGet2 - get a CPU vector, gate type(int/trap), and gate selector (x86)** This routine gets a pointer to the exception/interrupt handler attached* to a specified vector, the type of the gate, the selector of the gate.  * The vector is specified as an offset into the CPU's vector table.  * This vector table starts, by default, at address 0.* However, the vector table may be set to start at any address with* intVecBaseSet().** RETURNS: N/A** SEE ALSO: intVecBaseSet(), intVecGet(), intVecSet(), intVecSet2()*/void intVecGet2    (    FUNCPTR * vector,		/* vector offset              */    FUNCPTR * pFunction,	/* address to place in vector */    int *     pIdtGate,		/* IDT_TRAP_GATE or IDT_INT_GATE */    int *     pIdtSelector	/* sysCsExc or sysCsInt */    )    {    FUNCPTR *newVector;    /* vector is offset by vector base address */    newVector = (FUNCPTR *) ((int) vector + (int) intVecBaseGet ());    /* get a pointer to the handler */    *pFunction = ((FUNCPTR)(((int)*(newVector + 1) & 0xffff0000) | 			    ((int)*newVector & 0x0000ffff)));    /* get a gate selector */    *pIdtSelector = ((int)*newVector >> 16) & 0x0000ffff;    /* get a gate type (int/trap) */    *pIdtGate = (int)*(newVector + 1) & 0x0000ffff;    }/********************************************************************************* intVecTableWriteProtect - write protect exception vector table** If the unbundled Memory Management Unit (MMU) support package (VxVMI) is* present, this routine write-protects the exception vector table to* protect it from being accidentally corrupted.* * Note that other data structures contained in the page will also be* write-protected.  In the default VxWorks configuration, the exception vector* table is located at location 0 in memory.  Write-protecting this affects* the backplane anchor, boot configuration information, and potentially the* text segment (assuming the default text location of 0x1000.)  All code* that manipulates these structures has been modified to write-enable the* memory for the duration of the operation.  If you select a different* address for the exception vector table, be sure it resides in a page* separate from other writable data structures.* * RETURNS: OK, or ERROR if unable to write protect memory.** ERRNO: S_intLib_VEC_TABLE_WP_UNAVAILABLE*/STATUS intVecTableWriteProtect    (    void    )    {    int pageSize;    UINT vectorPage;    if (!vmLibInfo.vmLibInstalled)	{	errno = S_intLib_VEC_TABLE_WP_UNAVAILABLE;	return (ERROR);	}    pageSize = VM_PAGE_SIZE_GET();    vectorPage = (UINT) intVecBaseGet () / pageSize * pageSize;    return (VM_STATE_SET (0, (void *) vectorPage, pageSize, 			  VM_STATE_MASK_WRITABLE, VM_STATE_WRITABLE_NOT));    }/******************************************************************************** intRegsLock - modify a REG_SET to have interrupts locked.*/int intRegsLock    (    REG_SET *pRegs                      /* register set to modify */    )    {    int oldFlags = pRegs->eflags;    pRegs->eflags &= ~INT_FLAG;    return (oldFlags);    }/******************************************************************************** intRegsUnlock - restore an REG_SET's interrupt lockout level.*/void intRegsUnlock    (    REG_SET *   pRegs,                  /* register set to modify */    int         oldFlags                /* int lock level to restore */    )    {    pRegs->eflags &= ~INT_FLAG;    pRegs->eflags |= (oldFlags & INT_FLAG);    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
aaa国产一区| 国产黄人亚洲片| 欧美精品xxxxbbbb| 午夜精品福利在线| 日韩精品在线网站| 丰满少妇久久久久久久| 伊人性伊人情综合网| 欧美在线观看一二区| 日韩国产在线观看| 国产日韩亚洲欧美综合| 91丨国产丨九色丨pron| 亚洲成a人v欧美综合天堂| 欧美大胆一级视频| 国产宾馆实践打屁股91| 亚洲综合一区二区三区| 欧美电影免费观看完整版| 福利视频网站一区二区三区| 一区二区三区四区视频精品免费| 欧美疯狂做受xxxx富婆| 国产精品一区二区在线观看不卡| 亚洲男人的天堂一区二区| 67194成人在线观看| 国产精品综合网| 亚洲一区二区三区在线| 亚洲精品一区二区三区福利| 色偷偷一区二区三区| 久久国产成人午夜av影院| 亚洲视频综合在线| 精品国产制服丝袜高跟| 色久优优欧美色久优优| 国内精品久久久久影院一蜜桃| 综合在线观看色| 精品国产123| 欧美特级限制片免费在线观看| 国产一区在线不卡| 日韩影院在线观看| 亚洲色图丝袜美腿| 久久综合一区二区| 欧美日韩精品一二三区| 波多野洁衣一区| 老司机免费视频一区二区三区| 一区二区三区在线不卡| 久久九九影视网| 91精选在线观看| 欧美性色黄大片手机版| 国产69精品久久777的优势| 奇米精品一区二区三区在线观看 | 国产成人av一区二区| 首页国产欧美久久| 一个色综合网站| 国产精品日日摸夜夜摸av| 日韩免费高清av| 欧美视频三区在线播放| 99精品一区二区三区| 国产99一区视频免费| 久久精品久久综合| 青青国产91久久久久久| 午夜视频在线观看一区二区三区| 成人免费小视频| 国产精品无遮挡| 国产欧美一区二区精品性| 欧美r级电影在线观看| 91精品国产高清一区二区三区蜜臀| 色哟哟一区二区| 色视频成人在线观看免| 日本韩国一区二区| 色综合久久综合网97色综合| 99久久免费国产| 99精品在线观看视频| 99久久国产综合精品麻豆| av中文字幕在线不卡| 99精品视频在线观看| 91影院在线观看| 色综合久久88色综合天天| 色哟哟在线观看一区二区三区| 色狠狠色狠狠综合| 欧美三级在线播放| 欧美精品在欧美一区二区少妇| 3d动漫精品啪啪| 精品免费一区二区三区| 久久久久久影视| 国产精品区一区二区三区| 欧美精品乱码久久久久久| 久久久国产午夜精品 | 亚洲国产日韩av| 亚洲精品视频自拍| 亚洲成人精品一区二区| 视频一区在线视频| 麻豆91免费看| 日韩专区一卡二卡| 久久成人精品无人区| 国产精品99久久久久久有的能看| 国产精品正在播放| 99re视频精品| 欧美日韩中文字幕一区二区| 欧美一区二区三区四区视频| 日韩欧美中文字幕公布| 欧美激情在线一区二区| 亚洲精品自拍动漫在线| 偷拍亚洲欧洲综合| 国产真实乱对白精彩久久| 懂色av中文字幕一区二区三区| caoporn国产精品| 色网综合在线观看| 欧美乱熟臀69xxxxxx| 久久久影院官网| 亚洲精品ww久久久久久p站| 蜜臀av在线播放一区二区三区| 国产一区二区h| 在线观看国产日韩| 久久久亚洲综合| 亚洲精品视频在线| 九九九久久久精品| 日本精品视频一区二区三区| 精品国产免费久久 | 亚洲午夜在线视频| 久久精品国产精品亚洲精品| 97精品电影院| 精品免费国产二区三区 | 亚洲色图制服丝袜| 卡一卡二国产精品| 中文字幕精品一区二区精品绿巨人| 国产精品三级视频| 日韩影视精彩在线| 播五月开心婷婷综合| 欧美一级高清片在线观看| 日韩码欧中文字| 激情综合色播五月| 欧美婷婷六月丁香综合色| 久久九九全国免费| 免费高清视频精品| 欧美午夜寂寞影院| 国产精品美女一区二区三区| 日韩国产精品91| 欧美图区在线视频| 国产精品欧美久久久久无广告| 青草国产精品久久久久久| 色一情一乱一乱一91av| 国产免费成人在线视频| 天堂影院一区二区| 在线日韩一区二区| 中文字幕在线不卡视频| 国产二区国产一区在线观看| 欧美大片一区二区| 五月天一区二区三区| 91高清视频免费看| 亚洲视频精选在线| 成人h版在线观看| 欧美经典三级视频一区二区三区| 美女视频黄a大片欧美| 91精品国产综合久久精品图片| 最新欧美精品一区二区三区| 国产一区二区三区不卡在线观看 | 国产成人精品免费| 日韩精品在线看片z| 免费看欧美美女黄的网站| 欧美美女视频在线观看| 亚洲午夜久久久| 欧美亚洲日本一区| 亚洲激情av在线| 欧美性videosxxxxx| 亚洲主播在线播放| 在线免费观看日本一区| 一区二区三区四区在线| 欧美亚洲国产一区二区三区va| 一区二区三区四区在线免费观看| 99re成人精品视频| 夜夜揉揉日日人人青青一国产精品 | 麻豆国产精品777777在线| 欧美久久久久久久久| 日韩精品电影一区亚洲| 欧美一区二区三区喷汁尤物| 奇米综合一区二区三区精品视频 | 欧美久久久久久久久| 日韩不卡手机在线v区| 日韩欧美一二区| 国产麻豆成人传媒免费观看| 久久精品一区二区三区不卡| 粉嫩嫩av羞羞动漫久久久 | 国产欧美精品一区二区三区四区| 国产成人精品三级| 日韩美女视频19| 欧美日韩在线播放三区四区| 香蕉久久一区二区不卡无毒影院 | 成年人国产精品| 一区二区三区中文字幕在线观看| 欧美在线啊v一区| 日韩精品一级二级| 26uuu亚洲综合色欧美| 国产成人自拍高清视频在线免费播放| 国产日韩高清在线| 欧美做爰猛烈大尺度电影无法无天| 亚洲福利国产精品| 久久久久久免费网| 91丨九色丨国产丨porny| 日韩主播视频在线| 中文字幕的久久| 欧美撒尿777hd撒尿| 国产麻豆91精品| 亚洲制服丝袜在线|