Mercurial > ecos
annotate packages/hal/arm/ebsa285/current/src/hal_diag.c @ 3292:7f8e529b4d82 default tip
Fix FREESCALE_EDMA_NBYTES_MLOFFYES_MLOFF() so it works with negative offsets.
| author | vae |
|---|---|
| date | Wed, 29 Apr 2015 23:31:48 +0000 |
| parents | 74dbf4c3f2e1 |
| children |
| rev | line source |
|---|---|
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1 /*============================================================================= |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
2 // |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
3 // hal_diag.c |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
4 // |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
5 // HAL diagnostic output code |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
6 // |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
7 //============================================================================= |
|
2729
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
8 // ####ECOSGPLCOPYRIGHTBEGIN#### |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
9 // ------------------------------------------- |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
10 // This file is part of eCos, the Embedded Configurable Operating System. |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
11 // Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
151
diff
changeset
|
12 // |
|
2729
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
13 // eCos is free software; you can redistribute it and/or modify it under |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
14 // the terms of the GNU General Public License as published by the Free |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
15 // Software Foundation; either version 2 or (at your option) any later |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
16 // version. |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
151
diff
changeset
|
17 // |
|
2729
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
18 // eCos is distributed in the hope that it will be useful, but WITHOUT |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
19 // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
20 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
21 // for more details. |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
151
diff
changeset
|
22 // |
|
2729
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
23 // You should have received a copy of the GNU General Public License |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
24 // along with eCos; if not, write to the Free Software Foundation, Inc., |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
25 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
151
diff
changeset
|
26 // |
|
2729
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
27 // As a special exception, if other files instantiate templates or use |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
28 // macros or inline functions from this file, or you compile this file |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
29 // and link it with other works to produce a work based on this file, |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
30 // this file does not by itself cause the resulting work to be covered by |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
31 // the GNU General Public License. However the source code for this file |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
32 // must still be made available in accordance with section (3) of the GNU |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
33 // General Public License v2. |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
151
diff
changeset
|
34 // |
|
2729
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
35 // This exception does not invalidate any other reasons why a work based |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
36 // on this file might be covered by the GNU General Public License. |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
37 // ------------------------------------------- |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
38 // ####ECOSGPLCOPYRIGHTEND#### |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
39 //============================================================================= |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
40 //#####DESCRIPTIONBEGIN#### |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
41 // |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
42 // Author(s): nickg, gthomas |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
43 // Contributors:nickg, gthomas |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
44 // Date: 1998-03-02 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
45 // Purpose: HAL diagnostic output |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
46 // Description: Implementations of HAL diagnostic output support. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
47 // |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
48 //####DESCRIPTIONEND#### |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
49 // |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
50 //===========================================================================*/ |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
51 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
52 #include <pkgconf/hal.h> |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
53 #include <pkgconf/system.h> |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
54 #include CYGBLD_HAL_PLATFORM_H |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
55 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
56 #include <cyg/infra/cyg_type.h> // base types |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
57 #include <cyg/infra/cyg_trac.h> // tracing macros |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
58 #include <cyg/infra/cyg_ass.h> // assertion macros |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
59 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
60 #include <cyg/hal/hal_arch.h> // basic machine info |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
61 #include <cyg/hal/hal_intr.h> // interrupt macros |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
62 #include <cyg/hal/hal_io.h> // IO macros |
|
110
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
63 #include <cyg/hal/hal_if.h> // calling interface API |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
64 #include <cyg/hal/hal_misc.h> // helper functions |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
65 #include <cyg/hal/hal_diag.h> |
|
110
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
66 #include <cyg/hal/hal_ebsa285.h> // Hardware definitions |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
67 #include <cyg/hal/drv_api.h> // cyg_drv_interrupt_acknowledge |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
68 |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
69 /*---------------------------------------------------------------------------*/ |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
70 |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
71 struct ebsa_serial { |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
72 volatile cyg_uint32 data_register; |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
73 volatile cyg_uint32 rxstat; |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
74 volatile cyg_uint32 h_baud_control; |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
75 volatile cyg_uint32 m_baud_control; |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
76 volatile cyg_uint32 l_baud_control; |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
77 volatile cyg_uint32 control_register; |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
78 volatile cyg_uint32 flag_register; |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
79 }; |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
80 |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
81 /*---------------------------------------------------------------------------*/ |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
82 |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
83 static void |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
84 init_channel(void* __ch_data) |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
85 { |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
86 volatile struct ebsa_serial* base = (struct ebsa_serial*)__ch_data; |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
87 |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
88 int dummy; |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
89 /* |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
90 * Make sure everything is off |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
91 */ |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
92 base->control_register = SA110_UART_DISABLED | SA110_SIR_DISABLED; |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
93 |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
94 /* |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
95 * Read the RXStat to drain the fifo |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
96 */ |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
97 dummy = base->rxstat; |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
98 |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
99 /* |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
100 * Set the baud rate - this also turns the uart on. |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
101 * |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
102 * Note that the ordering of these writes is critical, |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
103 * and the writes to the H_BAUD_CONTROL and CONTROL_REGISTER |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
104 * are necessary to force the UART to update its register |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
105 * contents. |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
106 */ |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
107 base->l_baud_control = 0x13; // bp->divisor_low; |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
108 base->m_baud_control = 0x00; // bp->divisor_high; |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
109 base->h_baud_control = SA110_UART_BREAK_DISABLED | |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
110 SA110_UART_PARITY_DISABLED | |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
111 SA110_UART_STOP_BITS_ONE | |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
112 SA110_UART_FIFO_ENABLED | |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
113 SA110_UART_DATA_LENGTH_8_BITS; |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
114 base->control_register = SA110_UART_ENABLED | SA110_SIR_DISABLED; |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
115 // All done |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
116 } |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
117 |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
118 void |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
119 cyg_hal_plf_serial_putc(void *__ch_data, char c) |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
120 { |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
121 volatile struct ebsa_serial* base = (struct ebsa_serial*)__ch_data; |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
122 CYGARC_HAL_SAVE_GP(); |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
123 |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
124 // Wait for Tx FIFO not full |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
125 while ((base->flag_register & SA110_TX_FIFO_STATUS_MASK) == SA110_TX_FIFO_BUSY) |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
126 ; |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
127 base->data_register = c; |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
128 |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
129 CYGARC_HAL_RESTORE_GP(); |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
130 } |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
131 |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
132 |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
133 static cyg_bool |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
134 cyg_hal_plf_serial_getc_nonblock(void* __ch_data, cyg_uint8* ch) |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
135 { |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
136 volatile struct ebsa_serial* base = (struct ebsa_serial*)__ch_data; |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
137 |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
138 |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
139 if ((base->flag_register & SA110_RX_FIFO_STATUS_MASK) == SA110_RX_FIFO_EMPTY) |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
140 return false; |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
141 |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
142 *ch = (char)(base->data_register & 0xFF); |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
143 |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
144 return true; |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
145 } |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
146 |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
147 |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
148 cyg_uint8 |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
149 cyg_hal_plf_serial_getc(void* __ch_data) |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
150 { |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
151 cyg_uint8 ch; |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
152 CYGARC_HAL_SAVE_GP(); |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
153 |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
154 while(!cyg_hal_plf_serial_getc_nonblock(__ch_data, &ch)); |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
155 |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
156 CYGARC_HAL_RESTORE_GP(); |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
157 return ch; |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
158 } |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
159 |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
160 static cyg_int32 msec_timeout; |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
161 |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
162 static void |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
163 cyg_hal_plf_serial_write(void* __ch_data, const cyg_uint8* __buf, |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
164 cyg_uint32 __len) |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
165 { |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
166 CYGARC_HAL_SAVE_GP(); |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
167 |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
168 while(__len-- > 0) |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
169 cyg_hal_plf_serial_putc(__ch_data, *__buf++); |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
170 |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
171 CYGARC_HAL_RESTORE_GP(); |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
172 } |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
173 |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
174 static void |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
175 cyg_hal_plf_serial_read(void* __ch_data, cyg_uint8* __buf, cyg_uint32 __len) |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
176 { |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
177 CYGARC_HAL_SAVE_GP(); |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
178 |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
179 while(__len-- > 0) |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
180 *__buf++ = cyg_hal_plf_serial_getc(__ch_data); |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
181 |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
182 CYGARC_HAL_RESTORE_GP(); |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
183 } |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
184 |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
185 cyg_bool |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
186 cyg_hal_plf_serial_getc_timeout(void* __ch_data, cyg_uint8* ch) |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
187 { |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
188 int delay_count; |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
189 cyg_bool res; |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
190 CYGARC_HAL_SAVE_GP(); |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
191 |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
192 delay_count = msec_timeout * 10; // delay in .1 ms steps |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
193 |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
194 for(;;) { |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
195 res = cyg_hal_plf_serial_getc_nonblock(__ch_data, ch); |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
196 if (res || 0 == delay_count--) |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
197 break; |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
198 |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
199 CYGACC_CALL_IF_DELAY_US(100); |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
200 } |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
201 |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
202 CYGARC_HAL_RESTORE_GP(); |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
203 return res; |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
204 } |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
205 |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
206 static int |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
207 cyg_hal_plf_serial_control(void *__ch_data, __comm_control_cmd_t __func, ...) |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
208 { |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
209 static int irq_state = 0; |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
210 int ret = 0; |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
211 CYGARC_HAL_SAVE_GP(); |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
212 |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
213 switch (__func) { |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
214 case __COMMCTL_IRQ_ENABLE: |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
215 irq_state = 1; |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
216 |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
217 HAL_INTERRUPT_UNMASK(CYGNUM_HAL_INTERRUPT_SERIAL_RX); |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
218 break; |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
219 case __COMMCTL_IRQ_DISABLE: |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
220 ret = irq_state; |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
221 irq_state = 0; |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
222 |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
223 HAL_INTERRUPT_MASK(CYGNUM_HAL_INTERRUPT_SERIAL_RX); |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
224 break; |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
225 case __COMMCTL_DBG_ISR_VECTOR: |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
226 ret = CYGNUM_HAL_INTERRUPT_SERIAL_RX; |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
227 break; |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
228 case __COMMCTL_SET_TIMEOUT: |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
229 { |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
230 va_list ap; |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
231 |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
232 va_start(ap, __func); |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
233 |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
234 ret = msec_timeout; |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
235 msec_timeout = va_arg(ap, cyg_uint32); |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
236 |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
237 va_end(ap); |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
238 } |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
239 default: |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
240 break; |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
241 } |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
242 CYGARC_HAL_RESTORE_GP(); |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
243 return ret; |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
244 } |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
245 |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
246 static int |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
247 cyg_hal_plf_serial_isr(void *__ch_data, int* __ctrlc, |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
248 CYG_ADDRWORD __vector, CYG_ADDRWORD __data) |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
249 { |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
250 int reg, res = 0; |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
251 volatile struct ebsa_serial* base = (struct ebsa_serial*)__ch_data; |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
252 char c; |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
253 CYGARC_HAL_SAVE_GP(); |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
254 |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
255 if ( CYGNUM_HAL_INTERRUPT_SERIAL_RX == __vector ) { |
|
112
02ea4320376c
Merge from eCos master repository on 2000-07-21-21:01:39-BST
jlarmour
parents:
110
diff
changeset
|
256 reg = base->flag_register; |
|
02ea4320376c
Merge from eCos master repository on 2000-07-21-21:01:39-BST
jlarmour
parents:
110
diff
changeset
|
257 // read it anyway just in case - no harm done and we might |
|
02ea4320376c
Merge from eCos master repository on 2000-07-21-21:01:39-BST
jlarmour
parents:
110
diff
changeset
|
258 // prevent an interrup loop |
|
02ea4320376c
Merge from eCos master repository on 2000-07-21-21:01:39-BST
jlarmour
parents:
110
diff
changeset
|
259 c = (char)(base->data_register & 0xFF); |
|
110
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
260 |
|
112
02ea4320376c
Merge from eCos master repository on 2000-07-21-21:01:39-BST
jlarmour
parents:
110
diff
changeset
|
261 cyg_drv_interrupt_acknowledge(CYGNUM_HAL_INTERRUPT_SERIAL_RX); |
|
02ea4320376c
Merge from eCos master repository on 2000-07-21-21:01:39-BST
jlarmour
parents:
110
diff
changeset
|
262 *__ctrlc = 0; |
|
02ea4320376c
Merge from eCos master repository on 2000-07-21-21:01:39-BST
jlarmour
parents:
110
diff
changeset
|
263 if ( (reg & SA110_RX_FIFO_STATUS_MASK) != SA110_RX_FIFO_EMPTY ) { |
|
02ea4320376c
Merge from eCos master repository on 2000-07-21-21:01:39-BST
jlarmour
parents:
110
diff
changeset
|
264 if( cyg_hal_is_break( &c , 1 ) ) |
|
02ea4320376c
Merge from eCos master repository on 2000-07-21-21:01:39-BST
jlarmour
parents:
110
diff
changeset
|
265 *__ctrlc = 1; |
|
02ea4320376c
Merge from eCos master repository on 2000-07-21-21:01:39-BST
jlarmour
parents:
110
diff
changeset
|
266 |
|
02ea4320376c
Merge from eCos master repository on 2000-07-21-21:01:39-BST
jlarmour
parents:
110
diff
changeset
|
267 } |
|
110
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
268 res = CYG_ISR_HANDLED; |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
269 } |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
270 |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
271 CYGARC_HAL_RESTORE_GP(); |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
272 return res; |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
273 } |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
274 |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
275 static void |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
276 cyg_hal_plf_serial_init(void) |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
277 { |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
278 hal_virtual_comm_table_t* comm; |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
279 int cur = CYGACC_CALL_IF_SET_CONSOLE_COMM(CYGNUM_CALL_IF_SET_COMM_ID_QUERY_CURRENT); |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
280 |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
281 // Init channels |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
282 init_channel((void*)UART_BASE_0); |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
283 |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
284 // Setup procs in the vector table |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
285 |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
286 // Set channel 0 |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
287 CYGACC_CALL_IF_SET_CONSOLE_COMM(0); |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
288 comm = CYGACC_CALL_IF_CONSOLE_PROCS(); |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
289 CYGACC_COMM_IF_CH_DATA_SET(*comm, UART_BASE_0); |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
290 CYGACC_COMM_IF_WRITE_SET(*comm, cyg_hal_plf_serial_write); |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
291 CYGACC_COMM_IF_READ_SET(*comm, cyg_hal_plf_serial_read); |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
292 CYGACC_COMM_IF_PUTC_SET(*comm, cyg_hal_plf_serial_putc); |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
293 CYGACC_COMM_IF_GETC_SET(*comm, cyg_hal_plf_serial_getc); |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
294 CYGACC_COMM_IF_CONTROL_SET(*comm, cyg_hal_plf_serial_control); |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
295 CYGACC_COMM_IF_DBG_ISR_SET(*comm, cyg_hal_plf_serial_isr); |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
296 CYGACC_COMM_IF_GETC_TIMEOUT_SET(*comm, cyg_hal_plf_serial_getc_timeout); |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
297 |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
298 // Restore original console |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
299 CYGACC_CALL_IF_SET_CONSOLE_COMM(cur); |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
300 } |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
301 |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
302 void |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
303 cyg_hal_plf_comms_init(void) |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
304 { |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
305 static int initialized = 0; |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
306 |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
307 if (initialized) |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
308 return; |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
309 |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
310 initialized = 1; |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
311 |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
312 cyg_hal_plf_serial_init(); |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
313 } |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
314 |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
315 |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
316 //============================================================================= |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
317 // Compatibility with older stubs |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
318 //============================================================================= |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
319 |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
320 #ifndef CYGSEM_HAL_VIRTUAL_VECTOR_DIAG |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
321 |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
322 #ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
323 #include <cyg/hal/hal_stub.h> // cyg_hal_gdb_interrupt |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
324 #endif |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
325 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
326 #ifdef CYGSEM_HAL_ROM_MONITOR |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
327 #define CYG_HAL_STARTUP_ROM |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
328 #undef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
329 #endif |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
330 |
|
151
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
112
diff
changeset
|
331 #if defined(CYG_HAL_STARTUP_ROM) || !defined(CYGDBG_HAL_DIAG_TO_DEBUG_CHAN) |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
332 #define HAL_DIAG_USES_HARDWARE |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
333 #endif |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
334 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
335 /*---------------------------------------------------------------------------*/ |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
336 // EBSA285 Serial Port (UARTx) for Debug |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
337 |
|
110
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
338 void hal_diag_init(void) |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
339 { |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
340 init_channel((void*)UART_BASE_0); |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
341 } |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
342 |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
343 |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
344 // Actually send character down the wire |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
345 static void |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
346 hal_diag_write_char_serial(char c) |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
347 { |
|
110
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
348 cyg_hal_plf_serial_putc((void*)UART_BASE_0, c); |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
349 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
350 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
351 static bool |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
352 hal_diag_read_serial(char *c) |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
353 { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
354 long timeout = 1000000000; // A long time... |
|
110
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
355 while (! cyg_hal_plf_serial_getc_nonblock((void*)UART_BASE_0, c) ) |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
356 if ( --timeout == 0 ) return false; |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
357 |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
358 return true; |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
359 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
360 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
361 /* |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
362 * Baud rate selection stuff |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
363 */ |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
364 #if 0 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
365 struct _baud { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
366 int baud; |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
367 unsigned short divisor_high, divisor_low; |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
368 }; |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
369 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
370 const static struct _baud bauds[] = { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
371 #if (FCLK_MHZ == 50) |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
372 { 300, 0xA, 0x2B}, /* 2603 = 0x0A2B */ |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
373 { 600, 0x5, 0x15}, /* 1301 = 0x0515 */ |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
374 { 1200, 0x2, 0x8A}, /* 650 = 0x028A */ |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
375 { 2400, 0x1, 0x45}, /* 325 = 0x0145 */ |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
376 { 4800, 0x0, 0xA2}, /* 162 = 0x00A2 */ |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
377 { 9600, 0x0, 0x50}, /* 80 = 0x0050 */ |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
378 { 19200, 0x0, 0x28}, /* 40 = 0x0028 */ |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
379 { 38400, 0x0, 0x13}, /* 19 = 0x0013 */ |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
380 #elif (FCLK_MHZ == 60) |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
381 { 300, 0xC, 0x34}, /* 2603 = 0x0A2B */ |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
382 { 600, 0x6, 0x19}, /* 1301 = 0x0515 */ |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
383 { 1200, 0x3, 0x0C}, /* 650 = 0x028A */ |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
384 { 2400, 0x1, 0x86}, /* 325 = 0x0145 */ |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
385 { 4800, 0x0, 0xC2}, /* 162 = 0x00A2 */ |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
386 { 9600, 0x0, 0x61}, /* 80 = 0x0050 */ |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
387 { 19200, 0x0, 0x30}, /* 40 = 0x0028 */ |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
388 { 38400, 0x0, 0x17}, /* 19 = 0x0013 */ |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
389 #endif |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
390 }; |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
391 #endif |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
392 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
393 #ifdef HAL_DIAG_USES_HARDWARE |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
394 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
395 #ifdef DEBUG_DIAG |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
396 #ifndef CYG_HAL_STARTUP_ROM |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
397 #define DIAG_BUFSIZE 2048 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
398 static char diag_buffer[DIAG_BUFSIZE]; |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
399 static int diag_bp = 0; |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
400 #endif |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
401 #endif |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
402 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
403 void hal_diag_read_char(char *c) |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
404 { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
405 while (!hal_diag_read_serial(c)) ; |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
406 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
407 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
408 void hal_diag_write_char(char c) |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
409 { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
410 #ifdef DEBUG_DIAG |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
411 #ifndef CYG_HAL_STARTUP_ROM |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
412 diag_buffer[diag_bp++] = c; |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
413 if (diag_bp == sizeof(diag_buffer)) diag_bp = 0; |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
414 #endif |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
415 #endif |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
416 hal_diag_write_char_serial(c); |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
417 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
418 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
419 #else // not HAL_DIAG_USES_HARDWARE - it uses GDB protocol |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
420 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
421 void |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
422 hal_diag_read_char(char *c) |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
423 { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
424 while (!hal_diag_read_serial(c)) ; |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
425 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
426 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
427 void |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
428 hal_diag_write_char(char c) |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
429 { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
430 static char line[100]; |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
431 static int pos = 0; |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
432 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
433 #if 0 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
434 // Do not unconditionally poke the XBUS LED location - XBUS may not be |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
435 // available if external arbiter is in use. This fragment may still be |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
436 // useful for debugging in the future, so left thus: |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
437 { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
438 // int i; |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
439 *(cyg_uint32 *)0x40012000 = 7 & (cyg_uint32)c; // LED XBUS location |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
440 // for ( i = 0x1000000; i > 0; i-- ) ; |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
441 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
442 #endif |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
443 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
444 // No need to send CRs |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
445 if( c == '\r' ) return; |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
446 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
447 line[pos++] = c; |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
448 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
449 if( c == '\n' || pos == sizeof(line) ) |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
450 { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
451 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
452 CYG_INTERRUPT_STATE old; |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
453 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
454 // Disable interrupts. This prevents GDB trying to interrupt us |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
455 // while we are in the middle of sending a packet. The serial |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
456 // receive interrupt will be seen when we re-enable interrupts |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
457 // later. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
458 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
459 #ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
460 CYG_HAL_GDB_ENTER_CRITICAL_IO_REGION(old); |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
461 #else |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
462 HAL_DISABLE_INTERRUPTS(old); |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
463 #endif |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
464 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
465 while(1) |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
466 { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
467 static char hex[] = "0123456789ABCDEF"; |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
468 cyg_uint8 csum = 0; |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
469 int i; |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
470 #ifndef CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
471 char c1; |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
472 #endif |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
473 hal_diag_write_char_serial('$'); |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
474 hal_diag_write_char_serial('O'); |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
475 csum += 'O'; |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
476 for( i = 0; i < pos; i++ ) |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
477 { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
478 char ch = line[i]; |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
479 char h = hex[(ch>>4)&0xF]; |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
480 char l = hex[ch&0xF]; |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
481 hal_diag_write_char_serial(h); |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
482 hal_diag_write_char_serial(l); |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
483 csum += h; |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
484 csum += l; |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
485 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
486 hal_diag_write_char_serial('#'); |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
487 hal_diag_write_char_serial(hex[(csum>>4)&0xF]); |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
488 hal_diag_write_char_serial(hex[csum&0xF]); |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
489 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
490 #ifdef CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
491 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
492 break; // regardless |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
493 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
494 #else // not CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT Ie. usually... |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
495 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
496 // Wait for the ACK character '+' from GDB here and handle |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
497 // receiving a ^C instead. This is the reason for this clause |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
498 // being a loop. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
499 if (!hal_diag_read_serial(&c1)) |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
500 continue; // No response - try sending packet again |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
501 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
502 if( c1 == '+' ) |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
503 break; // a good acknowledge |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
504 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
505 #ifdef CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT |
|
110
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
506 cyg_drv_interrupt_acknowledge(CYGNUM_HAL_INTERRUPT_SERIAL_RX); |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
507 if( c1 == 3 ) { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
508 // Ctrl-C: breakpoint. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
509 cyg_hal_gdb_interrupt( |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
510 (target_register_t)__builtin_return_address(0) ); |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
511 break; |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
512 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
513 #endif // CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
514 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
515 #endif // ! CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
516 // otherwise, loop round again |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
517 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
518 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
519 pos = 0; |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
520 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
521 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
522 // And re-enable interrupts |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
523 #ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
524 CYG_HAL_GDB_LEAVE_CRITICAL_IO_REGION(old); |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
525 #else |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
526 HAL_RESTORE_INTERRUPTS(old); |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
527 #endif |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
528 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
529 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
530 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
531 #endif |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
532 |
|
110
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
76
diff
changeset
|
533 #endif // !CYGSEM_HAL_VIRTUAL_VECTOR_DIAG |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
534 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
535 /*---------------------------------------------------------------------------*/ |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
536 /* End of hal_diag.c */ |
