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

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

?? wdbbplib.c

?? vxworks的完整的源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
    pBp->bp_action = pBreakPoint->action.actionType;#if ((CPU_FAMILY == ARM) && ARM_THUMB)    pBp->bp_callRtn = (void (*)())((UINT32)pBreakPoint->action.callRtn | 1);#else /* CPU_FAMILY == ARM */    pBp->bp_callRtn = (void (*)())pBreakPoint->action.callRtn;#endif /* CPU_FAMILY == ARM */    pBp->bp_callArg = pBreakPoint->action.callArg;    pBp->bp_instr = *(INSTR *)addr;    if (pBreakPoint->numArgs > 1)	/* second argument is count */   	pBp->bp_count = pBreakPoint->args[1];    else   	pBp->bp_count = 0;    /* XXX - hack because host tools pass wrong info */    if ((pBp->bp_action == 0) || (pBp->bp_action == WDB_ACTION_STOP))	pBp->bp_action = WDB_ACTION_STOP | WDB_ACTION_NOTIFY;    /* set the context ID */    switch (pBreakPoint->context.contextType)        {        case WDB_CTX_SYSTEM:	    pBp->bp_task = BP_SYS;            break;        case WDB_CTX_ANY_TASK:	    pBp->bp_task = BP_ANY_TASK;            break;        case WDB_CTX_TASK:        default:	    pBp->bp_task = pBreakPoint->context.contextId;        }    wdbTaskLock ();		/* disable task switching */    dll_insert(&pBp->bp_chain, &bpList);    wdbTaskUnlock ();		/* re-enable task switching */    if (pBreakPoint->context.contextType != WDB_CTX_SYSTEM)	if (_wdbTaskBpAdd != NULL)	    _wdbTaskBpAdd (pBreakPoint);    *pId = (UINT32)pBp;    return (WDB_OK);    }#if	DBG_HARDWARE_BP/********************************************************************************* wdbHwBpAdd - Handle a hardware break point add request** The wdbBpAdd() function is used to add break points form the agent.** NOMANUAL*/static UINT32 wdbHwBpAdd    (    WDB_EVTPT_ADD_DESC *	pBreakPoint,	/* breakpoint to add */    UINT32 *			pId		/* breakpoint ID */    )    {    BRKPT *	pBp;    dll_t *	pDll;    int		status;    DBG_REGS	dbgRegs;		/* debug registers */    int		contextId;		/* context ID */    UINT32	addr;			/* breakpoint address */    UINT32	count = 0;		/* breakpoint count */    int		type = DEFAULT_HW_BP;	/* hardware type */    switch (pBreakPoint->numArgs)	{	default:	case 3:	    type = pBreakPoint->args[2];	    /* FALL THROUGH */	case 2:	    count = pBreakPoint->args[1];	    /* FALL THROUGH */	case 1:	    addr = pBreakPoint->args[0];	    break;	case 0:	    return (WDB_ERR_INVALID_PARAMS);	}    /* check validity of hardware breakpoint address */    if (wdbDbgHwAddrCheck (addr, type, (FUNCPTR) pWdbRtIf->memProbe) != OK)        return (WDB_ERR_MEM_ACCES);    /* 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);	}    /* set the context ID */    switch (pBreakPoint->context.contextType)        {        case WDB_CTX_SYSTEM:            contextId = BP_SYS;            break;        case WDB_CTX_ANY_TASK:            contextId = BP_ANY_TASK;            break;        case WDB_CTX_TASK:        default:            contextId = pBreakPoint->context.contextId;        }    /* clean dbgRegs structure */    memset (&dbgRegs, 0, sizeof (DBG_REGS));    /* fill dbgRegs structure with all hardware breakpoints */    wdbTaskLock ();	/* disable task switching */    for (pDll = dll_head(&bpList); pDll != dll_end(&bpList);		pDll = dll_next(pDll))	{	pBp = BP_BASE(pDll);	/* check if found breakpoint is applicable to new breakpoint context */	if (((contextId == BP_SYS) && (pBp->bp_task == BP_SYS)) ||		((contextId == BP_ANY_TASK) && (pBp->bp_task != BP_SYS)) ||		((contextId != BP_SYS) && (pBp->bp_task == BP_ANY_TASK)))	    {	    if (pBp->bp_flags & BRK_HARDWARE)		{		if ((status = wdbDbgHwBpSet (&dbgRegs, 				pBp->bp_flags & BRK_HARDMASK, 				(UINT32) pBp->bp_addr)) != OK)		    {		    wdbTaskUnlock ();	/* re-enable task switching */		    return (status);		    }		}	    }	}    wdbTaskUnlock ();	/* re-enable task switching */    if ((status = wdbDbgHwBpSet (&dbgRegs, type, addr)) != OK)	return (status);    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 | type | BRK_HARDWARE;    pBp->bp_addr = (INSTR *)addr;    pBp->bp_action = pBreakPoint->action.actionType;    pBp->bp_count = count;    pBp->bp_callRtn = (void (*)())pBreakPoint->action.callRtn;    pBp->bp_callArg = pBreakPoint->action.callArg;    pBp->bp_task = contextId;    /*      * XXX - MS hack because host tools pass wrong info.     * XXX - DBT This has been corrected in tornado 2.0 host tools but we     * must keep this hack for backward compatibility.     */    if ((pBp->bp_action == 0) || (pBp->bp_action == WDB_ACTION_STOP))	pBp->bp_action = WDB_ACTION_STOP | WDB_ACTION_NOTIFY;    wdbTaskLock ();		/* disable task switching */    dll_insert(&pBp->bp_chain, &bpList);    wdbTaskUnlock ();		/* re-enable task switching */    if (pBreakPoint->context.contextType != WDB_CTX_SYSTEM)	if (_wdbTaskBpAdd != NULL)	    _wdbTaskBpAdd (pBreakPoint);    *pId = (UINT32)pBp;    return (WDB_OK);    }#endif	/* DBG_HARDWARE_BP *//********************************************************************************* wdbBpDelete - Handle a break point delete request** The wdbBpDelete() function is used to delete break points.** NOMANUAL*/static UINT32 wdbBpDelete    (    TGT_ADDR_T *	pId    )    {    dll_t *	pDll;    dll_t *	pNextDll;    BRKPT *	pBp;    pBp = *(BRKPT **) pId;    /*      * Breakpoint ID of -1 means remove all breakpoints.      * We can only remove breakpoints set by the host tools. Breakpoints     * set from target shell can't be removed     */    wdbTaskLock ();	/* disable task switching */    if ((int ) pBp == -1)	{	for (pDll = dll_head(&bpList);	     pDll != dll_end(&bpList);	     pDll = pNextDll)	    {	    pNextDll = dll_next(pDll);	    if (BP_BASE(pDll)->bp_flags & BP_HOST)		wdbDbgBpRemove (BP_BASE(pDll));	    }	wdbTaskUnlock ();		/* re-enable task switching */	return (WDB_OK);	}    /* else just remove one breakpoint */    for (pDll = dll_head(&bpList); pDll != dll_end(&bpList);	    pDll = dll_next(pDll))	{	if (BP_BASE(pDll) == pBp)	    {	    wdbDbgBpRemove (pBp);	    wdbTaskUnlock ();	/* re-enable task switching */	    return (WDB_OK);	    }	}    wdbTaskUnlock ();	/* re-enable task switching */    return (WDB_ERR_INVALID_EVENTPOINT);    } #if	DBG_NO_SINGLE_STEP/********************************************************************************* wdbTrap - handle hitting of breakpoint** This routine handles the breakpoint trap.  It is called only from its * special stub routine (usually in assembly language) which is connected* to the breakpoint trap. It is used by targets that have to multiplex* tracing and breakpoint.** NOMANUAL*/static void wdbTrap    (    int			level,    INSTR *		addr,    void *		pInfo,    WDB_IU_REGS *	pRegisters,    void *		pDbgRegs,    BOOL		hardware    )    {    /* check for task level breakpoint trap */    if (wdbIsNowTasking())	{	_wdbTaskBpTrap (level, (INSTR *) pRegisters->reg_pc, pInfo, pRegisters, 			    pDbgRegs, hardware);	/* NOTREACHED */	}    /* first handle "step mode" (trace emulation) */    if (wdbSysBpMode != 0)	{	wdbTrace (level, pInfo, pRegisters);	/* NOTREACHED */	}    /* must be a system level breakpoint */    wdbDbgBpRemoveAll ();	/* remove all breakpoints */    wdbBreakpoint (level, pInfo, pRegisters, pDbgRegs, hardware);    /* NOTREACHED */    }#endif	/* DBG_NO_SINGLE_STEP *//********************************************************************************* wdbTrace - handle trace exception** This routine handles the trace trap.  It is called only* from its special assembly language stub routine which is connected* to the trace trap.** NOMANUAL*/static void wdbTrace    (    int			level,    void *		pInfo,    WDB_IU_REGS *	pRegisters    )    {#if	!DBG_NO_SINGLE_STEP    /* check for task level breakpoint trace */    if (wdbIsNowTasking())	{	_wdbTaskBpTrace (level, pInfo, pRegisters);	/* NOTREACHED */	}#else	/* !DBG_NO_SINGLE_STEP */    usrBreakpointSet (wdbSysNpc, wdbSysNpcInstr);#endif	/* DBG_NO_SINGLE_STEP */    /* system mode step */    wdbDbgTraceModeClear ((REG_SET *) pRegisters, wdbBpData);    wdbBpAddr = (TGT_ADDR_T) pRegisters->reg_pc;	/* update wdbBpAddr */    if (wdbSysBpMode == WDB_STEP_OVER)	{	wdbSysBpMode = 0;	wdbBpInstall ();	WDB_CTX_LOAD (pRegisters);	/* NOTREACHED */	}    if ((wdbSysBpMode == WDB_STEP_RANGE) &&	   (wdbSysStepStart <= (INSTR *) wdbBpAddr) &&	       ((INSTR * ) wdbBpAddr < wdbSysStepEnd))	{#if	DBG_NO_SINGLE_STEP	wdbSysNpc = wdbDbgGetNpc (pRegisters);	wdbSysNpcInstr = *wdbSysNpc;	usrBreakpointSet (wdbSysNpc, DBG_BREAK_INST);#endif	/* DBG_NO_SINGLE_STEP */	wdbBpData = wdbDbgTraceModeSet((REG_SET *) pRegisters);	WDB_CTX_LOAD (pRegisters);	/* NOTREACHED */	}    /* blindly assume WDB_STEP */    wdbSysBpMode = 0;    wdbSuspendSystem (pRegisters, wdbSysBpPost, 0);    /* NOTREACHED */    }/********************************************************************************* wdbBreakpoint - handle hitting of breakpoint** This routine handles the breakpoint trap.  It is called only from its * special stub routine (usually in assembly language) which is connected* to the breakpoint trap.** NOMANUAL*/static void wdbBreakpoint    (    int			level,    void *		pInfo,    WDB_IU_REGS *	pRegisters,    void *		pDbgRegs,    BOOL		hardware    )    {    BRKPT	bpInfo;		/* breakpoint info structure */    UINT32	type = 0;	/* breakpoint type */    void 	(*callBack)() = NULL;#if	!DBG_NO_SINGLE_STEP    /* check for task level breakpoint trap */    if (wdbIsNowTasking())	{	_wdbTaskBpBreakpoint (level, pInfo, pRegisters, pDbgRegs, hardware);	/* NOTREACHED */	}#endif	/* !DBG_NO_SINGLE_STEP */    wdbBpAddr = (UINT32) pRegisters->reg_pc;#if	DBG_HARDWARE_BP    /* If it is a hardware breakpoint, update type and addr variable. */    if (hardware)	wdbDbgHwBpFind (pDbgRegs, &type, &wdbBpAddr);#endif  /* DBG_HARDWARE_BP */    /* must be a system level breakpoint */    wdbDbgBpGet ((INSTR *)wdbBpAddr, BP_SYS, type, &bpInfo);    /*      * On some CPU (eg I960CX), the hardware breakpoint exception is sent only     * after the instruction was executed. In that case, we consider that     * the breakpoint address is the address where the processor is stopped,     * not the real breakpoint address.     */#if	DBG_HARDWARE_BP && defined (BRK_INST)    if (type == (BRK_INST | BRK_HARDWARE))	wdbBpAddr = (UINT32) pRegisters->reg_pc;#endif	/* DBG_HARDWARE_BP && defined (BRK_INST) */    if (bpInfo.bp_action & WDB_ACTION_CALL)	bpInfo.bp_callRtn (bpInfo.bp_callArg, pRegisters);    if (bpInfo.bp_action & WDB_ACTION_NOTIFY)	callBack = wdbSysBpPost;#if     CPU_FAMILY == MIPS    /*     * On MIPS CPUs, when a breakpoint exception occurs in a branch delay slot,     * the PC has been changed in the breakpoint handler to match with the     * breakpoint address.     * Once the matching has been made, the PC is modified to have its normal     * value (the preceding jump instruction).     */    if (pRegisters->cause & CAUSE_BD)   /* Are we in a branch delay slot ? */        pRegisters->reg_pc--;#endif  /* CPU_FAMILY == MIPS */    if (bpInfo.bp_action & (WDB_ACTION_NOTIFY | WDB_ACTION_STOP))	{		if (!(bpInfo.bp_action & WDB_ACTION_STOP))	    wdbOneShot = TRUE;	wdbSuspendSystem (pRegisters, callBack, 0);	/* NOTREACHED */	}    /* !WDB_ACTION_STOP means continue (e.g., step over this breakpoint) */#if	DBG_NO_SINGLE_STEP    wdbSysNpc = wdbDbgGetNpc (pRegisters);    wdbSysNpcInstr = *wdbSysNpc;    usrBreakpointSet (wdbSysNpc, DBG_BREAK_INST);#endif	/* DBG_NO_SINGLE_STEP */    wdbSysBpMode = WDB_STEP_OVER;    wdbBpData = wdbDbgTraceModeSet((REG_SET *) pRegisters);    WDB_CTX_LOAD(pRegisters);    }/******************************************************************************** wdbE - target side code to support the windview "e" command*/ void wdbE    (    int *		pData,    WDB_IU_REGS *	pRegisters    )    {    int (*conditionFunc)() = (int (*)())pData[0];    int conditionArg	= pData[1];    int eventNum	= pData[2];    if ((conditionFunc == NULL) || (conditionFunc (conditionArg) == OK))        EVT_CTX_BUF (eventNum, pRegisters->reg_pc, 0, NULL);    }/******************************************************************************** wdbTaskLock - lock the current task if the agent is running in task mode** This routine locks the current task is the agent is running in * task mode.* * RETURNS : N/A** NOMANUAL*/ LOCAL void wdbTaskLock (void)    {    if (wdbIsNowTasking() && (pWdbRtIf->taskLock != NULL))	(*pWdbRtIf->taskLock) ();    }/******************************************************************************** wdbTaskUnlock - unlock the current task if the agent is running in task mode** This routine unlocks the current task is the agent is running in * task mode.* * RETURNS : N/A** NOMANUAL*/ LOCAL void wdbTaskUnlock (void)    {    if (wdbIsNowTasking() && (pWdbRtIf->taskUnlock != NULL))	(*pWdbRtIf->taskUnlock) ();    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区免费视频| 欧美男女性生活在线直播观看| av不卡在线播放| 国产日韩欧美高清| 精品一区二区三区蜜桃| 国产精品小仙女| 欧美午夜精品一区| 久久精品一区八戒影视| 日韩美女视频19| 欧美aa在线视频| 国产精品系列在线观看| 色综合久久久久久久久久久| 欧美日韩一级片在线观看| 精品成人佐山爱一区二区| 国产精品国产成人国产三级| 亚洲成在线观看| www.亚洲在线| 欧美一级黄色大片| 欧美激情综合五月色丁香小说| 亚洲福中文字幕伊人影院| 久久99国产精品久久99| 欧美日韩一区二区三区四区 | 亚洲视频一区二区在线观看| 无吗不卡中文字幕| www.亚洲精品| 久久一区二区三区四区| 视频精品一区二区| 一本一道波多野结衣一区二区| 精品久久久久久久一区二区蜜臀| 一区二区三区不卡在线观看| 人人狠狠综合久久亚洲| 在线免费不卡视频| 亚洲aⅴ怡春院| 欧美欧美午夜aⅴ在线观看| 天天色图综合网| 日韩视频在线永久播放| 国产精品一区三区| 亚洲欧美自拍偷拍色图| 日本精品裸体写真集在线观看| 日韩你懂的电影在线观看| 亚洲另类在线视频| 99综合电影在线视频| 国产精品国产三级国产普通话99| 国产美女久久久久| 国产午夜精品美女毛片视频| 成人av网站在线观看| 国产精品国模大尺度视频| 国产高清精品网站| 国产精品萝li| 欧美亚洲国产一区在线观看网站| 亚洲一区二区高清| 久久久蜜桃精品| 91女厕偷拍女厕偷拍高清| 亚洲免费电影在线| 日本精品一级二级| 中文字幕制服丝袜成人av | 99国产精品久久久久久久久久| 国产精品电影一区二区三区| 一本大道久久精品懂色aⅴ| 日韩中文字幕麻豆| 日本一区二区三区久久久久久久久不 | 亚洲精品一区二区三区精华液| 国产成人精品免费| 丝袜亚洲另类欧美综合| 国产真实乱对白精彩久久| 欧美嫩在线观看| 成人一道本在线| 成人av网站大全| 亚洲高清免费一级二级三级| 日韩精品综合一本久道在线视频| 一本一本大道香蕉久在线精品 | 欧美午夜精品久久久| 免费不卡在线视频| 久久久九九九九| 色婷婷av一区| 麻豆精品久久久| 亚洲欧美激情在线| 3d动漫精品啪啪一区二区竹菊| 久久99国产精品麻豆| 一区二区欧美国产| 久久久久9999亚洲精品| 精品视频一区二区三区免费| 国产专区综合网| 亚洲靠逼com| 亚洲国产高清不卡| 日韩欧美不卡一区| 欧美精品一区二区精品网| 91精品国产一区二区三区蜜臀| 久久国产精品99久久人人澡| 日本人妖一区二区| 亚洲激情自拍偷拍| 亚洲欧洲色图综合| 一区在线中文字幕| 久久久精品tv| 亚洲欧洲性图库| 亚洲欧美日韩中文播放 | 在线观看国产91| 97aⅴ精品视频一二三区| 成人黄页毛片网站| 91在线视频免费91| 欧美视频一区二区三区四区| 欧美在线观看视频一区二区| 欧美视频一区在线观看| 欧美日韩视频在线第一区 | 成人美女视频在线观看| 国产盗摄视频一区二区三区| av一区二区三区四区| 色综合天天综合色综合av | 日韩一级完整毛片| 久久综合久久综合亚洲| 亚洲国产高清aⅴ视频| 亚洲视频一二三区| 日韩精品免费专区| 国产sm精品调教视频网站| 日本道色综合久久| 欧美大度的电影原声| 久久综合九色综合久久久精品综合| 久久色视频免费观看| 亚洲乱码国产乱码精品精的特点| 亚洲国产精品麻豆| 日韩免费视频线观看| 午夜伊人狠狠久久| 国产一区二区三区电影在线观看 | 7777女厕盗摄久久久| 国产亚洲欧美激情| 香蕉影视欧美成人| 99久久久精品免费观看国产蜜| 欧美日韩国产美| 樱桃视频在线观看一区| 婷婷丁香激情综合| 欧美在线影院一区二区| 中文字幕av一区 二区| 国产主播一区二区三区| 欧美一级片免费看| 亚洲精品写真福利| 国产专区综合网| 欧美日韩精品免费观看视频| 亚洲图片欧美一区| 欧美在线观看一区二区| 亚洲精品va在线观看| 91久久国产综合久久| 一区二区三区四区亚洲| 9i在线看片成人免费| 国产欧美日韩视频在线观看| 成人小视频免费观看| 亚洲人成网站精品片在线观看 | 亚洲欧洲国产日本综合| 色婷婷av久久久久久久| 天堂影院一区二区| 国产午夜精品一区二区三区四区| 香港成人在线视频| 日韩精品一区二区三区视频| 日韩精品亚洲一区| 国产精品久久久久久亚洲毛片| 成+人+亚洲+综合天堂| 亚洲电影一区二区三区| 精品乱人伦一区二区三区| 91在线观看一区二区| 亚洲国产日产av| 99免费精品在线| 国产乱淫av一区二区三区| 亚洲另类春色校园小说| 久久久久久一级片| 欧美丝袜丝交足nylons| 国产一区二区三区电影在线观看 | 综合自拍亚洲综合图不卡区| 欧美午夜精品免费| 成人污视频在线观看| 日韩精品久久久久久| 日本一区二区三区四区| 欧美日韩成人一区| 成人av影院在线| 国产精品18久久久久久久久久久久| 亚洲成人资源网| 国产亚洲1区2区3区| 精品少妇一区二区三区日产乱码| 一本到一区二区三区| 国产一区二区视频在线播放| 日韩国产成人精品| 亚洲成人免费在线| 亚洲精品高清在线| 亚洲中国最大av网站| 国产精品国产成人国产三级| 国产欧美精品一区aⅴ影院| 2021国产精品久久精品| 久久久夜色精品亚洲| 久久久久99精品一区| 国产欧美一区二区三区网站| 国产片一区二区| 自拍偷在线精品自拍偷无码专区| 欧美国产禁国产网站cc| 国产精品毛片大码女人| 欧美一区二区在线免费观看| 91精品国产91久久久久久一区二区| 欧美中文字幕亚洲一区二区va在线 | 久久国产精品色婷婷| 九九精品视频在线看| 九色porny丨国产精品| 国产永久精品大片wwwapp| 精品亚洲aⅴ乱码一区二区三区|