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

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

?? wdbdbgarchlib.c

?? vxwork源代碼
?? C
字號:
/* wdbDbgArchLib.c - i86 specific debug support *//* Copyright 1984-2002 Wind River Systems, Inc. *//*modification history--------------------01f,30may02,hdn  added wdbDbgCtxPc/Cs/Esp to save the state (spr 75694)01e,29aug01,hdn  replaced intVecSet with intVecSet2		 doc: cleanup.01d,08jan98,dbt  modified for new breakpoint scheme. Added hardware		 breakpoints support01c,15jun95,ms	 removed sigCtxIntLock. Made traceModeSet/Clear use intRegsLock.01b,25may95,ms	 cleaned up + added _sigCtxIntLock.01a,18jan94,rrr  written.*//*DESCPRIPTIONArch-specific debug support.i80386 has four breakpoint registers and the following types of hardwarebreakpoint:.CS   BRK_INST		/@ instruction hardware breakpoint @/   BRK_DATAW1		/@ data write 1 byte breakpoint @/   BRK_DATAW2		/@ data write 2 byte breakpoint @/   BRK_DATAW4		/@ data write 4 byte breakpoint @/   BRK_DATARW1		/@ data read-write 1 byte breakpoint @/   BRK_DATARW2		/@ data read-write 2 byte breakpoint @/   BRK_DATARW4		/@ data read-write 4 byte breakpoint @/.CENOMANUAL*/#include "vxWorks.h"#include "regs.h"#include "iv.h"#include "intLib.h"#include "esf.h"#include "wdb/wdbDbgLib.h"/* externals */extern void wdbDbgBpStub(void);extern void wdbDbgTraceStub(void);extern int  sysCsExc;/* globals */UINT32	wdbDbgCtxCs	= 0;	/* old CS */UINT32	wdbDbgCtxPc	= 0;	/* old PC */UINT32	wdbDbgCtxEsp	= 0;	/* old ESP *//* forward declaration */static void wdbDbgArchRegsGet (TRACE_ESF * info, int * regs, REG_SET * pRegSet,				DBG_REGS * pDbgRegSet, BOOL traceException);/********************************************************************************* wdbDbgArchInit - set exception handlers for the break and the trace.** This routine set exception handlers for the break and the trace.* And also make a break instruction.** NOMANUAL*/void wdbDbgArchInit    (    void    )    {    /* Insert the new breakpoint and trace vectors */    intVecSet2 ((FUNCPTR *)IV_BREAKPOINT, (FUNCPTR) wdbDbgBpStub,	                   IDT_INT_GATE, sysCsExc);    intVecSet2 ((FUNCPTR *)IV_DEBUG, (FUNCPTR) wdbDbgTraceStub,		           IDT_INT_GATE, sysCsExc);    }/********************************************************************************* wdbDbgTraceModeSet - set a debug-mode or a trace-mode** This routine make CPU trace-enable.** NOMANUAL*/int wdbDbgTraceModeSet    (    REG_SET *	pRegs    )    {    int tmp;    tmp = intRegsLock (pRegs);    pRegs->eflags |= TRACE_FLAG;    return (tmp);    }/********************************************************************************* wdbDbgTraceModeClear - clear a trace-mode** This routine make CPU trace-disable.** NOMANUAL*/void wdbDbgTraceModeClear    (    REG_SET *	pRegs,    int		arg    )    {    intRegsUnlock (pRegs, arg);    pRegs->eflags &= ~TRACE_FLAG;    }/********************************************************************************* wdbDbgArchRegsGet - get a register set from saved registers on stack** This routine gets a register set from saved registers on stack.** RETURNS: N/A** NOMANUAL*/static void wdbDbgArchRegsGet    (    TRACE_ESF *	info,		/* pointer to esf info saved on stack */    int * 	regs,		/* pointer to regs saved on stack */    REG_SET *	pRegSet,	/* pointer to register set */    DBG_REGS *	pDbgRegSet,	/* pointer to register set */    BOOL	traceException	/* TRUE if this was a trace exception */    )    {    if (pDbgRegSet != NULL)	{	pDbgRegSet->db0 = *regs++;	/* read the debug registers */	pDbgRegSet->db1 = *regs++;	pDbgRegSet->db2 = *regs++;	pDbgRegSet->db3 = *regs++;	pDbgRegSet->db6 = *regs++;	pDbgRegSet->db7 = *regs++;	}    else	regs += 6;    pRegSet->edi = *regs++;	/* read the global registers */    pRegSet->esi = *regs++;    pRegSet->ebp = *regs++;    regs++;    pRegSet->ebx = *regs++;    pRegSet->edx = *regs++;    pRegSet->ecx = *regs++;    pRegSet->eax = *regs++;    pRegSet->spReg = (ULONG) ((char *)info + sizeof (ESF0));    pRegSet->pc  = info->pc;    pRegSet->eflags = info->eflags;    }/******************************************************************************** wdbDbgPreBreakpoint - handle a breakpoint** This routine is the I86 specific handler for breakpoints (soft and hardware).** RETURNS: N/A** NOMANUAL*/ void wdbDbgPreBreakpoint    (    BREAK_ESF *	info,		/* pointer to info saved on stack */    int *	regs,		/* pointer to saved registers */    BOOL	hardware	/* TRUE if it is hardware breakpoint */    )    {    REG_SET	regSet;    DBG_REGS	dbgRegSet;    wdbDbgArchRegsGet (info, regs, &regSet, &dbgRegSet, FALSE);    /* save the CS in ESF, to restore it in _wdbDbgCtxLoad() */    wdbDbgCtxCs  = info->cs;    wdbDbgCtxPc  = (UINT32)regSet.pc;    wdbDbgCtxEsp = regSet.esp;    wdbDbgBreakpoint((void *)info, &regSet, &dbgRegSet, hardware);    }/******************************************************************************** wdbDbgPreTrace - handle a single step** This routine is the I86 specific handler for single steps.** RETURNS: N/A** NOMANUAL*/ void wdbDbgPreTrace    (    BREAK_ESF *	info,		/* pointer to info saved on stack */    int *	regs,		/* pointer to saved registers */    BOOL	hardware	/* TRUE if it is a hardware breakpoint */    )    {    REG_SET	regSet;    wdbDbgArchRegsGet (info, regs, &regSet, NULL, FALSE);    /* save the CS in ESF, to restore it in _wdbDbgCtxLoad() */    wdbDbgCtxCs  = info->cs;    wdbDbgCtxPc  = (UINT32)regSet.pc;    wdbDbgCtxEsp = regSet.esp;    wdbDbgTrace((void *)info, &regSet);    }#if	DBG_HARDWARE_BP/********************************************************************************* wdbDbgHwAddrCheck - check the address for the hardware breakpoint.** This routine check the address for the hardware breakpoint.** RETURNS: OK or ERROR if the address is not appropriate.** NOMANUAL*/STATUS wdbDbgHwAddrCheck    (    UINT32 	addr,		/* address for hardware breakpoint */    UINT32	type,		/* hardware breakpoint type */    FUNCPTR	memProbeRtn	/* memProbe routine */    )    {    ULONG dummy;    type &= BRK_HARDMASK;    /* be sure address isn't odd, or beyond end of memory */    if ((type == BRK_DATAW1) || (type == BRK_DATARW1))        {        if (memProbeRtn ((char *) addr, READ, 1, (char*)&dummy) != OK)            return (ERROR);        }    else if ((type == BRK_DATAW2) || (type == BRK_DATARW2))        {        if (((int)addr & 1) ||            memProbeRtn ((char *) addr, READ, 2, (char*)&dummy) != OK)	    {            return (ERROR);            }        }    else if ((type == BRK_DATAW4) || (type == BRK_DATARW4))        {        if ((addr & 3) ||            memProbeRtn ((char *) addr, READ, 4, (char*)&dummy) != OK)            {            return (ERROR);            }        }    return (OK);    }/******************************************************************************** wdbDbgHwBpSet - set a data breakpoint register** type is the type of access that will generate a breakpoint.** NOMANUAL*/STATUS wdbDbgHwBpSet     (    DBG_REGS *	pDbgRegs,	/* debug registers */    UINT32	access,		/* access type */    UINT32 	addr		/* breakpoint addr */    )    {    switch (access)	{	case BRK_INST:	case BRK_DATAW1:	case BRK_DATAW2:	case BRK_DATAW4:	case BRK_DATARW1:	case BRK_DATARW2:	case BRK_DATARW4:	    break;	default:	    return (WDB_ERR_INVALID_HW_BP);	}    if (pDbgRegs->db0 == 0)	{	pDbgRegs->db0 = addr;	pDbgRegs->db7 |= (access << 16) | 0x02;	}    else if (pDbgRegs->db1 == 0)	{	pDbgRegs->db1 = addr;	pDbgRegs->db7 |= (access << 20) | 0x08;	}    else if (pDbgRegs->db2 == 0)	{	pDbgRegs->db2 = addr;	pDbgRegs->db7 |= (access << 24) | 0x20;	}    else if (pDbgRegs->db3 == 0)	{	pDbgRegs->db3 = addr;	pDbgRegs->db7 |= (access << 28) | 0x80;	}    else	return (WDB_ERR_HW_REGS_EXHAUSTED);    /* set GE bit if it is data breakpoint */    if (access & 0x300)	pDbgRegs->db7 |= 0x200;    return (OK);    }/******************************************************************************** wdbDbgHwBpFind - Find the hardware breakpoint** This routines find the type and the address of the address of the * hardware breakpoint that is set in the DBG_REGS structure.* Those informations are stored in the breakpoint structure that is passed* in parameter.** RETURNS : OK or ERROR if unable to find a hardware breakpoint** NOMANUAL*/ STATUS wdbDbgHwBpFind    (    DBG_REGS *	pDbgRegs,	/* debug registers */    UINT32 *	pType,		/* return type info via this pointer */    UINT32 *	pAddr		/* return address info via this pointer */    )    {    int ix;    int type = 0;    int addr = 0;    int statusBit, enableBit;    /* get address and type of breakpoint from DR6 and DR7 */    for (ix=0; ix<4; ix++)	{	statusBit = 1 << ix;	enableBit = 2 << (ix << 1);	if ((pDbgRegs->db6 & statusBit) && (pDbgRegs->db7 & enableBit))	    {	    switch (ix)		{		case 0:		    addr = pDbgRegs->db0;		    type = (pDbgRegs->db7 & 0x000f0000) >> 16 | BRK_HARDWARE;		    break;		case 1:		    addr = pDbgRegs->db1;		    type = (pDbgRegs->db7 & 0x00f00000) >> 20 | BRK_HARDWARE;		    break;		case 2:		    addr = pDbgRegs->db2;		    type = (pDbgRegs->db7 & 0x0f000000) >> 24 | BRK_HARDWARE;		    break;		case 3:		    addr = pDbgRegs->db3;		    type = (pDbgRegs->db7 & 0xf0000000) >> 28 | BRK_HARDWARE;		    break;		}	    }	}    if ((addr == 0) && (type == 0))	return (ERROR);    *pType = type;    *pAddr = addr;    return (OK);    }/********************************************************************************* wdbDbgRegsClear - clear hardware break point registers** This routine cleans hardware breakpoint registers.** RETURNS : N/A.** NOMANUAL*/void wdbDbgRegsClear    (    void    )    {    DBG_REGS dbgRegs;    dbgRegs.db0 = 0;    dbgRegs.db1 = 0;    dbgRegs.db2 = 0;    dbgRegs.db6 = 0;    dbgRegs.db7 = 0;    wdbDbgRegsSet (&dbgRegs);    }#endif	/* DBG_HARDWARE_BP */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色网综合在线观看| 日本不卡在线视频| 成人免费高清在线| 国产精品欧美一区喷水| 99精品久久只有精品| 丝袜美腿亚洲色图| 欧美乱熟臀69xxxxxx| 日韩影院在线观看| 欧美α欧美αv大片| 国产成人免费在线视频| 国产精品美女久久久久久2018| 国产成人精品亚洲午夜麻豆| 日本一区二区电影| 91小宝寻花一区二区三区| 一区二区三区.www| 欧美一区二区福利在线| 国产一区二区0| 国产精品久久久一区麻豆最新章节| 波多野结衣一区二区三区| 亚洲男同性恋视频| 欧美一区欧美二区| 成人午夜电影小说| 亚洲一卡二卡三卡四卡无卡久久| 6080亚洲精品一区二区| 国产一区二区福利| 中文字幕在线不卡一区| 欧美日韩一区三区四区| 国产综合久久久久久久久久久久| √…a在线天堂一区| 欧美一区二区在线视频| 99精品在线观看视频| 日本人妖一区二区| 国产精品久久毛片| 日韩精品一区二区三区蜜臀| 国产69精品久久777的优势| 一区二区三区国产豹纹内裤在线| 日韩精品一区二区三区老鸭窝| 成人91在线观看| 免费高清成人在线| ㊣最新国产の精品bt伙计久久| 日韩网站在线看片你懂的| 99精品国产视频| 国产一区二区三区视频在线播放| 亚洲激情自拍视频| 国产精品丝袜久久久久久app| 欧美肥妇free| 91色.com| 国产成人综合在线| 日韩中文字幕1| 亚洲天堂网中文字| 国产女主播视频一区二区| 欧美高清视频一二三区 | 日韩av高清在线观看| 综合久久久久久| 久久精品人人做人人爽97| 欧美剧情片在线观看| 99精品一区二区三区| 国产成人精品免费视频网站| 日韩福利视频导航| 亚洲国产日韩a在线播放性色| 国产精品美女久久久久久| www国产精品av| 欧美电视剧在线观看完整版| 欧美人伦禁忌dvd放荡欲情| 色老头久久综合| 懂色中文一区二区在线播放| 国产在线视视频有精品| 另类中文字幕网| 久久se精品一区二区| 日本大胆欧美人术艺术动态 | 丝袜亚洲另类丝袜在线| 一区二区三区av电影| 一片黄亚洲嫩模| 亚洲免费三区一区二区| 亚洲三级免费电影| 亚洲人成7777| 一区二区在线免费观看| 亚洲激情五月婷婷| 亚洲精选在线视频| 亚洲综合在线免费观看| 一级日本不卡的影视| 亚洲福利视频三区| 亚洲国产日韩综合久久精品| 偷窥少妇高潮呻吟av久久免费| 午夜免费久久看| 视频一区视频二区在线观看| 日韩 欧美一区二区三区| 麻豆精品视频在线观看免费| 国产原创一区二区| 国产·精品毛片| 色综合久久久久久久久久久| 在线观看免费成人| 91精品国产综合久久小美女| 精品剧情v国产在线观看在线| 久久日一线二线三线suv| 久久久亚洲综合| 亚洲欧洲www| 亚洲不卡av一区二区三区| 麻豆91在线播放| 成人av免费在线| 欧美色窝79yyyycom| 欧美电视剧在线看免费| 亚洲一区二区三区四区在线观看| 亚洲va欧美va人人爽| 欧美a级一区二区| 国产91色综合久久免费分享| 色伊人久久综合中文字幕| 在线观看91av| 国产午夜精品久久久久久免费视| 国产精品久久午夜夜伦鲁鲁| 亚洲一区二区三区不卡国产欧美| 久久精品国产久精国产爱| av男人天堂一区| 欧美一区二区三区四区久久| 国产欧美一区二区精品婷婷| 一区二区三区精品视频| 狠狠狠色丁香婷婷综合久久五月| 不卡电影一区二区三区| 日韩一区二区中文字幕| 国产精品视频免费看| 丝袜亚洲另类丝袜在线| 成人性生交大片免费看视频在线| 欧美三级三级三级| 久久精品欧美一区二区三区麻豆| 亚洲综合色婷婷| 国产精品一区二区在线观看网站| 在线观看中文字幕不卡| 国产婷婷精品av在线| 亚洲国产视频网站| 国产91在线|亚洲| 欧美一区二区三区视频免费| 亚洲欧美一区二区视频| 经典三级在线一区| 欧美日韩亚洲综合| 最近中文字幕一区二区三区| 久久激情综合网| 欧洲av在线精品| 国产精品久线观看视频| 国产在线精品一区在线观看麻豆| 欧美日韩一级片在线观看| 中文字幕字幕中文在线中不卡视频| 久久国产精品色| 欧美高清hd18日本| 一级日本不卡的影视| 99免费精品在线观看| 国产女人18毛片水真多成人如厕 | 亚洲一区二区三区国产| 粉嫩绯色av一区二区在线观看 | 亚洲精品欧美综合四区| 国产精品123| 精品国产亚洲一区二区三区在线观看 | 欧美精品一区二区久久婷婷| 欧美精品久久久久久久多人混战 | 欧美人妇做爰xxxⅹ性高电影 | 国产九色精品成人porny | 欧美电视剧免费全集观看 | 久久精品二区亚洲w码| 欧美精品免费视频| 亚洲国产精品麻豆| 欧美中文字幕久久| 亚洲一区在线播放| 91国产精品成人| 亚洲精品免费在线观看| 99久久777色| 亚洲免费看黄网站| 色菇凉天天综合网| 一区二区在线看| 日本高清不卡视频| 亚洲精品你懂的| 欧美中文字幕亚洲一区二区va在线| 亚洲免费观看高清完整版在线| av亚洲精华国产精华精| 国产精品看片你懂得| 91碰在线视频| 亚洲精品视频在线观看网站| 在线精品观看国产| 午夜精品成人在线视频| 91精品欧美一区二区三区综合在| 偷拍自拍另类欧美| 精品国产伦一区二区三区免费| 国内久久婷婷综合| 中文字幕精品一区| 在线观看视频欧美| 天天综合网天天综合色| 日韩欧美一级二级三级| 国产麻豆精品久久一二三| 中文字幕电影一区| 欧美综合欧美视频| 久久99久久99精品免视看婷婷| 久久精品无码一区二区三区| 不卡的av在线播放| 亚洲一区二区三区中文字幕在线| 欧美一区二区三区性视频| 国产在线国偷精品产拍免费yy| 国产精品麻豆久久久| 色婷婷精品大在线视频| 麻豆成人在线观看| 国产日韩av一区二区| 色一情一乱一乱一91av| 狂野欧美性猛交blacked|