Mercurial > ecos
annotate packages/hal/common/current/include/hal_stub.h @ 72:da3908c9cd10 ecos-sw-2000-02-17
Merge from eCos master repository on 2000-02-17-18:56:14-GMT
| author | jlarmour |
|---|---|
| date | Thu, 17 Feb 2000 19:38:13 +0000 |
| parents | bf00f99aec69 |
| children | 59d97b6ba612 |
| rev | line source |
|---|---|
| 2 | 1 #ifndef CYGONCE_HAL_HAL_STUB_H |
| 2 #define CYGONCE_HAL_HAL_STUB_H | |
| 3 | |
| 4 //============================================================================= | |
| 5 // | |
| 6 // hal_stub.h | |
| 7 // | |
| 8 // HAL header for GDB stub support. | |
| 9 // | |
| 10 //============================================================================= | |
| 11 //####COPYRIGHTBEGIN#### | |
|
64
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
12 // |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
13 // ------------------------------------------- |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
14 // The contents of this file are subject to the Red Hat eCos Public License |
|
66
bf00f99aec69
Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents:
64
diff
changeset
|
15 // Version 1.1 (the "License"); you may not use this file except in |
|
64
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
16 // compliance with the License. You may obtain a copy of the License at |
|
66
bf00f99aec69
Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents:
64
diff
changeset
|
17 // http://www.redhat.com/ |
|
64
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
18 // |
|
66
bf00f99aec69
Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents:
64
diff
changeset
|
19 // Software distributed under the License is distributed on an "AS IS" |
|
64
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
20 // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
21 // License for the specific language governing rights and limitations under |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
22 // the License. |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
23 // |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
24 // The Original Code is eCos - Embedded Configurable Operating System, |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
25 // released September 30, 1998. |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
26 // |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
27 // The Initial Developer of the Original Code is Red Hat. |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
28 // Portions created by Red Hat are |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
29 // Copyright (C) 1998, 1999, 2000 Red Hat, Inc. |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
30 // All Rights Reserved. |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
31 // ------------------------------------------- |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
32 // |
| 2 | 33 //####COPYRIGHTEND#### |
| 34 //============================================================================= | |
| 35 //#####DESCRIPTIONBEGIN#### | |
| 36 // | |
| 37 // Author(s): jskov | |
| 38 // Contributors:jskov | |
| 39 // Date: 1999-02-12 | |
| 40 // Purpose: Generic HAL stub header. | |
| 41 // Usage: #include <cyg/hal/hal_stub.h> | |
|
54
f10165814f1e
Merge from eCos master repository on 1999-11-19-22:24:39-GMT
jlarmour
parents:
50
diff
changeset
|
42 // Description: This header is included by generic-stub.c to provide an |
|
f10165814f1e
Merge from eCos master repository on 1999-11-19-22:24:39-GMT
jlarmour
parents:
50
diff
changeset
|
43 // interface to the eCos-specific stub implementation. It is |
|
f10165814f1e
Merge from eCos master repository on 1999-11-19-22:24:39-GMT
jlarmour
parents:
50
diff
changeset
|
44 // not to be included by user code, and is only placed in a |
|
f10165814f1e
Merge from eCos master repository on 1999-11-19-22:24:39-GMT
jlarmour
parents:
50
diff
changeset
|
45 // publically accessible directory so that platform stub packages |
|
f10165814f1e
Merge from eCos master repository on 1999-11-19-22:24:39-GMT
jlarmour
parents:
50
diff
changeset
|
46 // are able to include it if required. |
|
f10165814f1e
Merge from eCos master repository on 1999-11-19-22:24:39-GMT
jlarmour
parents:
50
diff
changeset
|
47 // |
| 2 | 48 //####DESCRIPTIONEND#### |
| 49 // | |
| 50 //============================================================================= | |
| 51 | |
| 52 #include <pkgconf/hal.h> | |
| 53 | |
| 54 #ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS | |
| 55 #define USE_GDBSTUB_PROTOTYPES 0 // avoid stub-tservice.h atm | |
| 56 #define __ECOS__ // use to mark eCos hacks | |
| 57 | |
| 58 #include <cyg/hal/basetype.h> // HAL_LABEL_NAME | |
| 59 #include <cyg/hal/hal_arch.h> // HAL header | |
|
34
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
2
diff
changeset
|
60 #include <cyg/infra/cyg_type.h> // cyg_uint32 and CYG_BYTEORDER |
| 2 | 61 typedef cyg_uint32 uint32; |
| 62 | |
| 63 #include <cyg/hal/plf_stub.h> | |
| 64 #include <cyg/hal/generic-stub.h> | |
| 65 | |
| 66 #ifdef __cplusplus | |
| 67 extern "C" { | |
| 68 #endif | |
|
48
1370c5e55234
Merge from eCos master repository on 1999-10-25-21:18:27-BST
jlarmour
parents:
34
diff
changeset
|
69 #if 0 |
|
1370c5e55234
Merge from eCos master repository on 1999-10-25-21:18:27-BST
jlarmour
parents:
34
diff
changeset
|
70 } // to make below format correctly. |
|
1370c5e55234
Merge from eCos master repository on 1999-10-25-21:18:27-BST
jlarmour
parents:
34
diff
changeset
|
71 #endif |
| 2 | 72 |
| 73 //----------------------------------------------------------------------------- | |
| 74 // Definitions for generic-stub.c | |
| 75 | |
| 76 #define __set_mem_fault_trap(x) ({__mem_fault = 0; x(); __mem_fault;}) | |
| 77 | |
|
72
da3908c9cd10
Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents:
66
diff
changeset
|
78 #if (CYG_BYTEORDER==CYG_LSBFIRST) |
|
da3908c9cd10
Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents:
66
diff
changeset
|
79 # if !defined(__LITTLE_ENDIAN__) |
|
da3908c9cd10
Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents:
66
diff
changeset
|
80 # define __LITTLE_ENDIAN__ |
|
da3908c9cd10
Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents:
66
diff
changeset
|
81 # endif |
|
da3908c9cd10
Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents:
66
diff
changeset
|
82 # if !defined(_LITTLE_ENDIAN) |
|
da3908c9cd10
Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents:
66
diff
changeset
|
83 # define _LITTLE_ENDIAN |
|
da3908c9cd10
Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents:
66
diff
changeset
|
84 # endif |
|
34
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
2
diff
changeset
|
85 #endif |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
2
diff
changeset
|
86 |
| 2 | 87 //---------------------------------------------------------------------------- |
| 88 // Signal definitions to avoid 'signal.h'/ | |
| 89 #define SIGHUP 1 /* hangup */ | |
| 90 #define SIGINT 2 /* interrupt */ | |
| 91 #define SIGQUIT 3 /* quit */ | |
| 92 #define SIGILL 4 /* illegal instruction (not reset when caught) */ | |
| 93 #define SIGTRAP 5 /* trace trap (not reset when caught) */ | |
| 94 #define SIGIOT 6 /* IOT instruction */ | |
| 95 #define SIGABRT 6 /* used by abort, replace SIGIOT in the future */ | |
| 96 #define SIGEMT 7 /* EMT instruction */ | |
| 97 #define SIGFPE 8 /* floating point exception */ | |
| 98 #define SIGKILL 9 /* kill (cannot be caught or ignored) */ | |
| 99 #define SIGBUS 10 /* bus error */ | |
| 100 #define SIGSEGV 11 /* segmentation violation */ | |
| 101 #define SIGSYS 12 /* bad argument to system call */ | |
| 102 #define SIGPIPE 13 /* write on a pipe with no one to read it */ | |
| 103 #define SIGALRM 14 /* alarm clock */ | |
| 104 #define SIGTERM 15 /* software termination signal from kill */ | |
| 105 | |
| 106 //---------------------------------------------------------------------------- | |
| 107 // Thread support. This setting is used in thread-pkts.h | |
| 108 #ifdef CYGDBG_HAL_DEBUG_GDB_THREAD_SUPPORT | |
| 109 #define DEBUG_THREADS 1 | |
| 110 #else | |
| 111 #define DEBUG_THREADS 0 | |
| 112 #endif | |
| 113 | |
| 114 // The function stub_copy_registers() is statically defined in | |
| 115 // thread-packets.c, but in eCos this external stub is defined as it | |
| 116 // is used in dbg_gdb.cxx. | |
| 117 externC void __stub_copy_registers(target_register_t *dest, | |
| 118 target_register_t *src); | |
| 119 | |
| 120 //---------------------------------------------------------------------------- | |
| 121 // Memory accessor functions. | |
| 122 #define TARGET_HAS_OWN_MEM_FUNCS | |
| 123 | |
| 124 //---------------------------------------------------------------------------- | |
| 125 // Target extras?! | |
| 126 extern int __process_target_query(char * pkt, char * out, int maxOut); | |
| 127 extern int __process_target_set(char * pkt, char * out, int maxout); | |
| 128 extern int __process_target_packet(char * pkt, char * out, int maxout); | |
| 129 | |
| 130 //--------------------------------------------------------------------------- | |
| 131 // Declarations to avoid compiler warnings. | |
| 132 | |
| 133 // Set the baud rate for the current serial port. | |
| 134 extern void __set_baud_rate (int baud); | |
| 135 | |
| 136 // Write C to the current serial port. | |
| 137 extern void putDebugChar (int c); | |
| 138 | |
| 139 // Read one character from the current serial port. | |
| 140 extern int getDebugChar (void); | |
| 141 | |
| 142 // Push CH back onto the debug stream. | |
| 143 extern void ungetDebugChar (int ch); | |
| 144 | |
| 145 // Reset the board. | |
| 146 extern void __reset (void); | |
| 147 | |
| 148 // Multi-bp support. | |
| 149 extern int __set_breakpoint (target_register_t addr); | |
| 150 extern int __remove_breakpoint (target_register_t addr); | |
| 151 | |
| 152 /* Install the standard set of trap handlers for the stub. */ | |
| 153 extern void __install_traps (void); | |
| 154 | |
| 155 /* Address in text section of a breakpoint instruction. */ | |
| 156 | |
| 157 extern void CYG_LABEL_NAME(breakinst) (void); | |
| 158 | |
| 159 /* The opcode for a breakpoint instruction. */ | |
| 160 | |
| 161 extern unsigned long __break_opcode (void); | |
| 162 | |
| 163 #ifdef CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT | |
|
50
a0774359f013
Merge from eCos master repository on 1999-11-02-17:02:15-GMT
jlarmour
parents:
48
diff
changeset
|
164 // This one may assume a valid saved interrupt context on some platforms |
| 2 | 165 extern void cyg_hal_gdb_interrupt (target_register_t pc); |
|
50
a0774359f013
Merge from eCos master repository on 1999-11-02-17:02:15-GMT
jlarmour
parents:
48
diff
changeset
|
166 // This one does not; use from CRITICAL_IO_REGION macros below. |
|
a0774359f013
Merge from eCos master repository on 1999-11-02-17:02:15-GMT
jlarmour
parents:
48
diff
changeset
|
167 extern void cyg_hal_gdb_place_break (target_register_t pc); |
|
a0774359f013
Merge from eCos master repository on 1999-11-02-17:02:15-GMT
jlarmour
parents:
48
diff
changeset
|
168 // Remove a break from either above - or not if cyg_hal_gdb_running_step |
| 2 | 169 extern int cyg_hal_gdb_remove_break (target_register_t pc); |
|
50
a0774359f013
Merge from eCos master repository on 1999-11-02-17:02:15-GMT
jlarmour
parents:
48
diff
changeset
|
170 // Bool: is such a breakpoint set? |
|
48
1370c5e55234
Merge from eCos master repository on 1999-10-25-21:18:27-BST
jlarmour
parents:
34
diff
changeset
|
171 extern int cyg_hal_gdb_break_is_set (void); |
|
1370c5e55234
Merge from eCos master repository on 1999-10-25-21:18:27-BST
jlarmour
parents:
34
diff
changeset
|
172 |
|
1370c5e55234
Merge from eCos master repository on 1999-10-25-21:18:27-BST
jlarmour
parents:
34
diff
changeset
|
173 /* This is used so that the generic stub can tell |
|
1370c5e55234
Merge from eCos master repository on 1999-10-25-21:18:27-BST
jlarmour
parents:
34
diff
changeset
|
174 * cyg_hal_gdb_remove_break() not to bother when we are avoiding stepping |
|
1370c5e55234
Merge from eCos master repository on 1999-10-25-21:18:27-BST
jlarmour
parents:
34
diff
changeset
|
175 * through a critical region ie. hal_diag_write_char() usually - that |
|
1370c5e55234
Merge from eCos master repository on 1999-10-25-21:18:27-BST
jlarmour
parents:
34
diff
changeset
|
176 * shares the GDB IO device. |
|
1370c5e55234
Merge from eCos master repository on 1999-10-25-21:18:27-BST
jlarmour
parents:
34
diff
changeset
|
177 */ |
|
1370c5e55234
Merge from eCos master repository on 1999-10-25-21:18:27-BST
jlarmour
parents:
34
diff
changeset
|
178 extern volatile int cyg_hal_gdb_running_step; |
|
1370c5e55234
Merge from eCos master repository on 1999-10-25-21:18:27-BST
jlarmour
parents:
34
diff
changeset
|
179 |
|
1370c5e55234
Merge from eCos master repository on 1999-10-25-21:18:27-BST
jlarmour
parents:
34
diff
changeset
|
180 // Use these in hal_diag.c when about to write a whole $O packet to GDB. |
|
1370c5e55234
Merge from eCos master repository on 1999-10-25-21:18:27-BST
jlarmour
parents:
34
diff
changeset
|
181 // NB they require __builtin_return_address() to work: if your platform |
|
1370c5e55234
Merge from eCos master repository on 1999-10-25-21:18:27-BST
jlarmour
parents:
34
diff
changeset
|
182 // does not support this, use HAL_DISABLE_INTERRUPTS &c instead. |
|
1370c5e55234
Merge from eCos master repository on 1999-10-25-21:18:27-BST
jlarmour
parents:
34
diff
changeset
|
183 |
|
50
a0774359f013
Merge from eCos master repository on 1999-11-02-17:02:15-GMT
jlarmour
parents:
48
diff
changeset
|
184 #if 1 // Can use the address of a label: this is more portable |
|
a0774359f013
Merge from eCos master repository on 1999-11-02-17:02:15-GMT
jlarmour
parents:
48
diff
changeset
|
185 |
|
48
1370c5e55234
Merge from eCos master repository on 1999-10-25-21:18:27-BST
jlarmour
parents:
34
diff
changeset
|
186 #define CYG_HAL_GDB_ENTER_CRITICAL_IO_REGION( _old_ ) \ |
|
1370c5e55234
Merge from eCos master repository on 1999-10-25-21:18:27-BST
jlarmour
parents:
34
diff
changeset
|
187 do { \ |
|
1370c5e55234
Merge from eCos master repository on 1999-10-25-21:18:27-BST
jlarmour
parents:
34
diff
changeset
|
188 HAL_DISABLE_INTERRUPTS(_old_); \ |
|
50
a0774359f013
Merge from eCos master repository on 1999-11-02-17:02:15-GMT
jlarmour
parents:
48
diff
changeset
|
189 cyg_hal_gdb_place_break( &&cyg_hal_gdb_break_place ); \ |
|
a0774359f013
Merge from eCos master repository on 1999-11-02-17:02:15-GMT
jlarmour
parents:
48
diff
changeset
|
190 } while ( 0 ) |
|
a0774359f013
Merge from eCos master repository on 1999-11-02-17:02:15-GMT
jlarmour
parents:
48
diff
changeset
|
191 |
|
a0774359f013
Merge from eCos master repository on 1999-11-02-17:02:15-GMT
jlarmour
parents:
48
diff
changeset
|
192 #define CYG_HAL_GDB_LEAVE_CRITICAL_IO_REGION( _old_ ) \ |
|
a0774359f013
Merge from eCos master repository on 1999-11-02-17:02:15-GMT
jlarmour
parents:
48
diff
changeset
|
193 do { \ |
|
a0774359f013
Merge from eCos master repository on 1999-11-02-17:02:15-GMT
jlarmour
parents:
48
diff
changeset
|
194 cyg_hal_gdb_remove_break( &&cyg_hal_gdb_break_place ); \ |
|
a0774359f013
Merge from eCos master repository on 1999-11-02-17:02:15-GMT
jlarmour
parents:
48
diff
changeset
|
195 HAL_RESTORE_INTERRUPTS(_old_); \ |
|
a0774359f013
Merge from eCos master repository on 1999-11-02-17:02:15-GMT
jlarmour
parents:
48
diff
changeset
|
196 cyg_hal_gdb_break_place: \ |
|
a0774359f013
Merge from eCos master repository on 1999-11-02-17:02:15-GMT
jlarmour
parents:
48
diff
changeset
|
197 } while ( 0 ) |
|
a0774359f013
Merge from eCos master repository on 1999-11-02-17:02:15-GMT
jlarmour
parents:
48
diff
changeset
|
198 |
|
a0774359f013
Merge from eCos master repository on 1999-11-02-17:02:15-GMT
jlarmour
parents:
48
diff
changeset
|
199 #else // use __builtin_return_address instead. |
|
a0774359f013
Merge from eCos master repository on 1999-11-02-17:02:15-GMT
jlarmour
parents:
48
diff
changeset
|
200 |
|
a0774359f013
Merge from eCos master repository on 1999-11-02-17:02:15-GMT
jlarmour
parents:
48
diff
changeset
|
201 #define CYG_HAL_GDB_ENTER_CRITICAL_IO_REGION( _old_ ) \ |
|
a0774359f013
Merge from eCos master repository on 1999-11-02-17:02:15-GMT
jlarmour
parents:
48
diff
changeset
|
202 do { \ |
|
a0774359f013
Merge from eCos master repository on 1999-11-02-17:02:15-GMT
jlarmour
parents:
48
diff
changeset
|
203 HAL_DISABLE_INTERRUPTS(_old_); \ |
|
a0774359f013
Merge from eCos master repository on 1999-11-02-17:02:15-GMT
jlarmour
parents:
48
diff
changeset
|
204 cyg_hal_place_break((target_register_t)__builtin_return_address(0)); \ |
|
48
1370c5e55234
Merge from eCos master repository on 1999-10-25-21:18:27-BST
jlarmour
parents:
34
diff
changeset
|
205 } while ( 0 ) |
|
1370c5e55234
Merge from eCos master repository on 1999-10-25-21:18:27-BST
jlarmour
parents:
34
diff
changeset
|
206 |
|
1370c5e55234
Merge from eCos master repository on 1999-10-25-21:18:27-BST
jlarmour
parents:
34
diff
changeset
|
207 #define CYG_HAL_GDB_LEAVE_CRITICAL_IO_REGION( _old_ ) \ |
|
1370c5e55234
Merge from eCos master repository on 1999-10-25-21:18:27-BST
jlarmour
parents:
34
diff
changeset
|
208 do { \ |
|
1370c5e55234
Merge from eCos master repository on 1999-10-25-21:18:27-BST
jlarmour
parents:
34
diff
changeset
|
209 cyg_hal_gdb_remove_break((target_register_t)__builtin_return_address(0)); \ |
|
1370c5e55234
Merge from eCos master repository on 1999-10-25-21:18:27-BST
jlarmour
parents:
34
diff
changeset
|
210 HAL_RESTORE_INTERRUPTS(_old_); \ |
|
1370c5e55234
Merge from eCos master repository on 1999-10-25-21:18:27-BST
jlarmour
parents:
34
diff
changeset
|
211 } while ( 0 ) |
|
1370c5e55234
Merge from eCos master repository on 1999-10-25-21:18:27-BST
jlarmour
parents:
34
diff
changeset
|
212 |
|
50
a0774359f013
Merge from eCos master repository on 1999-11-02-17:02:15-GMT
jlarmour
parents:
48
diff
changeset
|
213 #endif |
|
a0774359f013
Merge from eCos master repository on 1999-11-02-17:02:15-GMT
jlarmour
parents:
48
diff
changeset
|
214 |
|
48
1370c5e55234
Merge from eCos master repository on 1999-10-25-21:18:27-BST
jlarmour
parents:
34
diff
changeset
|
215 #else // NO debug_gdb_break_support |
|
1370c5e55234
Merge from eCos master repository on 1999-10-25-21:18:27-BST
jlarmour
parents:
34
diff
changeset
|
216 |
|
1370c5e55234
Merge from eCos master repository on 1999-10-25-21:18:27-BST
jlarmour
parents:
34
diff
changeset
|
217 // so define these just to do interrupts: |
|
1370c5e55234
Merge from eCos master repository on 1999-10-25-21:18:27-BST
jlarmour
parents:
34
diff
changeset
|
218 #define CYG_HAL_GDB_ENTER_CRITICAL_IO_REGION( _old_ ) \ |
|
1370c5e55234
Merge from eCos master repository on 1999-10-25-21:18:27-BST
jlarmour
parents:
34
diff
changeset
|
219 HAL_DISABLE_INTERRUPTS(_old_) |
|
1370c5e55234
Merge from eCos master repository on 1999-10-25-21:18:27-BST
jlarmour
parents:
34
diff
changeset
|
220 |
|
1370c5e55234
Merge from eCos master repository on 1999-10-25-21:18:27-BST
jlarmour
parents:
34
diff
changeset
|
221 #define CYG_HAL_GDB_LEAVE_CRITICAL_IO_REGION( _old_ ) \ |
|
1370c5e55234
Merge from eCos master repository on 1999-10-25-21:18:27-BST
jlarmour
parents:
34
diff
changeset
|
222 HAL_RESTORE_INTERRUPTS(_old_) |
|
1370c5e55234
Merge from eCos master repository on 1999-10-25-21:18:27-BST
jlarmour
parents:
34
diff
changeset
|
223 |
| 2 | 224 #endif |
| 225 | |
| 226 //---------------------------------------------------------------------------- | |
| 227 // eCos extensions to the stub | |
| 228 | |
| 229 extern void hal_output_gdb_string(target_register_t str, int string_len); | |
| 230 | |
| 231 extern target_register_t registers[]; // The current saved registers. | |
| 232 extern target_register_t * _registers ; | |
| 233 extern HAL_SavedRegisters *_hal_registers; | |
| 234 | |
| 235 extern int cyg_hal_gdb_break; | |
| 236 | |
| 237 //--------------------------------------------------------------------------- | |
| 238 // Local strcpy/strlen functions removes libc dependency. | |
| 239 static inline char *strcpy( char *s, const char *t) | |
| 240 { | |
| 241 char *r = s; | |
| 242 | |
| 243 while( *t ) *s++ = *t++; | |
| 244 | |
| 245 // Terminate the copied string. | |
| 246 *s = 0; | |
| 247 | |
| 248 return r; | |
| 249 } | |
| 250 | |
| 251 static inline int strlen( const char *s ) | |
| 252 { | |
| 253 int r = 0; | |
| 254 while( *s++ ) r++; | |
| 255 return r; | |
| 256 } | |
| 257 | |
| 258 //----------------------------------------------------------------------------- | |
| 259 // Repeat the cache definitions here to avoid too much hackery in | |
| 260 // generic-stub.h | |
| 261 typedef enum { | |
| 262 CACHE_NOOP, CACHE_ENABLE, CACHE_DISABLE, CACHE_FLUSH | |
| 263 } cache_control_t; | |
| 264 | |
| 265 /* Perform the specified operation on the instruction cache. | |
| 266 Returns 1 if the cache is enabled, 0 otherwise. */ | |
| 267 extern int __instruction_cache (cache_control_t request); | |
| 268 /* Perform the specified operation on the data cache. | |
| 269 Returns 1 if the cache is enabled, 0 otherwise. */ | |
| 270 extern int __data_cache (cache_control_t request); | |
| 271 | |
| 272 #ifdef __cplusplus | |
| 273 } // extern "C" | |
| 274 #endif | |
| 275 | |
| 276 #endif // ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS | |
| 277 | |
| 278 //----------------------------------------------------------------------------- | |
| 279 #endif // CYGONCE_HAL_HAL_STUB_H | |
| 280 // End of hal_stub.h |
