]> git.karo-electronics.de Git - karo-tx-redboot.git/blob - packages/hal/powerpc/vads/v2_0/include/hal_diag.h
Initial revision
[karo-tx-redboot.git] / packages / hal / powerpc / vads / v2_0 / include / hal_diag.h
1 #ifndef CYGONCE_HAL_HAL_DIAG_H
2 #define CYGONCE_HAL_HAL_DIAG_H
3
4 //=============================================================================
5 //
6 //      hal_diag.h
7 //
8 //      HAL Support for Kernel Diagnostic Routines
9 //
10 //=============================================================================
11 //####ECOSGPLCOPYRIGHTBEGIN####
12 // -------------------------------------------
13 // This file is part of eCos, the Embedded Configurable Operating System.
14 // Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
15 // Copyright (C) 2002 Gary Thomas
16 //
17 // eCos is free software; you can redistribute it and/or modify it under
18 // the terms of the GNU General Public License as published by the Free
19 // Software Foundation; either version 2 or (at your option) any later version.
20 //
21 // eCos is distributed in the hope that it will be useful, but WITHOUT ANY
22 // WARRANTY; without even the implied warranty of MERCHANTABILITY or
23 // FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
24 // for more details.
25 //
26 // You should have received a copy of the GNU General Public License along
27 // with eCos; if not, write to the Free Software Foundation, Inc.,
28 // 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
29 //
30 // As a special exception, if other files instantiate templates or use macros
31 // or inline functions from this file, or you compile this file and link it
32 // with other works to produce a work based on this file, this file does not
33 // by itself cause the resulting work to be covered by the GNU General Public
34 // License. However the source code for this file must still be made available
35 // in accordance with section (3) of the GNU General Public License.
36 //
37 // This exception does not invalidate any other reasons why a work based on
38 // this file might be covered by the GNU General Public License.
39 //
40 // Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
41 // at http://sources.redhat.com/ecos/ecos-license/
42 // -------------------------------------------
43 //####ECOSGPLCOPYRIGHTEND####
44 //=============================================================================
45 //#####DESCRIPTIONBEGIN####
46 //
47 // Author(s):   nickg
48 // Contributors:nickg
49 // Date:        1998-03-02
50 // Purpose:     HAL Support for Kernel Diagnostic Routines
51 // Description: Diagnostic routines for use during kernel development.
52 // Usage:       #include <cyg/hal/hal_diag.h>
53 //
54 //####DESCRIPTIONEND####
55 //
56 //=============================================================================
57
58 #include <pkgconf/hal.h>
59
60 #include <cyg/infra/cyg_type.h>
61
62 #ifndef CYGSEM_HAL_VIRTUAL_VECTOR_SUPPORT
63 // These should not need to be prototyped here, but where????
64 cyg_uint8
65 cyg_hal_plf_serial_getc(void);
66
67 #if 1
68 void 
69 cyg_hal_plf_serial_putc(cyg_uint8 ch);
70 #else
71 void 
72 cyg_hal_plf_serial_putc(void* __ch_data, cyg_uint8 ch);
73 #endif
74
75 #if 1
76 void
77 cyg_hal_plf_serial_init(void);
78 #else
79 void
80 cyg_hal_plf_serial_init_channel(void);
81 #endif
82 #endif //#ifdef CYGSEM_HAL_VIRTUAL_VECTOR_SUPPORT
83
84 #define LATER
85 #ifdef LATER
86 // See the #else clause at the end
87 #if defined(CYGSEM_HAL_VIRTUAL_VECTOR_DIAG)
88
89 #include <cyg/hal/hal_if.h>
90
91 #define HAL_DIAG_INIT() hal_if_diag_init()
92 #define HAL_DIAG_WRITE_CHAR(_c_) hal_if_diag_write_char(_c_)
93 #define HAL_DIAG_READ_CHAR(_c_) hal_if_diag_read_char(&_c_)
94
95 #else // everything by steam
96
97 //-----------------------------------------------------------------------------
98 // functions implemented in hal_diag.c
99
100 externC void hal_diag_init(void);
101
102 externC void hal_diag_write_char(char c);
103
104 externC void hal_diag_read_char(char *c);
105
106 //-----------------------------------------------------------------------------
107
108 #define HAL_DIAG_INIT() hal_diag_init()
109
110 #define HAL_DIAG_WRITE_CHAR(_c_) hal_diag_write_char(_c_)
111
112 #define HAL_DIAG_READ_CHAR(_c_) hal_diag_read_char(&_c_)
113
114 #endif // CYGSEM_HAL_VIRTUAL_VECTOR_DIAG
115
116 //-----------------------------------------------------------------------------
117 // end of hal_diag.h
118 #else
119 // Need to figure out what to do here at some point, for now, I just copied
120 // these from the simulator hal_diag.h
121
122 //-----------------------------------------------------------------------------
123 // Register addresses
124   
125 #define PAL_RESET        0x00
126 #define PAL_CPU_NR       0x04
127 #define PAL_INT          0x08
128 #define PAL_NR_CPU       0x0a
129
130 #define PAL_READ_FIFO    0x10
131 #define PAL_READ_STATUS  0x14
132 #define PAL_WRITE_FIFO   0x18
133 #define PAL_WRITE_STATUS 0x1a
134
135 #define OEA_DEV          0xf0001000
136
137 //-----------------------------------------------------------------------------
138
139 #define HAL_DIAG_INIT()
140
141 // Added by WPD
142 #ifndef HAL_DISABLE_INTERRUPTS
143 #define HAL_DISABLE_INTERRUPTS
144 #define HAL_RESTORE_INTERRUPTS
145 #endif
146
147 #define HAL_DIAG_WRITE_CHAR(_c_)                        \
148 CYG_MACRO_START                                         \
149     volatile unsigned char *tty_buffer =                \
150         (unsigned char*)(OEA_DEV + PAL_WRITE_FIFO);     \
151     volatile unsigned char *tty_status =                \
152         (unsigned char*)(OEA_DEV + PAL_WRITE_STATUS);   \
153     unsigned long __state;                              \
154                                                         \
155     HAL_DISABLE_INTERRUPTS(__state);                    \
156     if( _c_ != '\r' )                                   \
157     {                                                   \
158         while( *tty_status == 0 ) continue;             \
159         *tty_buffer = _c_;                              \
160     }                                                   \
161     HAL_RESTORE_INTERRUPTS(__state);                    \
162 CYG_MACRO_END
163
164 #define HAL_DIAG_READ_CHAR(_c_)                         \
165 CYG_MACRO_START                                         \
166     volatile unsigned char *tty_buffer =                \
167         (unsigned char*)(OEA_DEV + PAL_READ_FIFO);      \
168     volatile unsigned char *tty_status =                \
169         (unsigned char*)(OEA_DEV + PAL_READ_STATUS);    \
170     while( *tty_status == 0 ) continue;                 \
171     _c_ = *tty_buffer;                                  \
172 CYG_MACRO_END
173 #endif // LATER
174 #endif // CYGONCE_HAL_HAL_DIAG_H