source: rtems/bsps/mips/shared/gdbstub/gdb_if.h @ fd67814

5
Last change on this file since fd67814 was fd67814, checked in by Sebastian Huber <sebastian.huber@…>, on 04/23/18 at 10:06:14

bsps: Move GDB stubs to bsps

This patch is a part of the BSP source reorganization.

Update #3285.

  • Property mode set to 100644
File size: 3.8 KB
Line 
1/**
2 * @file
3 * @ingroup mips_gdb
4 * @brief Definition of the interface between stub and gdb
5 */
6
7/*
8 * gdb_if.h - definition of the interface between the stub and gdb
9 *
10 *                   THIS SOFTWARE IS NOT COPYRIGHTED
11 *
12 *  The following software is offered for use in the public domain.
13 *  There is no warranty with regard to this software or its performance
14 *  and the user must accept the software "AS IS" with all faults.
15 *
16 *  THE CONTRIBUTORS DISCLAIM ANY WARRANTIES, EXPRESS OR IMPLIED, WITH
17 *  REGARD TO THIS SOFTWARE INCLUDING BUT NOT LIMITED TO THE WARRANTIES
18 *  OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
19 */
20
21/**
22 * @defgroup mips_gdb GDB Interface
23 * @ingroup mips_shared
24 * @brief GDB Interface
25 * @{
26 */
27
28#ifndef _GDB_IF_H
29#define _GDB_IF_H
30
31/** @brief Max number of threads in qM response */
32#define QM_MAX_THREADS (20)
33
34struct rtems_gdb_stub_thread_info {
35  char display[256];
36  char name[256];
37  char more_display[256];
38};
39
40/**
41 * @name Prototypes
42 * @{
43 */
44
45int parse_zbreak(const char *in, int *type, unsigned char **addr, int *len);
46
47char* mem2hstr(char *buf, const unsigned char *mem, int count);
48int   hstr2mem(unsigned char *mem, const char *buf, int count);
49void  set_mem_err(void);
50unsigned char get_byte(const unsigned char *ptr);
51void  set_byte(unsigned char *ptr, int val);
52char* thread2vhstr(char *buf, int thread);
53char* thread2fhstr(char *buf, int thread);
54const char* fhstr2thread(const char *buf, int *thread);
55const char* vhstr2thread(const char *buf, int *thread);
56char* int2fhstr(char *buf, int val);
57char* int2vhstr(char *buf, int vali);
58const char* fhstr2int(const char *buf, int *ival);
59const char* vhstr2int(const char *buf, int *ival);
60int   hstr2byte(const char *buf, int *bval);
61int   hstr2nibble(const char *buf, int *nibble);
62
63Thread_Control *rtems_gdb_index_to_stub_id(int);
64int rtems_gdb_stub_thread_support_ok(void);
65int rtems_gdb_stub_get_current_thread(void);
66int rtems_gdb_stub_get_next_thread(int);
67int rtems_gdb_stub_get_offsets(
68  unsigned char **text_addr,
69  unsigned char **data_addr,
70  unsigned char **bss_addr
71);
72int rtems_gdb_stub_get_thread_regs(
73  int thread,
74  unsigned int *registers
75);
76int rtems_gdb_stub_set_thread_regs(
77  int thread,
78  unsigned int *registers
79);
80void rtems_gdb_process_query(
81  char *inbuffer,
82  char *outbuffer,
83  int   do_threads,
84  int   thread
85);
86
87/** @} */
88
89/**
90 * @name MIPS registers
91 * @brief Numbered in the order in which gdb expects to see them.
92 * @{
93 */
94
95#define ZERO            0
96#define AT              1
97#define V0              2
98#define V1              3
99#define A0              4
100#define A1              5
101#define A2              6
102#define A3              7
103
104#define T0              8
105#define T1              9
106#define T2              10
107#define T3              11
108#define T4              12
109#define T5              13
110#define T6              14
111#define T7              15
112
113#define S0              16
114#define S1              17
115#define S2              18
116#define S3              19
117#define S4              20
118#define S5              21
119#define S6              22
120#define S7              23
121
122#define T8              24
123#define T9              25
124#define K0              26
125#define K1              27
126#define GP              28
127#define SP              29
128#define S8              30
129#define RA              31
130
131#define SR              32
132#define LO              33
133#define HI              34
134#define BAD_VA          35
135#define CAUSE           36
136#define PC              37
137
138#define F0              38
139#define F1              39
140#define F2              40
141#define F3              41
142#define F4              42
143#define F5              43
144#define F6              44
145#define F7              45
146
147#define F8              46
148#define F9              47
149#define F10             48
150#define F11             49
151#define F12             50
152#define F13             51
153#define F14             52
154#define F15             53
155
156#define F16             54
157#define F17             55
158#define F18             56
159#define F19             57
160#define F20             58
161#define F21             59
162#define F22             60
163#define F23             61
164
165#define F24             62
166#define F25             63
167#define F26             64
168#define F27             65
169#define F28             66
170#define F29             67
171#define F30             68
172#define F31             69
173
174#define FCSR            70
175#define FIRR            71
176
177#define NUM_REGS        72
178
179/** @} */
180
181void mips_gdb_stub_install(int enableThreads) ;
182
183#define MEMOPT_READABLE   1
184#define MEMOPT_WRITEABLE  2
185
186#ifndef NUM_MEMSEGS
187#define NUM_MEMSEGS     10
188#endif
189
190int gdbstub_add_memsegment(unsigned,unsigned,int);
191
192/** @} */
193
194#endif /* _GDB_IF_H */
Note: See TracBrowser for help on using the repository browser.