Commit | Line | Data |
---|---|---|
c906108c SS |
1 | /* |
2 | * Copyright (C) 1995 Advanced RISC Machines Limited. All rights reserved. | |
3 | * | |
4 | * This software may be freely used, copied, modified, and distributed | |
5 | * provided that the above copyright notice is preserved in all copies of the | |
6 | * software. | |
7 | */ | |
8 | ||
9 | /* | |
10 | * ARM debugger toolbox : dbg_rdi.h | |
11 | */ | |
12 | ||
13 | /* | |
14 | * RCS $Revision$ | |
15 | * Checkin $Date$ | |
16 | */ | |
17 | ||
18 | #ifndef dbg_rdi__h | |
19 | #define dbg_rdi__h | |
20 | ||
21 | /***************************************************************************\ | |
22 | * Other RDI values * | |
23 | \***************************************************************************/ | |
24 | ||
25 | #define RDISex_Little 0 /* the byte sex of the debuggee */ | |
26 | #define RDISex_Big 1 | |
27 | #define RDISex_DontCare 2 | |
28 | ||
29 | #define RDIPoint_EQ 0 /* the different types of break/watchpoints */ | |
30 | #define RDIPoint_GT 1 | |
31 | #define RDIPoint_GE 2 | |
32 | #define RDIPoint_LT 3 | |
33 | #define RDIPoint_LE 4 | |
34 | #define RDIPoint_IN 5 | |
35 | #define RDIPoint_OUT 6 | |
36 | #define RDIPoint_MASK 7 | |
37 | ||
38 | #define RDIPoint_16Bit 16 /* 16-bit breakpoint */ | |
39 | #define RDIPoint_Conditional 32 | |
40 | ||
41 | /* ORRed with point type in extended RDP break and watch messages */ | |
42 | #define RDIPoint_Inquiry 64 | |
43 | #define RDIPoint_Handle 128 /* messages */ | |
44 | ||
45 | #define RDIWatch_ByteRead 1 /* types of data accesses to watch for*/ | |
46 | #define RDIWatch_HalfRead 2 | |
47 | #define RDIWatch_WordRead 4 | |
48 | #define RDIWatch_ByteWrite 8 | |
49 | #define RDIWatch_HalfWrite 16 | |
50 | #define RDIWatch_WordWrite 32 | |
51 | ||
52 | #define RDIReg_R15 (1L << 15) /* mask values for CPU */ | |
53 | #define RDIReg_PC (1L << 16) | |
54 | #define RDIReg_CPSR (1L << 17) | |
55 | #define RDIReg_SPSR (1L << 18) | |
56 | #define RDINumCPURegs 19 | |
57 | ||
58 | #define RDINumCPRegs 10 /* current maximum */ | |
59 | ||
60 | #define RDIMode_Curr 255 | |
61 | ||
62 | /* RDI_Info subcodes */ | |
63 | /* rdp in parameters are all preceded by */ | |
64 | /* in byte = RDP_Info, word = info subcode */ | |
65 | /* out parameters are all preceded by */ | |
66 | /* out byte = RDP_Return */ | |
67 | ||
68 | #define RDIInfo_Target 0 | |
69 | /* rdi: out ARMword *targetflags, out ARMword *processor id */ | |
70 | /* rdp: in none, out word targetflags, word processorid, byte status */ | |
71 | /* the following bits are defined in targetflags */ | |
72 | # define RDITarget_LogSpeed 0x0f | |
73 | # define RDITarget_HW 0x10 /* else emulator */ | |
74 | # define RDITarget_AgentMaxLevel 0xe0 | |
75 | # define RDITarget_AgentLevelShift 5 | |
76 | # define RDITarget_DebuggerMinLevel 0x700 | |
77 | # define RDITarget_DebuggerLevelShift 8 | |
78 | # define RDITarget_CanReloadAgent 0x800 | |
79 | # define RDITarget_CanInquireLoadSize 0x1000 | |
80 | # define RDITarget_UnderstandsRDPInterrupt 0x2000 | |
81 | # define RDITarget_CanProfile 0x4000 | |
82 | # define RDITarget_Code16 0x8000 | |
83 | # define RDITarget_HasCommsChannel 0x10000 | |
84 | ||
85 | #define RDIInfo_Points 1 | |
86 | /* rdi: out ARMword *pointcapabilities */ | |
87 | /* rdp: in none, out word pointcapabilities, byte status */ | |
88 | /* the following bits are defined in pointcapabilities */ | |
89 | # define RDIPointCapability_Comparison 1 | |
90 | # define RDIPointCapability_Range 2 | |
91 | /* 4 to 128 are RDIWatch_xx{Read,Write} left-shifted by two */ | |
92 | # define RDIPointCapability_Mask 0x100 | |
93 | # define RDIPointCapability_ThreadBreak 0x200 | |
94 | # define RDIPointCapability_ThreadWatch 0x400 | |
95 | # define RDIPointCapability_CondBreak 0x800 | |
96 | # define RDIPointCapability_Status 0x1000 /* status enquiries available */ | |
97 | ||
98 | #define RDIInfo_Step 2 | |
99 | /* rdi: out ARMword *stepcapabilities */ | |
100 | /* rdp: in none, out word stepcapabilities, byte status */ | |
101 | /* the following bits are defined in stepcapabilities */ | |
102 | # define RDIStep_Multiple 1 | |
103 | # define RDIStep_PCChange 2 | |
104 | # define RDIStep_Single 4 | |
105 | ||
106 | #define RDIInfo_MMU 3 | |
107 | /* rdi: out ARMword *mmuidentity */ | |
108 | /* rdp: in none, out word mmuidentity, byte status */ | |
109 | ||
110 | #define RDIInfo_DownLoad 4 | |
111 | /* Inquires whether configuration download and selection is available. */ | |
112 | /* rdp: in none, out byte status */ | |
113 | /* No argument, no return value. status == ok if available */ | |
114 | ||
115 | #define RDIInfo_SemiHosting 5 | |
116 | /* Inquires whether RDISemiHosting_* RDI_Info calls are available. */ | |
117 | /* rdp: in none, out byte status */ | |
118 | /* No argument, no return value. status == ok if available */ | |
119 | ||
120 | #define RDIInfo_CoPro 6 | |
121 | /* Inquires whether CoPro RDI_Info calls are available. */ | |
122 | /* rdp: in none, out byte status */ | |
123 | /* No argument, no return value. status == ok if available */ | |
124 | ||
125 | #define RDIInfo_Icebreaker 7 | |
126 | /* Inquires whether debuggee controlled by IceBreaker. */ | |
127 | /* rdp: in none, out byte status */ | |
128 | /* No argument, no return value. status == ok if available */ | |
129 | ||
130 | #define RDIMemory_Access 8 | |
131 | /* rdi: out RDI_MemAccessStats *p, in ARMword *handle */ | |
132 | /* rdp: in word handle */ | |
133 | /* out word nreads, word nwrites, word sreads, word swrites, */ | |
134 | /* word ns, word s, byte status */ | |
135 | ||
136 | /* Get memory access information for memory block with specified handle */ | |
137 | ||
138 | #define RDIMemory_Map 9 | |
139 | /* rdi: in RDI_MemDescr md[n], in ARMword *n */ | |
140 | /* rdp: in word n, n * { */ | |
141 | /* word handle, word start, word limit, */ | |
142 | /* byte width, byte access */ | |
143 | /* word Nread_ns, word Nwrite_ns, */ | |
144 | /* word Sread_ns, word Swrite_ns} */ | |
145 | /* out byte status */ | |
146 | /* Sets memory characteristics. */ | |
147 | ||
148 | #define RDISet_CPUSpeed 10 | |
149 | /* rdi: in ARMword *speed */ | |
150 | /* rdp: in word speed, out byte status */ | |
151 | /* Sets CPU speed (in ns) */ | |
152 | ||
153 | #define RDIRead_Clock 12 | |
154 | /* rdi: out ARMword *ns, out ARMword *s */ | |
155 | /* rdp: in none, out word ns, word s, byte status */ | |
156 | /* Reads simulated time */ | |
157 | ||
158 | #define RDIInfo_Memory_Stats 13 | |
159 | /* Inquires whether RDI_Info codes 8-10 are available */ | |
160 | /* rdp: in none, out byte status */ | |
161 | /* No argument, no return value. status == ok if available */ | |
162 | ||
163 | /* The next two are only to be used if RDIInfo_DownLoad returned no */ | |
164 | /* error */ | |
165 | #define RDIConfig_Count 14 | |
166 | /* rdi: out ARMword *count */ | |
167 | /* rdp: out byte status, word count (if status == OK) */ | |
168 | ||
169 | /* In addition, the next one is only to be used if RDIConfig_Count */ | |
170 | /* returned no error */ | |
171 | typedef struct { unsigned32 version; char name[32]; } RDI_ConfigDesc; | |
172 | #define RDIConfig_Nth 15 | |
173 | /* rdi: in ARMword *n, out RDI_ConfigDesc * */ | |
174 | /* rdp: in word n */ | |
175 | /* out word version, byte namelen, bytes * bytelen name, */ | |
176 | /* byte status */ | |
177 | ||
178 | /* Set a front-end polling function to be used from within driver poll */ | |
179 | /* loops */ | |
180 | typedef void RDI_PollProc(void *); | |
181 | typedef struct { RDI_PollProc *p; void *arg; } RDI_PollDesc; | |
182 | #define RDISet_PollProc 16 | |
183 | /* rdi: in RDI_PollDesc const *from, RDI_PollDesc *to */ | |
184 | /* if from non-NULL, sets the polling function from it */ | |
185 | /* if to non-NULL, returns the previous polling function to it */ | |
186 | /* No corresponding RDP operation */ | |
187 | ||
188 | /* Called on debugger startup to see if the target is ready to execute */ | |
189 | #define RDIInfo_CanTargetExecute 20 | |
190 | /* rdi: in void | |
191 | * out byte status (RDIError_NoError => Yes, Otherwise No) | |
192 | */ | |
193 | ||
194 | /* Called to set the top of target memory in an ICEman2 system | |
195 | * This is then used by ICEman to tell the C Library via the INFOHEAP | |
196 | * SWI where the stack should start. | |
197 | * Note that only ICEman2 supports this call. Other systems eg. | |
198 | * Demon, Angel, will simply return an error, which means that setting | |
199 | * the top of memory in this fashion is not supported. | |
200 | */ | |
201 | #define RDIInfo_SetTopMem 21 | |
202 | /* rdi: in word mem_top | |
203 | * out byte status (RDIError_NoError => Done, Other => Not supported | |
204 | */ | |
205 | ||
206 | /* Called before performing a loadagent to determine the endianess of | |
207 | * the debug agent, so that images of the wrong bytesex can be | |
208 | * complained about | |
209 | */ | |
210 | #define RDIInfo_AgentEndianess 22 | |
211 | /* rdi: in void | |
212 | * out byte status | |
213 | * status should be RDIError_LittleEndian or RDIError_BigEndian | |
214 | * any other value indicates the target does not support this | |
215 | * request, so the debugger will have to make a best guess, which | |
216 | * probably means only allow little endian loadagenting. | |
217 | */ | |
218 | ||
219 | /* The next two are only to be used if the value returned by */ | |
220 | /* RDIInfo_Points has RDIPointCapability_Status set. */ | |
221 | #define RDIPointStatus_Watch 0x80 | |
222 | #define RDIPointStatus_Break 0x81 | |
223 | /* rdi: inout ARMword * (in handle, out hwresource), out ARMword *type */ | |
224 | /* rdp: in word handle, out word hwresource, word type, byte status */ | |
225 | ||
226 | #define RDISignal_Stop 0x100 | |
227 | /* Requests that the debuggee stop */ | |
228 | /* No arguments, no return value */ | |
229 | /* rdp: no reply (when the debuggee stops, there will be a reply to the */ | |
230 | /* step or execute request which started it) */ | |
231 | ||
232 | #define RDIVector_Catch 0x180 | |
233 | /* rdi: in ARMword *bitmap */ | |
234 | /* rdp: int word bitmap, out byte status */ | |
235 | /* bit i in bitmap set to cause vector i to cause entry to debugger */ | |
236 | ||
237 | /* The next four are only to be used if RDIInfo_Semihosting returned */ | |
238 | /* no error */ | |
239 | #define RDISemiHosting_SetState 0x181 | |
240 | /* rdi: in ARMword *semihostingstate */ | |
241 | /* rdp: in word semihostingstate, out byte status */ | |
242 | #define RDISemiHosting_GetState 0x182 | |
243 | /* rdi: out ARMword *semihostingstate */ | |
244 | /* rdp: in none, out word semihostingstate, byte status */ | |
245 | #define RDISemiHosting_SetVector 0x183 | |
246 | /* rdi: in ARMword *semihostingvector */ | |
247 | /* rdp: in word semihostingvector, out byte status */ | |
248 | #define RDISemiHosting_GetVector 0x184 | |
249 | /* rdi: out ARMword *semihostingvector */ | |
250 | /* rdp: in none, out word semihostingvector, byte status */ | |
251 | ||
252 | /* The next two are only to be used if RDIInfo_Icebreaker returned */ | |
253 | /* no error */ | |
254 | #define RDIIcebreaker_GetLocks 0x185 | |
255 | /* rdi: out ARMword *lockedstate */ | |
256 | /* rdp: in none, out word lockedstate, byte status */ | |
257 | ||
258 | #define RDIIcebreaker_SetLocks 0x186 | |
259 | /* rdi: in ARMword *lockedstate */ | |
260 | /* rdp: in word lockedstate, out byte status */ | |
261 | ||
262 | /* lockedstate is a bitmap of the icebreaker registers locked against */ | |
263 | /* use by IceMan (because explicitly written by the user) */ | |
264 | ||
265 | #define RDIInfo_GetLoadSize 0x187 | |
266 | /* rdi: out ARMword *maxloadsize */ | |
267 | /* rdp: in none, out word maxloadsize, byte status */ | |
268 | /* Inquires the maximum length of data transfer the agent is prepared */ | |
269 | /* to receive */ | |
270 | /* Only usable if RDIInfo_Target returned RDITarget_CanInquireLoadSize */ | |
271 | /* rdi: out ARMword *size */ | |
272 | ||
273 | /* Only to be used if the value returned by RDIInfo_Target had */ | |
274 | /* RDITarget_HasCommsChannel set */ | |
275 | typedef void RDICCProc_ToHost(void *arg, ARMword data); | |
276 | typedef void RDICCProc_FromHost(void *arg, ARMword *data, int *valid); | |
277 | ||
278 | #define RDICommsChannel_ToHost 0x188 | |
279 | /* rdi: in RDICCProc_ToHost *, in void *arg */ | |
280 | /* rdp: in byte connect, out byte status */ | |
281 | #define RDICommsChannel_FromHost 0x189 | |
282 | /* rdi: in RDICCProc_FromHost *, in void *arg */ | |
283 | /* rdp: in byte connect, out byte status */ | |
284 | ||
285 | /* These 4 are only to be used if RDIInfo_Semihosting returns no error */ | |
286 | #define RDISemiHosting_SetARMSWI 0x190 | |
287 | /* rdi: in ARMword ARM_SWI_number */ | |
288 | /* rdp: in ARMword ARM_SWI_number, out byte status */ | |
289 | ||
290 | #define RDISemiHosting_GetARMSWI 0x191 | |
291 | /* rdi: out ARMword ARM_SWI_number */ | |
292 | /* rdp: out ARMword ARM_SWI_number, byte status */ | |
293 | ||
294 | #define RDISemiHosting_SetThumbSWI 0x192 | |
295 | /* rdi: in ARMword Thumb_SWI_number */ | |
296 | /* rdp: in ARMword Thumb_SWI_number, out byte status */ | |
297 | ||
298 | #define RDISemiHosting_GetThumbSWI 0x193 | |
299 | /* rdi: out ARMword ARM_Thumb_number */ | |
300 | /* rdp: out ARMword ARM_Thumb_number, byte status */ | |
301 | ||
302 | ||
303 | #define RDICycles 0x200 | |
304 | /* rdi: out ARMword cycles[12] */ | |
305 | /* rdp: in none, out 6 words cycles, byte status */ | |
306 | /* the rdi result represents 6 big-endian doublewords; the rdp results */ | |
307 | /* return values for the ls halves of these */ | |
308 | # define RDICycles_Size 48 | |
309 | ||
310 | #define RDIErrorP 0x201 | |
311 | /* rdi: out ARMaddress *errorp */ | |
312 | /* rdp: in none, out word errorp, byte status */ | |
313 | /* Returns the error pointer associated with the last return from step */ | |
314 | /* or execute with status RDIError_Error. */ | |
315 | ||
316 | #define RDISet_Cmdline 0x300 | |
317 | /* rdi: in char *commandline (a null-terminated string) */ | |
318 | /* No corresponding RDP operation (cmdline is sent to the agent in */ | |
319 | /* response to SWI_GetEnv) */ | |
320 | ||
321 | #define RDISet_RDILevel 0x301 | |
322 | /* rdi: in ARMword *level */ | |
323 | /* rdp: in word level, out byte status */ | |
324 | /* Sets the RDI/RDP protocol level to be used (must lie between the */ | |
325 | /* limits returned by RDIInfo_Target). */ | |
326 | ||
327 | #define RDISet_Thread 0x302 | |
328 | /* rdi: in ARMword *threadhandle */ | |
329 | /* rdp: in word threadhandle, out byte status */ | |
330 | /* Sets the thread context for subsequent thread-sensitive operations */ | |
331 | /* (null value sets no thread) */ | |
332 | ||
333 | /* The next two are only to be used if RDI_read or RDI_write returned */ | |
334 | /* RDIError_LittleEndian or RDIError_BigEndian, to signify that the */ | |
335 | /* debugger has noticed. */ | |
336 | #define RDIInfo_AckByteSex 0x303 | |
337 | /* rdi: in ARMword *sex (RDISex_Little or RDISex_Big) */ | |
338 | ||
339 | /* The next two are only to be used if RDIInfo_CoPro returned no error */ | |
340 | #define RDIInfo_DescribeCoPro 0x400 | |
341 | /* rdi: in int *cpno, Dbg_CoProDesc *cpd */ | |
342 | /* rdp: in byte cpno, */ | |
343 | /* cpd->entries * { */ | |
344 | /* byte rmin, byte rmax, byte nbytes, byte access, */ | |
345 | /* byte cprt_r_b0, cprt_r_b1, cprt_w_b0, cprt_w_b1} */ | |
346 | /* byte = 255 */ | |
347 | /* out byte status */ | |
348 | ||
349 | #define RDIInfo_RequestCoProDesc 0x401 | |
350 | /* rdi: in int *cpno, out Dbg_CoProDesc *cpd */ | |
351 | /* rpd: in byte cpno */ | |
352 | /* out nentries * { */ | |
353 | /* byte rmin, byte rmax, byte nbytes, byte access, */ | |
354 | /* } */ | |
355 | /* byte = 255, byte status */ | |
356 | ||
357 | #define RDIInfo_Log 0x800 | |
358 | /* rdi: out ARMword *logsetting */ | |
359 | /* No corresponding RDP operation */ | |
360 | #define RDIInfo_SetLog 0x801 | |
361 | /* rdi: in ARMword *logsetting */ | |
362 | /* No corresponding RDP operation */ | |
363 | ||
364 | #define RDIProfile_Stop 0x500 | |
365 | /* No arguments, no return value */ | |
366 | /* rdp: in none, out byte status */ | |
367 | /* Requests that pc sampling stop */ | |
368 | ||
369 | #define RDIProfile_Start 0x501 | |
370 | /* rdi: in ARMword *interval */ | |
371 | /* rdp: in word interval, out byte status */ | |
372 | /* Requests that pc sampling start, with period <interval> usec */ | |
373 | ||
374 | #define RDIProfile_WriteMap 0x502 | |
375 | /* rdi: in ARMword map[] */ | |
376 | /* map[0] is the length of the array, subsequent elements are sorted */ | |
377 | /* and are the base of ranges for pc sampling (so if the sampled pc */ | |
378 | /* lies between map[i] and map[i+1], count[i] is incremented). */ | |
379 | /* rdp: a number of messages, each of form: */ | |
380 | /* in word len, word size, word offset, <size> words map data */ | |
381 | /* out status */ | |
382 | /* len, size and offset are all word counts. */ | |
383 | ||
384 | #define RDIProfile_ReadMap 0x503 | |
385 | /* rdi: in ARMword *len, out ARMword counts[len] */ | |
386 | /* Requests that the counts array be set to the accumulated pc sample */ | |
387 | /* counts */ | |
388 | /* rdp: a number of messages, each of form: */ | |
389 | /* in word offset, word size */ | |
390 | /* out <size> words, status */ | |
391 | /* len, size and offset are all word counts. */ | |
392 | ||
393 | #define RDIProfile_ClearCounts 0x504 | |
394 | /* No arguments, no return value */ | |
395 | /* rdp: in none, out byte status */ | |
396 | /* Requests that pc sample counts be set to zero */ | |
397 | ||
398 | #define RDIInfo_RequestReset 0x900 | |
399 | /* Request reset of the target environment */ | |
400 | /* No arguments, no return value */ | |
401 | /* No RDP equivalent, sends an RDP reset */ | |
402 | ||
403 | #define RDIInfo_CapabilityRequest 0x8000 | |
404 | /* Request whether the interface supports the named capability. The */ | |
405 | /* capability is specified by or'ing the RDIInfo number with this, and */ | |
406 | /* sending that request */ | |
407 | /* rdi: in none */ | |
408 | /* rdp: in none, out byte status */ | |
409 | ||
410 | typedef struct { | |
411 | ARMword len; | |
412 | ARMword map[1]; | |
413 | } RDI_ProfileMap; | |
414 | ||
415 | typedef unsigned32 PointHandle; | |
416 | typedef unsigned32 ThreadHandle; | |
417 | #define RDINoPointHandle ((PointHandle)-1L) | |
418 | #define RDINoHandle ((ThreadHandle)-1L) | |
419 | ||
420 | struct Dbg_ConfigBlock; | |
421 | struct Dbg_HostosInterface; | |
422 | struct Dbg_MCState; | |
423 | typedef int rdi_open_proc(unsigned type, struct Dbg_ConfigBlock const *config, | |
424 | struct Dbg_HostosInterface const *i, | |
425 | struct Dbg_MCState *dbg_state); | |
426 | typedef int rdi_close_proc(void); | |
427 | typedef int rdi_read_proc(ARMword source, void *dest, unsigned *nbytes); | |
428 | typedef int rdi_write_proc(const void *source, ARMword dest, unsigned *nbytes); | |
429 | typedef int rdi_CPUread_proc(unsigned mode, unsigned32 mask, ARMword *state); | |
430 | typedef int rdi_CPUwrite_proc(unsigned mode, unsigned32 mask, ARMword const *state); | |
431 | typedef int rdi_CPread_proc(unsigned CPnum, unsigned32 mask, ARMword *state); | |
432 | typedef int rdi_CPwrite_proc(unsigned CPnum, unsigned32 mask, ARMword const *state); | |
433 | typedef int rdi_setbreak_proc(ARMword address, unsigned type, ARMword bound, | |
434 | PointHandle *handle); | |
435 | typedef int rdi_clearbreak_proc(PointHandle handle); | |
436 | typedef int rdi_setwatch_proc(ARMword address, unsigned type, unsigned datatype, | |
437 | ARMword bound, PointHandle *handle); | |
438 | typedef int rdi_clearwatch_proc(PointHandle handle); | |
439 | typedef int rdi_execute_proc(PointHandle *handle); | |
440 | typedef int rdi_step_proc(unsigned ninstr, PointHandle *handle); | |
441 | typedef int rdi_info_proc(unsigned type, ARMword *arg1, ARMword *arg2); | |
442 | typedef int rdi_pointinq_proc(ARMword *address, unsigned type, | |
443 | unsigned datatype, ARMword *bound); | |
444 | ||
445 | typedef enum { | |
446 | RDI_ConfigCPU, | |
447 | RDI_ConfigSystem | |
448 | } RDI_ConfigAspect; | |
449 | ||
450 | typedef enum { | |
451 | RDI_MatchAny, | |
452 | RDI_MatchExactly, | |
453 | RDI_MatchNoEarlier | |
454 | } RDI_ConfigMatchType; | |
455 | ||
456 | typedef int rdi_addconfig_proc(unsigned32 nbytes); | |
457 | typedef int rdi_loadconfigdata_proc(unsigned32 nbytes, char const *data); | |
458 | typedef int rdi_selectconfig_proc(RDI_ConfigAspect aspect, char const *name, | |
459 | RDI_ConfigMatchType matchtype, unsigned versionreq, | |
460 | unsigned *versionp); | |
461 | ||
462 | typedef char *getbufferproc(void *getbarg, unsigned32 *sizep); | |
463 | typedef int rdi_loadagentproc(ARMword dest, unsigned32 size, getbufferproc *getb, void *getbarg); | |
464 | typedef int rdi_targetisdead(void); | |
465 | ||
466 | typedef struct { | |
467 | int itemmax; | |
468 | char const * const *names; | |
469 | } RDI_NameList; | |
470 | ||
471 | typedef RDI_NameList const *rdi_namelistproc(void); | |
472 | ||
473 | typedef int rdi_errmessproc(char *buf, int buflen, int errnum); | |
474 | ||
475 | struct RDIProcVec { | |
476 | char rditypename[12]; | |
477 | ||
478 | rdi_open_proc *open; | |
479 | rdi_close_proc *close; | |
480 | rdi_read_proc *read; | |
481 | rdi_write_proc *write; | |
482 | rdi_CPUread_proc *CPUread; | |
483 | rdi_CPUwrite_proc *CPUwrite; | |
484 | rdi_CPread_proc *CPread; | |
485 | rdi_CPwrite_proc *CPwrite; | |
486 | rdi_setbreak_proc *setbreak; | |
487 | rdi_clearbreak_proc *clearbreak; | |
488 | rdi_setwatch_proc *setwatch; | |
489 | rdi_clearwatch_proc *clearwatch; | |
490 | rdi_execute_proc *execute; | |
491 | rdi_step_proc *step; | |
492 | rdi_info_proc *info; | |
493 | /* V2 RDI */ | |
494 | rdi_pointinq_proc *pointinquiry; | |
495 | ||
496 | /* These three useable only if RDIInfo_DownLoad returns no error */ | |
497 | rdi_addconfig_proc *addconfig; | |
498 | rdi_loadconfigdata_proc *loadconfigdata; | |
499 | rdi_selectconfig_proc *selectconfig; | |
500 | ||
501 | rdi_namelistproc *drivernames; | |
502 | rdi_namelistproc *cpunames; | |
503 | ||
504 | rdi_errmessproc *errmess; | |
505 | ||
506 | /* Only if RDIInfo_Target returns a value with RDITarget_LoadAgent set */ | |
507 | rdi_loadagentproc *loadagent; | |
508 | rdi_targetisdead *targetisdead; | |
509 | }; | |
510 | ||
511 | #endif |