📄 dbg_rdi.h
字号:
#define RDIIcebreaker_SetLocks 0x186/* rdi: in ARMword *lockedstate *//* rdp: in word lockedstate, out byte status *//* lockedstate is a bitmap of the icebreaker registers locked against *//* use by IceMan (because explicitly written by the user) */#define RDIInfo_GetLoadSize 0x187/* rdi: out ARMword *maxloadsize *//* rdp: in none, out word maxloadsize, byte status *//* Inquires the maximum length of data transfer the agent is prepared *//* to receive *//* Only usable if RDIInfo_Target returned RDITarget_CanInquireLoadSize *//* rdi: out ARMword *size *//* Only to be used if the value returned by RDIInfo_Target had *//* RDITarget_HasCommsChannel set */typedef void RDICCProc_ToHost(void *arg, ARMword data);typedef void RDICCProc_FromHost(void *arg, ARMword *data, int *valid);#define RDICommsChannel_ToHost 0x188/* rdi: in RDICCProc_ToHost *, in void *arg *//* rdp: in byte connect, out byte status */#define RDICommsChannel_FromHost 0x189/* rdi: in RDICCProc_FromHost *, in void *arg *//* rdp: in byte connect, out byte status *//* These 4 are only to be used if RDIInfo_Semihosting returns no error */#define RDISemiHosting_SetARMSWI 0x190/* rdi: in ARMword ARM_SWI_number *//* rdp: in ARMword ARM_SWI_number, out byte status */#define RDISemiHosting_GetARMSWI 0x191/* rdi: out ARMword ARM_SWI_number *//* rdp: out ARMword ARM_SWI_number, byte status */#define RDISemiHosting_SetThumbSWI 0x192/* rdi: in ARMword Thumb_SWI_number *//* rdp: in ARMword Thumb_SWI_number, out byte status */#define RDISemiHosting_GetThumbSWI 0x193/* rdi: out ARMword ARM_Thumb_number *//* rdp: out ARMword ARM_Thumb_number, byte status */#define RDICycles 0x200/* rdi: out ARMword cycles[12] *//* rdp: in none, out 6 words cycles, byte status *//* the rdi result represents 6 big-endian doublewords; the rdp results *//* return values for the ls halves of these */# define RDICycles_Size 48#define RDIErrorP 0x201/* rdi: out ARMaddress *errorp *//* rdp: in none, out word errorp, byte status *//* Returns the error pointer associated with the last return from step *//* or execute with status RDIError_Error. */#define RDISet_Cmdline 0x300/* rdi: in char *commandline (a null-terminated string) *//* No corresponding RDP operation (cmdline is sent to the agent in *//* response to SWI_GetEnv) */#define RDISet_RDILevel 0x301/* rdi: in ARMword *level *//* rdp: in word level, out byte status *//* Sets the RDI/RDP protocol level to be used (must lie between the *//* limits returned by RDIInfo_Target). */#define RDISet_Thread 0x302/* rdi: in ARMword *threadhandle *//* rdp: in word threadhandle, out byte status *//* Sets the thread context for subsequent thread-sensitive operations *//* (null value sets no thread) *//* The next two are only to be used if RDI_read or RDI_write returned *//* RDIError_LittleEndian or RDIError_BigEndian, to signify that the *//* debugger has noticed. */#define RDIInfo_AckByteSex 0x303/* rdi: in ARMword *sex (RDISex_Little or RDISex_Big) *//* The next two are only to be used if RDIInfo_CoPro returned no error */#define RDIInfo_DescribeCoPro 0x400/* rdi: in int *cpno, Dbg_CoProDesc *cpd *//* rdp: in byte cpno, *//* cpd->entries * { *//* byte rmin, byte rmax, byte nbytes, byte access, *//* byte cprt_r_b0, cprt_r_b1, cprt_w_b0, cprt_w_b1} *//* byte = 255 *//* out byte status */#define RDIInfo_RequestCoProDesc 0x401/* rdi: in int *cpno, out Dbg_CoProDesc *cpd *//* rpd: in byte cpno *//* out nentries * { *//* byte rmin, byte rmax, byte nbytes, byte access, *//* } *//* byte = 255, byte status */#define RDIInfo_Log 0x800/* rdi: out ARMword *logsetting *//* No corresponding RDP operation */#define RDIInfo_SetLog 0x801/* rdi: in ARMword *logsetting *//* No corresponding RDP operation */#define RDIProfile_Stop 0x500/* No arguments, no return value *//* rdp: in none, out byte status *//* Requests that pc sampling stop */#define RDIProfile_Start 0x501/* rdi: in ARMword *interval *//* rdp: in word interval, out byte status *//* Requests that pc sampling start, with period <interval> usec */#define RDIProfile_WriteMap 0x502/* rdi: in ARMword map[] *//* map[0] is the length of the array, subsequent elements are sorted *//* and are the base of ranges for pc sampling (so if the sampled pc *//* lies between map[i] and map[i+1], count[i] is incremented). *//* rdp: a number of messages, each of form: *//* in word len, word size, word offset, <size> words map data *//* out status *//* len, size and offset are all word counts. */#define RDIProfile_ReadMap 0x503/* rdi: in ARMword *len, out ARMword counts[len] *//* Requests that the counts array be set to the accumulated pc sample *//* counts *//* rdp: a number of messages, each of form: *//* in word offset, word size *//* out <size> words, status *//* len, size and offset are all word counts. */#define RDIProfile_ClearCounts 0x504/* No arguments, no return value *//* rdp: in none, out byte status *//* Requests that pc sample counts be set to zero */#define RDIInfo_RequestReset 0x900/* Request reset of the target environment *//* No arguments, no return value *//* No RDP equivalent, sends an RDP reset */#define RDIInfo_CapabilityRequest 0x8000/* Request whether the interface supports the named capability. The *//* capability is specified by or'ing the RDIInfo number with this, and *//* sending that request *//* rdi: in none *//* rdp: in none, out byte status */typedef struct { ARMword len; ARMword map[1];} RDI_ProfileMap;typedef unsigned32 PointHandle;typedef unsigned32 ThreadHandle;#define RDINoPointHandle ((PointHandle)-1L)#define RDINoHandle ((ThreadHandle)-1L)struct Dbg_ConfigBlock;struct Dbg_HostosInterface;struct Dbg_MCState;typedef int rdi_open_proc(unsigned type, struct Dbg_ConfigBlock const *config, struct Dbg_HostosInterface const *i, struct Dbg_MCState *dbg_state);typedef int rdi_close_proc(void);typedef int rdi_read_proc(ARMword source, void *dest, unsigned *nbytes);typedef int rdi_write_proc(const void *source, ARMword dest, unsigned *nbytes);typedef int rdi_CPUread_proc(unsigned mode, unsigned32 mask, ARMword *state);typedef int rdi_CPUwrite_proc(unsigned mode, unsigned32 mask, ARMword const *state);typedef int rdi_CPread_proc(unsigned CPnum, unsigned32 mask, ARMword *state);typedef int rdi_CPwrite_proc(unsigned CPnum, unsigned32 mask, ARMword const *state);typedef int rdi_setbreak_proc(ARMword address, unsigned type, ARMword bound, PointHandle *handle);typedef int rdi_clearbreak_proc(PointHandle handle);typedef int rdi_setwatch_proc(ARMword address, unsigned type, unsigned datatype, ARMword bound, PointHandle *handle);typedef int rdi_clearwatch_proc(PointHandle handle);typedef int rdi_execute_proc(PointHandle *handle);typedef int rdi_step_proc(unsigned ninstr, PointHandle *handle);typedef int rdi_info_proc(unsigned type, ARMword *arg1, ARMword *arg2);typedef int rdi_pointinq_proc(ARMword *address, unsigned type, unsigned datatype, ARMword *bound);typedef enum { RDI_ConfigCPU, RDI_ConfigSystem} RDI_ConfigAspect;typedef enum { RDI_MatchAny, RDI_MatchExactly, RDI_MatchNoEarlier} RDI_ConfigMatchType;typedef int rdi_addconfig_proc(unsigned32 nbytes);typedef int rdi_loadconfigdata_proc(unsigned32 nbytes, char const *data);typedef int rdi_selectconfig_proc(RDI_ConfigAspect aspect, char const *name, RDI_ConfigMatchType matchtype, unsigned versionreq, unsigned *versionp);typedef char *getbufferproc(void *getbarg, unsigned32 *sizep);typedef int rdi_loadagentproc(ARMword dest, unsigned32 size, getbufferproc *getb, void *getbarg);typedef int rdi_targetisdead(void);typedef struct { int itemmax; char const * const *names;} RDI_NameList;typedef RDI_NameList const *rdi_namelistproc(void);typedef int rdi_errmessproc(char *buf, int buflen, int errnum);struct RDIProcVec { char rditypename[12]; rdi_open_proc *open; rdi_close_proc *close; rdi_read_proc *read; rdi_write_proc *write; rdi_CPUread_proc *CPUread; rdi_CPUwrite_proc *CPUwrite; rdi_CPread_proc *CPread; rdi_CPwrite_proc *CPwrite; rdi_setbreak_proc *setbreak; rdi_clearbreak_proc *clearbreak; rdi_setwatch_proc *setwatch; rdi_clearwatch_proc *clearwatch; rdi_execute_proc *execute; rdi_step_proc *step; rdi_info_proc *info; /* V2 RDI */ rdi_pointinq_proc *pointinquiry; /* These three useable only if RDIInfo_DownLoad returns no error */ rdi_addconfig_proc *addconfig; rdi_loadconfigdata_proc *loadconfigdata; rdi_selectconfig_proc *selectconfig; rdi_namelistproc *drivernames; rdi_namelistproc *cpunames; rdi_errmessproc *errmess; /* Only if RDIInfo_Target returns a value with RDITarget_LoadAgent set */ rdi_loadagentproc *loadagent; rdi_targetisdead *targetisdead;};#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -