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

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

?? excarchlib.c

?? vxwork源代碼
?? C
字號:
/* excArchLib.c - i80X86 exception handling facilities *//* Copyright 1984-2001 Wind River Systems, Inc. */#include "copyright_wrs.h"/*modification history--------------------01j,20nov01,hdn  doc clean up for 5.501i,28aug01,hdn  added Pentium4/SSE/SSE2/MCE support		 added esp, ss, esp0, cr[23], esp0[07] to EXC_INFO.		 added "error" parameter to exc{Exc,Int}Handle.01h,29jul96,sbs  Made windview conditionally compile.01g,15nov94,hdn  WindView instrumetation.01f,01nov94,hdn  added X86CPU_PENTIUM of sysProcessor.01e,29may94,hdn  changed I80486 to sysProcessor.01d,14nov93,hdn  deleted excExcepHook.01c,03jun93,hdn  updated to 5.1                  -changed functions to ansi style		  -changed includes to have absolute path from h/		  -fixed #else and #endif		  -changed READ, WRITE and UPDATE to O_RDONLY O_WRONLY O_RDWR		  -changed VOID to void		  -changed copyright notice01b,26mar93,hdn  supported 486's exception, alignment check.01a,28feb92,hdn  written based on TRON, 68k version.*//*This module contains I80X86 architecture dependent portions of theexception handling facilities.  See excLib for the portions that arearchitecture independent.SEE ALSO: dbgLib, sigLib, intLib, "Debugging"*/#include "vxWorks.h"#include "esf.h"#include "iv.h"#include "sysLib.h"#include "intLib.h"#include "taskLib.h"#include "qLib.h"#include "errno.h"#include "string.h"#include "vxLib.h"#include "logLib.h"#include "rebootLib.h"#include "private/funcBindP.h"#include "private/kernelLibP.h"#include "private/taskLibP.h"#include "private/sigLibP.h"/* externals */IMPORT UINT	sysProcessor;           /* 0=386, 1=486, 2=P5, 4=P6, 5=P7 */IMPORT char	excCallTbl [];		/* table of Calls in excALib.s */IMPORT UINT	sysIntIdtType;		/* interrupt or trap gate */IMPORT CPUID	sysCpuId;		/* CPUID features */IMPORT int	sysCsInt;		/* CS for interrupt */IMPORT int	sysCsExc;		/* CS for exception *//* globals *//* locals *//* forward declarations */LOCAL void	excGetInfoFromESF (int vecNum, ESF0 * pEsf, REG_SET * pRegs,			      	   EXC_INFO * pExcInfo, BOOL error);LOCAL BOOL	programError (int vecNum);/********************************************************************************* excVecInit - initialize the exception/interrupt vectors** This routine sets all exception vectors to point to the appropriate* default exception handlers.  These handlers will safely trap and report* exceptions caused by program errors or unexpected hardware interrupts.* All vectors from vector 0 (address 0x0000) to 255 (address 0x07f8) are* initialized.** WHEN TO CALL* This routine is usually called from the system start-up routine* usrInit() in usrConfig, before interrupts are enabled.** RETURNS: OK (always).*/STATUS excVecInit (void)    {    FAST int vecNum;    /*      * make all exception vectors point to either generic exception or     * interrupt trap handler     */    for (vecNum = LOW_VEC; vecNum <= HIGH_VEC; ++vecNum)	{	intVecSet2 ((FUNCPTR *)INUM_TO_IVEC (vecNum),		    (FUNCPTR) &excCallTbl[vecNum * 5],		    programError (vecNum) ? IDT_TRAP_GATE : sysIntIdtType,		    programError (vecNum) ? sysCsExc : sysCsInt);	}    /* enable the Machine Check exception if it is supported */    if (sysCpuId.featuresEdx & CPUID_MCE)	vxCr4Set (vxCr4Get () | CR4_MCE);    /* enable the SSE or SSE+SSE2 if it is supported */    if ((sysCpuId.featuresEdx & CPUID_SSE) ||        (sysCpuId.featuresEdx & CPUID_SSE2))	vxCr4Set (vxCr4Get () | CR4_OSXMMEXCEPT);    return (OK);    }/********************************************************************************* excExcHandle - interrupt level handling of exceptions** This routine handles exception traps.  It is never to be called except* from the special assembly language interrupt stub routine.** It prints out a bunch of pertinent information about the trap that* occurred via excTask.** Note that this routine runs in the context of the task that got the exception.** NOMANUAL*/void excExcHandle    (    int		vecNum,	/* exception vector number */    ESF0 *	pEsf,	/* pointer to exception stack frame */    REG_SET *	pRegs,	/* pointer to register info on stack */    BOOL	error	/* TRUE if ESF has error-code */    )    {    EXC_INFO excInfo;    /* fill excInfo/pRegs */    excGetInfoFromESF (vecNum, pEsf, pRegs, &excInfo, error);    if ((_func_excBaseHook != NULL) && 			/* user hook around? */	((* _func_excBaseHook) (vecNum, pEsf, pRegs, &excInfo)))	return;						/* user hook fixed it */#ifdef WV_INSTRUMENTATION    /* windview - level 3 event logging */    EVT_CTX_1(EVENT_EXCEPTION, vecNum);#endif  /* WV_INSTRUMENTATION */    /* if exception occured in an isr or before multi tasking then reboot */    if ((INT_CONTEXT ()) || (Q_FIRST (&activeQHead) == NULL))	{	if (_func_excPanicHook != NULL)			/* panic hook? */	    (*_func_excPanicHook) (vecNum, pEsf, pRegs, &excInfo);	reboot (BOOT_WARM_AUTOBOOT);	return;						/* reboot returns?! */	}    /* task caused exception */    taskIdCurrent->pExcRegSet = pRegs;			/* for taskRegs[GS]et */    taskIdDefault ((int)taskIdCurrent);			/* update default tid */    bcopy ((char *) &excInfo, (char *) &(taskIdCurrent->excInfo),	   sizeof (EXC_INFO));				/* copy in exc info */    if (_func_sigExcKill != NULL)			/* signals installed? */	(*_func_sigExcKill) (vecNum, INUM_TO_IVEC(vecNum), pRegs);    if (_func_excInfoShow != NULL)			/* default show rtn? */	(*_func_excInfoShow) (&excInfo, TRUE);    if (excExcepHook != NULL)				/* 5.0.2 hook? */        (* excExcepHook) (taskIdCurrent, vecNum, pEsf);    taskSuspend (0);					/* whoa partner... */    taskIdCurrent->pExcRegSet = (REG_SET *) NULL;	/* invalid after rts */    }/********************************************************************************* excIntHandle - interrupt level handling of interrupts** This routine handles interrupts.  It is never to be called except* from the special assembly language interrupt stub routine.** It prints out a bunch of pertinent information about the trap that* occurred via excTask().** NOMANUAL*/void excIntHandle    (    int		vecNum,	/* exception vector number */    ESF0 *	pEsf,	/* pointer to exception stack frame */    REG_SET *	pRegs,	/* pointer to register info on stack */    BOOL	error	/* TRUE if ESF has error-code */    )    {    EXC_INFO excInfo;    /* fill excInfo/pRegs */    excGetInfoFromESF (vecNum, pEsf, pRegs, &excInfo, error);#ifdef WV_INSTRUMENTATION    /* windview - level 3 event logging */    EVT_CTX_1(EVENT_EXCEPTION, vecNum);#endif  /* WV_INSTRUMENTATION */    if (_func_excIntHook != NULL)	(*_func_excIntHook) (vecNum, pEsf, pRegs, &excInfo);    if (Q_FIRST (&activeQHead) == NULL)			/* pre kernel */	reboot (BOOT_WARM_AUTOBOOT);			/* better reboot */    }/******************************************************************************* excGetInfoFromESF - get relevent info from exception stack frame**/LOCAL void excGetInfoFromESF    (    int 	vecNum,		/* vector number */    ESF0 *	pEsf,		/* pointer to exception stack frame */    REG_SET *	pRegs,		/* pointer to register info on stack */    EXC_INFO *	pExcInfo,	/* where to fill in exception info */    BOOL	errorCode	/* TRUE if ESF has errorCode */    )    {    int size;    pExcInfo->valid  = EXC_VEC_NUM;		/* vecNum is valid */    pExcInfo->vecNum = vecNum;			/* set vecNum */    /* find out a type of ESF with errorCode and CS in ESF */    if (errorCode)	{	/* it happened in supervisor mode, type is ESF1, PL not changed */	pExcInfo->valid	 |= EXC_ERROR_CODE;	pExcInfo->errCode = ((ESF1 *)pEsf)->errCode;	pExcInfo->pc	  = ((ESF1 *)pEsf)->pc;	pExcInfo->cs	  = ((ESF1 *)pEsf)->cs;	pExcInfo->eflags  = ((ESF1 *)pEsf)->eflags;	size              = ESF1_NBYTES;	}    else	{	/* it happened in supervisor mode, type is ESF0, PL not changed */	pExcInfo->pc	  = ((ESF0 *)pEsf)->pc;	pExcInfo->cs	  = ((ESF0 *)pEsf)->cs;	pExcInfo->eflags  = ((ESF0 *)pEsf)->eflags;	size              = ESF0_NBYTES;	}    if (vecNum == IN_PAGE_FAULT)	{	pExcInfo->valid	|= EXC_CR2;	pExcInfo->cr2 = vxCr2Get ();		/* get CR2 that is PF addr */	}    pExcInfo->cr3 = vxCr3Get ();		/* get CR3 */    pExcInfo->esp0 = (UINT32)pEsf + size;	/* get ESP before exception */    /* adjust the stack pointer ESP in REG_SET */    pRegs->spReg = (ULONG)((char *) pEsf + size);    /* get content of the supervisor stack: 8 long words */    pExcInfo->esp00 = *(UINT32 *)pExcInfo->esp0;    pExcInfo->esp01 = *((UINT32 *)pExcInfo->esp0 + 1);    pExcInfo->esp02 = *((UINT32 *)pExcInfo->esp0 + 2);    pExcInfo->esp03 = *((UINT32 *)pExcInfo->esp0 + 3);    pExcInfo->esp04 = *((UINT32 *)pExcInfo->esp0 + 4);    pExcInfo->esp05 = *((UINT32 *)pExcInfo->esp0 + 5);    pExcInfo->esp06 = *((UINT32 *)pExcInfo->esp0 + 6);    pExcInfo->esp07 = *((UINT32 *)pExcInfo->esp0 + 7);    }/********************************************************************************* programError - determine if exception is program error** RETURNS:*   TRUE if exception indicates program error,*   FALSE if hardware interrupt or failure.*/LOCAL BOOL programError    (    int vecNum		/* exception vector number */    )    {    if (sysProcessor != X86CPU_386)	/* is the CPU 486 or Upper ? */        {	if ((sysCpuId.featuresEdx & CPUID_SSE) ||	    (sysCpuId.featuresEdx & CPUID_SSE2))            return (vecNum <= IN_SIMD);	else            return (vecNum <= IN_MACHINE_CHECK);        }    else        return (vecNum <= IN_CP_ERROR);    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人高清视频在线| 一区二区三区精品在线观看| 久热成人在线视频| 制服丝袜亚洲精品中文字幕| 日本中文在线一区| 日韩午夜激情视频| 国内精品第一页| 中文字幕av在线一区二区三区| 成人精品视频一区二区三区 | 久久久av毛片精品| 国产精品99久久久| 日韩美女久久久| 欧美系列在线观看| 毛片av一区二区| 国产午夜精品在线观看| 日本二三区不卡| 日韩精品电影一区亚洲| 久久久综合精品| 99久久精品99国产精品| 午夜欧美大尺度福利影院在线看| 欧美一区永久视频免费观看| 国产精品综合一区二区| 一区二区三区四区在线| 日韩视频国产视频| 99久久99久久精品免费看蜜桃 | 欧美视频完全免费看| 久草中文综合在线| 亚洲免费观看在线观看| 日韩欧美亚洲国产精品字幕久久久 | 久久九九国产精品| 日本韩国视频一区二区| 国产在线播放一区二区三区| 亚洲精品中文在线| 久久综合九色综合97_久久久| 欧美高清www午色夜在线视频| 经典三级一区二区| 樱花草国产18久久久久| 亚洲精品一区二区精华| 91久久国产综合久久| 国产精品中文字幕日韩精品 | 五月激情丁香一区二区三区| 日本一区二区综合亚洲| 欧美一级二级三级蜜桃| 91久久久免费一区二区| 丁香五精品蜜臀久久久久99网站 | 欧美精品九九99久久| 国产成人精品一区二区三区四区| 无吗不卡中文字幕| 亚洲乱码中文字幕| 久久网站热最新地址| 欧美精选一区二区| 色网站国产精品| 成人h版在线观看| 狠狠网亚洲精品| 日韩在线观看一区二区| 一区二区成人在线视频| 国产精品毛片久久久久久久| 久久亚洲精品小早川怜子| 欧美一区二区观看视频| 欧美人狂配大交3d怪物一区| 欧美中文字幕不卡| 91久久精品日日躁夜夜躁欧美| 成人app软件下载大全免费| 国产精品综合久久| 国产精品综合二区| 国产电影精品久久禁18| 国产裸体歌舞团一区二区| 久久精品国产久精国产爱| 日韩高清电影一区| 日本欧美肥老太交大片| 亚洲不卡在线观看| 亚洲国产成人91porn| 亚洲小少妇裸体bbw| 一区二区三区在线影院| 亚洲国产综合色| 亚洲国产你懂的| 午夜私人影院久久久久| 日韩中文欧美在线| 日韩av高清在线观看| 美女国产一区二区| 国产一区二区在线电影| 国产精品1区2区3区在线观看| 国产露脸91国语对白| 成人性生交大片免费看中文网站| 国产91丝袜在线播放| kk眼镜猥琐国模调教系列一区二区| 成人黄色777网| 91麻豆福利精品推荐| 色999日韩国产欧美一区二区| 色妞www精品视频| 欧美日韩一级黄| 日韩欧美专区在线| 久久九九99视频| 亚洲欧美国产高清| 丝袜美腿亚洲一区| 激情深爱一区二区| 成人av手机在线观看| 欧美在线播放高清精品| 欧美一级久久久久久久大片| 日韩欧美www| 中文字幕成人在线观看| 亚洲成va人在线观看| 国产综合色在线| 色老综合老女人久久久| 91精品国产一区二区三区蜜臀 | 中文字幕第一区| 一区二区三区四区视频精品免费| 无码av免费一区二区三区试看 | 日韩欧美美女一区二区三区| 精品久久久影院| 日韩一区欧美一区| 图片区小说区国产精品视频| 国产一区在线视频| 91福利社在线观看| 精品av综合导航| 亚洲视频网在线直播| 蜜桃传媒麻豆第一区在线观看| 国产不卡在线视频| 欧美日韩久久一区二区| 久久人人97超碰com| 一区二区在线观看免费| 久久不见久久见免费视频7| 色综合色狠狠综合色| 精品999久久久| 亚洲第四色夜色| 成人美女视频在线观看| 欧美tickling挠脚心丨vk| 最新高清无码专区| 韩国一区二区三区| 欧美日韩国产另类一区| 精品国产网站在线观看| 亚洲福利视频一区| www.66久久| 欧美精品一区二区高清在线观看| 亚洲综合视频在线| 成人永久aaa| 精品久久免费看| 日韩精品91亚洲二区在线观看| 99久久综合狠狠综合久久| 精品成人一区二区| 轻轻草成人在线| 色综合久久中文字幕综合网| 久久久蜜臀国产一区二区| 蜜臀久久99精品久久久久宅男| 色天使色偷偷av一区二区| 国产日本亚洲高清| 国产在线一区二区综合免费视频| 欧美日韩免费一区二区三区| 亚洲欧美激情插| 成人黄色av电影| 亚洲国产成人私人影院tom| 紧缚奴在线一区二区三区| 337p亚洲精品色噜噜噜| 亚洲高清一区二区三区| 日韩一区二区免费高清| 午夜伊人狠狠久久| 欧美亚洲一区二区在线观看| 亚洲男同性恋视频| 99久久er热在这里只有精品15| 日本一区二区高清| 成人av网站大全| 国产色爱av资源综合区| 国产一区视频导航| 2023国产一二三区日本精品2022| 久久精品国产精品青草| 日韩久久久精品| 看电影不卡的网站| 日韩精品一区二区三区在线 | 国产一区高清在线| 26uuu另类欧美| 国产99精品国产| 欧美激情自拍偷拍| 不卡的av电影| 亚洲精选视频在线| 欧美日本一区二区| 免费的国产精品| 久久久不卡网国产精品二区| 激情综合色综合久久| 久久只精品国产| 成人午夜免费电影| 亚洲欧洲成人自拍| 欧美午夜精品理论片a级按摩| 午夜国产不卡在线观看视频| 777欧美精品| 久久超级碰视频| 国产精品亲子伦对白| 色偷偷成人一区二区三区91| 亚洲成人自拍偷拍| 日韩精品一区二| 成人性色生活片| 亚洲精品视频免费观看| 欧美一区二视频| 国产91丝袜在线观看| 一区二区高清视频在线观看| 欧美一级欧美一级在线播放| 91免费观看国产| 亚洲r级在线视频| 精品理论电影在线| 成人污污视频在线观看| 亚洲国产裸拍裸体视频在线观看乱了 |