Mercurial > flash_v2
annotate packages/hal/common/current/include/generic-stub.h @ 895:4747af8ef0ef
Leave out unused static buffers if not supporting program args.
| author | gthomas |
|---|---|
| date | Wed, 02 Apr 2003 19:48:28 +0000 |
| parents | 4882695334f2 |
| children |
| rev | line source |
|---|---|
|
64
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
1 //======================================================================== |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
2 // |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
3 // generic-stub.h |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
4 // |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
5 // Definitions for the generic GDB remote stub |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
6 // |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
7 //======================================================================== |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
191
diff
changeset
|
8 //####ECOSGPLCOPYRIGHTBEGIN#### |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
191
diff
changeset
|
9 // ------------------------------------------- |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
191
diff
changeset
|
10 // This file is part of eCos, the Embedded Configurable Operating System. |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
191
diff
changeset
|
11 // Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. |
|
895
4747af8ef0ef
Leave out unused static buffers if not supporting program args.
gthomas
parents:
317
diff
changeset
|
12 // Copyright (C) 2003 Gary Thomas |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
191
diff
changeset
|
13 // |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
191
diff
changeset
|
14 // eCos is free software; you can redistribute it and/or modify it under |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
191
diff
changeset
|
15 // the terms of the GNU General Public License as published by the Free |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
191
diff
changeset
|
16 // Software Foundation; either version 2 or (at your option) any later version. |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
191
diff
changeset
|
17 // |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
191
diff
changeset
|
18 // eCos is distributed in the hope that it will be useful, but WITHOUT ANY |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
191
diff
changeset
|
19 // WARRANTY; without even the implied warranty of MERCHANTABILITY or |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
191
diff
changeset
|
20 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
191
diff
changeset
|
21 // for more details. |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
191
diff
changeset
|
22 // |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
191
diff
changeset
|
23 // You should have received a copy of the GNU General Public License along |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
191
diff
changeset
|
24 // with eCos; if not, write to the Free Software Foundation, Inc., |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
191
diff
changeset
|
25 // 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
191
diff
changeset
|
26 // |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
191
diff
changeset
|
27 // As a special exception, if other files instantiate templates or use macros |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
191
diff
changeset
|
28 // or inline functions from this file, or you compile this file and link it |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
191
diff
changeset
|
29 // with other works to produce a work based on this file, this file does not |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
191
diff
changeset
|
30 // by itself cause the resulting work to be covered by the GNU General Public |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
191
diff
changeset
|
31 // License. However the source code for this file must still be made available |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
191
diff
changeset
|
32 // in accordance with section (3) of the GNU General Public License. |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
191
diff
changeset
|
33 // |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
191
diff
changeset
|
34 // This exception does not invalidate any other reasons why a work based on |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
191
diff
changeset
|
35 // this file might be covered by the GNU General Public License. |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
191
diff
changeset
|
36 // |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
191
diff
changeset
|
37 // Alternative licenses for eCos may be arranged by contacting Red Hat, Inc. |
|
210
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
208
diff
changeset
|
38 // at http://sources.redhat.com/ecos/ecos-license/ |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
191
diff
changeset
|
39 // ------------------------------------------- |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
191
diff
changeset
|
40 //####ECOSGPLCOPYRIGHTEND#### |
|
64
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
41 //======================================================================== |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
42 //#####DESCRIPTIONBEGIN#### |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
43 // |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
44 // Author(s): Red Hat, nickg |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
112
diff
changeset
|
45 // Contributors: Red Hat, nickg, dmoseley |
|
64
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
46 // Date: 1998-06-08 |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
47 // Purpose: |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
48 // Description: Definitions for the generic GDB remote stub |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
49 // Usage: This header is not to be included by user code, and is |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
50 // only placed in a publically accessible directory so |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
51 // that platform stub packages are able to include it |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
52 // if required. |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
53 // |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
54 //####DESCRIPTIONEND#### |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
55 // |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
56 //======================================================================== |
|
54
f10165814f1e
Merge from eCos master repository on 1999-11-19-22:24:39-GMT
jlarmour
parents:
34
diff
changeset
|
57 |
|
f10165814f1e
Merge from eCos master repository on 1999-11-19-22:24:39-GMT
jlarmour
parents:
34
diff
changeset
|
58 |
| 0 | 59 #ifndef GENERIC_STUB_H |
| 60 #define GENERIC_STUB_H | |
| 61 | |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
66
diff
changeset
|
62 #ifdef __cplusplus |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
66
diff
changeset
|
63 extern "C" { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
66
diff
changeset
|
64 #endif |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
66
diff
changeset
|
65 |
| 2 | 66 /* Three typedefs must be provided before including this file. |
| 0 | 67 target_register_t should correspond to the largest register value on |
| 68 this target processor. | |
| 2 | 69 regnames_t corresponds to a type representing a register number. |
| 70 uint32 must correspond to at least a 32-bit unsigned integer type | |
| 71 (it may be larger). */ | |
| 0 | 72 |
| 73 #ifndef ASM | |
| 74 | |
| 2 | 75 #ifndef __ECOS__ |
| 76 #include "dbg-serial.h" | |
| 77 #endif // __ECOS__ | |
| 0 | 78 |
| 2 | 79 struct gdb_packet |
| 80 { | |
| 81 /* The checksum calculated so far. */ | |
| 82 uint32 checksum; | |
| 83 /* The checksum we've received from the remote side. */ | |
| 84 uint32 xmitcsum; | |
| 85 /* Contents of the accumulated packet. */ | |
| 86 char *contents; | |
| 87 /* Number of characters received. */ | |
| 88 uint32 length; | |
| 89 /* | |
| 90 * state is the current state: | |
| 91 * 0 = looking for start of packet | |
| 92 * 1 = got start of packet, looking for # terminator | |
| 93 * 2 = looking for first byte of checksum | |
| 94 * 3 = looking for second byte of checksum (indicating end of packet) | |
| 95 */ | |
| 96 char state; | |
|
191
678094f34118
Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents:
156
diff
changeset
|
97 char err; // This is set if the packet should be tossed because of overflow |
| 2 | 98 }; |
| 0 | 99 |
| 100 /* Return the currently-saved value corresponding to register REG. */ | |
| 101 extern target_register_t get_register (regnames_t reg); | |
| 102 | |
|
191
678094f34118
Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents:
156
diff
changeset
|
103 /* Write the contents of register WHICH into VALUE as raw bytes */ |
|
678094f34118
Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents:
156
diff
changeset
|
104 extern int get_register_as_bytes (regnames_t which, char *value); |
|
678094f34118
Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents:
156
diff
changeset
|
105 |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
112
diff
changeset
|
106 #ifdef CYGHWR_REGISTER_VALIDITY_CHECKING |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
112
diff
changeset
|
107 // Return the validity of register REG. |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
112
diff
changeset
|
108 extern int get_register_valid (regnames_t reg); |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
112
diff
changeset
|
109 #endif |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
112
diff
changeset
|
110 |
| 0 | 111 /* Store VALUE in the register corresponding to WHICH. */ |
| 112 extern void put_register (regnames_t which, target_register_t value); | |
| 113 | |
|
191
678094f34118
Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents:
156
diff
changeset
|
114 extern int put_register_as_bytes (regnames_t which, char *value); |
|
678094f34118
Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents:
156
diff
changeset
|
115 |
| 0 | 116 /* Set the next instruction to be executed when the user program resumes |
| 117 execution to PC. */ | |
|
112
02ea4320376c
Merge from eCos master repository on 2000-07-21-21:01:39-BST
jlarmour
parents:
76
diff
changeset
|
118 #if !defined(SET_PC_PROTOTYPE_EXISTS) && !defined(set_pc) |
|
02ea4320376c
Merge from eCos master repository on 2000-07-21-21:01:39-BST
jlarmour
parents:
76
diff
changeset
|
119 #define SET_PC_PROTOTYPE_EXISTS |
| 0 | 120 extern void set_pc (target_register_t pc); |
|
112
02ea4320376c
Merge from eCos master repository on 2000-07-21-21:01:39-BST
jlarmour
parents:
76
diff
changeset
|
121 #endif |
| 0 | 122 |
| 123 /* Set the return value of the currently-pending syscall to VALUE. */ | |
| 124 extern void set_syscall_value (target_register_t value); | |
| 125 | |
| 126 /* Return the Nth argument to the currently-pending syscall (starting from | |
| 127 0). */ | |
| 128 extern target_register_t get_syscall_arg (int n); | |
| 129 | |
| 130 /* Initialize the stub. This will also install any trap handlers needed by | |
| 131 the stub. */ | |
| 132 extern void initialize_stub (void); | |
| 133 | |
| 134 /* Initialize the hardware. */ | |
| 135 extern void initHardware (void); | |
| 136 | |
| 137 /* Skip the current instruction. */ | |
| 138 extern void __skipinst (void); | |
| 139 | |
| 2 | 140 /* If the address in the PC register corresponds to the breakpoint() |
| 141 instruction, return a non-zero value. */ | |
|
112
02ea4320376c
Merge from eCos master repository on 2000-07-21-21:01:39-BST
jlarmour
parents:
76
diff
changeset
|
142 #ifndef __is_breakpoint_function |
| 0 | 143 extern int __is_breakpoint_function (void); |
|
112
02ea4320376c
Merge from eCos master repository on 2000-07-21-21:01:39-BST
jlarmour
parents:
76
diff
changeset
|
144 #endif |
| 0 | 145 |
| 146 /* Execute a breakpoint instruction. Restarting will cause the instruction | |
| 147 to be skipped. */ | |
|
112
02ea4320376c
Merge from eCos master repository on 2000-07-21-21:01:39-BST
jlarmour
parents:
76
diff
changeset
|
148 #ifndef breakpoint |
| 0 | 149 extern void breakpoint (void); |
|
112
02ea4320376c
Merge from eCos master repository on 2000-07-21-21:01:39-BST
jlarmour
parents:
76
diff
changeset
|
150 #endif |
| 0 | 151 |
| 152 /* Return the syscall # corresponding to this system call. */ | |
| 153 extern int __get_syscall_num (void); | |
| 154 | |
| 155 /* Transfer exception event processing to the stub. */ | |
| 156 extern void __switch_to_stub (void); | |
| 157 | |
| 158 /* Send an exit packet containing the specified status. */ | |
| 159 extern void __send_exit_status (int status); | |
| 160 | |
| 2 | 161 /* Copy COUNT bytes of memory from ADDR to BUF. |
| 162 ADDR is assumed to live in the user program's space. | |
| 163 Returns number of bytes successfully read | |
| 164 (caller must check to see if less than requested). */ | |
|
34
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
2
diff
changeset
|
165 extern int __read_mem_safe (void *buf, |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
2
diff
changeset
|
166 void *addr, |
| 2 | 167 int count); |
| 0 | 168 |
|
156
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
115
diff
changeset
|
169 extern int __read_progmem_safe (void *buf, |
|
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
115
diff
changeset
|
170 void *addr, |
|
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
115
diff
changeset
|
171 int count); |
|
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
115
diff
changeset
|
172 |
| 2 | 173 /* Copy COUNT bytes of memory from BUF to ADDR. |
| 174 ADDR is assumed to live in the user program's space. | |
| 175 Returns number of bytes successfully read | |
| 176 (caller must check to see if less than requested). */ | |
|
112
02ea4320376c
Merge from eCos master repository on 2000-07-21-21:01:39-BST
jlarmour
parents:
76
diff
changeset
|
177 #ifndef __write_mem_safe |
|
34
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
2
diff
changeset
|
178 extern int __write_mem_safe (void *buf, |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
2
diff
changeset
|
179 void *addr, |
| 2 | 180 int count); |
|
112
02ea4320376c
Merge from eCos master repository on 2000-07-21-21:01:39-BST
jlarmour
parents:
76
diff
changeset
|
181 #endif |
| 0 | 182 |
|
156
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
115
diff
changeset
|
183 extern int __write_progmem_safe (void *buf, |
|
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
115
diff
changeset
|
184 void *addr, |
|
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
115
diff
changeset
|
185 int count); |
|
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
115
diff
changeset
|
186 |
| 2 | 187 /* Set to a non-zero value if a memory fault occurs while |
| 188 __set_mem_fault_trap () is running. */ | |
| 189 extern volatile int __mem_fault; | |
| 190 | |
| 191 #ifndef __ECOS__ | |
| 192 #if 1 | |
| 193 #include "stub-tservice.h" /* target dependent stub services */ | |
| 194 #else | |
| 0 | 195 /* Flush the instruction cache. */ |
| 196 extern void flush_i_cache (void); | |
| 197 | |
| 198 /* Flush the data cache. */ | |
| 199 extern void __flush_d_cache (void); | |
| 200 | |
| 201 typedef enum { | |
| 202 CACHE_NOOP, CACHE_ENABLE, CACHE_DISABLE, CACHE_FLUSH | |
| 203 } cache_control_t; | |
| 204 | |
| 205 /* Perform the specified operation on the instruction cache. | |
| 206 Returns 1 if the cache is enabled, 0 otherwise. */ | |
| 207 extern int __instruction_cache (cache_control_t request); | |
| 208 /* Perform the specified operation on the data cache. | |
| 209 Returns 1 if the cache is enabled, 0 otherwise. */ | |
| 210 extern int __data_cache (cache_control_t request); | |
| 2 | 211 #endif |
| 212 #endif // __ECOS__ | |
| 0 | 213 |
| 214 /* Write the 'T' packet in BUFFER. SIGVAL is the signal the program | |
| 215 received. */ | |
| 216 extern void __build_t_packet (int sigval, char *buffer); | |
| 217 | |
| 218 /* Return 1 when a complete packet has been received, 0 if the packet | |
| 219 is not yet complete, or -1 if an erroneous packet was NAKed. */ | |
| 2 | 220 int __add_char_to_packet (unsigned character, struct gdb_packet *packet); |
| 0 | 221 |
| 222 typedef int (*__PFI)(int); | |
| 223 typedef void (*__PFV)(void); | |
| 224 | |
| 225 /* When an exception occurs, __process_exception_vec will be invoked with | |
| 226 the signal number corresponding to the trap/exception. The function | |
| 227 should return zero if it wishes execution to resume from the saved | |
| 228 register values; a non-zero value indicates that the exception handler | |
| 229 should be reinvoked. */ | |
|
112
02ea4320376c
Merge from eCos master repository on 2000-07-21-21:01:39-BST
jlarmour
parents:
76
diff
changeset
|
230 #if !defined(PROCESS_EXCEPTION_VEC_PROTOTYPE_EXISTS) |
|
02ea4320376c
Merge from eCos master repository on 2000-07-21-21:01:39-BST
jlarmour
parents:
76
diff
changeset
|
231 #define PROCESS_EXCEPTION_VEC_PROTOTYPE_EXISTS |
| 0 | 232 extern volatile __PFI __process_exception_vec; |
|
112
02ea4320376c
Merge from eCos master repository on 2000-07-21-21:01:39-BST
jlarmour
parents:
76
diff
changeset
|
233 #endif |
| 2 | 234 |
| 235 /* __process_exit_vec is invoked when a 'k' kill packet is received | |
| 236 from GDB. */ | |
| 0 | 237 extern volatile __PFV __process_exit_vec; |
| 2 | 238 |
| 239 /* If SIGSYSCALL is defined, and such a signal value is returned from | |
| 240 __computeSignal (), the function pointed to by this vector will | |
| 241 be invoked. | |
| 242 | |
| 243 If the return value is negative, the user program is assumed to | |
| 244 have received the corresponding positive signal value, and an | |
| 245 exception will be processed. Otherwise, the user program is | |
| 246 restarted from the next instruction. */ | |
| 0 | 247 extern volatile __PFI __process_syscall_vec; |
| 2 | 248 |
| 249 /* A continue packet was received from GDB with a signal value. The function | |
| 250 pointed to by __process_signal_vec will be invoked with this signal | |
| 251 value. | |
| 252 | |
| 253 If a zero value is returned, we will ignore the signal, and proceed | |
| 254 with the continue request. Otherwise, the program will be killed | |
| 255 with the signal. */ | |
| 0 | 256 extern volatile __PFI __process_signal_vec; |
| 2 | 257 |
| 258 /* If non-NULL, __init_vec is called right before the user program is | |
| 259 resumed. */ | |
| 260 extern volatile __PFV __init_vec; | |
| 261 /* if non-NULL, __cleanup_vec is called after the user program takes | |
| 262 an exception. */ | |
| 263 extern volatile __PFV __cleanup_vec; | |
| 0 | 264 |
| 265 /* Send an 'O' packet to GDB containing STR. */ | |
| 2 | 266 extern int __output_gdb_string (target_register_t addr, int string_len); |
| 0 | 267 |
| 268 /* Request MAXLEN bytes of input from GDB to be stored in DEST. If BLOCK | |
| 269 is set, GDB should block until MAXLEN bytes are available to be | |
| 270 read; otherwise, it will return immediately with whatever data is | |
| 271 available. | |
| 272 The return value is the number of bytes written into DEST. */ | |
| 2 | 273 extern int __get_gdb_input (target_register_t dest, int maxlen, int block); |
| 0 | 274 |
| 2 | 275 /* Return the ASCII equivalent of C (C>=0 && C<=15). The result will be |
| 276 lower-case. */ | |
| 0 | 277 extern char __tohex (int c); |
| 278 | |
| 2 | 279 /* Convert COUNT bytes of the memory region in MEM to a hexadecimal |
| 280 string in DEST. | |
| 281 The resulting string will contain 2*COUNT characters. | |
| 282 If MAY_FAULT is non-zero, memory faults are trapped; if a fault occurs, | |
| 283 a NULL value will be returned. | |
| 284 The value returned is one byte past the end of the string written. */ | |
| 285 extern char *__mem2hex (char *mem, char *dest, int count, int may_fault); | |
| 286 | |
| 287 /* Given a hexadecimal string in MEM, write the equivalent bytes to DEST. | |
| 288 The string is assumed to contain 2*COUNT characters. | |
| 289 If MAY_FAULT is non-zero, memory faults are trapped; if a fault occurs, | |
| 290 a NULL value will be returned. | |
| 291 Otherwise, the value returned is one byte past the last byte written. */ | |
| 292 extern char *__hex2mem (char *buf, char *mem, int count, int may_fault); | |
| 293 | |
|
895
4747af8ef0ef
Leave out unused static buffers if not supporting program args.
gthomas
parents:
317
diff
changeset
|
294 #ifdef CYGSEM_ECOS_SUPPORTS_PROGRAM_ARGS |
| 2 | 295 /* Set the program arguments passed into the user program's main */ |
| 296 extern void __set_program_args (int argc, char **argv); | |
| 297 | |
| 298 /* Return the user program arguments passed in from GDB (via an 'A' | |
| 299 packet). argcPtr is a pointer into the user program, which will hold | |
| 300 the number of arguments; the strings are returned. */ | |
| 301 extern char **__get_program_args (target_register_t argcPtr); | |
|
895
4747af8ef0ef
Leave out unused static buffers if not supporting program args.
gthomas
parents:
317
diff
changeset
|
302 #endif |
| 2 | 303 |
| 304 /* Encode PACKET as a remote protocol packet and send it to GDB; this takes | |
| 305 care of sending the initial '$' character, as well as the trailing '#' | |
| 306 and checksum, and also waits for an ACK from the remote side, resending | |
| 307 as necessary. */ | |
| 308 extern void __putpacket (char *packet); | |
| 309 | |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
191
diff
changeset
|
310 /* Retrieve the next remote protocol packet from GDB, taking care of verifying |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
191
diff
changeset
|
311 the checksum and sending an ACK when necessary. */ |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
191
diff
changeset
|
312 extern void __getpacket (char *buffer); |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
191
diff
changeset
|
313 |
| 2 | 314 /* Convert the hexadecimal string pointed to by *PTR into an integer, |
| 315 and store it in the value pointed to by INTVALUE. The number of | |
| 316 characters read from *PTR will be returned; *PTR will point to the first | |
| 317 non-hexadecmial character encountered. */ | |
| 318 extern unsigned int __hexToInt (char **ptr, target_register_t *intValue); | |
| 319 | |
| 320 /* Convert the value in INTVALUE into a string of hexadecimal | |
| 321 characters stored in PTR. NUMBITS are the number of bits to use | |
| 322 in INTVALUE. The number of characters written to PTR will be returned. */ | |
| 323 extern unsigned int __intToHex (char *ptr, | |
| 324 target_register_t intValue, | |
| 325 int numBits); | |
| 326 | |
| 327 /* Handle an exception, usually some sort of hardware or software trap. | |
| 328 This is responsible for communicating the exception to GDB. */ | |
| 329 extern void __handle_exception (void); | |
| 330 | |
| 331 /* Send a 'X' packet with signal SIGVAL to GDB. */ | |
| 332 extern void __kill_program (int sigval); | |
| 333 | |
| 334 /* Given a packet pointed to by PACKETCONTENTS, decode it and respond to | |
| 335 GDB appropriately. */ | |
| 336 extern int __process_packet (char *packetContents); | |
| 337 | |
| 338 /* Write the C-style string pointed to by STR to the GDB comm port. | |
| 339 Used for printing debug messages. */ | |
| 340 extern void __putDebugStr (char *str); | |
| 341 | |
|
112
02ea4320376c
Merge from eCos master repository on 2000-07-21-21:01:39-BST
jlarmour
parents:
76
diff
changeset
|
342 #if defined(NO_MALLOC) && !defined(MAX_BP_NUM) |
| 2 | 343 #define MAX_BP_NUM 64 /* Maximum allowed # of breakpoints */ |
| 0 | 344 #endif |
| 345 | |
|
191
678094f34118
Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents:
156
diff
changeset
|
346 extern int hal_syscall_handler(void); |
|
678094f34118
Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents:
156
diff
changeset
|
347 extern int __is_bsp_syscall(void); |
|
678094f34118
Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents:
156
diff
changeset
|
348 |
|
678094f34118
Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents:
156
diff
changeset
|
349 extern void __install_breakpoint_list (void); |
|
678094f34118
Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents:
156
diff
changeset
|
350 extern void __clear_breakpoint_list (void); |
|
678094f34118
Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents:
156
diff
changeset
|
351 extern int __display_breakpoint_list (void (*print_func)(target_register_t)); |
|
678094f34118
Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents:
156
diff
changeset
|
352 |
| 317 | 353 /* 'Z' packet types */ |
| 354 #define ZTYPE_SW_BREAKPOINT 0 | |
| 355 #define ZTYPE_HW_BREAKPOINT 1 | |
| 356 #define ZTYPE_HW_WATCHPOINT_WRITE 2 | |
| 357 #define ZTYPE_HW_WATCHPOINT_READ 3 | |
| 358 #define ZTYPE_HW_WATCHPOINT_ACCESS 4 | |
| 359 | |
| 2 | 360 #endif /* ASM */ |
| 361 | |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
66
diff
changeset
|
362 #ifdef __cplusplus |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
66
diff
changeset
|
363 } /* extern "C" */ |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
66
diff
changeset
|
364 #endif |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
66
diff
changeset
|
365 |
| 2 | 366 #endif /* GENERIC_STUB_H */ |
