]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - contrib/gdb/gdb/minimon.h
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / contrib / gdb / gdb / minimon.h
1 /* Definitions and macros for support of AMD's remote debugger, MiniMON.
2    Copyright 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   };