annotate packages/hal/mips/jmr3904/current/src/hal_stub.c @ 0:3111d98ba7b3 ecos-v1_1-release

Initial commit of eCos version 1.1
author jlarmour
date Tue, 11 May 1999 11:16:07 +0000
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1 /* hal-stub.c - helper functions for stub, specific to ECC HAL
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
2 *
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
3 * Copyright (c) 1998 Cygnus Support
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
4 *
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
5 * The authors hereby grant permission to use, copy, modify, distribute,
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
6 * and license this software and its documentation for any purpose, provided
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
7 * that existing copyright notices are retained in all copies and that this
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
8 * notice is included verbatim in any distributions. No written agreement,
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
9 * license, or royalty fee is required for any of the authorized uses.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
10 * Modifications to this software may be copyrighted by their authors
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
11 * and need not follow the licensing terms described here, provided that
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
12 * the new terms are clearly indicated on the first page of each file where
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
13 * they apply.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
14 */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
15
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
16 #include <stddef.h>
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
17
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
18 //#include <signal.h>
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
19 //#include "board.h"
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
20
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
21 #include <cyg/hal/hal_stub.h>
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
22
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
23 #ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
24
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
25 #include <cyg/hal/hal_arch.h>
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
26 #include <cyg/hal/hal_io.h>
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
27 #include <cyg/hal/hal_diag.h>
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
28 #include <cyg/hal/hal_cache.h>
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
29
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
30 /*---------------------------------------------------------------------------*/
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
31
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
32 #define DIAG_BASE 0xfffff300
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
33 #define DIAG_SLCR (DIAG_BASE+0x00)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
34 #define DIAG_SLSR (DIAG_BASE+0x04)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
35 #define DIAG_SLDICR (DIAG_BASE+0x08)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
36 #define DIAG_SLDISR (DIAG_BASE+0x0C)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
37 #define DIAG_SFCR (DIAG_BASE+0x10)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
38 #define DIAG_SBRG (DIAG_BASE+0x14)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
39 #define DIAG_TFIFO (DIAG_BASE+0x20)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
40 #define DIAG_RFIFO (DIAG_BASE+0x30)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
41
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
42 #define BRG_T0 0x0000
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
43 #define BRG_T2 0x0100
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
44 #define BRG_T4 0x0200
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
45 #define BRG_T5 0x0300
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
46
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
47 /*---------------------------------------------------------------------------*/
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
48
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
49 /* External data */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
50
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
51 extern int output_debug; /* dvemon.c */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
52 extern int (*read_vector) (int, char *, int); /* read.c */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
53 extern int (*write_vector) (int, char *, int); /* write.c */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
54
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
55 /* External functions */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
56
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
57 //int outbyte (unsigned char byte); /* dvemon.c */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
58 //unsigned char inbyte (); /* dvemon.c */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
59 //void general_exception (void); /* tx39-exc.S */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
60
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
61
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
62 /* Local data */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
63
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
64
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
65 /* If ENABLED is non-zero, supply a memory fault handler that traps
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
66 subsequent memory errors and sets _mem_err to 1. Otherwise, memory
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
67 faults are processed as exceptions. */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
68
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
69 void __set_mem_fault_trap (int enable) {}
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
70
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
71 static int serial_initialized = 0;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
72
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
73 static void serial_init()
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
74 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
75 //hal_diag_led(0x10);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
76 HAL_WRITE_UINT16( DIAG_SLCR , 0x0020 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
77
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
78 HAL_WRITE_UINT16( DIAG_SLDICR , 0x0000 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
79
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
80 HAL_WRITE_UINT16( DIAG_SFCR , 0x0000 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
81
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
82 // HAL_WRITE_UINT16( DIAG_SBRG , BRG_T2 | 20 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
83 // HAL_WRITE_UINT16( DIAG_SBRG , BRG_T2 | 10 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
84 HAL_WRITE_UINT16( DIAG_SBRG , BRG_T2 | 5 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
85
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
86 serial_initialized = 1;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
87
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
88 //hal_diag_led(0x10);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
89 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
90
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
91 /* Write C to the current serial port. */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
92
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
93 void putDebugChar (int c)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
94 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
95 #ifdef CYG_HAL_MIPS_SIM
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
96
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
97 #else
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
98 CYG_WORD16 disr;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
99
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
100 //hal_diag_led(0x20);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
101
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
102 if( !serial_initialized ) serial_init();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
103
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
104 for(;;)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
105 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
106 HAL_READ_UINT16( DIAG_SLDISR , disr );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
107
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
108 if( disr & 0x0002 ) break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
109 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
110
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
111 disr = disr & ~0x0002;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
112
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
113 HAL_WRITE_UINT8( DIAG_TFIFO, c );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
114
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
115 HAL_WRITE_UINT16( DIAG_SLDISR , disr );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
116
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
117 //hal_diag_led(0x20);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
118 // HAL_DIAG_WRITE_CHAR( c );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
119 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
120 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
121
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
122 /* Read one character from the current serial port. */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
123
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
124 int getDebugChar (void)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
125 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
126 #ifdef CYG_HAL_MIPS_SIM
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
127 static char input[] = "+$s#73";
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
128 static int i = 0;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
129 return input[i++];
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
130 #else
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
131 char c;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
132
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
133 CYG_WORD16 disr;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
134
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
135 if( !serial_initialized ) serial_init();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
136
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
137 //hal_diag_led(0x40);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
138 for(;;)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
139 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
140
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
141 HAL_READ_UINT16( DIAG_SLDISR , disr );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
142
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
143 if( disr & 0x0001 ) break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
144 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
145
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
146 disr = disr & ~0x0001;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
147
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
148 HAL_READ_UINT8( DIAG_RFIFO, c );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
149
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
150 HAL_WRITE_UINT16( DIAG_SLDISR , disr );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
151
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
152 //hal_diag_led(0x40);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
153
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
154 // HAL_DIAG_READ_CHAR(c);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
155 // diag_printf("<%02x:%c>",c);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
156
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
157 return c;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
158
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
159 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
160 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
161
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
162
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
163 /* Install the standard set of trap handlers for the stub. */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
164
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
165 void __install_traps (void)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
166 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
167 // Nothing to do, the HAL will call handle_exception when one occurs.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
168 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
169
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
170 /* Flush the instruction cache. */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
171 void flush_i_cache (void) { HAL_ICACHE_INVALIDATE_ALL(); }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
172
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
173
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
174 /* Reset the board. */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
175 void __reset (void) {}
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
176
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
177
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
178 /* Set the baud rate for the current serial port. */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
179 void __set_baud_rate (int baud) {}
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
180
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
181
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
182 /* Initialize the hardware. */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
183 void initHardware (void) {}
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
184
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
185 #if 0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
186 /* Alternate read function for use when stub is running. It
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
187 reads the data for standard input from the remote GDB. */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
188
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
189 int dve_read (int fd, char *buf, int nbytes)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
190 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
191 __get_gdb_input (buf, nbytes, 1);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
192 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
193
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
194 /* Alternate write function for use when stub is running. It
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
195 writes the data for standard output to the remote GDB. */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
196
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
197 int dve_write (int fd, char *buf, int nbytes)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
198 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
199 __output_gdb_string (buf, nbytes);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
200 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
201
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
202 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
203
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
204 /* Install traps and otherwise initialize stub. */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
205
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
206 void set_debug_traps (void)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
207 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
208 // output_debug = 0; /* disable control-O prefixing on output */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
209 initialize_stub (); /* will call __install_traps and initHardware */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
210 // read_vector = dve_read; /* alternate read() function for stub */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
211 // write_vector = dve_write; /* alternate write() function for stub */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
212 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
213
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
214
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
215 /* This function will generate a breakpoint exception. It is used at the
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
216 beginning of a program to sync up with a debugger and can be used
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
217 otherwise as a quick means to stop program execution and "break" into
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
218 the debugger. */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
219
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
220 void
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
221 breakpoint()
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
222 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
223 #ifdef CYG_HAL_MIPS_SIM
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
224
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
225 // This code causes a fake breakpoint.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
226 asm volatile (
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
227 "lui $24,0x0000;"
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
228 "ori $24,0x0024;"
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
229 "mtc0 $24,$13;"
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
230 "lui $25,%%hi(1f);"
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
231 "ori $25,$25,%%lo(1f);"
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
232 "j other_vector;"
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
233 "nop;"
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
234 ".global _breakinst;"
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
235 "_breakinst:"
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
236 "1: nop;"
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
237 :
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
238 :
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
239 : "t8", "t9"
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
240 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
241
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
242 #else
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
243
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
244 HAL_BREAKPOINT(_breakinst);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
245
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
246 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
247
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
248 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
249
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
250
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
251 /* This function returns the opcode for a 'break 5' instruction. */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
252
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
253 unsigned long __break_opcode ()
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
254 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
255 return HAL_BREAKINST;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
256 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
257
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
258 #endif // CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS