]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blob - gdb/minimon.h
import gdb-1999-07-07 post reformat
[thirdparty/binutils-gdb.git] / gdb / minimon.h
1 /* Definitions and macros for support of AMD's remote debugger, MiniMON.
2 Copyright (C) 1990, 1991 Free Software Foundation, Inc.
3
4 This file is part of GDB.
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 59 Temple Place - Suite 330,
19 Boston, MA 02111-1307, USA. */
20
21 /*
22 * Some basic types. FIXME, this should be done by declaring bitfield
23 * sizes in the structs. We can't portably depend on a "long int" being
24 * 32 bits, etc.
25 */
26 typedef long int INT32; /* 32 bit integer */
27 typedef unsigned long int UINT32; /* 32 bit integer (unsigned) */
28 typedef unsigned long int ADDR32; /* 32 bit address */
29 typedef unsigned long int INST32; /* 32 bit instruction */
30 typedef long int BOOLEAN; /* Boolean value (32 bit) */
31 typedef unsigned char BYTE; /* byte (8 bit) */
32 typedef short int INT16; /* 16 bit integer */
33 typedef unsigned short int UINT16; /* 16 bit integer (unsigned) */
34
35 /****************************************************************************/
36 /************************* Message Information ******************************/
37 /****************************************************************************/
38
39 /*
40 * Error codes
41 */
42
43 /* General errors */
44 #define EMUSAGE 1 /* Bad args / flags */
45 #define EMFAIL 2 /* Unrecoverable error */
46 #define EMBADADDR 3 /* Illegal address */
47 #define EMBADREG 4 /* Illegal register */
48 #define EMSYNTAX 5 /* Illegal command syntax */
49 #define EMACCESS 6 /* Could not access memory */
50 #define EMALLOC 7 /* Could not allocate memory */
51 #define EMTARGET 8 /* Unknown target type */
52 #define EMHINIT 9 /* Could not initialize host */
53 #define EMCOMM 10 /* Could not open communication channel */
54
55 /* Message errors */
56 #define EMBADMSG 11 /* Unknown message type */
57 #define EMMSG2BIG 12 /* Message to large for buffer */
58 #define EMNOSEND 13 /* Could not send message */
59 #define EMNORECV 14 /* Could not receive message */
60
61 #define EMRESET 15 /* Could not RESET target */
62 #define EMCONFIG 16 /* Could not get target CONFIG */
63 #define EMSTATUS 17 /* Could not get target STATUS */
64 #define EMREAD 18 /* Could not READ target memory */
65 #define EMWRITE 19 /* Could not WRITE target memory */
66 #define EMBKPTSET 20 /* Could not set breakpoint */
67 #define EMBKPTRM 21 /* Could not remove breakpoint */
68 #define EMBKPTSTAT 22 /* Could not get breakpoint status */
69 #define EMBKPTNONE 23 /* All breakpoints in use */
70 #define EMBKPTUSED 24 /* Breakpoints already in use */
71 #define EMCOPY 25 /* Could not COPY target memory */
72 #define EMFILL 26 /* Could not FILL target memory */
73 #define EMINIT 27 /* Could not initialize target memory */
74 #define EMGO 28 /* Could not start execution */
75 #define EMSTEP 29 /* Could not single step */
76 #define EMBREAK 30 /* Could not BREAK */
77 #define EMHIF 31 /* Could not perform HIF service */
78 #define EMCHANNEL0 32 /* Could not read CHANNEL0 */
79 #define EMCHANNEL1 33 /* Could not write CHANNEL1 */
80
81 /* COFF file loader errors */
82 #define EMOPEN 34 /* Could not open COFF file */
83 #define EMHDR 35 /* Could not read COFF header */
84 #define EMMAGIC 36 /* Bad magic number */
85 #define EMAOUT 37 /* Could not read COFF a.out header */
86 #define EMSCNHDR 38 /* Could not read COFF section header */
87 #define EMSCN 39 /* Could not read COFF section */
88 #define EMCLOSE 40 /* Could not close COFF file */
89
90 /* Log file errors */
91 #define EMLOGOPEN 41 /* Could not open log file */
92 #define EMLOGREAD 42 /* Could not read log file */
93 #define EMLOGWRITE 43 /* Could not write to log file */
94 #define EMLOGCLOSE 44 /* Could not close log file */
95
96 /* Command file errors */
97 #define EMCMDOPEN 45 /* Could not open command file */
98 #define EMCMDREAD 46 /* Could not read command file */
99 #define EMCMDWRITE 47 /* Could not write to command file */
100 #define EMCMDCLOSE 48 /* Could not close comand file */
101
102 #define EMTIMEOUT 49 /* Host timed out waiting for a message */
103 #define EMCOMMTYPE 50 /* A '-t' flag must be specified */
104 #define EMCOMMERR 51 /* Communication error */
105 #define EMBAUD 52 /* Invalid baud rate specified */
106 /*
107 * Memory Spaces
108 */
109 #define LOCAL_REG 0 /* Local processor register */
110 #define GLOBAL_REG 1 /* Global processor register */
111 #define SPECIAL_REG 2 /* Special processor register */
112 #define TLB_REG 3 /* Translation Lookaside Buffer */
113 #define COPROC_REG 4 /* Coprocessor register */
114 #define I_MEM 5 /* Instruction Memory */
115 #define D_MEM 6 /* Data Memory */
116 #define I_ROM 7 /* Instruction ROM */
117 #define D_ROM 8 /* Data ROM */
118 #define I_O 9 /* Input/Output */
119 #define I_CACHE 10 /* Instruction Cache */
120 #define D_CACHE 11 /* Data Cache */
121
122 /* To supress warnings for zero length array definitions */
123 #define DUMMY 1
124
125 /*
126 ** Host to target definitions
127 */
128
129 #define RESET 0
130 #define CONFIG_REQ 1
131 #define STATUS_REQ 2
132 #define READ_REQ 3
133 #define WRITE_REQ 4
134 #define BKPT_SET 5
135 #define BKPT_RM 6
136 #define BKPT_STAT 7
137 #define COPY 8
138 #define FILL 9
139 #define INIT 10
140 #define GO 11
141 #define STEP 12
142 #define BREAK 13
143
144 #define HIF_CALL_RTN 64
145 #define CHANNEL0 65
146 #define CHANNEL1_ACK 66
147
148
149 /*
150 ** Target to host definitions
151 */
152
153 #define RESET_ACK 32
154 #define CONFIG 33
155 #define STATUS 34
156 #define READ_ACK 35
157 #define WRITE_ACK 36
158 #define BKPT_SET_ACK 37
159 #define BKPT_RM_ACK 38
160 #define BKPT_STAT_ACK 39
161 #define COPY_ACK 40
162 #define FILL_ACK 41
163 #define INIT_ACK 42
164 #define HALT 43
165
166 #define ERROR 63
167
168 #define HIF_CALL 96
169 #define CHANNEL0_ACK 97
170 #define CHANNEL1 98
171
172
173 /* A "generic" message */
174 struct generic_msg_t
175 {
176 INT32 code; /* generic */
177 INT32 length;
178 BYTE byte[DUMMY];
179 };
180
181
182 /* A "generic" message (with an INT32 array) */
183 struct generic_int32_msg_t
184 {
185 INT32 code; /* generic */
186 INT32 length;
187 INT32 int32[DUMMY];
188 };
189
190
191 /*
192 ** Host to target messages
193 */
194
195 struct reset_msg_t
196 {
197 INT32 code; /* 0 */
198 INT32 length;
199 };
200
201
202 struct config_req_msg_t
203 {
204 INT32 code; /* 1 */
205 INT32 length;
206 };
207
208
209 struct status_req_msg_t
210 {
211 INT32 code; /* 2 */
212 INT32 length;
213 };
214
215
216 struct read_req_msg_t
217 {
218 INT32 code; /* 3 */
219 INT32 length;
220 INT32 memory_space;
221 ADDR32 address;
222 INT32 byte_count;
223 };
224
225
226 struct write_req_msg_t
227 {
228 INT32 code; /* 4 */
229 INT32 length;
230 INT32 memory_space;
231 ADDR32 address;
232 INT32 byte_count;
233 BYTE data[DUMMY];
234 };
235
236
237 struct write_r_msg_t
238 {
239 INT32 code; /* 4 */
240 INT32 length;
241 INT32 memory_space;
242 ADDR32 address;
243 INT32 byte_count;
244 INT32 data[DUMMY];
245 };
246
247
248 struct bkpt_set_msg_t
249 {
250 INT32 code; /* 5 */
251 INT32 length;
252 INT32 memory_space;
253 ADDR32 bkpt_addr;
254 INT32 pass_count;
255 INT32 bkpt_type;
256 };
257
258
259 struct bkpt_rm_msg_t
260 {
261 INT32 code; /* 6 */
262 INT32 length;
263 INT32 memory_space;
264 ADDR32 bkpt_addr;
265 };
266
267
268 struct bkpt_stat_msg_t
269 {
270 INT32 code; /* 7 */
271 INT32 length;
272 INT32 memory_space;
273 ADDR32 bkpt_addr;
274 };
275
276
277 struct copy_msg_t
278 {
279 INT32 code; /* 8 */
280 INT32 length;
281 INT32 source_space;
282 ADDR32 source_addr;
283 INT32 dest_space;
284 ADDR32 dest_addr;
285 INT32 byte_count;
286 };
287
288
289 struct fill_msg_t
290 {
291 INT32 code; /* 9 */
292 INT32 length;
293 INT32 memory_space;
294 ADDR32 start_addr;
295 INT32 fill_count;
296 INT32 byte_count;
297 BYTE fill_data[DUMMY];
298 };
299
300
301 struct init_msg_t
302 {
303 INT32 code; /* 10 */
304 INT32 length;
305 ADDR32 text_start;
306 ADDR32 text_end;
307 ADDR32 data_start;
308 ADDR32 data_end;
309 ADDR32 entry_point;
310 INT32 mem_stack_size;
311 INT32 reg_stack_size;
312 ADDR32 arg_start;
313 INT32 os_control;
314 };
315
316
317 struct go_msg_t
318 {
319 INT32 code; /* 11 */
320 INT32 length;
321 };
322
323
324 struct step_msg_t
325 {
326 INT32 code; /* 12 */
327 INT32 length;
328 INT32 count;
329 };
330
331
332 struct break_msg_t
333 {
334 INT32 code; /* 13 */
335 INT32 length;
336 };
337
338
339 struct hif_call_rtn_msg_t
340 {
341 INT32 code; /* 64 */
342 INT32 length;
343 INT32 service_number;
344 INT32 gr121;
345 INT32 gr96;
346 INT32 gr97;
347 };
348
349
350 struct channel0_msg_t
351 {
352 INT32 code; /* 65 */
353 INT32 length;
354 BYTE data;
355 };
356
357
358 struct channel1_ack_msg_t
359 {
360 INT32 code; /* 66 */
361 INT32 length;
362 };
363
364
365 /*
366 ** Target to host messages
367 */
368
369
370 struct reset_ack_msg_t
371 {
372 INT32 code; /* 32 */
373 INT32 length;
374 };
375
376
377 struct config_msg_t
378 {
379 INT32 code; /* 33 */
380 INT32 length;
381 INT32 processor_id;
382 INT32 version;
383 ADDR32 I_mem_start;
384 INT32 I_mem_size;
385 ADDR32 D_mem_start;
386 INT32 D_mem_size;
387 ADDR32 ROM_start;
388 INT32 ROM_size;
389 INT32 max_msg_size;
390 INT32 max_bkpts;
391 INT32 coprocessor;
392 INT32 reserved;
393 };
394
395
396 struct status_msg_t
397 {
398 INT32 code; /* 34 */
399 INT32 length;
400 INT32 msgs_sent;
401 INT32 msgs_received;
402 INT32 errors;
403 INT32 bkpts_hit;
404 INT32 bkpts_free;
405 INT32 traps;
406 INT32 fills;
407 INT32 spills;
408 INT32 cycles;
409 INT32 reserved;
410 };
411
412
413 struct read_ack_msg_t
414 {
415 INT32 code; /* 35 */
416 INT32 length;
417 INT32 memory_space;
418 ADDR32 address;
419 INT32 byte_count;
420 BYTE data[DUMMY];
421 };
422
423 struct read_r_ack_msg_t
424 {
425 INT32 code; /* 35 */
426 INT32 length;
427 INT32 memory_space;
428 ADDR32 address;
429 INT32 byte_count;
430 INT32 data[DUMMY];
431 };
432
433
434 struct write_ack_msg_t
435 {
436 INT32 code; /* 36 */
437 INT32 length;
438 INT32 memory_space;
439 ADDR32 address;
440 INT32 byte_count;
441 };
442
443
444 struct bkpt_set_ack_msg_t
445 {
446 INT32 code; /* 37 */
447 INT32 length;
448 INT32 memory_space;
449 ADDR32 address;
450 INT32 pass_count;
451 INT32 bkpt_type;
452 };
453
454
455 struct bkpt_rm_ack_msg_t
456 {
457 INT32 code; /* 38 */
458 INT32 length;
459 INT32 memory_space;
460 ADDR32 address;
461 };
462
463
464 struct bkpt_stat_ack_msg_t
465 {
466 INT32 code; /* 39 */
467 INT32 length;
468 INT32 memory_space;
469 ADDR32 address;
470 INT32 pass_count;
471 INT32 bkpt_type;
472 };
473
474
475 struct copy_ack_msg_t
476 {
477 INT32 code; /* 40 */
478 INT32 length;
479 INT32 source_space;
480 ADDR32 source_addr;
481 INT32 dest_space;
482 ADDR32 dest_addr;
483 INT32 byte_count;
484 };
485
486
487 struct fill_ack_msg_t
488 {
489 INT32 code; /* 41 */
490 INT32 length;
491 INT32 memory_space;
492 ADDR32 start_addr;
493 INT32 fill_count;
494 INT32 byte_count;
495 };
496
497
498 struct init_ack_msg_t
499 {
500 INT32 code; /* 42 */
501 INT32 length;
502 };
503
504
505 struct halt_msg_t
506 {
507 INT32 code; /* 43 */
508 INT32 length;
509 INT32 memory_space;
510 ADDR32 pc0;
511 ADDR32 pc1;
512 INT32 trap_number;
513 };
514
515
516 struct error_msg_t
517 {
518 INT32 code; /* 63 */
519 INT32 length;
520 INT32 error_code;
521 INT32 memory_space;
522 ADDR32 address;
523 };
524
525
526 struct hif_call_msg_t
527 {
528 INT32 code; /* 96 */
529 INT32 length;
530 INT32 service_number;
531 INT32 lr2;
532 INT32 lr3;
533 INT32 lr4;
534 };
535
536
537 struct channel0_ack_msg_t
538 {
539 INT32 code; /* 97 */
540 INT32 length;
541 };
542
543
544 struct channel1_msg_t
545 {
546 INT32 code; /* 98 */
547 INT32 length;
548 BYTE data[DUMMY];
549 };
550
551
552
553 /*
554 ** Union all of the message types together
555 */
556
557 union msg_t
558 {
559 struct generic_msg_t generic_msg;
560 struct generic_int32_msg_t generic_int32_msg;
561
562 struct reset_msg_t reset_msg;
563 struct config_req_msg_t config_req_msg;
564 struct status_req_msg_t status_req_msg;
565 struct read_req_msg_t read_req_msg;
566 struct write_req_msg_t write_req_msg;
567 struct write_r_msg_t write_r_msg;
568 struct bkpt_set_msg_t bkpt_set_msg;
569 struct bkpt_rm_msg_t bkpt_rm_msg;
570 struct bkpt_stat_msg_t bkpt_stat_msg;
571 struct copy_msg_t copy_msg;
572 struct fill_msg_t fill_msg;
573 struct init_msg_t init_msg;
574 struct go_msg_t go_msg;
575 struct step_msg_t step_msg;
576 struct break_msg_t break_msg;
577
578 struct hif_call_rtn_msg_t hif_call_rtn_msg;
579 struct channel0_msg_t channel0_msg;
580 struct channel1_ack_msg_t channel1_ack_msg;
581
582 struct reset_ack_msg_t reset_ack_msg;
583 struct config_msg_t config_msg;
584 struct status_msg_t status_msg;
585 struct read_ack_msg_t read_ack_msg;
586 struct read_r_ack_msg_t read_r_ack_msg;
587 struct write_ack_msg_t write_ack_msg;
588 struct bkpt_set_ack_msg_t bkpt_set_ack_msg;
589 struct bkpt_rm_ack_msg_t bkpt_rm_ack_msg;
590 struct bkpt_stat_ack_msg_t bkpt_stat_ack_msg;
591 struct copy_ack_msg_t copy_ack_msg;
592 struct fill_ack_msg_t fill_ack_msg;
593 struct init_ack_msg_t init_ack_msg;
594 struct halt_msg_t halt_msg;
595
596 struct error_msg_t error_msg;
597
598 struct hif_call_msg_t hif_call_msg;
599 struct channel0_ack_msg_t channel0_ack_msg;
600 struct channel1_msg_t channel1_msg;
601 };