annotate packages/hal/common/current/include/hal_if.h @ 1777:c16341b1bac6 default tip

* Added execute permissions to files missed in conversion from CVS
author alexs
date Mon, 12 Oct 2009 02:26:09 +0100
parents 9bf998a57d30
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
101
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
1 #ifndef CYGONCE_HAL_HAL_IF_H
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
2 #define CYGONCE_HAL_HAL_IF_H
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
3
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
4 //=============================================================================
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
5 //
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
6 // hal_if.h
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
7 //
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
8 // HAL header for ROM/RAM calling interface.
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
9 //
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
10 //=============================================================================
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 183
diff changeset
11 //####ECOSGPLCOPYRIGHTBEGIN####
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 183
diff changeset
12 // -------------------------------------------
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 183
diff changeset
13 // This file is part of eCos, the Embedded Configurable Operating System.
556
f2b5df359050 Support return to redboot from go
msalter
parents: 447
diff changeset
14 // Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Red Hat, Inc.
1457
9bf998a57d30 Handle changes in FLASH CFG API
gthomas
parents: 1452
diff changeset
15 // Copyright (C) 2002, 2003, 2004 Gary Thomas
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 183
diff changeset
16 //
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 183
diff changeset
17 // eCos is free software; you can redistribute it and/or modify it under
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 183
diff changeset
18 // the terms of the GNU General Public License as published by the Free
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 183
diff changeset
19 // Software Foundation; either version 2 or (at your option) any later version.
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 183
diff changeset
20 //
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 183
diff changeset
21 // eCos is distributed in the hope that it will be useful, but WITHOUT ANY
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 183
diff changeset
22 // WARRANTY; without even the implied warranty of MERCHANTABILITY or
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 183
diff changeset
23 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 183
diff changeset
24 // for more details.
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 183
diff changeset
25 //
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 183
diff changeset
26 // You should have received a copy of the GNU General Public License along
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 183
diff changeset
27 // with eCos; if not, write to the Free Software Foundation, Inc.,
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 183
diff changeset
28 // 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 183
diff changeset
29 //
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 183
diff changeset
30 // As a special exception, if other files instantiate templates or use macros
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 183
diff changeset
31 // or inline functions from this file, or you compile this file and link it
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 183
diff changeset
32 // with other works to produce a work based on this file, this file does not
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 183
diff changeset
33 // by itself cause the resulting work to be covered by the GNU General Public
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 183
diff changeset
34 // License. However the source code for this file must still be made available
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 183
diff changeset
35 // in accordance with section (3) of the GNU General Public License.
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 183
diff changeset
36 //
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 183
diff changeset
37 // This exception does not invalidate any other reasons why a work based on
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 183
diff changeset
38 // this file might be covered by the GNU General Public License.
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 183
diff changeset
39 //
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 183
diff changeset
40 // Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
210
d2c90368aeef Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents: 208
diff changeset
41 // at http://sources.redhat.com/ecos/ecos-license/
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 183
diff changeset
42 // -------------------------------------------
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 183
diff changeset
43 //####ECOSGPLCOPYRIGHTEND####
101
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
44 //=============================================================================
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
45 //#####DESCRIPTIONBEGIN####
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
46 //
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
47 // Author(s): jskov
791
a2dfa8bf3c57 Export RedBoot FIS functions - from Knud Woehler <knud.woehler@microplex.de>
gthomas
parents: 556
diff changeset
48 // Contributors:jskov, woehler
101
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
49 // Date: 2000-06-07
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
50 // Purpose: HAL RAM/ROM calling interface
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
51 // Description: ROM/RAM calling interface table definitions. The layout is a
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
52 // combination of libbsp and vectors already in use by some
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
53 // eCos platforms.
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
54 // Usage: #include <cyg/hal/hal_if.h>
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
55 //
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
56 //####DESCRIPTIONEND####
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
57 //
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
58 //=============================================================================
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
59
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
60 #include <cyg/infra/cyg_type.h> // types & externC
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
61 #include <cyg/hal/dbg-threads-api.h>
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
62 #include <cyg/hal/dbg-thread-syscall.h>
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
63
105
5a0cc6c243a9 Merge from eCos master repository on 2000-06-30-08:18:49-BST
jlarmour
parents: 103
diff changeset
64 #include <stdarg.h>
5a0cc6c243a9 Merge from eCos master repository on 2000-06-30-08:18:49-BST
jlarmour
parents: 103
diff changeset
65
103
95f3e12a6327 Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents: 101
diff changeset
66 #ifdef CYGSEM_HAL_VIRTUAL_VECTOR_SUPPORT
101
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
67
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 138
diff changeset
68 // Architecture/var/platform may override the accessor macros.
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 138
diff changeset
69 #include <cyg/hal/hal_arch.h>
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 138
diff changeset
70
179
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
71 // Special monitor locking procedures. These are necessary when the monitor
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
72 // and eCos share facilities, e.g. the network hardware.
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
73 #ifdef CYGPKG_NET
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
74 #include <cyg/hal/hal_intr.h>
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
75 #include <cyg/hal/drv_api.h> // cyg_drv_dsr_lock(), etc
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
76 #define _ENTER_MONITOR() \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
77 cyg_uint32 ints; \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
78 HAL_DISABLE_INTERRUPTS(ints); \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
79 cyg_drv_dsr_lock()
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
80
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
81 #define _EXIT_MONITOR() \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
82 cyg_drv_dsr_unlock(); \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
83 HAL_RESTORE_INTERRUPTS(ints)
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
84 #else // !CYGPKG_NET
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
85 #define _ENTER_MONITOR() CYG_EMPTY_STATEMENT
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
86 #define _EXIT_MONITOR() CYG_EMPTY_STATEMENT
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
87 #endif
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
88
101
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
89 //--------------------------------------------------------------------------
112
02ea4320376c Merge from eCos master repository on 2000-07-21-21:01:39-BST
jlarmour
parents: 107
diff changeset
90 #ifndef _BSP_HANDLER_T_DEFINED
02ea4320376c Merge from eCos master repository on 2000-07-21-21:01:39-BST
jlarmour
parents: 107
diff changeset
91 #define _BSP_HANDLER_T_DEFINED
101
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
92 typedef int (*bsp_handler_t)(int __irq_nr, void *__regs);
112
02ea4320376c Merge from eCos master repository on 2000-07-21-21:01:39-BST
jlarmour
parents: 107
diff changeset
93 #endif // _BSP_HANDLER_T_DEFINED
101
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
94
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
95 //--------------------------------------------------------------------------
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
96 // Communication interface table. CYGNUM_CALL_IF_CONSOLE_PROCS and
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
97 // CYGNUM_CALL_IF_DEBUG_PROCS point to instances (possibly the same)
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
98 // of this table.
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
99
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
100 typedef enum {
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
101 /*
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
102 * For serial ports, the control function may be used to set and get the
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
103 * current baud rate. Usage:
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
104 *
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
105 * err = (*__control)(COMMCTL_SETBAUD, int bits_per_second);
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
106 * err => Zero if successful, -1 if error.
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
107 *
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
108 * baud = (*__control)(COMMCTL_GETBAUD);
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
109 * baud => -1 if error, current baud otherwise.
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
110 */
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
111 __COMMCTL_SETBAUD=0,
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
112 __COMMCTL_GETBAUD,
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
113
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
114 /*
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
115 * Install and remove debugger interrupt handlers. These are the receiver
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
116 * interrupt routines which are used to change control from a running
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
117 * program to the debugger stub.
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
118 */
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
119 __COMMCTL_INSTALL_DBG_ISR,
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
120 __COMMCTL_REMOVE_DBG_ISR,
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
121
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
122 /*
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
123 * Disable comm port interrupt. Returns TRUE if interrupt was enabled,
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
124 * FALSE otherwise.
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
125 */
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
126 __COMMCTL_IRQ_DISABLE,
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
127
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
128 /*
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
129 * Enable comm port interrupt.
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
130 */
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
131 __COMMCTL_IRQ_ENABLE,
105
5a0cc6c243a9 Merge from eCos master repository on 2000-06-30-08:18:49-BST
jlarmour
parents: 103
diff changeset
132
5a0cc6c243a9 Merge from eCos master repository on 2000-06-30-08:18:49-BST
jlarmour
parents: 103
diff changeset
133 /*
5a0cc6c243a9 Merge from eCos master repository on 2000-06-30-08:18:49-BST
jlarmour
parents: 103
diff changeset
134 * Returns the number of the interrupt vector used by the debug
5a0cc6c243a9 Merge from eCos master repository on 2000-06-30-08:18:49-BST
jlarmour
parents: 103
diff changeset
135 * interrupt handler.
5a0cc6c243a9 Merge from eCos master repository on 2000-06-30-08:18:49-BST
jlarmour
parents: 103
diff changeset
136 */
5a0cc6c243a9 Merge from eCos master repository on 2000-06-30-08:18:49-BST
jlarmour
parents: 103
diff changeset
137 __COMMCTL_DBG_ISR_VECTOR,
5a0cc6c243a9 Merge from eCos master repository on 2000-06-30-08:18:49-BST
jlarmour
parents: 103
diff changeset
138
5a0cc6c243a9 Merge from eCos master repository on 2000-06-30-08:18:49-BST
jlarmour
parents: 103
diff changeset
139 /*
5a0cc6c243a9 Merge from eCos master repository on 2000-06-30-08:18:49-BST
jlarmour
parents: 103
diff changeset
140 * Returns the current timeout value and sets a new timeout.
5a0cc6c243a9 Merge from eCos master repository on 2000-06-30-08:18:49-BST
jlarmour
parents: 103
diff changeset
141 * Timeout resolution is in milliseconds.
5a0cc6c243a9 Merge from eCos master repository on 2000-06-30-08:18:49-BST
jlarmour
parents: 103
diff changeset
142 * old_timeout = (*__control)(__COMMCTL_SET_TIMEOUT,
5a0cc6c243a9 Merge from eCos master repository on 2000-06-30-08:18:49-BST
jlarmour
parents: 103
diff changeset
143 * cyg_int32 new_timeout);
5a0cc6c243a9 Merge from eCos master repository on 2000-06-30-08:18:49-BST
jlarmour
parents: 103
diff changeset
144 */
5a0cc6c243a9 Merge from eCos master repository on 2000-06-30-08:18:49-BST
jlarmour
parents: 103
diff changeset
145 __COMMCTL_SET_TIMEOUT,
138
289bf90c6a9b Merge from eCos master repository on 2000-11-24-06:43:05-GMT
jlarmour
parents: 130
diff changeset
146
289bf90c6a9b Merge from eCos master repository on 2000-11-24-06:43:05-GMT
jlarmour
parents: 130
diff changeset
147 /*
289bf90c6a9b Merge from eCos master repository on 2000-11-24-06:43:05-GMT
jlarmour
parents: 130
diff changeset
148 * Forces driver to send all characters which may be buffered in
289bf90c6a9b Merge from eCos master repository on 2000-11-24-06:43:05-GMT
jlarmour
parents: 130
diff changeset
149 * the driver. This only flushes the driver buffers, not necessarily
289bf90c6a9b Merge from eCos master repository on 2000-11-24-06:43:05-GMT
jlarmour
parents: 130
diff changeset
150 * any hardware FIFO, etc.
289bf90c6a9b Merge from eCos master repository on 2000-11-24-06:43:05-GMT
jlarmour
parents: 130
diff changeset
151 */
289bf90c6a9b Merge from eCos master repository on 2000-11-24-06:43:05-GMT
jlarmour
parents: 130
diff changeset
152 __COMMCTL_FLUSH_OUTPUT,
289bf90c6a9b Merge from eCos master repository on 2000-11-24-06:43:05-GMT
jlarmour
parents: 130
diff changeset
153
329
85c0eb753287 Add control for netio line flushing.
msalter
parents: 210
diff changeset
154 /*
85c0eb753287 Add control for netio line flushing.
msalter
parents: 210
diff changeset
155 * Forces driver to enable or disable flushes when a newline is
85c0eb753287 Add control for netio line flushing.
msalter
parents: 210
diff changeset
156 * seen in the output stream. Flushing at line boundaries occurs
85c0eb753287 Add control for netio line flushing.
msalter
parents: 210
diff changeset
157 * in the driver, not necessarily any hardware FIFO, etc. Line
85c0eb753287 Add control for netio line flushing.
msalter
parents: 210
diff changeset
158 * buffering is optional and may only be available in some drivers.
85c0eb753287 Add control for netio line flushing.
msalter
parents: 210
diff changeset
159 */
85c0eb753287 Add control for netio line flushing.
msalter
parents: 210
diff changeset
160 __COMMCTL_ENABLE_LINE_FLUSH,
85c0eb753287 Add control for netio line flushing.
msalter
parents: 210
diff changeset
161 __COMMCTL_DISABLE_LINE_FLUSH,
85c0eb753287 Add control for netio line flushing.
msalter
parents: 210
diff changeset
162
101
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
163 } __comm_control_cmd_t;
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
164
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
165
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
166 #define CYGNUM_COMM_IF_CH_DATA 0
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
167 #define CYGNUM_COMM_IF_WRITE 1
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
168 #define CYGNUM_COMM_IF_READ 2
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
169 #define CYGNUM_COMM_IF_PUTC 3
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
170 #define CYGNUM_COMM_IF_GETC 4
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
171 #define CYGNUM_COMM_IF_CONTROL 5
105
5a0cc6c243a9 Merge from eCos master repository on 2000-06-30-08:18:49-BST
jlarmour
parents: 103
diff changeset
172 #define CYGNUM_COMM_IF_DBG_ISR 6
5a0cc6c243a9 Merge from eCos master repository on 2000-06-30-08:18:49-BST
jlarmour
parents: 103
diff changeset
173 #define CYGNUM_COMM_IF_GETC_TIMEOUT 7
101
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
174
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
175 #define CYGNUM_COMM_IF_TABLE_SIZE 8
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
176
105
5a0cc6c243a9 Merge from eCos master repository on 2000-06-30-08:18:49-BST
jlarmour
parents: 103
diff changeset
177 typedef volatile CYG_ADDRWORD hal_virtual_comm_table_t[CYGNUM_COMM_IF_TABLE_SIZE];
101
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
178
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
179 // The below is a (messy) attempt at adding some type safety to the
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
180 // above array. At the same time, the accessors allow the
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
181 // implementation to be easily changed in the future (both tag->data
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
182 // table and structure implementations have been suggested).
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
183
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
184 typedef void* __comm_if_ch_data_t;
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 138
diff changeset
185 typedef void (*__comm_if_write_t)(void* __ch_data, const cyg_uint8* __buf,
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 138
diff changeset
186 cyg_uint32 __len);
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 138
diff changeset
187 typedef int (*__comm_if_read_t)(void* __ch_data, cyg_uint8* __buf,
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 138
diff changeset
188 cyg_uint32 __len);
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 138
diff changeset
189 typedef void (*__comm_if_putc_t)(void* __ch_data, cyg_uint8 __ch);
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 138
diff changeset
190 typedef cyg_uint8 (*__comm_if_getc_t)(void* __ch_data);
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 138
diff changeset
191 typedef int (*__comm_if_control_t)(void *__ch_data,
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 138
diff changeset
192 __comm_control_cmd_t __func, ...);
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 138
diff changeset
193 typedef int (*__comm_if_dbg_isr_t)(void *__ch_data,
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 138
diff changeset
194 int* __ctrlc, CYG_ADDRWORD __vector,
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 138
diff changeset
195 CYG_ADDRWORD __data);
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 138
diff changeset
196 typedef cyg_bool (*__comm_if_getc_timeout_t)(void* __ch_data, cyg_uint8* __ch);
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 138
diff changeset
197
179
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
198 #define __call_COMM0(_n_,_rt_,_t_) \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
199 static __inline__ _rt_ \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
200 __call_COMM_##_n_(hal_virtual_comm_table_t t) \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
201 { \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
202 _rt_ res; \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
203 void *dp = (__comm_if_ch_data_t)t[CYGNUM_COMM_IF_CH_DATA]; \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
204 _ENTER_MONITOR(); \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
205 res = ((_t_)(t[CYGNUM_COMM_##_n_]))(dp); \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
206 _EXIT_MONITOR(); \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
207 return res; \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
208 }
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
209
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
210 #define __call_voidCOMM(_n_,_rt_,_t_) \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
211 static __inline__ _rt_ \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
212 __call_COMM_##_n_(hal_virtual_comm_table_t t) \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
213 { \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
214 void *dp = (__comm_if_ch_data_t)t[CYGNUM_COMM_IF_CH_DATA]; \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
215 _ENTER_MONITOR(); \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
216 ((_t_)(t[CYGNUM_COMM_##_n_]))(dp); \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
217 _EXIT_MONITOR(); \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
218 }
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
219
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
220 #define __call_COMM1(_n_,_rt_,_t_,_t1_) \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
221 static __inline__ _rt_ \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
222 __call_COMM_##_n_(hal_virtual_comm_table_t t, _t1_ _p1_) \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
223 { \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
224 _rt_ res; \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
225 void *dp = (__comm_if_ch_data_t)t[CYGNUM_COMM_IF_CH_DATA]; \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
226 _ENTER_MONITOR(); \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
227 res = ((_t_)(t[CYGNUM_COMM_##_n_]))(dp, _p1_); \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
228 _EXIT_MONITOR(); \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
229 return res; \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
230 }
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
231
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
232 #define __call_voidCOMM1(_n_,_rt_,_t_,_t1_) \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
233 static __inline__ _rt_ \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
234 __call_COMM_##_n_(hal_virtual_comm_table_t t, _t1_ _p1_) \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
235 { \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
236 void *dp = (__comm_if_ch_data_t)t[CYGNUM_COMM_IF_CH_DATA]; \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
237 _ENTER_MONITOR(); \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
238 ((_t_)(t[CYGNUM_COMM_##_n_]))(dp, _p1_); \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
239 _EXIT_MONITOR(); \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
240 }
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
241
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
242 #define __call_COMM2(_n_,_rt_,_t_,_t1_,_t2_) \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
243 static __inline__ _rt_ \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
244 __call_COMM_##_n_(hal_virtual_comm_table_t t, _t1_ _p1_, _t2_ _p2_) \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
245 { \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
246 _rt_ res; \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
247 void *dp = (__comm_if_ch_data_t)t[CYGNUM_COMM_IF_CH_DATA]; \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
248 _ENTER_MONITOR(); \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
249 res = ((_t_)(t[CYGNUM_COMM_##_n_]))(dp, _p1_, _p2_); \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
250 _EXIT_MONITOR(); \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
251 return res; \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
252 }
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
253
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
254 #define __call_voidCOMM2(_n_,_rt_,_t_,_t1_,_t2_) \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
255 static __inline__ _rt_ \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
256 __call_COMM_##_n_(hal_virtual_comm_table_t t, _t1_ _p1_, _t2_ _p2_) \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
257 { \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
258 void *dp = (__comm_if_ch_data_t)t[CYGNUM_COMM_IF_CH_DATA]; \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
259 _ENTER_MONITOR(); \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
260 ((_t_)(t[CYGNUM_COMM_##_n_]))(dp, _p1_, _p2_); \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
261 _EXIT_MONITOR(); \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
262 }
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
263
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
264 #define __call_COMM3(_n_,_rt_,_t_,_t1_,_t2_,_t3_) \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
265 static __inline__ _rt_ \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
266 __call_COMM_##_n_(hal_virtual_comm_table_t t, _t1_ _p1_, _t2_ _p2_, _t3_ _p3_) \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
267 { \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
268 _rt_ res; \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
269 void *dp = (__comm_if_ch_data_t)t[CYGNUM_COMM_IF_CH_DATA]; \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
270 _ENTER_MONITOR(); \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
271 res = ((_t_)(t[CYGNUM_COMM_##_n_]))(dp, _p1_, _p2_, _p3_); \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
272 _EXIT_MONITOR(); \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
273 return res; \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
274 }
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
275
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
276 #define __call_voidCOMM3(_n_,_rt_,_t_,_t1_,_t2_,_t3_) \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
277 static __inline__ _rt_ \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
278 __call_COMM_##_n_(hal_virtual_comm_table_t t, _t1_ _p1_, _t2_ _p2_, _t3_ _p3_) \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
279 { \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
280 void *dp = (__comm_if_ch_data_t)t[CYGNUM_COMM_IF_CH_DATA]; \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
281 _ENTER_MONITOR(); \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
282 ((_t_)(t[CYGNUM_COMM_##_n_]))(dp, _p1_, _p2_, _p3_); \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
283 _EXIT_MONITOR(); \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
284 }
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
285
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 138
diff changeset
286 #ifndef CYGACC_COMM_IF_DEFINED
179
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
287
101
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
288 #define CYGACC_COMM_IF_CH_DATA(_t_) \
107
7f461c3a372c Merge from eCos master repository on 2000-07-04-08:04:30-BST
jlarmour
parents: 105
diff changeset
289 ((__comm_if_ch_data_t)((_t_)[CYGNUM_COMM_IF_CH_DATA]))
101
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
290 #define CYGACC_COMM_IF_CH_DATA_SET(_t_, _x_) \
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
291 (_t_)[CYGNUM_COMM_IF_CH_DATA]=(CYG_ADDRWORD)(_x_)
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
292
179
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
293 __call_voidCOMM2(IF_WRITE, void, __comm_if_write_t, const cyg_uint8 *, cyg_uint32)
107
7f461c3a372c Merge from eCos master repository on 2000-07-04-08:04:30-BST
jlarmour
parents: 105
diff changeset
294 #define CYGACC_COMM_IF_WRITE(_t_, _b_, _l_) \
179
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
295 __call_COMM_IF_WRITE(_t_, _b_, _l_)
101
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
296 #define CYGACC_COMM_IF_WRITE_SET(_t_, _x_) \
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
297 (_t_)[CYGNUM_COMM_IF_WRITE]=(CYG_ADDRWORD)(_x_)
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
298
179
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
299 __call_voidCOMM2(IF_READ, void, __comm_if_read_t, cyg_uint8 *, cyg_uint32)
107
7f461c3a372c Merge from eCos master repository on 2000-07-04-08:04:30-BST
jlarmour
parents: 105
diff changeset
300 #define CYGACC_COMM_IF_READ(_t_, _b_, _l_) \
179
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
301 __call_COMM_IF_READ(_t_, _b_, _l_)
101
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
302 #define CYGACC_COMM_IF_READ_SET(_t_, _x_) \
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
303 (_t_)[CYGNUM_COMM_IF_READ]=(CYG_ADDRWORD)(_x_)
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
304
179
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
305 __call_voidCOMM1(IF_PUTC, void, __comm_if_putc_t, cyg_uint8)
107
7f461c3a372c Merge from eCos master repository on 2000-07-04-08:04:30-BST
jlarmour
parents: 105
diff changeset
306 #define CYGACC_COMM_IF_PUTC(_t_, _c_) \
179
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
307 __call_COMM_IF_PUTC(_t_,_c_)
101
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
308 #define CYGACC_COMM_IF_PUTC_SET(_t_, _x_) \
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
309 (_t_)[CYGNUM_COMM_IF_PUTC]=(CYG_ADDRWORD)(_x_)
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
310
179
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
311 __call_COMM0(IF_GETC, cyg_uint8, __comm_if_getc_t)
101
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
312 #define CYGACC_COMM_IF_GETC(_t_) \
179
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
313 __call_COMM_IF_GETC(_t_)
101
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
314 #define CYGACC_COMM_IF_GETC_SET(_t_, _x_) \
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
315 (_t_)[CYGNUM_COMM_IF_GETC]=(CYG_ADDRWORD)(_x_)
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
316
179
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
317 // This macro has not been changed to use inline functions like the
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
318 // others, simply because it uses variable arguments, and the change
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
319 // would break binary compatibility.
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
320 #define CYGACC_COMM_IF_CONTROL(_t_, args...) \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
321 ({ int res; \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
322 _ENTER_MONITOR(); \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
323 res = ((__comm_if_control_t)((_t_)[CYGNUM_COMM_IF_CONTROL]))(CYGACC_COMM_IF_CH_DATA(_t_), args); \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
324 _EXIT_MONITOR(); \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
325 res;})
101
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
326 #define CYGACC_COMM_IF_CONTROL_SET(_t_, _x_) \
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
327 (_t_)[CYGNUM_COMM_IF_CONTROL]=(CYG_ADDRWORD)(_x_)
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
328
179
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
329 __call_COMM3(IF_DBG_ISR, int, __comm_if_dbg_isr_t, int *, CYG_ADDRWORD, CYG_ADDRWORD)
107
7f461c3a372c Merge from eCos master repository on 2000-07-04-08:04:30-BST
jlarmour
parents: 105
diff changeset
330 #define CYGACC_COMM_IF_DBG_ISR(_t_, _c_, _v_, _d_) \
179
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
331 __call_COMM_IF_DBG_ISR(_t_, _c_, _v_, _d_)
105
5a0cc6c243a9 Merge from eCos master repository on 2000-06-30-08:18:49-BST
jlarmour
parents: 103
diff changeset
332 #define CYGACC_COMM_IF_DBG_ISR_SET(_t_, _x_) \
5a0cc6c243a9 Merge from eCos master repository on 2000-06-30-08:18:49-BST
jlarmour
parents: 103
diff changeset
333 (_t_)[CYGNUM_COMM_IF_DBG_ISR]=(CYG_ADDRWORD)(_x_)
5a0cc6c243a9 Merge from eCos master repository on 2000-06-30-08:18:49-BST
jlarmour
parents: 103
diff changeset
334
179
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
335 __call_COMM1(IF_GETC_TIMEOUT, cyg_bool, __comm_if_getc_timeout_t, cyg_uint8 *)
107
7f461c3a372c Merge from eCos master repository on 2000-07-04-08:04:30-BST
jlarmour
parents: 105
diff changeset
336 #define CYGACC_COMM_IF_GETC_TIMEOUT(_t_, _c_) \
179
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
337 __call_COMM_IF_GETC_TIMEOUT(_t_, _c_)
105
5a0cc6c243a9 Merge from eCos master repository on 2000-06-30-08:18:49-BST
jlarmour
parents: 103
diff changeset
338 #define CYGACC_COMM_IF_GETC_TIMEOUT_SET(_t_, _x_) \
5a0cc6c243a9 Merge from eCos master repository on 2000-06-30-08:18:49-BST
jlarmour
parents: 103
diff changeset
339 (_t_)[CYGNUM_COMM_IF_GETC_TIMEOUT]=(CYG_ADDRWORD)(_x_)
101
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
340
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 138
diff changeset
341 #endif // CYGACC_COMM_IF_DEFINED
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 138
diff changeset
342
101
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
343 //--------------------------------------------------------------------------
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
344 // Main calling interface table. Will be assigned a location by the
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
345 // linker script. Both ROM and RAM startup applications will know about
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
346 // the location.
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
347 #define CYGNUM_CALL_IF_VERSION 0
179
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
348 #define CYGNUM_CALL_IF_available_1 1
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
349 #define CYGNUM_CALL_IF_available_2 2
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
350 #define CYGNUM_CALL_IF_available_3 3
101
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
351 #define CYGNUM_CALL_IF_KILL_VECTOR 4
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
352 #define CYGNUM_CALL_IF_CONSOLE_PROCS 5
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
353 #define CYGNUM_CALL_IF_DEBUG_PROCS 6
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
354 #define CYGNUM_CALL_IF_FLUSH_DCACHE 7
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
355 #define CYGNUM_CALL_IF_FLUSH_ICACHE 8
179
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
356 #define CYGNUM_CALL_IF_available_9 9
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
357 #define CYGNUM_CALL_IF_available_10 10
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
358 #define CYGNUM_CALL_IF_available_11 11
101
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
359 #define CYGNUM_CALL_IF_SET_DEBUG_COMM 12
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
360 #define CYGNUM_CALL_IF_SET_CONSOLE_COMM 13
447
44f818173f96 Export RedBoot version via virtual vector table.
gthomas
parents: 329
diff changeset
361 #define CYGNUM_CALL_IF_MONITOR_VERSION 14
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents: 112
diff changeset
362 #define CYGNUM_CALL_IF_DBG_SYSCALL 15
101
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
363 #define CYGNUM_CALL_IF_RESET 16
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
364 #define CYGNUM_CALL_IF_CONSOLE_INTERRUPT_FLAG 17
105
5a0cc6c243a9 Merge from eCos master repository on 2000-06-30-08:18:49-BST
jlarmour
parents: 103
diff changeset
365 #define CYGNUM_CALL_IF_DELAY_US 18
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents: 112
diff changeset
366 #define CYGNUM_CALL_IF_DBG_DATA 19
156
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
367 #define CYGNUM_CALL_IF_FLASH_CFG_OP 20
556
f2b5df359050 Support return to redboot from go
msalter
parents: 447
diff changeset
368 #define CYGNUM_CALL_IF_MONITOR_RETURN 21
791
a2dfa8bf3c57 Export RedBoot FIS functions - from Knud Woehler <knud.woehler@microplex.de>
gthomas
parents: 556
diff changeset
369 #define CYGNUM_CALL_IF_FLASH_FIS_OP 22
101
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
370
791
a2dfa8bf3c57 Export RedBoot FIS functions - from Knud Woehler <knud.woehler@microplex.de>
gthomas
parents: 556
diff changeset
371 #define CYGNUM_CALL_IF_LAST_ENTRY CYGNUM_CALL_IF_FLASH_FIS_OP
101
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
372
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
373 #define CYGNUM_CALL_IF_INSTALL_BPT_FN 35
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
374
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
375 #define CYGNUM_CALL_IF_TABLE_SIZE 64
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
376
105
5a0cc6c243a9 Merge from eCos master repository on 2000-06-30-08:18:49-BST
jlarmour
parents: 103
diff changeset
377 externC volatile CYG_ADDRWORD hal_virtual_vector_table[CYGNUM_CALL_IF_TABLE_SIZE];
101
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
378
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 138
diff changeset
379 // Table version contains version information for both the CALL table
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 138
diff changeset
380 // itself (the number of the last active entry in the table), and the
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 138
diff changeset
381 // COMM table (the size of the table).
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 138
diff changeset
382 #define CYGNUM_CALL_IF_TABLE_VERSION_CALL CYGNUM_CALL_IF_LAST_ENTRY
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 138
diff changeset
383 #define CYGNUM_CALL_IF_TABLE_VERSION_CALL_HACK (CYGNUM_CALL_IF_TABLE_SIZE+1)
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 138
diff changeset
384 #define CYGNUM_CALL_IF_TABLE_VERSION_CALL_MAX CYGNUM_CALL_IF_TABLE_SIZE
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 138
diff changeset
385 #define CYGNUM_CALL_IF_TABLE_VERSION_COMM CYGNUM_COMM_IF_TABLE_SIZE
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 138
diff changeset
386 #define CYGNUM_CALL_IF_TABLE_VERSION_CALL_MASK 0x0000ffff
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 138
diff changeset
387 #define CYGNUM_CALL_IF_TABLE_VERSION_COMM_MASK 0xffff0000
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 138
diff changeset
388 #define CYGNUM_CALL_IF_TABLE_VERSION_COMM_shift 16
103
95f3e12a6327 Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents: 101
diff changeset
389
95f3e12a6327 Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents: 101
diff changeset
390
95f3e12a6327 Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents: 101
diff changeset
391 // These are special debug/console procs IDs
95f3e12a6327 Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents: 101
diff changeset
392 // QUERY_CURRENT will cause the ID of the currently selected proc ID to be
95f3e12a6327 Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents: 101
diff changeset
393 // returned.
95f3e12a6327 Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents: 101
diff changeset
394 // EMPTY this is the ID used for an empty procs table (i.e, NULL
95f3e12a6327 Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents: 101
diff changeset
395 // pointer)
95f3e12a6327 Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents: 101
diff changeset
396 // MANGLER selects the procs space reserved for the console mangler
95f3e12a6327 Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents: 101
diff changeset
397 // allowing the application to temporarily disable mangling
95f3e12a6327 Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents: 101
diff changeset
398 // or temporarily switch in different console procs.
95f3e12a6327 Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents: 101
diff changeset
399 #define CYGNUM_CALL_IF_SET_COMM_ID_QUERY_CURRENT -1
95f3e12a6327 Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents: 101
diff changeset
400 #define CYGNUM_CALL_IF_SET_COMM_ID_EMPTY -2
95f3e12a6327 Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents: 101
diff changeset
401 #define CYGNUM_CALL_IF_SET_COMM_ID_MANGLER -3
95f3e12a6327 Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents: 101
diff changeset
402
101
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
403 // The below is a (messy) attempt at adding some type safety to the
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
404 // above array. At the same time, the accessors allow the
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
405 // implementation to be easily changed in the future (both tag->data
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
406 // table and structure implementations have been suggested).
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
407
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
408 typedef int __call_if_version_t;
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 138
diff changeset
409 typedef void* __call_if_ictrl_table_t;
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 138
diff changeset
410 typedef void* __call_if_exc_table_t;
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 138
diff changeset
411 typedef bsp_handler_t *__call_if_dbg_vector_t;
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 138
diff changeset
412 typedef bsp_handler_t __call_if_kill_vector_t;
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 138
diff changeset
413 typedef hal_virtual_comm_table_t *__call_if_console_procs_t;
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 138
diff changeset
414 typedef hal_virtual_comm_table_t *__call_if_debug_procs_t;
156
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
415 typedef void (__call_if_flush_dcache_t)(void *__p, int __nbytes);
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
416 typedef void (__call_if_flush_icache_t)(void *__p, int __nbytes);
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
417 typedef int (__call_if_set_debug_comm_t)(int __comm_id);
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
418 typedef int (__call_if_set_console_comm_t)(int __comm_id);
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 138
diff changeset
419 typedef void* __call_if_dbg_data_t;
156
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
420 typedef int (__call_if_dbg_syscall_t) (enum dbg_syscall_ids id,
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 138
diff changeset
421 union dbg_thread_syscall_parms *p );
156
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
422 typedef void (__call_if_reset_t)(void);
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 138
diff changeset
423 typedef int __call_if_console_interrupt_flag_t;
156
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
424 typedef void (__call_if_delay_us_t)(cyg_int32 usecs);
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
425 typedef void (__call_if_install_bpt_fn_t)(void *__epc);
447
44f818173f96 Export RedBoot version via virtual vector table.
gthomas
parents: 329
diff changeset
426 typedef char *__call_if_monitor_version_t;
556
f2b5df359050 Support return to redboot from go
msalter
parents: 447
diff changeset
427 typedef void (__call_if_monitor_return_t)(int status);
1452
c15fe26f81c7 Expand fconfig access via virtual vectors.
gthomas
parents: 1200
diff changeset
428 typedef cyg_bool (__call_if_flash_fis_op_fn_t)(int __oper, char *__name, void *__val);
c15fe26f81c7 Expand fconfig access via virtual vectors.
gthomas
parents: 1200
diff changeset
429 //
c15fe26f81c7 Expand fconfig access via virtual vectors.
gthomas
parents: 1200
diff changeset
430 // This structure is used to pass parameters to/from the fconfig routines.
c15fe26f81c7 Expand fconfig access via virtual vectors.
gthomas
parents: 1200
diff changeset
431 // This allows a single virtual vector interface, with widely varying functionality
c15fe26f81c7 Expand fconfig access via virtual vectors.
gthomas
parents: 1200
diff changeset
432 //
c15fe26f81c7 Expand fconfig access via virtual vectors.
gthomas
parents: 1200
diff changeset
433 struct cyg_fconfig {
c15fe26f81c7 Expand fconfig access via virtual vectors.
gthomas
parents: 1200
diff changeset
434 char *key; // Datum 'key'
c15fe26f81c7 Expand fconfig access via virtual vectors.
gthomas
parents: 1200
diff changeset
435 int keylen; // Length of key
c15fe26f81c7 Expand fconfig access via virtual vectors.
gthomas
parents: 1200
diff changeset
436 void *val; // Pointer to data
c15fe26f81c7 Expand fconfig access via virtual vectors.
gthomas
parents: 1200
diff changeset
437 int type; // Type of datum
c15fe26f81c7 Expand fconfig access via virtual vectors.
gthomas
parents: 1200
diff changeset
438 int offset; // Offset within data (used by _NEXT)
c15fe26f81c7 Expand fconfig access via virtual vectors.
gthomas
parents: 1200
diff changeset
439 };
c15fe26f81c7 Expand fconfig access via virtual vectors.
gthomas
parents: 1200
diff changeset
440 typedef cyg_bool (__call_if_flash_cfg_op_fn_t)(int __oper, struct cyg_fconfig *__data);
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 138
diff changeset
441
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 138
diff changeset
442 #ifndef CYGACC_CALL_IF_DEFINED
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 138
diff changeset
443
179
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
444 #define __data_VV(_n_,_tt_) \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
445 static __inline__ _tt_ \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
446 __call_vv_##_n_(void) \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
447 { \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
448 return ((_tt_)hal_virtual_vector_table[_n_]); \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
449 }
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
450
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
451 #define __call_VV0(_n_,_tt_,_rt_) \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
452 static __inline__ _rt_ \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
453 __call_vv_##_n_(void) \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
454 { \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
455 _rt_ res; \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
456 _ENTER_MONITOR(); \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
457 res = ((_tt_ *)hal_virtual_vector_table[_n_])(); \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
458 _EXIT_MONITOR(); \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
459 return res; \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
460 }
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
461
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
462 #define __call_voidVV0(_n_,_tt_,_rt_) \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
463 static __inline__ _rt_ \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
464 __call_vv_##_n_(void) \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
465 { \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
466 _ENTER_MONITOR(); \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
467 ((_tt_ *)hal_virtual_vector_table[_n_])(); \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
468 _EXIT_MONITOR(); \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
469 }
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
470
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
471 #define __call_VV1(_n_,_tt_,_rt_,_t1_) \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
472 static __inline__ _rt_ \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
473 __call_vv_##_n_(_t1_ _p1_) \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
474 { \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
475 _rt_ res; \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
476 _ENTER_MONITOR(); \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
477 res = ((_tt_ *)hal_virtual_vector_table[_n_])(_p1_); \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
478 _EXIT_MONITOR(); \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
479 return res; \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
480 }
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
481
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
482 #define __call_voidVV1(_n_,_tt_,_rt_,_t1_) \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
483 static __inline__ _rt_ \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
484 __call_vv_##_n_(_t1_ _p1_) \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
485 { \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
486 _ENTER_MONITOR(); \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
487 ((_tt_ *)hal_virtual_vector_table[_n_])(_p1_); \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
488 _EXIT_MONITOR(); \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
489 }
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
490
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
491 #define __call_VV2(_n_,_tt_,_rt_,_t1_,_t2_) \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
492 static __inline__ _rt_ \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
493 __call_vv_##_n_(_t1_ _p1_, _t2_ _p2_) \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
494 { \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
495 _rt_ res; \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
496 _ENTER_MONITOR(); \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
497 res = ((_tt_ *)hal_virtual_vector_table[_n_])(_p1_,_p2_); \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
498 _EXIT_MONITOR(); \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
499 return res; \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
500 }
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
501
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
502 #define __call_voidVV2(_n_,_tt_,_rt_,_t1_,_t2_) \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
503 static __inline__ _rt_ \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
504 __call_vv_##_n_(_t1_ _p1_, _t2_ _p2_) \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
505 { \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
506 _ENTER_MONITOR(); \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
507 ((_tt_ *)hal_virtual_vector_table[_n_])(_p1_,_p2_); \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
508 _EXIT_MONITOR(); \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
509 }
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
510
791
a2dfa8bf3c57 Export RedBoot FIS functions - from Knud Woehler <knud.woehler@microplex.de>
gthomas
parents: 556
diff changeset
511 #define __call_VV3(_n_,_tt_,_rt_,_t1_,_t2_,_t3_) \
a2dfa8bf3c57 Export RedBoot FIS functions - from Knud Woehler <knud.woehler@microplex.de>
gthomas
parents: 556
diff changeset
512 static __inline__ _rt_ \
a2dfa8bf3c57 Export RedBoot FIS functions - from Knud Woehler <knud.woehler@microplex.de>
gthomas
parents: 556
diff changeset
513 __call_vv_##_n_(_t1_ _p1_, _t2_ _p2_, _t3_ _p3_) \
a2dfa8bf3c57 Export RedBoot FIS functions - from Knud Woehler <knud.woehler@microplex.de>
gthomas
parents: 556
diff changeset
514 { \
a2dfa8bf3c57 Export RedBoot FIS functions - from Knud Woehler <knud.woehler@microplex.de>
gthomas
parents: 556
diff changeset
515 _rt_ res; \
a2dfa8bf3c57 Export RedBoot FIS functions - from Knud Woehler <knud.woehler@microplex.de>
gthomas
parents: 556
diff changeset
516 _ENTER_MONITOR(); \
a2dfa8bf3c57 Export RedBoot FIS functions - from Knud Woehler <knud.woehler@microplex.de>
gthomas
parents: 556
diff changeset
517 res = ((_tt_ *)hal_virtual_vector_table[_n_])(_p1_,_p2_,_p3_); \
a2dfa8bf3c57 Export RedBoot FIS functions - from Knud Woehler <knud.woehler@microplex.de>
gthomas
parents: 556
diff changeset
518 _EXIT_MONITOR(); \
a2dfa8bf3c57 Export RedBoot FIS functions - from Knud Woehler <knud.woehler@microplex.de>
gthomas
parents: 556
diff changeset
519 return res; \
a2dfa8bf3c57 Export RedBoot FIS functions - from Knud Woehler <knud.woehler@microplex.de>
gthomas
parents: 556
diff changeset
520 }
a2dfa8bf3c57 Export RedBoot FIS functions - from Knud Woehler <knud.woehler@microplex.de>
gthomas
parents: 556
diff changeset
521
a2dfa8bf3c57 Export RedBoot FIS functions - from Knud Woehler <knud.woehler@microplex.de>
gthomas
parents: 556
diff changeset
522 #define __call_voidVV3(_n_,_tt_,_rt_,_t1_,_t2_,_t3_) \
a2dfa8bf3c57 Export RedBoot FIS functions - from Knud Woehler <knud.woehler@microplex.de>
gthomas
parents: 556
diff changeset
523 static __inline__ _rt_ \
a2dfa8bf3c57 Export RedBoot FIS functions - from Knud Woehler <knud.woehler@microplex.de>
gthomas
parents: 556
diff changeset
524 __call_vv_##_n_(_t1_ _p1_, _t2_ _p2_, _t3_ _p3_) \
a2dfa8bf3c57 Export RedBoot FIS functions - from Knud Woehler <knud.woehler@microplex.de>
gthomas
parents: 556
diff changeset
525 { \
a2dfa8bf3c57 Export RedBoot FIS functions - from Knud Woehler <knud.woehler@microplex.de>
gthomas
parents: 556
diff changeset
526 _ENTER_MONITOR(); \
a2dfa8bf3c57 Export RedBoot FIS functions - from Knud Woehler <knud.woehler@microplex.de>
gthomas
parents: 556
diff changeset
527 ((_tt_ *)hal_virtual_vector_table[_n_])(_p1_,_p2_,_p3_); \
a2dfa8bf3c57 Export RedBoot FIS functions - from Knud Woehler <knud.woehler@microplex.de>
gthomas
parents: 556
diff changeset
528 _EXIT_MONITOR(); \
a2dfa8bf3c57 Export RedBoot FIS functions - from Knud Woehler <knud.woehler@microplex.de>
gthomas
parents: 556
diff changeset
529 }
a2dfa8bf3c57 Export RedBoot FIS functions - from Knud Woehler <knud.woehler@microplex.de>
gthomas
parents: 556
diff changeset
530
179
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
531 #define __call_VV4(_n_,_tt_,_rt_,_t1_,_t2_,_t3_,_t4_) \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
532 static __inline__ _rt_ \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
533 __call_vv_##_n_(_t1_ _p1_, _t2_ _p2_, _t3_ _p3_, _t4_ _p4_) \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
534 { \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
535 _rt_ res; \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
536 _ENTER_MONITOR(); \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
537 res = ((_tt_ *)hal_virtual_vector_table[_n_])(_p1_,_p2_,_p3_,_p4_); \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
538 _EXIT_MONITOR(); \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
539 return res; \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
540 }
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
541
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
542 #define __call_voidVV4(_n_,_tt_,_rt_,_t1_,_t2_,_t3_,_t4_) \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
543 static __inline__ _rt_ \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
544 __call_vv_##_n_(_t1_ _p1_, _t2_ _p2_, _t3_ _p3_, _t4_ _p4_) \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
545 { \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
546 _ENTER_MONITOR(); \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
547 ((_tt_ *)hal_virtual_vector_table[_n_])(_p1_,_p2_,_p3_,_p4_); \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
548 _EXIT_MONITOR(); \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
549 }
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
550
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
551
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
552 #define CYGACC_DATA_VV(t,e) __call_vv_##e()
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
553 #define CYGACC_CALL_VV0(t,e) __call_vv_##e
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
554 #define CYGACC_CALL_VV1(t,e,p1) __call_vv_##e((p1))
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
555 #define CYGACC_CALL_VV2(t,e,p1,p2) __call_vv_##e((p1),(p2))
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
556 #define CYGACC_CALL_VV3(t,e,p1,p2,p3) __call_vv_##e((p1),(p2),(p3))
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
557 #define CYGACC_CALL_VV4(t,e,p1,p2,p3,p4) __call_vv_##e((p1),(p2),(p3),(p4))
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
558
101
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
559 #define CYGACC_CALL_IF_VERSION() \
179
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
560 CYGACC_DATA_VV(__call_if_version_t, CYGNUM_CALL_IF_VERSION)
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
561 __data_VV(CYGNUM_CALL_IF_VERSION, __call_if_version_t)
101
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
562 #define CYGACC_CALL_IF_VERSION_SET(_x_) \
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
563 hal_virtual_vector_table[CYGNUM_CALL_IF_VERSION]=(CYG_ADDRWORD)(_x_)
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
564
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
565 #define CYGACC_CALL_IF_KILL_VECTOR() \
179
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
566 CYGACC_DATA_VV(__call_if_kill_vector_t, CYGNUM_CALL_IF_KILL_VECTOR)
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
567 __data_VV(CYGNUM_CALL_IF_KILL_VECTOR, __call_if_kill_vector_t)
101
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
568 #define CYGACC_CALL_IF_KILL_VECTOR_SET(_x_) \
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
569 hal_virtual_vector_table[CYGNUM_CALL_IF_KILL_VECTOR]=(CYG_ADDRWORD)(_x_)
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
570
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
571 #define CYGACC_CALL_IF_CONSOLE_PROCS() \
179
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
572 CYGACC_DATA_VV(__call_if_console_procs_t, CYGNUM_CALL_IF_CONSOLE_PROCS)
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
573 __data_VV(CYGNUM_CALL_IF_CONSOLE_PROCS, __call_if_console_procs_t)
101
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
574 #define CYGACC_CALL_IF_CONSOLE_PROCS_SET(_x_) \
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
575 hal_virtual_vector_table[CYGNUM_CALL_IF_CONSOLE_PROCS]=(CYG_ADDRWORD)(_x_)
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
576
107
7f461c3a372c Merge from eCos master repository on 2000-07-04-08:04:30-BST
jlarmour
parents: 105
diff changeset
577 #define CYGACC_CALL_IF_FLUSH_DCACHE(_p_, _n_) \
156
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
578 ((__call_if_flush_dcache_t*)hal_virtual_vector_table[CYGNUM_CALL_IF_FLUSH_DCACHE])((_p_), (_n_))
101
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
579 #define CYGACC_CALL_IF_FLUSH_DCACHE_SET(_x_) \
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
580 hal_virtual_vector_table[CYGNUM_CALL_IF_FLUSH_DCACHE]=(CYG_ADDRWORD)(_x_)
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
581
107
7f461c3a372c Merge from eCos master repository on 2000-07-04-08:04:30-BST
jlarmour
parents: 105
diff changeset
582 #define CYGACC_CALL_IF_FLUSH_ICACHE(_p_, _n_) \
156
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
583 ((__call_if_flush_icache_t*)hal_virtual_vector_table[CYGNUM_CALL_IF_FLUSH_ICACHE])((_p_), (_n_))
101
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
584 #define CYGACC_CALL_IF_FLUSH_ICACHE_SET(_x_) \
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
585 hal_virtual_vector_table[CYGNUM_CALL_IF_FLUSH_ICACHE]=(CYG_ADDRWORD)(_x_)
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
586
179
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
587 #define CYGACC_CALL_IF_DEBUG_PROCS() \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
588 CYGACC_DATA_VV(__call_if_debug_procs_t, CYGNUM_CALL_IF_DEBUG_PROCS)
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
589 __data_VV(CYGNUM_CALL_IF_DEBUG_PROCS, __call_if_debug_procs_t)
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
590 #define CYGACC_CALL_IF_DEBUG_PROCS_SET(_x_) \
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
591 hal_virtual_vector_table[CYGNUM_CALL_IF_DEBUG_PROCS]=(CYG_ADDRWORD)(_x_)
101
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
592
107
7f461c3a372c Merge from eCos master repository on 2000-07-04-08:04:30-BST
jlarmour
parents: 105
diff changeset
593 #define CYGACC_CALL_IF_SET_DEBUG_COMM(_i_) \
179
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
594 CYGACC_CALL_VV1(__call_if_set_debug_comm_t*, CYGNUM_CALL_IF_SET_DEBUG_COMM, (_i_))
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
595 __call_VV1(CYGNUM_CALL_IF_SET_DEBUG_COMM, __call_if_set_debug_comm_t, int, int)
101
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
596 #define CYGACC_CALL_IF_SET_DEBUG_COMM_SET(_x_) \
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
597 hal_virtual_vector_table[CYGNUM_CALL_IF_SET_DEBUG_COMM]=(CYG_ADDRWORD)(_x_)
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
598
107
7f461c3a372c Merge from eCos master repository on 2000-07-04-08:04:30-BST
jlarmour
parents: 105
diff changeset
599 #define CYGACC_CALL_IF_SET_CONSOLE_COMM(_i_) \
179
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
600 CYGACC_CALL_VV1(__call_if_set_console_comm_t*, CYGNUM_CALL_IF_SET_CONSOLE_COMM, (_i_))
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
601 __call_VV1(CYGNUM_CALL_IF_SET_CONSOLE_COMM, __call_if_set_console_comm_t, int, int)
101
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
602 #define CYGACC_CALL_IF_SET_CONSOLE_COMM_SET(_x_) \
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
603 hal_virtual_vector_table[CYGNUM_CALL_IF_SET_CONSOLE_COMM]=(CYG_ADDRWORD)(_x_)
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
604
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
605 #define CYGACC_CALL_IF_DBG_DATA() \
179
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
606 CYGACC_DATA_VV(__call_if_dbg_data_t, CYGNUM_CALL_IF_DBG_DATA)
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
607 __data_VV(CYGNUM_CALL_IF_DBG_DATA, __call_if_dbg_data_t)
101
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
608 #define CYGACC_CALL_IF_DBG_DATA_SET(_x_) \
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
609 hal_virtual_vector_table[CYGNUM_CALL_IF_DBG_DATA]=(CYG_ADDRWORD)(_x_)
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
610
183
9160a8005d76 Merge from eCos master repository on 2001-09-12-03:52:30-BST
jlarmour
parents: 179
diff changeset
611 #define CYGACC_CALL_IF_DBG_SYSCALL(_id_,_p_) \
9160a8005d76 Merge from eCos master repository on 2001-09-12-03:52:30-BST
jlarmour
parents: 179
diff changeset
612 CYGACC_CALL_VV2(__call_if_dbg_syscall_t, CYGNUM_CALL_IF_DBG_SYSCALL, _id_, _p_)
9160a8005d76 Merge from eCos master repository on 2001-09-12-03:52:30-BST
jlarmour
parents: 179
diff changeset
613 __call_VV2(CYGNUM_CALL_IF_DBG_SYSCALL, __call_if_dbg_syscall_t, int, enum dbg_syscall_ids , union dbg_thread_syscall_parms *)
101
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
614 #define CYGACC_CALL_IF_DBG_SYSCALL_SET(_x_) \
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
615 hal_virtual_vector_table[CYGNUM_CALL_IF_DBG_SYSCALL]=(CYG_ADDRWORD)(_x_)
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
616
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
617 #define CYGACC_CALL_IF_RESET() \
179
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
618 CYGACC_CALL_VV0(__call_if_reset_t*, CYGNUM_CALL_IF_RESET)()
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
619 __call_voidVV0(CYGNUM_CALL_IF_RESET, __call_if_reset_t, void)
101
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
620 #define CYGACC_CALL_IF_RESET_SET(_x_) \
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
621 hal_virtual_vector_table[CYGNUM_CALL_IF_RESET]=(CYG_ADDRWORD)(_x_)
107
7f461c3a372c Merge from eCos master repository on 2000-07-04-08:04:30-BST
jlarmour
parents: 105
diff changeset
622 #define CYGACC_CALL_IF_RESET_GET() \
156
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
623 ((__call_if_reset_t*)hal_virtual_vector_table[CYGNUM_CALL_IF_RESET])
101
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
624
447
44f818173f96 Export RedBoot version via virtual vector table.
gthomas
parents: 329
diff changeset
625 #define CYGACC_CALL_IF_MONITOR_VERSION() \
44f818173f96 Export RedBoot version via virtual vector table.
gthomas
parents: 329
diff changeset
626 CYGACC_DATA_VV(__call_if_monitor_version_t, CYGNUM_CALL_IF_MONITOR_VERSION)
44f818173f96 Export RedBoot version via virtual vector table.
gthomas
parents: 329
diff changeset
627 __data_VV(CYGNUM_CALL_IF_MONITOR_VERSION, __call_if_monitor_version_t)
44f818173f96 Export RedBoot version via virtual vector table.
gthomas
parents: 329
diff changeset
628 #define CYGACC_CALL_IF_MONITOR_VERSION_SET(_x_) \
44f818173f96 Export RedBoot version via virtual vector table.
gthomas
parents: 329
diff changeset
629 hal_virtual_vector_table[CYGNUM_CALL_IF_MONITOR_VERSION]=(CYG_ADDRWORD)(_x_)
44f818173f96 Export RedBoot version via virtual vector table.
gthomas
parents: 329
diff changeset
630
101
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
631 #define CYGACC_CALL_IF_CONSOLE_INTERRUPT_FLAG() \
179
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
632 CYGACC_DATA_VV(__call_if_console_interrupt_flag_t, CYGNUM_CALL_IF_CONSOLE_INTERRUPT_FLAG)
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
633 __data_VV(CYGNUM_CALL_IF_CONSOLE_INTERRUPT_FLAG, __call_if_console_interrupt_flag_t)
101
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
634 #define CYGACC_CALL_IF_CONSOLE_INTERRUPT_FLAG_SET(_x_) \
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
635 hal_virtual_vector_table[CYGNUM_CALL_IF_CONSOLE_INTERRUPT_FLAG]=(CYG_ADDRWORD)(_x_)
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
636
107
7f461c3a372c Merge from eCos master repository on 2000-07-04-08:04:30-BST
jlarmour
parents: 105
diff changeset
637 #define CYGACC_CALL_IF_DELAY_US(_u_) \
179
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
638 CYGACC_CALL_VV1(__call_if_delay_us_t*, CYGNUM_CALL_IF_DELAY_US, (_u_))
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
639 __call_voidVV1(CYGNUM_CALL_IF_DELAY_US, __call_if_delay_us_t, void, cyg_int32)
105
5a0cc6c243a9 Merge from eCos master repository on 2000-06-30-08:18:49-BST
jlarmour
parents: 103
diff changeset
640 #define CYGACC_CALL_IF_DELAY_US_SET(_x_) \
5a0cc6c243a9 Merge from eCos master repository on 2000-06-30-08:18:49-BST
jlarmour
parents: 103
diff changeset
641 hal_virtual_vector_table[CYGNUM_CALL_IF_DELAY_US]=(CYG_ADDRWORD)(_x_)
5a0cc6c243a9 Merge from eCos master repository on 2000-06-30-08:18:49-BST
jlarmour
parents: 103
diff changeset
642
107
7f461c3a372c Merge from eCos master repository on 2000-07-04-08:04:30-BST
jlarmour
parents: 105
diff changeset
643 #define CYGACC_CALL_IF_INSTALL_BPT_FN(_e_) \
179
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
644 CYGACC_CALL_VV1(__call_if_install_bpt_fn_t*, CYGNUM_CALL_IF_INSTALL_BPT_FN, (_e_))
391299f9e541 Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents: 156
diff changeset
645 __call_voidVV1(CYGNUM_CALL_IF_INSTALL_BPT_FN, __call_if_install_bpt_fn_t, void, void *)
101
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
646 #define CYGACC_CALL_IF_INSTALL_BPT_FN_SET(_x_) \
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
647 hal_virtual_vector_table[CYGNUM_CALL_IF_INSTALL_BPT_FN]=(CYG_ADDRWORD)(_x_)
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
648
1452
c15fe26f81c7 Expand fconfig access via virtual vectors.
gthomas
parents: 1200
diff changeset
649 //
c15fe26f81c7 Expand fconfig access via virtual vectors.
gthomas
parents: 1200
diff changeset
650 // Access persistent data store - kept in FLASH or EEPROM by RedBoot
c15fe26f81c7 Expand fconfig access via virtual vectors.
gthomas
parents: 1200
diff changeset
651 //
c15fe26f81c7 Expand fconfig access via virtual vectors.
gthomas
parents: 1200
diff changeset
652 #define CYGNUM_CALL_IF_FLASH_CFG_GET (0) // Get a particular fconfig key
c15fe26f81c7 Expand fconfig access via virtual vectors.
gthomas
parents: 1200
diff changeset
653 #define CYGNUM_CALL_IF_FLASH_CFG_NEXT (1) // Enumerate keys (get the next one)
c15fe26f81c7 Expand fconfig access via virtual vectors.
gthomas
parents: 1200
diff changeset
654 #define CYGNUM_CALL_IF_FLASH_CFG_SET (2) // Update particular fconfig key
1457
9bf998a57d30 Handle changes in FLASH CFG API
gthomas
parents: 1452
diff changeset
655 #define CYGACC_CALL_IF_FLASH_CFG_OP2(_o_,_d_) \
1452
c15fe26f81c7 Expand fconfig access via virtual vectors.
gthomas
parents: 1200
diff changeset
656 CYGACC_CALL_VV2(__call_if_flash_cfg_op_fn_t*, CYGNUM_CALL_IF_FLASH_CFG_OP, (_o_),(_d_))
c15fe26f81c7 Expand fconfig access via virtual vectors.
gthomas
parents: 1200
diff changeset
657 __call_VV2(CYGNUM_CALL_IF_FLASH_CFG_OP, __call_if_flash_cfg_op_fn_t, cyg_bool, int, struct cyg_fconfig *)
1457
9bf998a57d30 Handle changes in FLASH CFG API
gthomas
parents: 1452
diff changeset
658
9bf998a57d30 Handle changes in FLASH CFG API
gthomas
parents: 1452
diff changeset
659 static __inline__ cyg_bool
9bf998a57d30 Handle changes in FLASH CFG API
gthomas
parents: 1452
diff changeset
660 __call_if_flash_cfg_op(int op, char *key, void *data, int type)
9bf998a57d30 Handle changes in FLASH CFG API
gthomas
parents: 1452
diff changeset
661 {
9bf998a57d30 Handle changes in FLASH CFG API
gthomas
parents: 1452
diff changeset
662 struct cyg_fconfig info;
9bf998a57d30 Handle changes in FLASH CFG API
gthomas
parents: 1452
diff changeset
663 info.key = key;
9bf998a57d30 Handle changes in FLASH CFG API
gthomas
parents: 1452
diff changeset
664 info.val = data;
9bf998a57d30 Handle changes in FLASH CFG API
gthomas
parents: 1452
diff changeset
665 info.type = type;
9bf998a57d30 Handle changes in FLASH CFG API
gthomas
parents: 1452
diff changeset
666 info.offset = 0;
9bf998a57d30 Handle changes in FLASH CFG API
gthomas
parents: 1452
diff changeset
667 return CYGACC_CALL_IF_FLASH_CFG_OP2(op, &info);
9bf998a57d30 Handle changes in FLASH CFG API
gthomas
parents: 1452
diff changeset
668 }
9bf998a57d30 Handle changes in FLASH CFG API
gthomas
parents: 1452
diff changeset
669 #define CYGACC_CALL_IF_FLASH_CFG_OP(_o_,_k_,_d_,_t_) \
9bf998a57d30 Handle changes in FLASH CFG API
gthomas
parents: 1452
diff changeset
670 __call_if_flash_cfg_op(_o_,_k_,_d_,_t_)
156
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
671 #define CYGACC_CALL_IF_FLASH_CFG_OP_SET(_x_) \
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
672 hal_virtual_vector_table[CYGNUM_CALL_IF_FLASH_CFG_OP]=(CYG_ADDRWORD)(_x_)
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
673
556
f2b5df359050 Support return to redboot from go
msalter
parents: 447
diff changeset
674 #define CYGACC_CALL_IF_MONITOR_RETURN(_u_) \
f2b5df359050 Support return to redboot from go
msalter
parents: 447
diff changeset
675 CYGACC_CALL_VV1(__call_if_monitor_return_t*, CYGNUM_CALL_IF_MONITOR_RETURN, (_u_))
f2b5df359050 Support return to redboot from go
msalter
parents: 447
diff changeset
676 __call_voidVV1(CYGNUM_CALL_IF_MONITOR_RETURN, __call_if_monitor_return_t, void, int)
f2b5df359050 Support return to redboot from go
msalter
parents: 447
diff changeset
677 #define CYGACC_CALL_IF_MONITOR_RETURN_SET(_x_) \
f2b5df359050 Support return to redboot from go
msalter
parents: 447
diff changeset
678 hal_virtual_vector_table[CYGNUM_CALL_IF_MONITOR_RETURN]=(CYG_ADDRWORD)(_x_)
f2b5df359050 Support return to redboot from go
msalter
parents: 447
diff changeset
679
791
a2dfa8bf3c57 Export RedBoot FIS functions - from Knud Woehler <knud.woehler@microplex.de>
gthomas
parents: 556
diff changeset
680 #define CYGACC_CALL_IF_FLASH_FIS_OP(_o_,_k_,_d_) \
a2dfa8bf3c57 Export RedBoot FIS functions - from Knud Woehler <knud.woehler@microplex.de>
gthomas
parents: 556
diff changeset
681 CYGACC_CALL_VV3(__call_if_flash_fis_op_fn_t*, CYGNUM_CALL_IF_FLASH_FIS_OP, (_o_),(_k_),(_d_))
a2dfa8bf3c57 Export RedBoot FIS functions - from Knud Woehler <knud.woehler@microplex.de>
gthomas
parents: 556
diff changeset
682 __call_VV3(CYGNUM_CALL_IF_FLASH_FIS_OP, __call_if_flash_fis_op_fn_t, cyg_bool, int, char *, void *)
a2dfa8bf3c57 Export RedBoot FIS functions - from Knud Woehler <knud.woehler@microplex.de>
gthomas
parents: 556
diff changeset
683 #define CYGACC_CALL_IF_FLASH_FIS_OP_SET(_x_) \
a2dfa8bf3c57 Export RedBoot FIS functions - from Knud Woehler <knud.woehler@microplex.de>
gthomas
parents: 556
diff changeset
684 hal_virtual_vector_table[CYGNUM_CALL_IF_FLASH_FIS_OP]=(CYG_ADDRWORD)(_x_)
1200
0e41ddaf36fe Flesh out exported FIS functions - from Patrick Doyle
gthomas
parents: 791
diff changeset
685 #define CYGNUM_CALL_IF_FLASH_FIS_GET_FLASH_BASE (0)
0e41ddaf36fe Flesh out exported FIS functions - from Patrick Doyle
gthomas
parents: 791
diff changeset
686 #define CYGNUM_CALL_IF_FLASH_FIS_GET_SIZE (1)
0e41ddaf36fe Flesh out exported FIS functions - from Patrick Doyle
gthomas
parents: 791
diff changeset
687 #define CYGNUM_CALL_IF_FLASH_FIS_GET_MEM_BASE (2)
0e41ddaf36fe Flesh out exported FIS functions - from Patrick Doyle
gthomas
parents: 791
diff changeset
688 #define CYGNUM_CALL_IF_FLASH_FIS_GET_ENTRY_POINT (3)
0e41ddaf36fe Flesh out exported FIS functions - from Patrick Doyle
gthomas
parents: 791
diff changeset
689 #define CYGNUM_CALL_IF_FLASH_FIS_GET_DATA_LENGTH (4)
0e41ddaf36fe Flesh out exported FIS functions - from Patrick Doyle
gthomas
parents: 791
diff changeset
690 #define CYGNUM_CALL_IF_FLASH_FIS_GET_DESC_CKSUM (5)
0e41ddaf36fe Flesh out exported FIS functions - from Patrick Doyle
gthomas
parents: 791
diff changeset
691 #define CYGNUM_CALL_IF_FLASH_FIS_GET_FILE_CKSUM (6)
0e41ddaf36fe Flesh out exported FIS functions - from Patrick Doyle
gthomas
parents: 791
diff changeset
692
791
a2dfa8bf3c57 Export RedBoot FIS functions - from Knud Woehler <knud.woehler@microplex.de>
gthomas
parents: 556
diff changeset
693
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 183
diff changeset
694 // These need to be kept uptodate with the (unadorned) masters
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 183
diff changeset
695 // in RedBoot's flash_config.h:
1452
c15fe26f81c7 Expand fconfig access via virtual vectors.
gthomas
parents: 1200
diff changeset
696 #define CYGNUM_FLASH_CFG_TYPE_CONFIG_EMPTY 0
c15fe26f81c7 Expand fconfig access via virtual vectors.
gthomas
parents: 1200
diff changeset
697 #define CYGNUM_FLASH_CFG_TYPE_CONFIG_BOOL 1
c15fe26f81c7 Expand fconfig access via virtual vectors.
gthomas
parents: 1200
diff changeset
698 #define CYGNUM_FLASH_CFG_TYPE_CONFIG_INT 2
c15fe26f81c7 Expand fconfig access via virtual vectors.
gthomas
parents: 1200
diff changeset
699 #define CYGNUM_FLASH_CFG_TYPE_CONFIG_STRING 3
c15fe26f81c7 Expand fconfig access via virtual vectors.
gthomas
parents: 1200
diff changeset
700 #define CYGNUM_FLASH_CFG_TYPE_CONFIG_SCRIPT 4
c15fe26f81c7 Expand fconfig access via virtual vectors.
gthomas
parents: 1200
diff changeset
701 #define CYGNUM_FLASH_CFG_TYPE_CONFIG_IP 5
c15fe26f81c7 Expand fconfig access via virtual vectors.
gthomas
parents: 1200
diff changeset
702 #define CYGNUM_FLASH_CFG_TYPE_CONFIG_ESA 6
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 183
diff changeset
703
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 138
diff changeset
704 #endif // CYGACC_CALL_IF_DEFINED
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 138
diff changeset
705
103
95f3e12a6327 Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents: 101
diff changeset
706 //--------------------------------------------------------------------------
95f3e12a6327 Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents: 101
diff changeset
707 // Diag wrappers.
95f3e12a6327 Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents: 101
diff changeset
708 externC void hal_if_diag_init(void);
95f3e12a6327 Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents: 101
diff changeset
709 externC void hal_if_diag_write_char(char c);
95f3e12a6327 Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents: 101
diff changeset
710 externC void hal_if_diag_read_char(char *c);
95f3e12a6327 Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents: 101
diff changeset
711
105
5a0cc6c243a9 Merge from eCos master repository on 2000-06-30-08:18:49-BST
jlarmour
parents: 103
diff changeset
712 //--------------------------------------------------------------------------
5a0cc6c243a9 Merge from eCos master repository on 2000-06-30-08:18:49-BST
jlarmour
parents: 103
diff changeset
713 // Ctrl-c support.
5a0cc6c243a9 Merge from eCos master repository on 2000-06-30-08:18:49-BST
jlarmour
parents: 103
diff changeset
714 externC cyg_uint32 hal_ctrlc_isr(CYG_ADDRWORD vector, CYG_ADDRWORD data);
119
77cec8369160 Merge from eCos master repository on 2000-09-01-07:47:03-BST
jlarmour
parents: 115
diff changeset
715 externC cyg_bool hal_ctrlc_check(CYG_ADDRWORD vector, CYG_ADDRWORD data);
105
5a0cc6c243a9 Merge from eCos master repository on 2000-06-30-08:18:49-BST
jlarmour
parents: 103
diff changeset
716
5a0cc6c243a9 Merge from eCos master repository on 2000-06-30-08:18:49-BST
jlarmour
parents: 103
diff changeset
717 #define HAL_CTRLC_ISR hal_ctrlc_isr
119
77cec8369160 Merge from eCos master repository on 2000-09-01-07:47:03-BST
jlarmour
parents: 115
diff changeset
718 #define HAL_CTRLC_CHECK hal_ctrlc_check
105
5a0cc6c243a9 Merge from eCos master repository on 2000-06-30-08:18:49-BST
jlarmour
parents: 103
diff changeset
719
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 138
diff changeset
720 #else
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 138
diff changeset
721
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 138
diff changeset
722 #if defined(CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT) \
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 138
diff changeset
723 || defined(CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT)
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 138
diff changeset
724 // Then other code might invoke this macro
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 138
diff changeset
725 #define HAL_CTRLC_CHECK(a1,a2) (0) // Nothing, no CTRLC here
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 138
diff changeset
726 #endif
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 138
diff changeset
727
103
95f3e12a6327 Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents: 101
diff changeset
728 #endif // CYGSEM_HAL_VIRTUAL_VECTOR_SUPPORT
101
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
729
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
730 //--------------------------------------------------------------------------
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
731 // Functions provided by the HAL interface.
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
732 externC void hal_if_init(void);
156
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
733 #if 0 != CYGINT_HAL_PLF_IF_INIT
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
734 externC void plf_if_init(void);
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
735 #endif
101
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
736
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
737 //-----------------------------------------------------------------------------
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
738 #endif // CYGONCE_HAL_HAL_IF_H
c37d3a9e1b28 Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
diff changeset
739 // End of hal_if.h