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

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

?? wdbbplib.c

?? vxworks的完整的源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* wdbBpLib.c - Break point handling for the target server *//* Copyright 1994-2001 Wind River Systems, Inc. *//*modification history--------------------01u,14sep01,jhw  Fixed warnings from compiling with gnu -pedantic flag01t,16nov98,cdp  enable Thumb support for all ARM CPUs with ARM_THUMB==TRUE.01v,21apr99,dbt  removed TEXT_LOCK() and TEXT_UNLOCK() calls in wdbHwBpAdd()		 routine (SPR #26927).01t,19jan99,elg  Restore PC for MIPS (SPR 24356)01s,10jul98,dbt  test if task mode agent is running before stepping or                 continue a task.01r,11may98,dbt  removed useless wdbTaskLock() and wdbTaskUnlock() calls in 		 wdbSysBpLibInit().01q,29apr98,dbt  code cleanup.01p,21apr98,dbt  fixed Thumb (ARM7TDMI_T) support.01o,11jul97,cdp	 added Thumb (ARM7TDMI_T) support.01n,09mar98,dbt  fixed a problem with WDB_TASK_LOCK() and WDB_TASK_UNLOCK()                 defines.01m,13feb98,dbt  fixed typo in wdbBpLibInit().01l,26jan98,dbt  replaced wdbEventClassConnect() with wdbEvtptClassConnect().		 replaced WDB_EVT_CLASS with WDB_EVTPT_CLASS01k,05dec97,dbt  merge with target shell debugger. Added support for hardware		 breakpoints.01j,28aug96,tam	 modified wdbCont() to fix SPR 7098.01k,15jul96,ms   fixed problem with trace mode01j,26jun96,ms   added target side code to support windview "e" command.		 removed redundant call to wdbBpRemove().		 2nd paramter to eventpoint call func is now a REG_SET *.01i,03jun96,kkk  replaced _sigCtxLoad with WDB_CTX_LOAD.		 replaced pRegister->pc with pRegister->reg_pc.		01h,24apr96,ms   support generalized eventPoint handling.		 support multiple breakpoints at same address.		 lots of cleanup.01g,23jan96,tpr  added cast to compile with DIAB DATA toolkit.01f,21sep95,ms   unprotect mem before check for valid BP address (SPR 4935)01e,17jul95,ms	 changed the boundry test on STEP_RANGE01d,03jun95,ms	 deleting BP id = -1 means remove all breapoints.01c,01jun95,ms	 check for WDB_CTX_ANY_TASK on BP add.		 do a memProbe on BP add.		 don't add task BP's in system mode.		 deactivate system BP's when in task mode.		 some cleanup.01b,28mar95,ms	 wdbBpAdd now uses contextType to determine task vs system BP.01a,02nov94,rrr	 written.*//*DESCPRIPTIONThis library contains break point handling for system mode debugging.It also contains code which is shared with wdbTaskBpLib.c.*//* includes */#include "vxWorks.h"#include "string.h"#include "regs.h"#include "wdb/wdb.h"#include "wdb/dll.h"#include "wdb/wdbLibP.h"#include "wdb/wdbLib.h"#include "wdb/wdbBpLib.h"#include "wdb/wdbSvcLib.h"#include "wdb/wdbEvtLib.h"#include "wdb/wdbEvtptLib.h"#include "wdb/wdbArchIfLib.h"#include "wdb/wdbDbgLib.h"/* externals */extern WDB_IU_REGS	wdbExternSystemRegs;extern BOOL		wdbOneShot;#if	DBG_NO_SINGLE_STEPextern FUNCPTR 		_func_trap;#else	/* DBG_NO_SINGLE_STEP */extern FUNCPTR 		_func_breakpoint;extern FUNCPTR 		_func_trace;#endif	/* DBG_NO_SINGLE_STEP */extern FUNCPTR 		_func_wdbIsNowExternal;/* defines */#if     CPU_FAMILY==MC680X0#undef reg_pc#define reg_pc	regSet.pc#undef reg_sp#define reg_sp	regSet.addrReg[7]#undef reg_fp#define reg_fp	regSet.addrReg[6]#endif  /* CPU_FAMILY==MC680X0 *//* globals */UINT32  (*_wdbTaskBpAdd)	(WDB_EVTPT_ADD_DESC * pEv);UINT32  (*_wdbTaskStep)		(UINT32 contextId, TGT_ADDR_T startAddr,					TGT_ADDR_T endAddr);UINT32  (*_wdbTaskCont)         (UINT32 contextId); #if	DBG_NO_SINGLE_STEPvoid    (*_wdbTaskBpTrap)       (int level, INSTR * addr, void * pInfo, 				    WDB_IU_REGS * pRegisters, void * pDbgRegs, 				    BOOL hardware);#else	/* DBG_NO_SINGLE_STEP */void    (*_wdbTaskBpBreakpoint) (int level, void * pInfo, 				    WDB_IU_REGS * pRegisters, void * pDbgRegs,				    BOOL hardware);void    (*_wdbTaskBpTrace)      (int level, void * pInfo, 				    WDB_IU_REGS * pRegisters);#endif	/* DBG_NO_SINGLE_STEP *//* locals */static int	wdbBpData;		/* store breakpoint informations */static UINT32	wdbBpAddr;		/* store the address of the last */					/* encountered breakpoint */static int	wdbSysBpMode;		/* mode of the system context */static INSTR *	wdbSysStepStart;	/* start address of step range */static INSTR *	wdbSysStepEnd;		/* end address of step range */#if	DBG_NO_SINGLE_STEPstatic INSTR *	wdbSysNpc;static INSTR	wdbSysNpcInstr;#endif	/* DBG_NO_SINGLE_STEP */static WDB_EVT_NODE	eventSysBpNode;	/* system mode breakpoint event node */static WDB_EVTPT_CLASS	wdbEventClassBp;/* breakpoint event class */#if	DBG_HARDWARE_BPstatic WDB_EVTPT_CLASS	wdbEventClassHwBp;/* hardware breakpoint event class */#endif	/* DBG_HARDWARE_BP *//* forward static declarations */static UINT32 wdbStep		(WDB_CTX_STEP_DESC * pCtxStep);static UINT32 wdbCont		(WDB_CTX * ctx);static UINT32 wdbBpAdd		(WDB_EVTPT_ADD_DESC * pBp, UINT32 * pId);static UINT32 wdbBpDelete	(TGT_ADDR_T *pId);static void wdbSysBpEventGet	(void * arg, WDB_EVT_DATA * pEventMsg);static void wdbTrace		(int level, void * pInfo, 				    WDB_IU_REGS * pRegisters);static void wdbBreakpoint	(int level, void * pInfo, 				    WDB_IU_REGS * pRegisters, void * pDbgRegs, 				    BOOL hardware);static void wdbSysBpPost	(int addr);static void wdbTaskLock		(void);static void wdbTaskUnlock	(void);#if	DBG_HARDWARE_BPstatic UINT32 wdbHwBpAdd	(WDB_EVTPT_ADD_DESC * pBp, UINT32 * pId);#endif	/* DBG_HARDWARE_BP */#if	DBG_NO_SINGLE_STEPstatic void wdbTrap		(int level, INSTR * addr, void * pInfo, 				    WDB_IU_REGS * pRegisters, void * pDbgRegs, 				    BOOL hardware);#endif	/* DBG_NO_SINGLE_STEP *//******************************************************************************** wdbSysBpLibInit - initialize the library.** This routine initializes the agent debugger library : wdb services,* breakpoint lists, event nodes and some pointers used by the debugger.** RETURNS : N/A * * NOMANUAL*/void wdbSysBpLibInit    (    BRKPT *	pBps,	/* pointer on breakpoint structure */    int		bpCnt	/* number of breakpoints */    )    {    static int	wdbBpInstalled = FALSE;    if (!wdbBpInstalled)	{	wdbSvcAdd (WDB_CONTEXT_STEP, wdbStep, xdr_WDB_CTX_STEP_DESC, xdr_void);	wdbSvcAdd (WDB_CONTEXT_CONT, wdbCont, xdr_WDB_CTX, xdr_void);	wdbEventClassBp.evtptType = WDB_EVT_BP;	wdbEventClassBp.evtptAdd = wdbBpAdd;	wdbEventClassBp.evtptDel = wdbBpDelete;	wdbEvtptClassConnect (&wdbEventClassBp);#if	DBG_HARDWARE_BP	wdbEventClassHwBp.evtptType = WDB_EVT_HW_BP;	wdbEventClassHwBp.evtptAdd = wdbHwBpAdd;	wdbEventClassHwBp.evtptDel = wdbBpDelete;	wdbEvtptClassConnect (&wdbEventClassHwBp);#endif	/* DBG_HARDWARE_BP */#if	DBG_NO_SINGLE_STEP	_func_trap = (FUNCPTR) wdbTrap;#else   /* DBG_NO_SINGLE_STEP */	_func_breakpoint = (FUNCPTR) wdbBreakpoint;	_func_trace = (FUNCPTR) wdbTrace;#endif  /* DBG_NO_SINGLE_STEP */	_func_wdbIsNowExternal = (FUNCPTR) wdbIsNowExternal;	wdbDbgBpListInit();	while (bpCnt)	    {	    dll_insert (&pBps->bp_chain, &bpFreeList);	    ++pBps;	    --bpCnt;	    }	wdbDbgArchInit();	wdbEventNodeInit (&eventSysBpNode, wdbSysBpEventGet, NULL, 					(void *) &eventSysBpNode);	wdbBpInstalled = TRUE;	}    }/******************************************************************************** wdbBpInstall - install system mode breakpoints.** Before the external agent transfers control back to the OS, this routine* is called to reinsert the breakpoints.* * RETURNS : N/A** NOMANUAL*/ void wdbBpInstall (void)    {    dll_t *	pDll;#if	DBG_HARDWARE_BP    DBG_REGS	dbgRegs;#endif	/* DBG_HARDWARE_BP */    /* don't install system BP's if we are not in system mode */    if (wdbIsNowTasking())	return;#if	DBG_HARDWARE_BP    memset (&dbgRegs, 0, sizeof (DBG_REGS));    wdbDbgRegsClear ();		/* clean debug registers */#endif	/* DBG_HARDWARE_BP */    /* if stepping, just set trace mode */    if (wdbSysBpMode != 0)	{#if	DBG_NO_SINGLE_STEP	wdbSysNpc = wdbDbgGetNpc (&wdbExternSystemRegs);	wdbSysNpcInstr = *wdbSysNpc;	usrBreakpointSet (wdbSysNpc, DBG_BREAK_INST);#endif	/* DBG_NO_SINGLE_STEP */	wdbBpData = wdbDbgTraceModeSet ((REG_SET *) &wdbExternSystemRegs);	}    else	/* if not stepping, insert breakpoints */	{	for (pDll = dll_head(&bpList); pDll != dll_end(&bpList);		pDll = dll_next(pDll))	    {	    if (BP_BASE(pDll)->bp_task ==  -1)		{		if ((BP_BASE(pDll)->bp_flags & BRK_HARDWARE) == 0)		    usrBreakpointSet (BP_BASE(pDll)->bp_addr, DBG_BREAK_INST);#if	DBG_HARDWARE_BP		else		    wdbDbgHwBpSet (&dbgRegs, 				   BP_BASE(pDll)->bp_flags & BRK_HARDMASK, 				   (UINT32) BP_BASE(pDll)->bp_addr);#endif	/* DBG_HARDWARE_BP */		BP_BASE(pDll)->bp_flags |= BP_INSTALLED;		}	    }#if	DBG_HARDWARE_BP	wdbDbgRegsSet (&dbgRegs);	/* set debug registers. */#endif	/* DBG_HARDWARE_BP */	}    }/******************************************************************************** wdbSysBpEventGet - upload a breakpoint event to the host.** This routine upload a system breakpoint event to the host.** RETURNS : N/A** NOMANUAL*/ static void wdbSysBpEventGet    (    void *	   pRegs,    WDB_EVT_DATA * pEvtData    )    {    WDB_BP_INFO * pBpInfo = (WDB_BP_INFO *)&pEvtData->eventInfo;    if ((TGT_ADDR_T) wdbExternSystemRegs.reg_pc != wdbBpAddr)	{	/* It should be a watch point */	pEvtData->evtType	= WDB_EVT_WP;	pBpInfo->numInts	= 6;	pBpInfo->addr 		= wdbBpAddr;	}    else	{	/* It should be a break point */	pEvtData->evtType   	= WDB_EVT_BP;	pBpInfo->numInts	= 5;	}    /* fill WDB_BP_INFO structure */    pBpInfo->context.contextType	= WDB_CTX_SYSTEM;    pBpInfo->context.contextId 		= -1;    pBpInfo->pc = (TGT_ADDR_T) wdbExternSystemRegs.reg_pc;    pBpInfo->fp = (TGT_ADDR_T) wdbExternSystemRegs.reg_fp;    pBpInfo->sp = (TGT_ADDR_T) wdbExternSystemRegs.reg_sp;    }/******************************************************************************** wdbSysBpPost - post system mode breakpoint event  ** This routine posts an event to the host when a system mode breakpoint* is hit. It is called when the system is suspended.** RETURNS : N/A** NOMANUAL*/ static void wdbSysBpPost    (    int		addr		/* breakpoint addr */    )    {    wdbEventPost (&eventSysBpNode);    }/********************************************************************************* wdbStep - Handle a step request** The wdbStep() function is used to step the system or a task.** NOMANUAL*/static UINT32 wdbStep    (    WDB_CTX_STEP_DESC * pCtxt    )    {    switch (pCtxt->context.contextType)	{	case WDB_CTX_SYSTEM:	    if (!wdbIsNowExternal())		return (WDB_ERR_AGENT_MODE);	    if ((pCtxt->startAddr == 0) && (pCtxt->endAddr == 0))		wdbSysBpMode = WDB_STEP;	    else		{		wdbSysBpMode	= WDB_STEP_RANGE;		wdbSysStepStart	= (INSTR *) pCtxt->startAddr;		wdbSysStepEnd	= (INSTR *) pCtxt->endAddr;		}	    wdbOneShot = TRUE;	    return (WDB_OK);	case WDB_CTX_TASK:	    if (!wdbIsNowTasking())		return (WDB_ERR_AGENT_MODE);	    if (_wdbTaskStep != NULL)		return ((*_wdbTaskStep) (pCtxt->context.contextId, 					 pCtxt->startAddr, 					 pCtxt->endAddr));	    return (WDB_ERR_NO_RT_PROC);	default:	    return (WDB_ERR_INVALID_CONTEXT);	}    }/********************************************************************************* wdbCont - Handle a continue request** The wdbCont() function is used to continue the system or a task.** NOMANUAL*/static UINT32 wdbCont    (    WDB_CTX *	pCtxt    )    {    switch (pCtxt->contextType)	{	case WDB_CTX_SYSTEM:	    if (!wdbIsNowExternal())		return (WDB_OK);	    /* 	     * Check for breakpoint at extern system pc or wdbBpAddr 	     * (last breakpoint address). This last test is usefull for	     * data breakpoints.	     */	    if ((wdbDbgBpFind 			((INSTR *) wdbExternSystemRegs.reg_pc, BP_SYS) == OK) ||	         (wdbDbgBpFind ((INSTR *) wdbBpAddr, BP_SYS) == OK))		{	    	wdbSysBpMode = WDB_STEP_OVER;		}	    wdbOneShot = TRUE;	    return (WDB_OK);	case WDB_CTX_TASK:	    if (!wdbIsNowTasking())		return (WDB_ERR_AGENT_MODE);	    if (_wdbTaskCont != NULL)		return ((*_wdbTaskCont) (pCtxt->contextId));	    return (WDB_ERR_NO_RT_PROC);	default:	    return (WDB_ERR_INVALID_CONTEXT);	}    }/********************************************************************************* wdbBpAdd - Handle a break point add request** The wdbBpAdd() function is used to add break points from the agent.** NOMANUAL*/static UINT32 wdbBpAdd    (    WDB_EVTPT_ADD_DESC *	pBreakPoint,    UINT32 *			pId    )    {    INSTR	val;    BRKPT *	pBp;    INSTR *	addr;    switch (pBreakPoint->numArgs)	{	default:	case 1:#if ((CPU_FAMILY == ARM) && ARM_THUMB)	    addr = (INSTR *) ((UINT32)((pBreakPoint->args[0]) & ~1));#else /* CPU_FAMILY == ARM */	    addr = (INSTR *) pBreakPoint->args[0];#endif /* CPU_FAMILY == ARM */	    break;	case 0:	    return (WDB_ERR_INVALID_PARAMS);	}    /* check validity of breakpoint address */    TEXT_UNLOCK(addr);    if (((*pWdbRtIf->memProbe) ((char *)addr, VX_READ,				sizeof(INSTR), (char *)&val) != OK) ||        ((*pWdbRtIf->memProbe) ((char *)addr, VX_WRITE,				sizeof(INSTR), (char *)&val) != OK))	{	TEXT_LOCK(addr);        return (WDB_ERR_MEM_ACCES);	}    TEXT_LOCK(addr);    /* check the agent mode */    switch (pBreakPoint->context.contextType)	{	case WDB_CTX_SYSTEM:	    if (!wdbIsNowExternal())		return (WDB_ERR_AGENT_MODE);	    break;	default:	    if (!wdbIsNowTasking())		return (WDB_ERR_AGENT_MODE);	}    if (dll_empty (&bpFreeList))	return (WDB_ERR_EVENTPOINT_TABLE_FULL);    wdbTaskLock ();	/* disable task switching */    pBp = BP_BASE(dll_tail (&bpFreeList));    dll_remove (&pBp->bp_chain);    wdbTaskUnlock ();	/* re-enable task switching */    pBp->bp_flags = BP_HOST;    pBp->bp_addr = addr;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品午夜春色av| 欧美日韩国产大片| 国产片一区二区| 成人在线综合网站| 亚洲天堂av一区| 在线这里只有精品| 免费一级欧美片在线观看| 精品日韩在线观看| 国产精品123区| 亚洲欧美怡红院| 欧美中文字幕一区二区三区亚洲 | 成人性生交大片免费| 国产精品不卡视频| 欧美午夜一区二区三区| 卡一卡二国产精品 | 精品理论电影在线| 成人avav在线| 日韩电影免费在线| 国产情人综合久久777777| 色94色欧美sute亚洲线路一ni| 亚洲成av人影院在线观看网| 精品奇米国产一区二区三区| www.视频一区| 日本大胆欧美人术艺术动态| 国产性天天综合网| 欧美日精品一区视频| 精品一区二区三区久久| 国产精品不卡在线| 欧美一区二区三区性视频| 粉嫩欧美一区二区三区高清影视| 亚洲综合视频在线| 亚洲精品在线免费播放| 一本久久综合亚洲鲁鲁五月天 | 久久精品视频在线看| 在线观看亚洲成人| 韩国av一区二区| 亚洲一区成人在线| 国产人成亚洲第一网站在线播放| 欧美精品久久久久久久久老牛影院| 国产福利视频一区二区三区| 偷拍亚洲欧洲综合| 中文字幕一区二区三区四区| 日韩一级完整毛片| 欧美图片一区二区三区| 成人黄色av电影| 久久国产精品色| 日韩影视精彩在线| 亚洲综合区在线| 亚洲欧美另类在线| 国产欧美一区二区三区网站| 精品免费国产一区二区三区四区| 在线免费观看日本欧美| eeuss鲁片一区二区三区| 久久99国产精品麻豆| 人人超碰91尤物精品国产| 亚洲一区二区视频在线观看| 国产精品久久久久影院色老大| 精品噜噜噜噜久久久久久久久试看 | 中文字幕在线一区| 欧美va亚洲va| 欧美日本国产视频| 久久国产精品72免费观看| 亚洲高清免费观看| 亚洲欧美自拍偷拍| 综合久久久久久久| 日韩美女视频19| √…a在线天堂一区| 久久―日本道色综合久久| 欧美日韩一区二区三区不卡 | 成人app网站| 精品一区二区三区免费| 亚洲国产一区二区a毛片| 国产精品白丝在线| 国产欧美日韩麻豆91| 欧美一区二区三区四区高清| 色老头久久综合| 成人一道本在线| 国内精品视频666| 亚洲制服丝袜在线| 欧美韩日一区二区三区四区| 精品理论电影在线| 日韩亚洲国产中文字幕欧美| 欧美在线不卡视频| 成人avav影音| 91在线视频在线| 99r精品视频| 激情国产一区二区| 国产高清久久久| 国内外精品视频| 国产乱码精品一区二区三区av | 久久久不卡影院| 2022国产精品视频| 亚洲精品一区二区三区蜜桃下载| 欧美男生操女生| 3751色影院一区二区三区| 成人免费毛片aaaaa**| 国产成人99久久亚洲综合精品| 国产一区不卡在线| 国产一级精品在线| 成人性色生活片免费看爆迷你毛片| 国产精品伊人色| 成人免费观看av| 国产成人午夜精品5599| 一本大道av一区二区在线播放| av网站免费线看精品| 色综合久久综合网| 欧美丝袜第三区| 91精品国产综合久久蜜臀| 日韩精品一区二区三区在线| 亚洲精品一区二区三区福利| 久久综合九色综合欧美就去吻 | 欧美日韩一区二区在线观看| 欧美精品久久99久久在免费线 | 91啦中文在线观看| 欧美日韩精品一区二区三区四区 | 久久久久国色av免费看影院| 国产丝袜在线精品| 亚洲裸体xxx| 亚洲成在人线在线播放| 日韩福利电影在线观看| 精品一区二区三区视频在线观看| 国内成人免费视频| 99久久国产综合精品女不卡| 在线视频亚洲一区| 91麻豆精品国产91久久久资源速度 | 国内久久精品视频| 成人av网站在线观看免费| 欧美主播一区二区三区美女| 日韩精品在线网站| 亚洲精品一卡二卡| 日韩中文字幕1| 成人网页在线观看| 欧美日韩国产高清一区| 中日韩免费视频中文字幕| 偷拍一区二区三区| av午夜精品一区二区三区| 欧美一卡二卡三卡四卡| 中文字幕第一区二区| 亚洲国产精品天堂| 国产很黄免费观看久久| 国产成人综合在线| 日韩一级免费一区| 一区二区三区在线视频观看58| 蜜桃视频一区二区三区| 91在线一区二区三区| 2021久久国产精品不只是精品| 亚洲综合偷拍欧美一区色| 国内精品写真在线观看| 91视频xxxx| 亚洲欧洲av色图| 国产美女视频一区| 91精品国产色综合久久不卡电影 | 欧美一区二区视频网站| 一区二区三区av电影| 成熟亚洲日本毛茸茸凸凹| 精品嫩草影院久久| 亚洲综合色成人| 99久久国产综合精品女不卡| 久久久久久久综合狠狠综合| 香蕉乱码成人久久天堂爱免费| 精品一区二区在线播放| 欧美日韩国产乱码电影| 亚洲视频图片小说| 激情综合五月天| 欧美乱妇一区二区三区不卡视频| 亚洲另类色综合网站| 成人综合激情网| 久久理论电影网| 久久国产综合精品| 欧美性视频一区二区三区| 亚洲一区二区三区四区中文字幕| 成人激情小说网站| 国产亚洲一本大道中文在线| 免费人成黄页网站在线一区二区| 欧美三级电影精品| 亚洲国产精品尤物yw在线观看| 91麻豆国产福利在线观看| 国产日韩欧美a| 激情伊人五月天久久综合| 日韩欧美电影一区| 九九热在线视频观看这里只有精品| 91麻豆精品国产91久久久久久久久| 亚洲福利视频一区| 欧美专区日韩专区| 日韩激情中文字幕| 欧美一区在线视频| 免费高清视频精品| 2023国产精品| 国产精品伊人色| 亚洲精品一区二区三区精华液| 国产成人精品三级| 亚洲国产成人午夜在线一区| 处破女av一区二区| 亚洲欧洲综合另类| 欧美视频在线不卡| 日本美女一区二区| 亚洲国产成人在线| 色婷婷av一区二区三区软件 | 亚洲在线免费播放| 日韩欧美你懂的|