diff packages/devs/common/current/src/table.cxx @ 0:3111d98ba7b3 ecos-v1_1-release

Initial commit of eCos version 1.1
author jlarmour
date Tue, 11 May 1999 11:16:07 +0000
parents
children
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/packages/devs/common/current/src/table.cxx
@@ -0,0 +1,633 @@
+//==========================================================================
+//
+//      devs/table.cxx
+//
+//      Virtual Device Table without Virtual Functions
+//
+//==========================================================================
+//####COPYRIGHTBEGIN####
+//
+// -------------------------------------------
+// The contents of this file are subject to the Cygnus eCos Public License
+// Version 1.0 (the "License"); you may not use this file except in
+// compliance with the License.  You may obtain a copy of the License at
+// http://sourceware.cygnus.com/ecos
+// 
+// Software distributed under the License is distributed on an "AS IS"
+// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the
+// License for the specific language governing rights and limitations under
+// the License.
+// 
+// The Original Code is eCos - Embedded Cygnus Operating System, released
+// September 30, 1998.
+// 
+// The Initial Developer of the Original Code is Cygnus.  Portions created
+// by Cygnus are Copyright (C) 1998 Cygnus Solutions.  All Rights Reserved.
+// -------------------------------------------
+//
+//####COPYRIGHTEND####
+//==========================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s):   proven
+// Contributors:  proven
+// Date:        1998-05-20
+// Purpose:     Virtual Device Table
+// Description: Allow packages to use devices without having to know the 
+//              device class.
+//
+//####DESCRIPTIONEND####
+//
+//==========================================================================
+
+#include <pkgconf/devices.h>    // Include all the possible devices
+#include <cyg/infra/cyg_type.h> // Common type definitions and support
+#include <cyg/devs/common/table.h>
+#include <cyg/hal/hal_diag.h>   // HAL diagnostic output
+
+#ifdef CYG_DEVICE_TABLE
+
+// ---------------------------------------------------------------------------
+// CYG_DEVICE_SERIAL_RS232_MN10300_1
+
+#ifdef CYG_DEVICE_SERIAL_RS232_MN10300_1
+
+externC Cyg_ErrNo
+Cyg_Device_Serial_RS232_mn10300_1_read_cancel(CYG_ADDRWORD cookie, Cyg_IORB * iorb)
+{
+    cyg_int32 ret;
+
+    ret = CYG_DEVICE_SERIAL_RS232_MN10300_1_NAME.io_read_cancel(iorb);
+    CYG_ASSERT(ret == 0, "Read cancel failed to the mn10300 serial port 1.");
+    return ENOERR;
+}
+
+externC Cyg_ErrNo
+Cyg_Device_Serial_RS232_mn10300_1_read_blocking(CYG_ADDRWORD cookie, Cyg_IORB * iorb)
+{
+    cyg_int32 ret;
+
+    ret = CYG_DEVICE_SERIAL_RS232_MN10300_1_NAME.io_read_blocking(iorb);
+    CYG_ASSERT(ret == 0, "Read failed to the mn10300 serial port 1.");
+    return ENOERR;
+}
+
+externC Cyg_ErrNo
+Cyg_Device_Serial_RS232_mn10300_1_write_blocking(CYG_ADDRWORD cookie, Cyg_IORB * iorb)
+{
+    cyg_int32 ret;
+
+    ret = CYG_DEVICE_SERIAL_RS232_MN10300_1_NAME.io_write_blocking(iorb);
+    CYG_ASSERT(ret == 0, "Write failed to the mn10300 serial port 1.");
+    return ENOERR;
+}
+
+#ifdef CYG_DEVICE_SERIAL_RS232_MN10300_1_KMODE_INTERRUPT
+externC Cyg_ErrNo
+Cyg_Device_Serial_RS232_mn10300_1_read_asynchronous(CYG_ADDRWORD cookie, Cyg_IORB * iorb)
+{
+    cyg_int32 ret;
+
+    ret = CYG_DEVICE_SERIAL_RS232_MN10300_1_NAME.io_read_asynchronous(iorb);
+    CYG_ASSERT(ret == 0, 
+               "Read asynchronous failed to the mn10300 serial port 1.");
+    return ENOERR;
+}
+
+externC Cyg_ErrNo
+Cyg_Device_Serial_RS232_mn10300_1_write_asynchronous(CYG_ADDRWORD cookie, Cyg_IORB * iorb)
+{
+    cyg_int32 ret;
+
+    ret = CYG_DEVICE_SERIAL_RS232_MN10300_1_NAME.io_write_asynchronous(iorb);
+    CYG_ASSERT(ret == 0, 
+               "Write asynchronous failed to the mn10300 serial port 1.");
+    return ENOERR;
+}
+#endif
+
+// Device specific routines;
+externC Cyg_ErrNo
+Cyg_Device_Serial_RS232_mn10300_1_set_kmode(CYG_ADDRWORD cookie, cyg_uint32 mode)
+{
+    cyg_int32 ret;
+
+    ret = CYG_DEVICE_SERIAL_RS232_MN10300_1_NAME.set_kmode(mode);
+    CYG_ASSERT(ret == 0, "Set kmode failed to the mn10300 serial port 1.");
+    return ENOERR;
+}
+
+externC Cyg_ErrNo
+Cyg_Device_Serial_RS232_mn10300_1_get_baud_rate(CYG_ADDRWORD cookie, 
+  cyg_int32 * old_baud_rate)
+{
+    *old_baud_rate = CYG_DEVICE_SERIAL_RS232_MN10300_1_NAME.get_baud_rate();
+    return ENOERR;
+}
+
+externC Cyg_ErrNo
+Cyg_Device_Serial_RS232_mn10300_1_set_baud_rate(CYG_ADDRWORD cookie, 
+  cyg_int32 baud_rate, cyg_int32 * old_baud_rate)
+{
+    *old_baud_rate = 
+        CYG_DEVICE_SERIAL_RS232_MN10300_1_NAME.set_baud_rate(baud_rate);
+    CYG_ASSERT(*old_baud_rate >= 0, 
+               "Set baud rate failed to the mn10300 serial port 1.");
+    return ENOERR;
+}
+
+externC Cyg_ErrNo
+Cyg_Device_Serial_RS232_mn10300_1_get_line_mode(CYG_ADDRWORD cookie, 
+  cyg_int32 * line_mode)
+{
+    *line_mode = CYG_DEVICE_SERIAL_RS232_MN10300_1_NAME.get_line_mode();
+    return ENOERR;
+}
+
+externC Cyg_ErrNo
+Cyg_Device_Serial_RS232_mn10300_1_set_line_mode(CYG_ADDRWORD cookie, 
+  cyg_int32 line_mode, cyg_int32 * old_line_mode)
+{
+    *old_line_mode = 
+        CYG_DEVICE_SERIAL_RS232_MN10300_1_NAME.set_line_mode(line_mode);
+    CYG_ASSERT(*old_line_mode >= 0, 
+               "Set line mode failed to the mn10300 serial port 1.");
+    return ENOERR;
+}
+
+// externC Cyg_ErrNo
+// Cyg_Device_Serial_RS232_mn10300_1_get_read_mode(CYG_ADDRWORD cookie, 
+//   cyg_int32 * read_mode)
+// {
+//     *line_mode = serial.get_read_mode();
+//     return ENOERR;
+// }
+
+externC Cyg_ErrNo
+Cyg_Device_Serial_RS232_mn10300_1_set_read_mode(CYG_ADDRWORD cookie, 
+  cyg_int32 read_mode, cyg_int32 * old_read_mode)
+{
+    *old_read_mode = 
+        CYG_DEVICE_SERIAL_RS232_MN10300_1_NAME.set_read_mode(read_mode);
+    CYG_ASSERT(*old_read_mode >= 0, 
+               "Set read mode failed to the mn10300 serial port 1.");
+    return ENOERR;
+}
+
+externC Cyg_ErrNo
+Cyg_Device_Serial_RS232_mn10300_1_set_read_data(CYG_ADDRWORD cookie, 
+  cyg_int32 mode, const char * str, cyg_uint32 length)
+{
+    cyg_int32 ret;
+
+    ret = CYG_DEVICE_SERIAL_RS232_MN10300_1_NAME.set_read_data(mode, str, length);
+    CYG_ASSERT(0 == ret, "Set read data failed to the mn10300 serial port 1.");
+    return ENOERR;
+}
+
+#endif // CYG_DEVICE_SERIAL_RS232_MN10300_1
+
+// ---------------------------------------------------------------------------
+// CYG_DEVICE_SERIAL_RS232_MN10300_2
+
+#ifdef CYG_DEVICE_SERIAL_RS232_MN10300_2
+
+externC Cyg_ErrNo
+Cyg_Device_Serial_RS232_mn10300_2_read_cancel(CYG_ADDRWORD cookie, Cyg_IORB * iorb)
+{
+    cyg_int32 ret;
+
+    ret = CYG_DEVICE_SERIAL_RS232_MN10300_2_NAME.io_read_cancel(iorb);
+    CYG_ASSERT(ret == 0, "Read cancel failed to the mn10300 serial port 2.");
+    return ENOERR;
+}
+
+externC Cyg_ErrNo
+Cyg_Device_Serial_RS232_mn10300_2_read_blocking(CYG_ADDRWORD cookie, Cyg_IORB * iorb)
+{
+    cyg_int32 ret;
+
+    ret = CYG_DEVICE_SERIAL_RS232_MN10300_2_NAME.io_read_blocking(iorb);
+    CYG_ASSERT(ret == 0, "Read failed to the mn10300 serial port 2.");
+    return ENOERR;
+}
+
+externC Cyg_ErrNo
+Cyg_Device_Serial_RS232_mn10300_2_write_blocking(CYG_ADDRWORD cookie, Cyg_IORB * iorb)
+{
+    cyg_int32 ret;
+
+    ret = CYG_DEVICE_SERIAL_RS232_MN10300_2_NAME.io_write_blocking(iorb);
+    CYG_ASSERT(ret == 0, "Write failed to the mn10300 serial port 2.");
+    return ENOERR;
+}
+
+#ifdef CYG_DEVICE_SERIAL_RS232_MN10300_2_KMODE_INTERRUPT
+externC Cyg_ErrNo
+Cyg_Device_Serial_RS232_mn10300_2_read_asynchronous(CYG_ADDRWORD cookie, Cyg_IORB * iorb)
+{
+    cyg_int32 ret;
+
+    ret = CYG_DEVICE_SERIAL_RS232_MN10300_2_NAME.io_read_asynchronous(iorb);
+    CYG_ASSERT(ret == 0, 
+               "Read asynchronous failed to the mn10300 serial port 2.");
+    return ENOERR;
+}
+
+externC Cyg_ErrNo
+Cyg_Device_Serial_RS232_mn10300_2_write_asynchronous(CYG_ADDRWORD cookie, Cyg_IORB * iorb)
+{
+    cyg_int32 ret;
+
+    ret = CYG_DEVICE_SERIAL_RS232_MN10300_2_NAME.io_write_asynchronous(iorb);
+    CYG_ASSERT(ret == 0, 
+               "Write asynchronous failed to the mn10300 serial port 2.");
+    return ENOERR;
+}
+#endif
+
+// Device specific routines;
+externC Cyg_ErrNo
+Cyg_Device_Serial_RS232_mn10300_2_set_kmode(CYG_ADDRWORD cookie, cyg_uint32 mode)
+{
+    cyg_int32 ret;
+
+    ret = CYG_DEVICE_SERIAL_RS232_MN10300_2_NAME.set_kmode(mode);
+    CYG_ASSERT(ret == 0, "Set kmode failed to the mn10300 serial port 2.");
+    return ENOERR;
+}
+
+externC Cyg_ErrNo
+Cyg_Device_Serial_RS232_mn10300_2_get_baud_rate(CYG_ADDRWORD cookie, 
+  cyg_int32 * old_baud_rate)
+{
+    *old_baud_rate = CYG_DEVICE_SERIAL_RS232_MN10300_2_NAME.get_baud_rate();
+    return ENOERR;
+}
+
+externC Cyg_ErrNo
+Cyg_Device_Serial_RS232_mn10300_2_set_baud_rate(CYG_ADDRWORD cookie, 
+  cyg_int32 baud_rate, cyg_int32 * old_baud_rate)
+{
+    *old_baud_rate = 
+        CYG_DEVICE_SERIAL_RS232_MN10300_2_NAME.set_baud_rate(baud_rate);
+    CYG_ASSERT(*old_baud_rate >= 0, 
+               "Set baud rate failed to the mn10300 serial port 2.");
+    return ENOERR;
+}
+
+externC Cyg_ErrNo
+Cyg_Device_Serial_RS232_mn10300_2_get_line_mode(CYG_ADDRWORD cookie, 
+  cyg_int32 * line_mode)
+{
+    *line_mode = CYG_DEVICE_SERIAL_RS232_MN10300_2_NAME.get_line_mode();
+    return ENOERR;
+}
+
+externC Cyg_ErrNo
+Cyg_Device_Serial_RS232_mn10300_2_set_line_mode(CYG_ADDRWORD cookie, 
+  cyg_int32 line_mode, cyg_int32 * old_line_mode)
+{
+    *old_line_mode = 
+        CYG_DEVICE_SERIAL_RS232_MN10300_2_NAME.set_line_mode(line_mode);
+    CYG_ASSERT(*old_line_mode >= 0, 
+               "Set line mode failed to the mn10300 serial port 2.");
+    return ENOERR;
+}
+
+// externC Cyg_ErrNo
+// Cyg_Device_Serial_RS232_mn10300_2_get_read_mode(CYG_ADDRWORD cookie, 
+//   cyg_int32 * read_mode)
+// {
+//     *line_mode = CYG_DEVICE_SERIAL_RS232_MN10300_2_NAME.get_read_mode();
+//     return ENOERR;
+// }
+
+externC Cyg_ErrNo
+Cyg_Device_Serial_RS232_mn10300_2_set_read_mode(CYG_ADDRWORD cookie, 
+  cyg_int32 read_mode, cyg_int32 * old_read_mode)
+{
+    *old_read_mode = 
+        CYG_DEVICE_SERIAL_RS232_MN10300_2_NAME.set_read_mode(read_mode);
+    CYG_ASSERT(*old_read_mode >= 0, 
+               "Set read mode failed to the mn10300 serial port 2.");
+    return ENOERR;
+}
+
+externC Cyg_ErrNo
+Cyg_Device_Serial_RS232_mn10300_2_set_read_data(CYG_ADDRWORD cookie, 
+  cyg_int32 mode, const char * str, cyg_uint32 length)
+{
+    cyg_int32 ret;
+
+    ret = CYG_DEVICE_SERIAL_RS232_MN10300_2_NAME.set_read_data(mode, str, length);
+    CYG_ASSERT(0 == ret, "Set read data failed to the mn10300 serial port 2.");
+    return ENOERR;
+}
+
+#endif // CYG_DEVICE_SERIAL_RS232_MN10300_2
+
+// ---------------------------------------------------------------------------
+// CYG_DEVICE_SERIAL_RS232_TX39
+
+#ifdef CYG_DEVICE_SERIAL_RS232_TX39
+
+externC Cyg_ErrNo
+Cyg_Device_Serial_RS232_tx39_read_blocking(CYG_ADDRWORD cookie, Cyg_IORB * iorb)
+{
+    cyg_int32 ret;
+
+    ret = CYG_DEVICE_SERIAL_RS232_TX39_NAME.io_read_blocking(iorb);
+    CYG_ASSERT(ret == 0, "Read failed to the TX39 serial port 0.");
+    return ENOERR;
+}
+
+externC Cyg_ErrNo
+Cyg_Device_Serial_RS232_tx39_write_blocking(CYG_ADDRWORD cookie, Cyg_IORB * iorb)
+{
+    cyg_int32 ret;
+
+    ret = CYG_DEVICE_SERIAL_RS232_TX39_NAME.io_write_blocking(iorb);
+    CYG_ASSERT(ret == 0, "Write failed to the TX39 serial port 0.");
+    return ENOERR;
+}
+
+#ifdef CYG_DEVICE_SERIAL_RS232_TX39_KMODE_INTERRUPT
+externC Cyg_ErrNo
+Cyg_Device_Serial_RS232_tx39_read_asynchronous(CYG_ADDRWORD cookie, Cyg_IORB * iorb)
+{
+    cyg_int32 ret;
+
+    ret = CYG_DEVICE_SERIAL_RS232_TX39_NAME.io_read_asynchronous(iorb);
+    CYG_ASSERT(ret == 0, 
+               "Read asynchronous failed to the TX39 serial port 0.");
+    return ENOERR;
+}
+
+externC Cyg_ErrNo
+Cyg_Device_Serial_RS232_tx39_write_asynchronous(CYG_ADDRWORD cookie, Cyg_IORB * iorb)
+{
+    cyg_int32 ret;
+
+    ret = CYG_DEVICE_SERIAL_RS232_TX39_NAME.io_write_asynchronous(iorb);
+    CYG_ASSERT(ret == 0, 
+               "Write asynchronous failed to the TX39 serial port 0.");
+    return ENOERR;
+}
+#endif
+
+// Device specific routines;
+externC Cyg_ErrNo
+Cyg_Device_Serial_RS232_tx39_set_kmode(CYG_ADDRWORD cookie, cyg_uint32 mode)
+{
+    cyg_int32 ret;
+
+    ret = CYG_DEVICE_SERIAL_RS232_TX39_NAME.set_kmode(mode);
+    CYG_ASSERT(ret == 0, "Set kmode failed to the TX39 serial port 0.");
+    return ENOERR;
+}
+
+externC Cyg_ErrNo
+Cyg_Device_Serial_RS232_tx39_get_baud_rate(CYG_ADDRWORD cookie, 
+  cyg_int32 * old_baud_rate)
+{
+    *old_baud_rate = CYG_DEVICE_SERIAL_RS232_TX39_NAME.get_baud_rate();
+    return ENOERR;
+}
+
+externC Cyg_ErrNo
+Cyg_Device_Serial_RS232_tx39_set_baud_rate(CYG_ADDRWORD cookie, 
+  cyg_int32 baud_rate, cyg_int32 * old_baud_rate)
+{
+    *old_baud_rate = 
+        CYG_DEVICE_SERIAL_RS232_TX39_NAME.set_baud_rate(baud_rate);
+    CYG_ASSERT(*old_baud_rate >= 0, 
+               "Set baud rate failed to the TX39 serial port 0.");
+    return ENOERR;
+}
+
+externC Cyg_ErrNo
+Cyg_Device_Serial_RS232_tx39_get_line_mode(CYG_ADDRWORD cookie, 
+  cyg_int32 * line_mode)
+{
+    *line_mode = CYG_DEVICE_SERIAL_RS232_TX39_NAME.get_line_mode();
+    return ENOERR;
+}
+
+externC Cyg_ErrNo
+Cyg_Device_Serial_RS232_tx39_set_line_mode(CYG_ADDRWORD cookie, 
+  cyg_int32 line_mode, cyg_int32 * old_line_mode)
+{
+    *old_line_mode = 
+        CYG_DEVICE_SERIAL_RS232_TX39_NAME.set_line_mode(line_mode);
+    CYG_ASSERT(*old_line_mode >= 0, 
+               "Set line mode failed to the TX39 serial port 0.");
+    return ENOERR;
+}
+
+#endif /* CYG_DEVICE_SERIAL_RS232_TX39 */
+
+// ---------------------------------------------------------------------------
+// HAL_DIAG
+
+#ifdef HAL_DIAG_INIT
+externC Cyg_ErrNo
+Cyg_Device_Pseudo_Hal_Diag_open( CYG_ADDRWORD cookie, Cyg_DeviceOpenMode )
+{
+    HAL_DIAG_INIT();
+    return ENOERR;
+} 
+#endif
+
+#ifdef HAL_DIAG_READ_CHAR
+externC Cyg_ErrNo
+Cyg_Device_Pseudo_Hal_Diag_read_blocking( CYG_ADDRWORD cookie, Cyg_IORB *iorb )
+{
+    cyg_ucount32 i;
+    cyg_bool exit_loop = false;
+
+    for (i=0; (i < iorb->buffer_length) && !exit_loop; i++)
+    {
+        HAL_DIAG_READ_CHAR(* ((char*)iorb->buffer + i) );
+        
+        // exit loop on certain characters, newline, EOF, etc.
+        switch (*((char*)iorb->buffer + i))
+        {
+        case 4:
+        case 10:
+        case 13:
+        case 26:
+            exit_loop = true;
+            break;
+        default:
+            break;
+        } // switch
+    } // for
+
+    iorb->xferred_length = i;
+    return ENOERR;
+}
+#endif
+
+#ifdef HAL_DIAG_WRITE_CHAR
+externC Cyg_ErrNo
+Cyg_Device_Pseudo_Hal_Diag_write_blocking( CYG_ADDRWORD cookie, Cyg_IORB *iorb )
+{
+    cyg_ucount32 i;
+
+    for (i=0; i < iorb->buffer_length; i++)
+    {
+        HAL_DIAG_WRITE_CHAR(*((char *)iorb->buffer + i));
+    } // for
+
+    iorb->xferred_length = iorb->buffer_length;
+    return ENOERR;
+}
+#endif
+
+// ---------------------------------------------------------------------------
+// Device specific ioctl table
+//
+#ifdef CYG_DEVICE_SERIAL_RS232_MN10300_1
+struct Cyg_Device_Serial_RS232_Table_t Cyg_Device_Serial_RS232_mn10300_1_Table =
+{
+    &Cyg_Device_Serial_RS232_mn10300_1_set_kmode,
+    &Cyg_Device_Serial_RS232_mn10300_1_get_baud_rate,
+    &Cyg_Device_Serial_RS232_mn10300_1_set_baud_rate,
+    &Cyg_Device_Serial_RS232_mn10300_1_get_line_mode,
+    &Cyg_Device_Serial_RS232_mn10300_1_set_line_mode,
+    NULL,
+    &Cyg_Device_Serial_RS232_mn10300_1_set_read_mode,
+    &Cyg_Device_Serial_RS232_mn10300_1_set_read_data
+};
+#endif
+
+#ifdef CYG_DEVICE_SERIAL_RS232_MN10300_2
+struct Cyg_Device_Serial_RS232_Table_t Cyg_Device_Serial_RS232_mn10300_2_Table =
+{
+    &Cyg_Device_Serial_RS232_mn10300_2_set_kmode,
+    &Cyg_Device_Serial_RS232_mn10300_2_get_baud_rate,
+    &Cyg_Device_Serial_RS232_mn10300_2_set_baud_rate,
+    &Cyg_Device_Serial_RS232_mn10300_2_get_line_mode,
+    &Cyg_Device_Serial_RS232_mn10300_2_set_line_mode,
+    NULL,
+    &Cyg_Device_Serial_RS232_mn10300_2_set_read_mode,
+    &Cyg_Device_Serial_RS232_mn10300_2_set_read_data
+};
+#endif
+
+#ifdef CYG_DEVICE_SERIAL_RS232_TX39
+struct Cyg_Device_Serial_RS232_Table_t Cyg_Device_Serial_RS232_tx39_Table =
+{
+    &Cyg_Device_Serial_RS232_tx39_set_kmode,
+    &Cyg_Device_Serial_RS232_tx39_get_baud_rate,
+    &Cyg_Device_Serial_RS232_tx39_set_baud_rate,
+    &Cyg_Device_Serial_RS232_tx39_get_line_mode,
+    &Cyg_Device_Serial_RS232_tx39_set_line_mode,
+    NULL, NULL, NULL
+};
+#endif
+// ---------------------------------------------------------------------------
+// Device table
+//
+struct Cyg_Device_Table_t Cyg_Device_Table[] = {
+
+#ifdef CYG_DEVICE_SERIAL_RS232_MN10300_1
+{	"serial1", (CYG_ADDRWORD) 0,
+        NULL,       // no open
+	&Cyg_Device_Serial_RS232_mn10300_1_read_cancel,
+	NULL,
+	&Cyg_Device_Serial_RS232_mn10300_1_read_blocking,
+	&Cyg_Device_Serial_RS232_mn10300_1_write_blocking,
+#ifdef CYG_DEVICE_SERIAL_RS232_MN10300_1_KMODE_INTERRUPT
+	&Cyg_Device_Serial_RS232_mn10300_1_read_asynchronous,
+	&Cyg_Device_Serial_RS232_mn10300_1_write_asynchronous,
+#else
+        NULL, NULL,
+#endif
+        NULL,       // no close
+	(CYG_ADDRWORD)&Cyg_Device_Serial_RS232_mn10300_1_Table 
+},
+#endif
+
+#ifdef CYG_DEVICE_SERIAL_RS232_MN10300_2
+{	"serial2", (CYG_ADDRWORD) 0,	
+        NULL,       // no open
+	&Cyg_Device_Serial_RS232_mn10300_2_read_cancel,
+	NULL,
+	&Cyg_Device_Serial_RS232_mn10300_2_read_blocking,
+	&Cyg_Device_Serial_RS232_mn10300_2_write_blocking,
+#ifdef CYG_DEVICE_SERIAL_RS232_MN10300_2_KMODE_INTERRUPT
+	&Cyg_Device_Serial_RS232_mn10300_2_read_asynchronous,
+        &Cyg_Device_Serial_RS232_mn10300_2_write_asynchronous,
+#else
+        NULL, NULL,
+#endif
+        NULL,       // no close
+	(CYG_ADDRWORD)&Cyg_Device_Serial_RS232_mn10300_2_Table
+},    
+#endif
+
+#ifdef CYG_DEVICE_SERIAL_RS232_TX39
+{	"serial0", (CYG_ADDRWORD) 0,	
+        NULL,       // no open
+	NULL,
+	NULL,
+	&Cyg_Device_Serial_RS232_tx39_read_blocking,
+	&Cyg_Device_Serial_RS232_tx39_write_blocking,
+#ifdef CYG_DEVICE_SERIAL_RS232_TX39_KMODE_INTERRUPT
+	&Cyg_Device_Serial_RS232_tx39_read_asynchronous,
+	&Cyg_Device_Serial_RS232_tx39_write_asynchronous,
+#else
+        NULL,NULL,
+#endif
+        NULL,       // no close
+	(CYG_ADDRWORD)&Cyg_Device_Serial_RS232_tx39_Table 
+},
+#endif
+
+{       "haldiag", (CYG_ADDRWORD) 0,
+#ifdef HAL_DIAG_INIT
+        &Cyg_Device_Pseudo_Hal_Diag_open,
+#else
+        NULL,
+#endif
+
+	NULL,
+	NULL,
+
+#ifdef HAL_DIAG_READ_CHAR
+        &Cyg_Device_Pseudo_Hal_Diag_read_blocking,
+#else
+        NULL,
+#endif
+
+#ifdef HAL_DIAG_WRITE_CHAR
+        &Cyg_Device_Pseudo_Hal_Diag_write_blocking,
+#else
+        NULL,
+#endif
+        NULL }, // no close
+
+{	NULL, (CYG_ADDRWORD) 0, NULL, NULL, NULL, NULL }
+};
+
+#ifdef CYG_DEVICE_SERIAL_RS232_MN10300_1
+CYG_ADDRWORD stdeval1_serial1 = (CYG_ADDRWORD)&Cyg_Device_Table[0];
+#ifdef CYG_DEVICE_SERIAL_RS232_MN10300_2
+CYG_ADDRWORD stdeval1_serial2 = (CYG_ADDRWORD)&Cyg_Device_Table[1];
+#endif
+#else
+#ifdef CYG_DEVICE_SERIAL_RS232_MN10300_2
+CYG_ADDRWORD stdeval1_serial2 = (CYG_ADDRWORD)&Cyg_Device_Table[0];
+#endif
+#endif
+
+#ifdef CYG_DEVICE_SERIAL_RS232_TX39
+CYG_ADDRWORD jmr3904_serial = (CYG_ADDRWORD)&Cyg_Device_Table[0];
+#endif
+
+#endif
+
+/*---------------------------------------------------------------------------*/
+/* End of devs/table.cxx */