changeset 96:b15c60e34c84

Merge from eCos master repository on 2000-06-06-05:24:42-BST
author jlarmour
date Tue, 06 Jun 2000 05:12:17 +0000
parents e7ef075fbd4f
children ced4577552cd
files host/libcdl/ChangeLog host/libcdl/config.cxx host/tools/ecostest/common/eCosTestDownloadFilter.cpp host/tools/ecostest/common/eCosTestMonitorFilter.cpp host/tools/ecostest/common/eCosTestSerialFilter.cpp packages/ChangeLog packages/NEWS packages/devs/serial/v85x/v850/current/ChangeLog packages/devs/serial/v85x/v850/current/cdl/ser_v85x_v850.cdl packages/devs/serial/v85x/v850/current/src/v85x_v850_serial.c packages/devs/serial/v85x/v850/current/src/v85x_v850_serial.h packages/ecos.db packages/ecosadmin.tcl packages/hal/arm/aeb/current/ChangeLog packages/hal/arm/aeb/current/src/flash_cksum.tcl packages/hal/arm/arch/current/ChangeLog packages/hal/arm/arch/current/include/hal_mmu.h packages/hal/arm/arch/current/src/arm.ld packages/hal/arm/arch/current/src/vectors.S packages/hal/common/current/ChangeLog packages/hal/common/current/cdl/hal.cdl packages/hal/sh/cq7708/current/ChangeLog packages/hal/sh/cq7708/current/cdl/hal_sh_sh7708_cq7708.cdl packages/hal/v85x/arch/current/ChangeLog packages/hal/v85x/arch/current/cdl/hal_v85x.cdl packages/hal/v85x/arch/current/include/basetype.h packages/hal/v85x/arch/current/include/hal_arch.h packages/hal/v85x/arch/current/include/hal_cache.h packages/hal/v85x/arch/current/include/hal_intr.h packages/hal/v85x/arch/current/include/hal_io.h packages/hal/v85x/arch/current/include/nec-stub.h packages/hal/v85x/arch/current/src/hal_misc.c packages/hal/v85x/arch/current/src/hal_mk_defs.c packages/hal/v85x/arch/current/src/v85x.ld packages/hal/v85x/arch/current/src/vectors.S packages/hal/v85x/ceb_v850/current/ChangeLog packages/hal/v85x/ceb_v850/current/cdl/hal_v85x_ceb_v850.cdl packages/hal/v85x/ceb_v850/current/images/gdb_module.bin packages/hal/v85x/ceb_v850/current/images/gdb_module.img packages/hal/v85x/ceb_v850/current/include/hal_diag.h packages/hal/v85x/ceb_v850/current/include/hal_platform_setup.h packages/hal/v85x/ceb_v850/current/include/pkgconf/mlt_v85x_v850_ceb_ram.h packages/hal/v85x/ceb_v850/current/include/pkgconf/mlt_v85x_v850_ceb_ram.ldi packages/hal/v85x/ceb_v850/current/include/pkgconf/mlt_v85x_v850_ceb_ram.mlt packages/hal/v85x/ceb_v850/current/include/pkgconf/mlt_v85x_v850_ceb_rom.h packages/hal/v85x/ceb_v850/current/include/pkgconf/mlt_v85x_v850_ceb_rom.ldi packages/hal/v85x/ceb_v850/current/include/pkgconf/mlt_v85x_v850_ceb_rom.mlt packages/hal/v85x/ceb_v850/current/include/plf_cache.h packages/hal/v85x/ceb_v850/current/include/plf_intr.h packages/hal/v85x/ceb_v850/current/include/plf_io.h packages/hal/v85x/ceb_v850/current/include/plf_sections.h packages/hal/v85x/ceb_v850/current/include/plf_stub.h packages/hal/v85x/ceb_v850/current/include/v850_regs.h packages/hal/v85x/ceb_v850/current/src/hal_diag.c packages/hal/v85x/ceb_v850/current/src/plf_misc.c packages/hal/v85x/ceb_v850/current/src/plf_stub.c packages/hal/v85x/v850/current/ChangeLog packages/hal/v85x/v850/current/cdl/hal_v85x_v850.cdl packages/hal/v85x/v850/current/include/v850_common.h packages/hal/v85x/v850/current/include/var_arch.h packages/hal/v85x/v850/current/include/var_cache.h packages/hal/v85x/v850/current/include/var_intr.h packages/hal/v85x/v850/current/src/context.S packages/hal/v85x/v850/current/src/nec.ld packages/hal/v85x/v850/current/src/v850_misc.c packages/hal/v85x/v850/current/src/v850_stub.c packages/hal/v85x/v850/current/src/v85x_v850.ld packages/io/serial/current/ChangeLog packages/io/serial/current/tests/ser_test_protocol.inl packages/kernel/current/ChangeLog packages/kernel/current/tests/dhrystone.c
diffstat 71 files changed, 6396 insertions(+), 18 deletions(-) [+]
line wrap: on
line diff
--- a/host/libcdl/ChangeLog
+++ b/host/libcdl/ChangeLog
@@ -1,3 +1,10 @@
+2000-06-02  Bart Veer  <bartv@redhat.com>
+
+	* config.cxx (load_package):
+	Diagnostic function pointers were not being installed at the
+	package level, so error messages due to invalid CDL were
+	disappearing.
+
 2000-05-11  Bart Veer  <bartv@redhat.com>
 
 	* value.cxx (implements_update_handler):
--- a/host/libcdl/config.cxx
+++ b/host/libcdl/config.cxx
@@ -812,7 +812,8 @@ CdlConfigurationBody::load_package(CdlTr
         CdlInterpreter interp = package->get_interpreter();
         CYG_ASSERT_CLASSC(interp);
 
-        interp->add_command("unknown", &CdlParse::unknown_command);
+        interp->add_command("unknown",  &CdlParse::unknown_command);
+        CdlInterpreterBody::DiagSupport diag_support(interp, error_fn, warn_fn);
         
         // Next figure out the script name, and make sure that it exists.
         std::string actual_script = package->find_absolute_file(script, "cdl");
--- a/host/tools/ecostest/common/eCosTestDownloadFilter.cpp
+++ b/host/tools/ecostest/common/eCosTestDownloadFilter.cpp
@@ -53,7 +53,7 @@
 #include "eCosStd.h"
 #include "eCosTrace.h"
 
-#define DL_FILTER_VER "$Id: eCosTestDownloadFilter.cpp,v 1.10 2000/06/02 17:35:00 jlarmour Exp $"
+#define DL_FILTER_VER "$Id: eCosTestDownloadFilter.cpp,v 1.11 2000/06/06 05:12:17 jlarmour Exp $"
 #include "eCosTestDownloadFilter.h"
 
 CeCosTestDownloadFilter::CeCosTestDownloadFilter():
--- a/host/tools/ecostest/common/eCosTestMonitorFilter.cpp
+++ b/host/tools/ecostest/common/eCosTestMonitorFilter.cpp
@@ -45,7 +45,7 @@
 
 #include "eCosStd.h"
 
-#define SER_FILTER_VER "$Id: eCosTestMonitorFilter.cpp,v 1.9 2000/06/02 17:35:00 jlarmour Exp $"
+#define SER_FILTER_VER "$Id: eCosTestMonitorFilter.cpp,v 1.10 2000/06/06 05:12:17 jlarmour Exp $"
 #include "eCosTestMonitorFilter.h"
 
 CeCosTestMonitorFilter::CeCosTestMonitorFilter():
--- a/host/tools/ecostest/common/eCosTestSerialFilter.cpp
+++ b/host/tools/ecostest/common/eCosTestSerialFilter.cpp
@@ -51,7 +51,7 @@
 
 #include "eCosStd.h"
 
-#define SER_FILTER_VER "$Id: eCosTestSerialFilter.cpp,v 1.10 2000/06/02 17:35:00 jlarmour Exp $"
+#define SER_FILTER_VER "$Id: eCosTestSerialFilter.cpp,v 1.11 2000/06/06 05:12:17 jlarmour Exp $"
 #include "eCosTestSerialFilter.h"
 #include "eCosThreadUtils.h"
 
--- a/packages/ChangeLog
+++ b/packages/ChangeLog
@@ -1,3 +1,9 @@
+2000-06-05  John Dallaway  <jld@redhat.com>
+
+	* ecos.db:
+
+	Tidy CqREEK-related display strings.
+
 2000-05-31  Jesper Skov  <jskov@redhat.com>
 
 	* ecos.db: Added CqREEK platform HAL (contributed by Haruki
@@ -14,6 +20,18 @@ 2000-05-26  Jesper Skov  <jskov@redhat.c
 
 	* ecos.db: Added dallas 1742 wallclock driver package.
 
+2000-05-25  John Dallaway  <jld@redhat.com>
+
+	* ecos.db: Tidy V850-related display strings.
+
+2000-04-26  Jesper Skov  <jskov@redhat.com>
+
+	* ecos.db: ceb_v850 - include serial driver.
+
+2000-04-20  Gary Thomas <gthomas@redhat.com>
+
+	* ecos.db: Rename hal/nec to hal/v85x for NEC/V85x architecture.
+
 2000-04-11  Hugo Tyson  <hmt@cygnus.co.uk>
 
 	* ecos.db: CYGPKG_IO_SERIAL should not be "hardware" now that it
@@ -86,6 +104,10 @@ 2000-03-22  John Dallaway  <jld@cygnus.c
 	Don't invoke 'cygpath' on DOS-style paths to workaround erratic
 	behaviour when invoked from the GUI admin tool.
 
+2000-03-20  Gary Thomas  <gthomas@redhat.com>
+
+	* ecos.db: Add support for NEC/V850 HAL and CEB platform.
+
 2000-03-16  Jesper Skov  <jskov@redhat.com>
 
 	* ecos.db: Make edk7708 target select the appropriate CPU.
--- a/packages/NEWS
+++ b/packages/NEWS
@@ -1,3 +1,7 @@
+* NEC V85x architecture support added
+* NEC Cosmo CEB-V850/SA1 evaluation board platform HAL added
+* Serial device drivers added for systems based on NEC V850 SA1 (70F3017)
+  or SB1 (70F3033) processors
 * Hitachi SH3 CqREEK (cq7708) platform HAL support added
   Contributed by Haruki Kashiwaya [Still untested, serial not imported]
 * Watchdog reworked much like wallclock.
new file mode 100644
--- /dev/null
+++ b/packages/devs/serial/v85x/v850/current/ChangeLog
@@ -0,0 +1,31 @@
+2000-05-28  Gary Thomas  <gthomas@redhat.com>
+
+	* src/v85x_v850_serial.h: 
+	* src/v85x_v850_serial.c: 
+	* cdl/ser_v85x_v850.cdl: New file(s).
+
+//===========================================================================
+//####COPYRIGHTBEGIN####
+//                                                                          
+// -------------------------------------------                              
+// The contents of this file are subject to the Red Hat eCos Public License 
+// Version 1.1 (the "License"); you may not use this file except in         
+// compliance with the License.  You may obtain a copy of the License at    
+// http://www.redhat.com/                                                   
+//                                                                          
+// 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 Configurable Operating System,      
+// released September 30, 1998.                                             
+//                                                                          
+// The Initial Developer of the Original Code is Red Hat.                   
+// Portions created by Red Hat are                                          
+// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
+// All Rights Reserved.                                                     
+// -------------------------------------------                              
+//                                                                          
+//####COPYRIGHTEND####
+//===========================================================================
new file mode 100644
--- /dev/null
+++ b/packages/devs/serial/v85x/v850/current/cdl/ser_v85x_v850.cdl
@@ -0,0 +1,106 @@
+# ====================================================================
+#
+#      ser_v85x_v850.cdl
+#
+#      eCos serial NEC/V850 configuration data
+#
+# ====================================================================
+#####COPYRIGHTBEGIN####
+#                                                                          
+# -------------------------------------------                              
+# The contents of this file are subject to the Red Hat eCos Public License 
+# Version 1.1 (the "License"); you may not use this file except in         
+# compliance with the License.  You may obtain a copy of the License at    
+# http://www.redhat.com/                                                   
+#                                                                          
+# 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 Configurable Operating System,      
+# released September 30, 1998.                                             
+#                                                                          
+# The Initial Developer of the Original Code is Red Hat.                   
+# Portions created by Red Hat are                                          
+# Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
+# All Rights Reserved.                                                     
+# -------------------------------------------                              
+#                                                                          
+#####COPYRIGHTEND####
+# ====================================================================
+######DESCRIPTIONBEGIN####
+#
+# Author(s):      gthomas
+# Original data:  gthomas
+# Contributors:
+# Date:           2000-05-26
+#
+#####DESCRIPTIONEND####
+#
+# ====================================================================
+
+cdl_package CYGPKG_IO_SERIAL_V85X_V850 {
+    display       "NEC V850 serial device drivers"
+
+    parent        CYGPKG_IO_SERIAL_DEVICES
+    active_if     CYGPKG_IO_SERIAL
+    active_if     CYGPKG_HAL_V85X_V850
+
+    requires      CYGPKG_ERROR
+    include_dir   cyg/io
+#    include_files ; # none _exported_ whatsoever
+    description   "
+           This option enables the serial device drivers for the
+           NEC CEB/V850SA1."
+    doc           redirect/ecos-device-drivers.html
+
+    compile       -library=libextras.a   v85x_v850_serial.c
+
+    define_proc {
+        puts $::cdl_system_header "/***** serial driver proc output start *****/"
+        puts $::cdl_system_header "#define CYGDAT_IO_SERIAL_DEVICE_HEADER <pkgconf/io_serial_v85x_v850.h>"
+        puts $::cdl_system_header "/*****  serial driver proc output end  *****/"
+    }
+
+    cdl_component CYGPKG_IO_SERIAL_V85X_V850_SERIAL0 {
+        display       "NEC V850 serial port 0 driver"
+        flavor        bool
+        default_value 0
+        description   "
+            This option includes the serial device driver for the NEC V850
+            SA1 (70F3017) and SB1 (70F3033) devices, port 0."
+    
+        cdl_option CYGDAT_IO_SERIAL_V85X_V850_SERIAL0_NAME {
+            display       "Device name for NEC V850 serial port 0 driver"
+            flavor        data
+            default_value {"\"/dev/ser0\""}
+            description   "
+                This option specifies the name of the serial device for the 
+                NEC V850, port 0."
+        }
+    
+        cdl_option CYGNUM_IO_SERIAL_V85X_V850_SERIAL0_BAUD {
+            display       "Baud rate for the NEC V850 serial port 0 driver"
+            flavor        data
+            legal_values  { 50 75 110 "134_5" 150 200 300 600 1200 1800 2400 3600
+                          4800 7200 9600 14400 19200 38400 57600 115200
+            }
+            default_value 38400
+            description   "
+                This option specifies the default baud rate (speed) for the 
+                NEC V850, port 0."
+        }
+    
+        cdl_option CYGNUM_IO_SERIAL_V85X_V850_SERIAL0_BUFSIZE {
+            display       "Buffer size for the NEC V850 serial port 0 driver"
+            flavor        data
+            legal_values  0 to 8192
+            default_value 128
+            description   "
+                This option specifies the size of the internal buffers used 
+                for the NEC V850, port 0."
+        }
+    }
+
+}
new file mode 100644
--- /dev/null
+++ b/packages/devs/serial/v85x/v850/current/src/v85x_v850_serial.c
@@ -0,0 +1,313 @@
+//==========================================================================
+//
+//      io/serial/v85x/v85x_v850_serial.c
+//
+//      NEC V850 Serial I/O Interface Module (interrupt driven)
+//
+//==========================================================================
+//####COPYRIGHTBEGIN####
+//                                                                          
+// -------------------------------------------                              
+// The contents of this file are subject to the Red Hat eCos Public License 
+// Version 1.1 (the "License"); you may not use this file except in         
+// compliance with the License.  You may obtain a copy of the License at    
+// http://www.redhat.com/                                                   
+//                                                                          
+// 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 Configurable Operating System,      
+// released September 30, 1998.                                             
+//                                                                          
+// The Initial Developer of the Original Code is Red Hat.                   
+// Portions created by Red Hat are                                          
+// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
+// All Rights Reserved.                                                     
+// -------------------------------------------                              
+//                                                                          
+//####COPYRIGHTEND####
+//==========================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s):    gthomas
+// Contributors: gthomas
+// Date:         2000-03-31
+// Purpose:      V850 Serial I/O module (interrupt driven version)
+// Description: 
+//
+//####DESCRIPTIONEND####
+//
+//==========================================================================
+
+#include <pkgconf/system.h>
+#include <pkgconf/io_serial.h>
+#include <pkgconf/io.h>
+#include <pkgconf/kernel.h>
+
+#include <cyg/io/io.h>
+#include <cyg/hal/hal_intr.h>
+#include <cyg/io/devtab.h>
+#include <cyg/io/serial.h>
+#include <cyg/infra/diag.h>
+
+#ifdef CYGVAR_KERNEL_COUNTERS_CLOCK
+#include <cyg/kernel/kapi.h>
+#endif
+
+#ifdef CYGPKG_IO_SERIAL_V85X_V850
+
+#include "v85x_v850_serial.h"
+
+typedef struct v850_serial_info {
+    CYG_ADDRWORD   base;
+    CYG_WORD       int_num;
+    cyg_interrupt  serial_interrupt[3];
+    cyg_handle_t   serial_interrupt_handle[3];
+    cyg_bool       tx_busy;
+#ifdef CYGVAR_KERNEL_COUNTERS_CLOCK
+    cyg_alarm      tx_timeout;
+    cyg_handle_t   tx_timeout_handle;
+#endif
+} v850_serial_info;
+
+static bool v850_serial_init(struct cyg_devtab_entry *tab);
+static bool v850_serial_putc(serial_channel *chan, unsigned char c);
+static Cyg_ErrNo v850_serial_lookup(struct cyg_devtab_entry **tab, 
+                                    struct cyg_devtab_entry *sub_tab,
+                                    const char *name);
+static unsigned char v850_serial_getc(serial_channel *chan);
+static bool v850_serial_set_config(serial_channel *chan, cyg_serial_info_t *config);
+static void v850_serial_start_xmit(serial_channel *chan);
+static void v850_serial_stop_xmit(serial_channel *chan);
+
+static cyg_uint32 v850_serial_ISR(cyg_vector_t vector, cyg_addrword_t data);
+static void       v850_serial_DSR(cyg_vector_t vector, cyg_ucount32 count, cyg_addrword_t data);
+
+static SERIAL_FUNS(v850_serial_funs, 
+                   v850_serial_putc, 
+                   v850_serial_getc,
+                   v850_serial_set_config,
+                   v850_serial_start_xmit,
+                   v850_serial_stop_xmit
+    );
+
+#ifdef CYGPKG_IO_SERIAL_V85X_V850_SERIAL0
+static v850_serial_info v850_serial_info0 = {V850_REG_ASIM0,
+                                             CYGNUM_HAL_VECTOR_INTSER0};
+#if CYGNUM_IO_SERIAL_V85X_V850_SERIAL0_BUFSIZE > 0
+static unsigned char v850_serial_out_buf0[CYGNUM_IO_SERIAL_V85X_V850_SERIAL0_BUFSIZE];
+static unsigned char v850_serial_in_buf0[CYGNUM_IO_SERIAL_V85X_V850_SERIAL0_BUFSIZE];
+
+static SERIAL_CHANNEL_USING_INTERRUPTS(v850_serial_channel0,
+                                       v850_serial_funs, 
+                                       v850_serial_info0,
+                                       CYG_SERIAL_BAUD_RATE(CYGNUM_IO_SERIAL_V85X_V850_SERIAL0_BAUD),
+                                       CYG_SERIAL_STOP_DEFAULT,
+                                       CYG_SERIAL_PARITY_DEFAULT,
+                                       CYG_SERIAL_WORD_LENGTH_DEFAULT,
+                                       CYG_SERIAL_FLAGS_DEFAULT,
+                                       &v850_serial_out_buf0[0], sizeof(v850_serial_out_buf0),
+                                       &v850_serial_in_buf0[0], sizeof(v850_serial_in_buf0)
+    );
+#else
+static SERIAL_CHANNEL(v850_serial_channel0,
+                      v850_serial_funs, 
+                      v850_serial_info0,
+                      CYG_SERIAL_BAUD_RATE(CYGNUM_IO_SERIAL_V85X_V850_SERIAL0_BAUD),
+                      CYG_SERIAL_STOP_DEFAULT,
+                      CYG_SERIAL_PARITY_DEFAULT,
+                      CYG_SERIAL_WORD_LENGTH_DEFAULT,
+                      CYG_SERIAL_FLAGS_DEFAULT
+    );
+#endif
+
+DEVTAB_ENTRY(v850_serial_io0, 
+             CYGDAT_IO_SERIAL_V85X_V850_SERIAL0_NAME,
+             0,                     // Does not depend on a lower level interface
+             &cyg_io_serial_devio, 
+             v850_serial_init, 
+             v850_serial_lookup,     // Serial driver may need initializing
+             &v850_serial_channel0
+    );
+#endif //  CYGPKG_IO_SERIAL_V85X_V850_SERIAL0
+
+// Internal function to actually configure the hardware to desired baud rate, etc.
+static bool
+v850_serial_config_port(serial_channel *chan, cyg_serial_info_t *new_config, bool init)
+{
+    v850_serial_info *v850_chan = (v850_serial_info *)chan->dev_priv;
+    volatile struct serial_port *port = (volatile struct serial_port *)v850_chan->base;
+    unsigned char parity = select_parity[new_config->parity];
+    unsigned char word_length = select_word_length[new_config->word_length-CYGNUM_SERIAL_WORD_LENGTH_5];
+    unsigned char stop_bits = select_stop_bits[new_config->stop];
+    if ((select_baud[new_config->baud].count == 0) ||
+        (word_length == 0xFF) ||
+        (parity == 0xFF) ||
+        (stop_bits == 0xFF)) {
+        return false;  // Unsupported configuration
+    }
+    port->asim = ASIM_TxRx_Tx | ASIM_TxRx_Rx | parity | word_length | stop_bits;
+    port->brgc = select_baud[new_config->baud].count;
+    port->brgm = select_baud[new_config->baud].mode + 1;
+    if (new_config != &chan->config) {
+        chan->config = *new_config;
+    }
+    return true;
+}
+
+#ifdef CYGVAR_KERNEL_COUNTERS_CLOCK
+//
+// The serial ports on the V850 are incredibly stupid.  There is no
+// interface status register which can tell you if it is possible to
+// read or write a character!  The only way to discern this is by using
+// interrupts [or at least an interrupt register and polling it].  Thus
+// the serial transmit code has a problem in that it will be required by
+// upper layers to "send until full".  The only way to decide "not full" is
+// that an interrupt has happened.  If the serial driver is being mixed
+// with diagnostic I/O, then serial transmit interrupts will possibly be
+// lost.  
+//
+// This code attempts to compenstate by using a kernel alarm to reset the
+// "device is busy" flag after some timeout.  The timeout period will be
+// sufficiently long so as to not interfere with normal interrupt handling.
+//
+static void
+v850_serial_tx_timeout(cyg_addrword_t p)
+{
+    v850_serial_info *v850_chan = (v850_serial_info *)p;
+    v850_chan->tx_busy = false;
+}
+#endif
+
+// Function to initialize the device.  Called at bootstrap time.
+static bool 
+v850_serial_init(struct cyg_devtab_entry *tab)
+{
+    int i;
+    serial_channel *chan = (serial_channel *)tab->priv;
+    v850_serial_info *v850_chan = (v850_serial_info *)chan->dev_priv;
+#ifdef CYGVAR_KERNEL_COUNTERS_CLOCK
+    cyg_handle_t h;
+#endif
+#ifdef CYGDBG_IO_INIT
+    diag_printf("V850 SERIAL init - dev: %x.%d\n", v850_chan->base, v850_chan->int_num);
+#endif
+    (chan->callbacks->serial_init)(chan);  // Really only required for interrupt driven devices
+    if (chan->out_cbuf.len != 0) {
+        for (i = 0;  i < 3;  i++) {
+            cyg_drv_interrupt_create(v850_chan->int_num+i,
+                                     99,                     // Priority - unused
+                                     (cyg_addrword_t)chan,   // Data item passed to interrupt handler
+                                     v850_serial_ISR,
+                                     v850_serial_DSR,
+                                     &v850_chan->serial_interrupt_handle[i],
+                                     &v850_chan->serial_interrupt[i]);
+            cyg_drv_interrupt_attach(v850_chan->serial_interrupt_handle[i]);
+            cyg_drv_interrupt_unmask(v850_chan->int_num+i);
+#ifdef CYGVAR_KERNEL_COUNTERS_CLOCK
+            cyg_clock_to_counter(cyg_real_time_clock(), &h);
+            cyg_alarm_create(h, v850_serial_tx_timeout, (cyg_addrword_t)v850_chan, 
+                             &v850_chan->tx_timeout_handle, &v850_chan->tx_timeout);
+#endif
+        }
+    }
+    v850_chan->tx_busy = false;
+    return v850_serial_config_port(chan, &chan->config, true);
+}
+
+// This routine is called when the device is "looked" up (i.e. attached)
+static Cyg_ErrNo 
+v850_serial_lookup(struct cyg_devtab_entry **tab, 
+                  struct cyg_devtab_entry *sub_tab,
+                  const char *name)
+{
+    serial_channel *chan = (serial_channel *)(*tab)->priv;
+    (chan->callbacks->serial_init)(chan);  // Really only required for interrupt driven devices
+    return ENOERR;
+}
+
+// Send a character to the device output buffer.
+// Return 'true' if character is sent to device
+static bool
+v850_serial_putc(serial_channel *chan, unsigned char c)
+{
+    v850_serial_info *v850_chan = (v850_serial_info *)chan->dev_priv;
+    volatile struct serial_port *port = (volatile struct serial_port *)v850_chan->base;
+    if (!v850_chan->tx_busy) {
+        v850_chan->tx_busy = true;
+        port->txs = c;
+#ifdef CYGVAR_KERNEL_COUNTERS_CLOCK
+        cyg_alarm_initialize(v850_chan->tx_timeout_handle, cyg_current_time()+10, 0);
+#endif
+    } else {
+        return false;  // Couldn't send, tx was busy
+    }
+}
+
+// Fetch a character from the device input buffer, waiting if necessary
+static unsigned char 
+v850_serial_getc(serial_channel *chan)
+{
+    v850_serial_info *v850_chan = (v850_serial_info *)chan->dev_priv;
+    volatile struct serial_port *port = (volatile struct serial_port *)v850_chan->base;
+    return port->rxs;
+}
+
+// Set up the device characteristics; baud rate, etc.
+static bool 
+v850_serial_set_config(serial_channel *chan, cyg_serial_info_t *config)
+{
+    return v850_serial_config_port(chan, config, false);
+}
+
+// Enable the transmitter on the device
+static void
+v850_serial_start_xmit(serial_channel *chan)
+{
+    v850_serial_info *v850_chan = (v850_serial_info *)chan->dev_priv;
+    (chan->callbacks->xmt_char)(chan);  // Kick transmitter (if necessary)
+    cyg_drv_interrupt_unmask(v850_chan->int_num+INT_Tx);  // Enable Tx interrupt
+}
+
+// Disable the transmitter on the device
+static void 
+v850_serial_stop_xmit(serial_channel *chan)
+{
+    v850_serial_info *v850_chan = (v850_serial_info *)chan->dev_priv;
+    cyg_drv_interrupt_mask(v850_chan->int_num+INT_Tx);  // Disable Tx interrupt
+}
+
+// Serial I/O - low level interrupt handler (ISR)
+static cyg_uint32 
+v850_serial_ISR(cyg_vector_t vector, cyg_addrword_t data)
+{
+    cyg_drv_interrupt_mask(vector);
+    cyg_drv_interrupt_acknowledge(vector);
+    return CYG_ISR_CALL_DSR;  // Cause DSR to be run
+}
+
+// Serial I/O - high level interrupt handler (DSR)
+static void       
+v850_serial_DSR(cyg_vector_t vector, cyg_ucount32 count, cyg_addrword_t data)
+{
+    serial_channel *chan = (serial_channel *)data;
+    v850_serial_info *v850_chan = (v850_serial_info *)chan->dev_priv;
+    volatile struct serial_port *port = (volatile struct serial_port *)v850_chan->base;
+    switch (vector-(v850_chan->int_num)) {
+    case INT_ERR:
+    case INT_Rx:
+        (chan->callbacks->rcv_char)(chan, port->rxs);
+        break;
+    case INT_Tx:
+        v850_chan->tx_busy = false;
+#ifdef CYGVAR_KERNEL_COUNTERS_CLOCK
+        cyg_alarm_initialize(v850_chan->tx_timeout_handle, 0, 0);
+#endif
+        (chan->callbacks->xmt_char)(chan);
+        break;
+    }
+    cyg_drv_interrupt_unmask(vector);
+}
+#endif
new file mode 100644
--- /dev/null
+++ b/packages/devs/serial/v85x/v850/current/src/v85x_v850_serial.h
@@ -0,0 +1,147 @@
+#ifndef CYGONCE_V85X_V850_SERIAL_H
+#define CYGONCE_V85X_V850_SERIAL_H
+
+// ====================================================================
+//
+//      v850_ceb_serial.h
+//
+//      Device I/O - Description of NEC V850 serial hardware
+//
+// ====================================================================
+//####COPYRIGHTBEGIN####
+//                                                                          
+// -------------------------------------------                              
+// The contents of this file are subject to the Red Hat eCos Public License 
+// Version 1.1 (the "License"); you may not use this file except in         
+// compliance with the License.  You may obtain a copy of the License at    
+// http://www.redhat.com/                                                   
+//                                                                          
+// 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 Configurable Operating System,      
+// released September 30, 1998.                                             
+//                                                                          
+// The Initial Developer of the Original Code is Red Hat.                   
+// Portions created by Red Hat are                                          
+// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
+// All Rights Reserved.                                                     
+// -------------------------------------------                              
+//                                                                          
+//####COPYRIGHTEND####
+// ====================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s):    gthomas
+// Contributors: gthomas
+// Date:         2000-03-31
+// Purpose:      Internal interfaces for serial I/O drivers
+// Description:
+//
+//####DESCRIPTIONEND####
+//
+// ====================================================================
+
+// Description of serial ports on NEC CEB/V850SA1
+
+#include <cyg/hal/v850_common.h>
+
+struct serial_port {
+    unsigned char asim;        // Serial interface mode
+    unsigned char _filler0;
+    unsigned char asis;        // Serial interface status
+    unsigned char _filler1;
+    unsigned char brgc;        // Baud rate control
+    unsigned char _filler2;
+    unsigned char txs;         // Transmit shift register
+    unsigned char _filler3;
+    unsigned char rxs;         // Receive shift register
+    unsigned char _filler4;
+    unsigned char brgm;        // Baud rate mode
+    unsigned char _filler5;
+};
+
+// Relative interrupt numbers
+#define INT_ERR 0              // Receive error condition
+#define INT_Rx  1              // Receive data
+#define INT_Tx  2              // Transmit data
+
+// Serial interface mode
+#define ASIM_TxRx_MASK     (3<<6)  // Receive & Transmit enables
+#define ASIM_TxRx_Rx       (1<<6)  // Receive enable
+#define ASIM_TxRx_Tx       (2<<6)  // Transmit enable
+#define ASIM_Parity_MASK   (3<<4)  // Parity mode bits
+#define ASIM_Parity_none   (0<<4)  // No parity
+#define ASIM_Parity_space  (1<<4)  // Send zero bit, ignore errors
+#define ASIM_Parity_odd    (2<<4)  // Odd parity
+#define ASIM_Parity_even   (3<<4)  // Even parity
+#define ASIM_Length_MASK   (1<<3)  // Character length select
+#define ASIM_Length_7      (0<<3)  // 7 bit chars
+#define ASIM_Length_8      (1<<3)  // 8 bit chars
+#define ASIM_Stop_MASK     (1<<2)  // Stop bit select
+#define ASIM_Stop_1        (0<<2)  // 1 stop bit
+#define ASIM_Stop_2        (1<<2)  // 2 stop bits
+#define ASIM_Error_MASK    (1<<1)  // Receive error select
+#define ASIM_Error_enable  (0<<1)  // Issue interrupt on receive error
+#define ASIM_Error_disable (1<<1)  // No interrupts on receive error
+
+// Serial interface status (errors only)
+#define ASIS_OVE           (1<<0)  // Overrun error
+#define ASIS_FE            (1<<1)  // Framing error
+#define ASIS_PE            (1<<2)  // Parity error
+
+static unsigned char select_word_length[] = {
+    0xFF,                         // 5 bits / word (char)
+    0xFF,
+    ASIM_Length_7,
+    ASIM_Length_8
+};
+
+static unsigned char select_stop_bits[] = {
+    0,
+    ASIM_Stop_1,                  // 1 stop bit
+    0xFF,                         // 1.5 stop bit
+    ASIM_Stop_2                   // 2 stop bits
+};
+
+static unsigned char select_parity[] = {
+    ASIM_Parity_none,             // No parity
+    ASIM_Parity_even,             // Even parity
+    ASIM_Parity_odd,              // Odd parity
+    0xFF,                         // Mark parity
+    ASIM_Parity_space,            // Space parity
+};
+
+// Baud rate values, based on raw 17MHz clock
+
+static struct v850_baud {
+    unsigned char count;
+    unsigned char mode;
+} select_baud[] = {
+      {0, 0},  // Unused
+      {0, 0},  // 50
+      {0, 0},  // 75
+      {0, 0},  // 110
+      {0, 0},  // 134.5
+      {0, 0},  // 150
+      {0, 0},  // 200
+      {0, 0},  // 300
+      {0, 0},  // 600
+    {221, 5},  // 1200
+      {0, 0},  // 1800
+    {221, 4},  // 2400
+      {0, 0},  // 3600
+    {221, 3},  // 4800
+      {0, 0},  // 7200
+    {221, 2},  // 9600
+      {0, 0},  // 14400
+    {221, 1},  // 19200
+    {221, 0},  // 38400
+      {0, 0},  // 57600
+      {0, 0},  // 115200
+      {0, 0},  // 230400
+};
+
+#endif // CYGONCE_V85X_V850_SERIAL_H
--- a/packages/ecos.db
+++ b/packages/ecos.db
@@ -209,6 +209,16 @@ package CYGPKG_IO_SERIAL_SH_EDK7708 {
 }
 
 
+package CYGPKG_IO_SERIAL_V85X_V850 {
+    alias             { "NEC V850 serial device drivers"
+                        devs_serial_v85x_v850 v850_serial_driver }
+    hardware
+    directory	      devs/serial/v85x/v850
+    script	      ser_v85x_v850.cdl	
+    description       "Serial device drivers for systems based on NEC V850
+                       SA1 (70F3017) or SB1 (70F3033) processors."
+}
+
 package CYGPKG_DEVS_ETH_ARM_EDB7XXX {
 	alias 		{ "Cirrus Logic ethernet driver" edb7xxx_eth_driver }
 	hardware
@@ -472,13 +482,13 @@ package CYGPKG_HAL_SH_EDK7708 {
 }
 
 package CYGPKG_HAL_SH_SH7708_CQ7708 {
-        alias           { "CqREEK Hitachi SH7708 board" hal_sh_cq sh_cq_hal }
+        alias           { "CqREEK SH7708 board" hal_sh_cq sh_cq_hal }
         directory       hal/sh/cq7708
         script          hal_sh_sh7708_cq7708.cdl
         hardware
         description "
            The cq HAL package provides the support needed to run
-           eCos on a Hitachi SH3 CqREEK board."
+           eCos on a CqREEK SH7708 board."
 }
 
 
@@ -789,6 +799,38 @@ package CYGPKG_HAL_MN10300_AM33_STB {
            actual hardware for the AM33 STB evaluation board."
 }
 
+# --------------------------------------------------------------------------
+# NEC packages
+package CYGPKG_HAL_V85X {
+	alias		{ "NEC V85x common HAL" hal_v85x nec_arch_hal }
+	directory	hal/v85x/arch
+	script		hal_v85x.cdl
+	hardware
+	description "
+The NEC V85x architecture HAL package provides generic support for this
+processor architecture. It is also necessary to select a specific
+target platform HAL package."
+}
+
+package CYGPKG_HAL_V85X_V850 {
+	alias		{ "NEC V850 variant HAL" hal_v85x_v850 nec_v850_hal }
+	directory	hal/v85x/v850
+	script		hal_v85x_v850.cdl
+	hardware
+        description "
+The V850 HAL package provides the support needed to run eCos on a NEC V850
+processor."
+}
+
+package CYGPKG_HAL_V85X_V850_CEB {
+	alias		{ "Cosmo CEB-V850/SA1 board" hal_v85x_v850_ceb nec_v850_ceb_hal }
+	directory	hal/v85x/ceb_v850
+	script		hal_v85x_ceb_v850.cdl
+	hardware
+        description "
+The CEB-V850/SA1 HAL package provides the support needed to run eCos on a Cosmo CEB-V850/SA1
+evaluation board."
+}
 # ==========================================================================
 # --------------------------------------------------------------------------
 # ARM targets
@@ -868,14 +910,14 @@ target sh7708 {
 }
 
 target cq7708 {
-        alias { "CqREEK SH7708 Evaluation board" cq7708 }
+        alias { "CqREEK SH7708 board" cq7708 }
         packages { CYGPKG_HAL_SH
                    CYGPKG_HAL_SH_SH7708_CQ7708
         }
         enable      { CYGPKG_HAL_SH_7708 }
         description "
            The cq7708 target provides the packages needed to run
-           eCos on a CqREEK Hitachi SH7708 board."
+           eCos on a CqREEK SH7708 board."
 }
 
 # --------------------------------------------------------------------------
@@ -1064,3 +1106,18 @@ target stb {
            eCos on a Matsushita STB board."
 }
 
+# --------------------------------------------------------------------------
+# NEC targets
+
+target ceb_v850 {
+	alias { "Cosmo CEB-V850/SA1 board" CEB }
+	packages { CYGPKG_HAL_V85X
+                   CYGPKG_HAL_V85X_V850
+                   CYGPKG_HAL_V85X_V850_CEB
+                   CYGPKG_IO_SERIAL_V85X_V850
+        }
+        description "
+The ceb target provides the packages needed to run eCos on a Cosmo CEB-V850/SA1
+evaluation board."
+}
+# --------------------------------------------------------------------------
--- a/packages/ecosadmin.tcl
+++ b/packages/ecosadmin.tcl
@@ -1,15 +1,14 @@
 #!/bin/sh
 # these lines restart using the tcl shell \
   exec sh -c "if ( echo | tclsh ) 2>/dev/null ; then \
-      exec tclsh \"$0\" ${1+\"$@\"} ; \
+      exec tclsh "${0}" ${1+"${@}"} ; \
     elif ( echo | cygtclsh80 ) 2>/dev/null ; then \
-      exec cygtclsh80 \"$0\" ${1+\"$@\"} ; \
+      exec cygtclsh80 "${0}" ${1+"${@}"} ; \
     else \
       echo Could not find TCL interpreter ; \
       exit 1 ; \
     fi"
 
-
 # {{{  Banner
 
 #===============================================================================
--- a/packages/hal/arm/aeb/current/ChangeLog
+++ b/packages/hal/arm/aeb/current/ChangeLog
@@ -1,3 +1,7 @@
+2000-06-06  Jonathan Larmour  <jlarmour@redhat.co.uk>
+
+	* src/flash_cksum.tcl: Make sure it invokes the interpreter correctly
+
 2000-05-22  Jesper Skov  <jskov@redhat.com>
 
 	* src/flash_cksum.tcl: Use correct intepreter.
--- a/packages/hal/arm/aeb/current/src/flash_cksum.tcl
+++ b/packages/hal/arm/aeb/current/src/flash_cksum.tcl
@@ -1,9 +1,9 @@
 #!/bin/sh
 # the next line restarts using tclsh \
   exec sh -c "if ( echo | tclsh ) 2>/dev/null ; then \
-      exec tclsh \"$0\" ${1+\"$@\"} ; \
+      exec tclsh "${0}" ${1+"${@}"} ; \
     elif ( echo | cygtclsh80 ) 2>/dev/null ; then \
-      exec cygtclsh80 \"$0\" ${1+\"$@\"} ; \
+      exec cygtclsh80 "${0}" ${1+"${@}"} ; \
     else \
       echo Could not find TCL interpreter ; \
       exit 1 ; \
--- a/packages/hal/arm/arch/current/ChangeLog
+++ b/packages/hal/arm/arch/current/ChangeLog
@@ -1,3 +1,13 @@
+2000-06-04  Gary Thomas  <gthomas@redhat.com>
+
+	* src/vectors.S: Add support for platform specific "vectors"
+	which may need to end up in predefined memory locations.
+	* src/arm.ld: Add separate 'fixed_vectors' section.
+
+2000-06-01  Gary Thomas  <gthomas@redhat.com>
+
+	* include/hal_mmu.h (MMU_Control_I): Added for StrongARM support.
+
 2000-04-10  Hugo Tyson  <hmt@cygnus.co.uk>
 
 	* include/arm_stub.h (CYG_HAL_GDB_ENTER_CRITICAL_IO_REGION): Only
--- a/packages/hal/arm/arch/current/include/hal_mmu.h
+++ b/packages/hal/arm/arch/current/include/hal_mmu.h
@@ -97,6 +97,7 @@
 #define MMU_Control_B  0x080    // Enable Big-Endian
 #define MMU_Control_S  0x100    // Enable system protection
 #define MMU_Control_R  0x200    // Enable ROM protection
+#define MMU_Control_I  0x1000   // Enable Instruction cache
 #define MMU_Control_Init (MMU_Control_P|MMU_Control_D|MMU_Control_L)
 
 //-----------------------------------------------------------------------------
--- a/packages/hal/arm/arch/current/src/arm.ld
+++ b/packages/hal/arm/arch/current/src/arm.ld
@@ -79,6 +79,11 @@ OUTPUT_FORMAT(elf32-bigarm)
   .debug_loc      0 : { *(.debug_loc) }         \
   .debug_macinfo  0 : { *(.debug_macinfo) }
 
+#define SECTION_fixed_vectors(_region_, _vma_, _lma_) \
+    .fixed_vectors _vma_ : _lma_ \
+    { FORCE_OUTPUT; KEEP (*(.fixed_vectors)) } \
+    > _region_
+
 #define SECTION_rom_vectors(_region_, _vma_, _lma_) \
     .rom_vectors _vma_ : _lma_ \
     { FORCE_OUTPUT; KEEP (*(.vectors)) } \
--- a/packages/hal/arm/arch/current/src/vectors.S
+++ b/packages/hal/arm/arch/current/src/vectors.S
@@ -170,10 +170,13 @@ PTR(start) // This is copied to 0x28 for
            // location 0x40 is used for storing DRAM size if known
            // for some platforms.
 
-// Other vectors
-        .balign 16      // Should be at 0x50
         .balign 32
-
+        
+// Other vectors - this may include "fixed" locations
+#ifdef PLATFORM_VECTORS
+        PLATFORM_VECTORS
+#endif
+                        
         .text   
 // Startup code which will get the machine into supervisor mode
         .global reset_vector
--- a/packages/hal/common/current/ChangeLog
+++ b/packages/hal/common/current/ChangeLog
@@ -1,3 +1,9 @@
+2000-06-04  Gary Thomas  <gthomas@redhat.com>
+
+	* cdl/hal.cdl: Support variant 'pkgconf' headers.  This will allow
+	[variant] common symbols to be defined, rather than duplicating 
+	them over all platforms using that variant.
+
 2000-05-25  Jesper Skov  <jskov@redhat.com>
 
 	* cdl/debugging.cdl: Allow thread support to included for ROM
--- a/packages/hal/common/current/cdl/hal.cdl
+++ b/packages/hal/common/current/cdl/hal.cdl
@@ -165,6 +165,9 @@ cdl_package CYGPKG_HAL {
         puts $::cdl_header "#include <pkgconf/system.h>"
 
         puts $::cdl_header "#include CYGBLD_HAL_TARGET_H"
+        puts $::cdl_header "#ifdef   CYGBLD_HAL_VARIANT_H"
+        puts $::cdl_header "#include CYGBLD_HAL_VARIANT_H"
+        puts $::cdl_header "#endif"
         puts $::cdl_header "#include CYGBLD_HAL_PLATFORM_H"
 
         puts $::cdl_header "/****** proc output end ******/"
--- a/packages/hal/sh/cq7708/current/ChangeLog
+++ b/packages/hal/sh/cq7708/current/ChangeLog
@@ -1,3 +1,9 @@
+2000-06-05  John Dallaway  <jld@redhat.com>
+
+	* cdl/hal_sh_sh7708_cq7708.cdl:
+
+	Tidy display strings.
+
 2000-05-31  Jesper Skov  <jskov@redhat.com>
 
 	* Munging sources to matches post-1.3.1 changes.
--- a/packages/hal/sh/cq7708/current/cdl/hal_sh_sh7708_cq7708.cdl
+++ b/packages/hal/sh/cq7708/current/cdl/hal_sh_sh7708_cq7708.cdl
@@ -41,13 +41,13 @@
 # ====================================================================
 
 cdl_package CYGPKG_HAL_SH_SH7708_CQ7708 {
-    display       "Hitachi SH3 CQ7708 evaluation board"
+    display       "CqREEK SH7708 board"
     parent        CYGPKG_HAL_SH
     define_header hal_sh_sh7708_cq7708.h
     include_dir   cyg/hal
     description   "
         The cq HAL package provides the support needed to run
-        eCos on a Hitachi SH3 CQ7708 board."
+        eCos on a CqREEK SH7708 board."
 
     compile       hal_diag.c plf_stub.c plf_misc.c
 
new file mode 100644
--- /dev/null
+++ b/packages/hal/v85x/arch/current/ChangeLog
@@ -0,0 +1,109 @@
+2000-05-26  Gary Thomas  <gthomas@redhat.com>
+
+	* src/vectors.S: Slight reorg of trap vectors (more readable).
+
+2000-05-25  John Dallaway  <jld@redhat.com>
+
+	* cdl/hal_v85x.cdl: Tidy display strings.
+
+2000-05-25  Gary Thomas  <gthomas@redhat.com>
+
+	* src/vectors.S: Handle different chips (number of interrupt
+	sources differs, exception table is altered, etc).
+
+	* include/hal_intr.h: Actual interrupt layout now defined by
+	variant/platform since these differ depending on the chip.
+
+2000-05-03  Gary Thomas  <gthomas@redhat.com>
+
+	* include/hal_arch.h: New breakpoint instruction ("br *").
+
+2000-04-14  Gary Thomas  <gthomas@redhat.com>
+
+	* src/hal_misc.c (exception_handler): Proper handling of nested
+	[watchdog] interrupts - don't corrupt GDB registers.
+
+	* src/hal_mk_defs.c: Add some symbols required for NMI handling.
+
+	* src/vectors.S (return_from_exception_or_interrupt): 
+	Properly handle different cases for exception, NMI and ISR.
+
+	* include/hal_intr.h (HAL_TRANSLATE_VECTOR): Ignore interrupt
+	chaining - doesn't happen on this hardware.
+
+2000-04-11  Gary Thomas  <gthomas@redhat.com>
+
+	* src/vectors.S (exception): Handle NMI.  In particular, need to
+	have appropriate bits set so they clear and also get the state
+	from the proper save registers.
+	(exception): Register save was wrong - ROM only.
+
+2000-03-31  Gary Thomas  <gthomas@redhat.com>
+
+	* src/hal_mk_defs.c: Add definition for 'ep' register.
+
+	* include/hal_intr.h: 
+	* cdl/hal_nec.cdl: Add config option to choose between inline and
+	real functions for interrupt macros.
+
+	* src/vectors.S: Tune up - use SLD/SST for smaller, faster code
+	in context load/save routines.  Also remove IRQ trace/debug code.
+
+2000-03-30  Gary Thomas  <gthomas@redhat.com>
+
+	* src/vectors.S (do_interrupt): Can't use R13 across function calls.
+	This caused instability when turning on kernel instrumentation.
+
+	* include/hal_intr.h: Use out-of-line code for interrupt functions
+	for tracing/testing.
+
+	* src/vectors.S: Working support for separate interrupt stack.
+	Some debug/trace code left in.
+
+	* src/hal_mk_defs.c: 
+	* include/hal_arch.h: Documented API does not match actual GCC 
+	register usage. Need to save R1/R2/R4/R5 for setjmp/longjmp.
+
+2000-03-27  Gary Thomas  <gthomas@redhat.com>
+
+	* src/vectors.S (do_interrupt): Pass regs to ISR & DSR.
+
+	* include/basetype.h: Endian-ness was incorrect.
+
+	* include/hal_arch.h: 
+	* src/hal_mk_defs.c: Complete setjmp/longjmp support.
+
+	* src/vectors.S: Add interrupt stack.
+
+2000-03-21  Gary Thomas  <gthomas@redhat.com>
+
+	* src/vectors.S (_hal_plf_reset_board): Add board reset function.
+
+	* include/hal_arch.h (CYGHWR_TEST_PROGRAM_EXIT): Define RESET for ROM
+	based programs.
+
+//===========================================================================
+//####COPYRIGHTBEGIN####
+//                                                                          
+// -------------------------------------------                              
+// The contents of this file are subject to the Red Hat eCos Public License 
+// Version 1.1 (the "License"); you may not use this file except in         
+// compliance with the License.  You may obtain a copy of the License at    
+// http://www.redhat.com/                                                   
+//                                                                          
+// 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 Configurable Operating System,      
+// released September 30, 1998.                                             
+//                                                                          
+// The Initial Developer of the Original Code is Red Hat.                   
+// Portions created by Red Hat are                                          
+// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
+// All Rights Reserved.                                                     
+// -------------------------------------------                              
+//                                                                          
+//####COPYRIGHTEND####
+//===========================================================================
new file mode 100644
--- /dev/null
+++ b/packages/hal/v85x/arch/current/cdl/hal_v85x.cdl
@@ -0,0 +1,102 @@
+# ====================================================================
+#
+#      hal_v85x.cdl
+#
+#      NEC architectural HAL package configuration data
+#
+# ====================================================================
+#####COPYRIGHTBEGIN####
+#                                                                          
+# -------------------------------------------                              
+# The contents of this file are subject to the Red Hat eCos Public License 
+# Version 1.1 (the "License"); you may not use this file except in         
+# compliance with the License.  You may obtain a copy of the License at    
+# http://www.redhat.com/                                                   
+#                                                                          
+# 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 Configurable Operating System,      
+# released September 30, 1998.                                             
+#                                                                          
+# The Initial Developer of the Original Code is Red Hat.                   
+# Portions created by Red Hat are                                          
+# Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
+# All Rights Reserved.                                                     
+# -------------------------------------------                              
+#                                                                          
+#####COPYRIGHTEND####
+# ====================================================================
+######DESCRIPTIONBEGIN####
+#
+# Author(s):      gthomas
+# Contributors:
+# Date:           2000-03-09
+#
+#####DESCRIPTIONEND####
+#
+# ====================================================================
+
+cdl_package CYGPKG_HAL_V85X {
+    display "NEC V85x architecture"
+    parent        CYGPKG_HAL
+    hardware
+    include_dir   cyg/hal
+    define_header hal_v85x.h
+    description   "
+        The NEC architecture HAL package provides generic support
+        for this processor architecture. It is also necessary to
+        select a CPU variant and a specific target platform HAL
+        package."
+
+    cdl_interface CYGINT_HAL_V85X_VARIANT {
+        display  "Number of variant implementations in this configuration"
+        requires 1 == CYGINT_HAL_V85X_VARIANT
+    }
+
+    compile hal_misc.c
+
+    make -priority 1 {
+        <PREFIX>/include/cyg/hal/nec_offsets.inc : <PACKAGE>/src/hal_mk_defs.c
+        $(CC) $(CFLAGS) $(INCLUDE_PATH) -Wp,-MD,nec_offsets.tmp -o hal_mk_defs.tmp -S $<
+        fgrep .equ hal_mk_defs.tmp | sed s/#// > $@
+        @echo $@ ": \\" > $(notdir $@).deps
+        @tail +2 nec_offsets.tmp >> $(notdir $@).deps
+        @echo >> $(notdir $@).deps
+        @rm nec_offsets.tmp hal_mk_defs.tmp
+    }
+
+    make {
+        <PREFIX>/lib/vectors.o : <PACKAGE>/src/vectors.S
+        $(CC) -Wp,-MD,vectors.tmp $(INCLUDE_PATH) $(CFLAGS) -c -o $@ $<
+        @echo $@ ": \\" > $(notdir $@).deps
+        @tail +2 vectors.tmp >> $(notdir $@).deps
+        @echo >> $(notdir $@).deps
+        @rm vectors.tmp
+    }
+
+    cdl_option CYGHWR_HAL_V85X_CPU_FREQ {
+        display "CPU frequency in MHz"
+        flavor  data
+        legal_values 5 10 17
+        default_value 17
+        description "
+           This option contains the frequency of the CPU in MegaHertz.
+           Choose the frequency to match the processor you have. This
+           may affect thing like serial device, interval clock and
+           memory access speed settings."
+    }
+
+    cdl_option CYGSEM_HAL_V85X_INLINE_INTERRUPT_FUNCTIONS {
+        display        "In-line interrupt functions"
+        flavor         bool
+        default_value  1
+        description "
+           This option allows for the HAL interrupt functions, 
+           e.g. HAL_ENABLE_INTERRUPTS() to be coded as either in-line
+           assembly code or real functions.  The primary motivations
+           for the latter would be debugging, tracing, etc."
+    }
+}
new file mode 100644
--- /dev/null
+++ b/packages/hal/v85x/arch/current/include/basetype.h
@@ -0,0 +1,67 @@
+#ifndef CYGONCE_HAL_BASETYPE_H
+#define CYGONCE_HAL_BASETYPE_H
+
+//=============================================================================
+//
+//      basetype.h
+//
+//      Standard types for this architecture.
+//
+//=============================================================================
+//####COPYRIGHTBEGIN####
+//                                                                          
+// -------------------------------------------                              
+// The contents of this file are subject to the Red Hat eCos Public License 
+// Version 1.1 (the "License"); you may not use this file except in         
+// compliance with the License.  You may obtain a copy of the License at    
+// http://www.redhat.com/                                                   
+//                                                                          
+// 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 Configurable Operating System,      
+// released September 30, 1998.                                             
+//                                                                          
+// The Initial Developer of the Original Code is Red Hat.                   
+// Portions created by Red Hat are                                          
+// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
+// All Rights Reserved.                                                     
+// -------------------------------------------                              
+//                                                                          
+//####COPYRIGHTEND####
+//=============================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s):   nickg
+// Contributors:  nickg, gthomas
+// Date:        1998-02-05
+// Purpose:     Define architecture base types.
+// Usage:       Included by <cyg/infra/cyg_types.h>, do not use directly
+//              
+//####DESCRIPTIONEND####
+//
+
+#include <pkgconf/hal.h>
+
+//-----------------------------------------------------------------------------
+// Characterize the architecture
+
+#define CYG_BYTEORDER           CYG_LSBFIRST    // Little endian
+
+//-----------------------------------------------------------------------------
+// NEC does not usually use labels with undersores. Some labels generated
+// by the linker do, so add an underscore where required.
+
+#define CYG_LABEL_NAME(_name_) _##_name_
+
+//-----------------------------------------------------------------------------
+// Define the standard variable sizes
+
+// The NEC architecture uses the default definitions of the base types,
+// so we do not need to define any here.
+
+//-----------------------------------------------------------------------------
+#endif // CYGONCE_HAL_BASETYPE_H
+// End of basetype.h
new file mode 100644
--- /dev/null
+++ b/packages/hal/v85x/arch/current/include/hal_arch.h
@@ -0,0 +1,269 @@
+#ifndef CYGONCE_HAL_HAL_ARCH_H
+#define CYGONCE_HAL_HAL_ARCH_H
+
+//==========================================================================
+//
+//      hal_arch.h
+//
+//      Architecture specific abstractions
+//
+//==========================================================================
+//####COPYRIGHTBEGIN####
+//                                                                          
+// -------------------------------------------                              
+// The contents of this file are subject to the Red Hat eCos Public License 
+// Version 1.1 (the "License"); you may not use this file except in         
+// compliance with the License.  You may obtain a copy of the License at    
+// http://www.redhat.com/                                                   
+//                                                                          
+// 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 Configurable Operating System,      
+// released September 30, 1998.                                             
+//                                                                          
+// The Initial Developer of the Original Code is Red Hat.                   
+// Portions created by Red Hat are                                          
+// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
+// All Rights Reserved.                                                     
+// -------------------------------------------                              
+//                                                                          
+//####COPYRIGHTEND####
+//==========================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s):    nickg
+// Contributors: nickg
+// Date:         1999-02-17
+// Purpose:      Define architecture abstractions
+// Usage:        #include <cyg/hal/hal_arch.h>
+//              
+//####DESCRIPTIONEND####
+//
+//==========================================================================
+
+#include <pkgconf/hal.h>
+#include <cyg/infra/cyg_type.h>
+
+#include <cyg/hal/var_arch.h>
+
+//--------------------------------------------------------------------------
+// Processor saved states:
+// The layout of this structure is also defined in "arch.inc", for assembly
+// code. Do not change this without changing that (or vice versa).
+
+#define CYG_HAL_NEC_REG CYG_WORD32
+#define CYG_HAL_NEC_REG_SIZE 4
+
+typedef struct 
+{
+    // These are common to all saved states
+    CYG_HAL_NEC_REG     d[32];          /* Data regs                    */
+    CYG_ADDRWORD        pc;             /* Program Counter              */
+    CYG_ADDRWORD        psw;            /* Status Reg                   */
+    
+    // These are only saved for exceptions and interrupts
+    CYG_ADDRWORD        cause;          /* Exception cause register     */   
+    CYG_ADDRWORD        vector;         /* Exception/interrupt number   */   
+} HAL_SavedRegisters;
+
+//
+// Processor state register
+//
+#define CYGARC_PSW_ID   0x20     // Interrupt disable
+#define CYGARC_PSW_EP   0x40     // Exception in progress
+#define CYGARC_PSW_NP   0x80     // NMI in progress
+
+//--------------------------------------------------------------------------
+// Exception handling function.
+// This function is defined by the kernel according to this prototype. It is
+// invoked from the HAL to deal with any CPU exceptions that the HAL does
+// not want to deal with itself. It usually invokes the kernel's exception
+// delivery mechanism.
+
+externC void cyg_hal_deliver_exception( CYG_WORD code, CYG_ADDRWORD data );
+
+//--------------------------------------------------------------------------
+// Bit manipulation macros
+
+externC cyg_uint32 hal_lsbit_index(cyg_uint32 mask);
+externC cyg_uint32 hal_msbit_index(cyg_uint32 mask);
+
+#define HAL_LSBIT_INDEX(index, mask) index = hal_lsbit_index(mask);
+
+#define HAL_MSBIT_INDEX(index, mask) index = hal_msbit_index(mask);
+
+//--------------------------------------------------------------------------
+// Context Initialization
+
+#define CYG_HAL_NEC_INIT_PSW  0x00000000
+
+// Initialize the context of a thread.
+// Arguments:
+// _sparg_ name of variable containing current sp, will be written with new sp
+// _thread_ thread object address, passed as argument to entry point
+// _entry_ entry point address.
+// _id_ bit pattern used in initializing registers, for debugging.
+#define HAL_THREAD_INIT_CONTEXT( _sparg_, _thread_, _entry_, _id_ )                     \
+{                                                                                       \
+    register CYG_WORD _sp_ = ((CYG_WORD)_sparg_)-56;                                    \
+    register HAL_SavedRegisters *_regs_;                                                \
+    int _i_;                                                                            \
+    _sp_ = _sp_ & 0xFFFFFFF0;                                                           \
+    _regs_ = (HAL_SavedRegisters *)(((_sp_) - sizeof(HAL_SavedRegisters))&0xFFFFFFF0);  \
+    for( _i_ = 0; _i_ < 32; _i_++ ) (_regs_)->d[_i_] = (_id_)|_i_;                      \
+    (_regs_)->d[03] = (CYG_HAL_NEC_REG)(_sp_);       /* SP = top of stack      */      \
+    (_regs_)->d[04] = (CYG_HAL_NEC_REG)(_sp_);       /* GP = top of stack      */      \
+    (_regs_)->d[29] = (CYG_HAL_NEC_REG)(_sp_);       /* FP = top of stack      */      \
+    (_regs_)->d[06] = (CYG_HAL_NEC_REG)(_thread_);   /* R6 = arg1 = thread ptr */      \
+    (_regs_)->d[31] = (CYG_HAL_NEC_REG)(_entry_);    /* RA(d[31]) = entry point*/      \
+    (_regs_)->pc = (CYG_WORD)(_entry_);              /* PC = entry point       */      \
+    (_regs_)->psw = CYG_HAL_NEC_INIT_PSW;                                              \
+    _sparg_ = (CYG_ADDRESS)_regs_;                                                      \
+}
+
+//--------------------------------------------------------------------------
+// Context switch macros.
+// The arguments are pointers to locations where the stack pointer
+// of the current thread is to be stored, and from where the sp of the
+// next thread is to be fetched.
+
+externC void hal_thread_switch_context( CYG_ADDRESS to, CYG_ADDRESS from );
+externC void hal_thread_load_context( CYG_ADDRESS to )
+    __attribute__ ((noreturn));
+
+#define HAL_THREAD_SWITCH_CONTEXT(_fspptr_,_tspptr_)                    \
+        hal_thread_switch_context( (CYG_ADDRESS)_tspptr_,               \
+                                   (CYG_ADDRESS)_fspptr_);
+
+#define HAL_THREAD_LOAD_CONTEXT(_tspptr_)                               \
+        hal_thread_load_context( (CYG_ADDRESS)_tspptr_ );
+
+//--------------------------------------------------------------------------
+// Execution reorder barrier.
+// When optimizing the compiler can reorder code. In multithreaded systems
+// where the order of actions is vital, this can sometimes cause problems.
+// This macro may be inserted into places where reordering should not happen.
+// The "memory" keyword is potentially unnecessary, but it is harmless to
+// keep it.
+
+#define HAL_REORDER_BARRIER() asm volatile ( "" : : : "memory" )
+
+//--------------------------------------------------------------------------
+// Breakpoint support
+// HAL_BREAKPOINT() is a code sequence that will cause a breakpoint to
+// happen if executed.
+// HAL_BREAKINST is the value of the breakpoint instruction and
+// HAL_BREAKINST_SIZE is its size in bytes.
+
+#define HAL_BREAKPOINT(_label_)                 \
+asm volatile (" .globl  _" #_label_ ";"         \
+              "_"#_label_":"                    \
+              " br _"#_label_                   \
+    );
+
+#define HAL_BREAKINST           0x0585
+#define HAL_BREAKINST_SIZE      2
+
+//--------------------------------------------------------------------------
+// Thread register state manipulation for GDB support.
+
+// Default to a 32 bit register size for GDB register dumps.
+#ifndef CYG_HAL_GDB_REG
+#define CYG_HAL_GDB_REG CYG_WORD32
+#endif
+
+// Translate a stack pointer as saved by the thread context macros above into
+// a pointer to a HAL_SavedRegisters structure.
+#define HAL_THREAD_GET_SAVED_REGISTERS( _sp_, _regs_ )          \
+        (_regs_) = (HAL_SavedRegisters *)(_sp_)
+
+
+//--------------------------------------------------------------------------
+// HAL setjmp
+
+typedef struct {
+    cyg_uint32 sp;
+    cyg_uint32 gp;
+    cyg_uint32 tp;
+    cyg_uint32 r1,r2,r4,r5;
+    cyg_uint32 r20, r21, r22, r23;
+    cyg_uint32 r24, r25, r26, r27, r28;
+    cyg_uint32 fp;
+    cyg_uint32 ep;
+    cyg_uint32 lp;
+} hal_jmp_buf_t;
+
+typedef cyg_uint32 hal_jmp_buf[sizeof(hal_jmp_buf_t) / sizeof(cyg_uint32)];
+
+externC int hal_setjmp(hal_jmp_buf env);
+externC void hal_longjmp(hal_jmp_buf env, int val);
+
+//-------------------------------------------------------------------------
+// Idle thread code.
+// This macro is called in the idle thread loop, and gives the HAL the
+// chance to insert code. Typical idle thread behaviour might be to halt the
+// processor.
+
+externC void hal_idle_thread_action(cyg_uint32 loop_count);
+
+#define HAL_IDLE_THREAD_ACTION(_count_) hal_idle_thread_action(_count_)
+
+//--------------------------------------------------------------------------
+// Hardware specific test exit code.  This is defined here simply to make
+// setting a breakpoint on this function viable.
+//
+#define CYGHWR_TEST_PROGRAM_EXIT()              \
+{                                               \
+    static volatile int ctr;                    \
+    while (1) ctr++;                            \
+}
+
+//--------------------------------------------------------------------------
+// Minimal and sensible stack sizes: the intention is that applications
+// will use these to provide a stack size in the first instance prior to
+// proper analysis.  Idle thread stack should be this big.
+
+//    THESE ARE NOT INTENDED TO BE MICROMETRICALLY ACCURATE FIGURES.
+//           THEY ARE HOWEVER ENOUGH TO START PROGRAMMING.
+// YOU MUST MAKE YOUR STACKS LARGER IF YOU HAVE LARGE "AUTO" VARIABLES!
+
+// This is not a config option because it should not be adjusted except
+// under "enough rope" sort of disclaimers.
+
+// Typical case stack frame size: return link + 4 pushed registers + some locals.
+#define CYGNUM_HAL_STACK_FRAME_SIZE (48)
+
+// Stack needed for a context switch:
+#define CYGNUM_HAL_STACK_CONTEXT_SIZE (((32+12)*CYG_HAL_NEC_REG_SIZE)+(32*4))
+
+
+// Interrupt + call to ISR, interrupt_end() and the DSR
+#define CYGNUM_HAL_STACK_INTERRUPT_SIZE (4+2*CYGNUM_HAL_STACK_CONTEXT_SIZE) 
+
+#ifdef CYGIMP_HAL_COMMON_INTERRUPTS_USE_INTERRUPT_STACK
+
+// An interrupt stack which is large enough for all possible interrupt
+// conditions (and only used for that purpose) exists.  "User" stacks
+// can be much smaller
+
+#define CYGNUM_HAL_STACK_SIZE_MINIMUM (CYGNUM_HAL_STACK_CONTEXT_SIZE+      \
+                                       CYGNUM_HAL_STACK_INTERRUPT_SIZE*2+  \
+                                       CYGNUM_HAL_STACK_FRAME_SIZE*8)
+#define CYGNUM_HAL_STACK_SIZE_TYPICAL (CYGNUM_HAL_STACK_SIZE_MINIMUM+1024)
+
+#else // CYGIMP_HAL_COMMON_INTERRUPTS_USE_INTERRUPT_STACK 
+
+// No separate interrupt stack exists.  Make sure all threads contain
+// a stack sufficiently large.
+
+#define CYGNUM_HAL_STACK_SIZE_MINIMUM (4096)
+#define CYGNUM_HAL_STACK_SIZE_TYPICAL (4096)
+
+#endif
+
+//--------------------------------------------------------------------------
+#endif // CYGONCE_HAL_HAL_ARCH_H
+// End of hal_arch.h
new file mode 100644
--- /dev/null
+++ b/packages/hal/v85x/arch/current/include/hal_cache.h
@@ -0,0 +1,59 @@
+#ifndef CYGONCE_HAL_CACHE_H
+#define CYGONCE_HAL_CACHE_H
+
+//=============================================================================
+//
+//      hal_cache.h
+//
+//      HAL cache control API
+//
+//=============================================================================
+//####COPYRIGHTBEGIN####
+//                                                                          
+// -------------------------------------------                              
+// The contents of this file are subject to the Red Hat eCos Public License 
+// Version 1.1 (the "License"); you may not use this file except in         
+// compliance with the License.  You may obtain a copy of the License at    
+// http://www.redhat.com/                                                   
+//                                                                          
+// 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 Configurable Operating System,      
+// released September 30, 1998.                                             
+//                                                                          
+// The Initial Developer of the Original Code is Red Hat.                   
+// Portions created by Red Hat are                                          
+// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
+// All Rights Reserved.                                                     
+// -------------------------------------------                              
+//                                                                          
+//####COPYRIGHTEND####
+//=============================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s):   nickg
+// Contributors:        nickg
+// Date:        1998-02-17
+// Purpose:     Cache control API
+// Description: The macros defined here provide the HAL APIs for handling
+//              cache control operations.
+// Usage:
+//              #include <cyg/hal/hal_cache.h>
+//              ...
+//              
+//
+//####DESCRIPTIONEND####
+//
+//=============================================================================
+
+#include <pkgconf/hal.h>
+#include <cyg/infra/cyg_type.h>
+
+#include <cyg/hal/var_cache.h>
+
+//-----------------------------------------------------------------------------
+#endif // ifndef CYGONCE_HAL_CACHE_H
+// End of hal_cache.h
new file mode 100644
--- /dev/null
+++ b/packages/hal/v85x/arch/current/include/hal_intr.h
@@ -0,0 +1,253 @@
+#ifndef CYGONCE_HAL_HAL_INTR_H
+#define CYGONCE_HAL_HAL_INTR_H
+
+//==========================================================================
+//
+//      hal_intr.h
+//
+//      HAL Interrupt and clock support
+//
+//==========================================================================
+//####COPYRIGHTBEGIN####
+//                                                                          
+// -------------------------------------------                              
+// The contents of this file are subject to the Red Hat eCos Public License 
+// Version 1.1 (the "License"); you may not use this file except in         
+// compliance with the License.  You may obtain a copy of the License at    
+// http://www.redhat.com/                                                   
+//                                                                          
+// 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 Configurable Operating System,      
+// released September 30, 1998.                                             
+//                                                                          
+// The Initial Developer of the Original Code is Red Hat.                   
+// Portions created by Red Hat are                                          
+// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
+// All Rights Reserved.                                                     
+// -------------------------------------------                              
+//                                                                          
+//####COPYRIGHTEND####
+//==========================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s):    nickg
+// Contributors: nickg, jskov, 
+//               gthomas, jlarmour
+// Date:         1999-02-16
+// Purpose:      Define Interrupt support
+// Description:  The macros defined here provide the HAL APIs for handling
+//               interrupts and the clock.
+//              
+// Usage:
+//              #include <cyg/hal/hal_intr.h>
+//              ...
+//              
+//
+//####DESCRIPTIONEND####
+//
+//==========================================================================
+
+#include <pkgconf/hal.h>
+#include <pkgconf/hal_v85x.h>
+
+#include <cyg/infra/cyg_type.h>
+#include <cyg/hal/hal_io.h>
+
+#include <cyg/hal/var_intr.h>
+
+//--------------------------------------------------------------------------
+// Static data used by HAL
+
+// ISR tables
+externC volatile CYG_ADDRESS    hal_interrupt_handlers[CYGNUM_HAL_ISR_COUNT];
+externC volatile CYG_ADDRWORD   hal_interrupt_data[CYGNUM_HAL_ISR_COUNT];
+externC volatile CYG_ADDRESS    hal_interrupt_objects[CYGNUM_HAL_ISR_COUNT];
+
+// VSR table
+externC volatile CYG_ADDRESS    hal_vsr_table[CYGNUM_HAL_VSR_COUNT];
+
+//--------------------------------------------------------------------------
+// Default ISR
+// The #define is used to test whether this routine exists, and to allow
+// us to call it.
+
+externC cyg_uint32 hal_default_isr(CYG_ADDRWORD vector, CYG_ADDRWORD data);
+
+#define HAL_DEFAULT_ISR hal_default_isr
+
+//--------------------------------------------------------------------------
+// Interrupt state storage
+
+typedef cyg_uint32 CYG_INTERRUPT_STATE;
+
+//--------------------------------------------------------------------------
+// Interrupt control macros
+
+externC cyg_uint32 hal_disable_interrupts(void);
+externC void       hal_enable_interrupts(void);
+externC void       hal_restore_interrupts(cyg_uint32);
+externC cyg_uint32 hal_query_interrupts(void);
+
+#ifdef CYGSEM_HAL_NEC_INLINE_INTERRUPT_FUNCTIONS        
+#define HAL_DISABLE_INTERRUPTS(_old_)                   \
+    CYG_MACRO_START                                     \
+    asm volatile (                                      \
+        "stsr  PSW,%0;"                                 \
+        "di"                                            \
+        : "=r"(_old_));                                 \
+    CYG_MACRO_END
+
+#define HAL_ENABLE_INTERRUPTS()                         \
+    CYG_MACRO_START                                     \
+    asm volatile (                                      \
+        "ei"                                            \
+        : );                                            \
+    CYG_MACRO_END
+
+#define HAL_RESTORE_INTERRUPTS(_old_)           \
+    CYG_MACRO_START                             \
+    asm volatile (                              \
+        "ldsr   %0,PSW"                         \
+        :                                       \
+        : "r" (_old_));                         \
+    CYG_MACRO_END
+#else
+#define HAL_DISABLE_INTERRUPTS(_old_)   _old_ = hal_disable_interrupts()
+#define HAL_ENABLE_INTERRUPTS()         hal_enable_interrupts()
+#define HAL_RESTORE_INTERRUPTS(_old_)   hal_restore_interrupts(_old_)
+#endif
+
+#define HAL_QUERY_INTERRUPTS( _state_ )         _state_ = hal_query_interrupts()
+
+//--------------------------------------------------------------------------
+// Routine to execute DSRs using separate interrupt stack
+
+#ifdef  CYGIMP_HAL_COMMON_INTERRUPTS_USE_INTERRUPT_STACK
+externC void hal_interrupt_stack_call_pending_DSRs(void);
+#define HAL_INTERRUPT_STACK_CALL_PENDING_DSRS() \
+    hal_interrupt_stack_call_pending_DSRs()
+
+// these are offered solely for stack usage testing
+// if they are not defined, then there is no interrupt stack.
+#define HAL_INTERRUPT_STACK_BASE cyg_interrupt_stack_base
+#define HAL_INTERRUPT_STACK_TOP  cyg_interrupt_stack
+// use them to declare these extern however you want:
+//       extern char HAL_INTERRUPT_STACK_BASE[];
+//       extern char HAL_INTERRUPT_STACK_TOP[];
+// is recommended
+#endif
+
+//--------------------------------------------------------------------------
+// Vector translation.
+// For chained interrupts we only have a single vector though which all
+// are passed. For unchained interrupts we have a vector per interrupt.
+// Note: this hardware does not have/support chained interrupts.
+
+#ifndef HAL_TRANSLATE_VECTOR
+#define HAL_TRANSLATE_VECTOR(_vector_,_index_) (_index_) = (_vector_-CYGNUM_HAL_ISR_MIN)
+#endif
+
+//--------------------------------------------------------------------------
+// Interrupt and VSR attachment macros
+
+#define HAL_INTERRUPT_IN_USE( _vector_, _state_)                          \
+    CYG_MACRO_START                                                       \
+    cyg_uint32 _index_;                                                   \
+    HAL_TRANSLATE_VECTOR ((_vector_), _index_);                           \
+                                                                          \
+    if( hal_interrupt_handlers[_index_] == (CYG_ADDRESS)HAL_DEFAULT_ISR ) \
+        (_state_) = 0;                                                    \
+    else                                                                  \
+        (_state_) = 1;                                                    \
+    CYG_MACRO_END
+
+#define HAL_INTERRUPT_ATTACH( _vector_, _isr_, _data_, _object_ )           \
+{                                                                           \
+    cyg_uint32 _index_;                                                     \
+    HAL_TRANSLATE_VECTOR( _vector_, _index_ );                              \
+                                                                            \
+    if( hal_interrupt_handlers[_index_] == (CYG_ADDRESS)HAL_DEFAULT_ISR )   \
+    {                                                                       \
+        hal_interrupt_handlers[_index_] = (CYG_ADDRESS)_isr_;               \
+        hal_interrupt_data[_index_] = (CYG_ADDRWORD)_data_;                 \
+        hal_interrupt_objects[_index_] = (CYG_ADDRESS)_object_;             \
+    }                                                                       \
+}
+
+#define HAL_INTERRUPT_DETACH( _vector_, _isr_ )                         \
+{                                                                       \
+    cyg_uint32 _index_;                                                 \
+    HAL_TRANSLATE_VECTOR( _vector_, _index_ );                          \
+                                                                        \
+    if( hal_interrupt_handlers[_index_] == (CYG_ADDRESS)_isr_ )         \
+    {                                                                   \
+        hal_interrupt_handlers[_index_] = (CYG_ADDRESS)HAL_DEFAULT_ISR; \
+        hal_interrupt_data[_index_] = 0;                                \
+        hal_interrupt_objects[_index_] = 0;                             \
+    }                                                                   \
+}
+
+#define HAL_VSR_GET( _vector_, _pvsr_ )                 \
+    *(_pvsr_) = (void (*)())hal_vsr_table[_vector_];
+    
+
+#define HAL_VSR_SET( _vector_, _vsr_, _poldvsr_ ) CYG_MACRO_START         \
+    if( _poldvsr_ != NULL)                                                \
+        *(CYG_ADDRESS *)_poldvsr_ = (CYG_ADDRESS)hal_vsr_table[_vector_]; \
+    hal_vsr_table[_vector_] = (CYG_ADDRESS)_vsr_;                         \
+CYG_MACRO_END
+
+// This is an ugly name, but what it means is: grab the VSR back to eCos
+// internal handling, or if you like, the default handler.  But if
+// cooperating with GDB and CygMon, the default behaviour is to pass most
+// exceptions to CygMon.  This macro undoes that so that eCos handles the
+// exception.  So use it with care.
+
+externC void __default_exception_vsr(void);
+externC void __default_interrupt_vsr(void);
+
+#define HAL_VSR_SET_TO_ECOS_HANDLER( _vector_, _poldvsr_ ) CYG_MACRO_START  \
+    HAL_VSR_SET( _vector_, _vector_ == CYGNUM_HAL_VECTOR_INTERRUPT          \
+                              ? (CYG_ADDRESS)__default_interrupt_vsr        \
+                              : (CYG_ADDRESS)__default_exception_vsr,       \
+                 _poldvsr_ );                                               \
+CYG_MACRO_END
+
+//--------------------------------------------------------------------------
+// Interrupt controller access
+
+externC void hal_interrupt_mask(int);
+externC void hal_interrupt_unmask(int);
+externC void hal_interrupt_acknowledge(int);
+
+#define HAL_INTERRUPT_MASK( _vector_ )          hal_interrupt_mask(_vector_)
+#define HAL_INTERRUPT_UNMASK( _vector_ )        hal_interrupt_unmask(_vector_)
+#define HAL_INTERRUPT_ACKNOWLEDGE( _vector_ )   hal_interrupt_acknowledge(_vector_)
+
+#define HAL_INTERRUPT_CONFIGURE( _vector_, _level_, _up_ )
+#define HAL_INTERRUPT_SET_LEVEL( _vector_, _level_ )
+
+//--------------------------------------------------------------------------
+// Clock control.
+
+externC CYG_WORD32 cyg_hal_clock_period;
+externC void hal_clock_initialize(cyg_int32);
+externC void hal_clock_reset(int, cyg_uint32);
+externC cyg_uint32 hal_clock_read(void);
+
+#define HAL_CLOCK_INITIALIZE( _period_ )        hal_clock_initialize(_period_)
+#define HAL_CLOCK_RESET( _vector_, _period_ )   hal_clock_reset(_vector_,_period_)
+#define HAL_CLOCK_READ( _pvalue_ )              *(_pvalue_) = hal_clock_read()
+
+#if defined(CYGVAR_KERNEL_COUNTERS_CLOCK_LATENCY) && \
+    !defined(HAL_CLOCK_LATENCY)
+#define HAL_CLOCK_LATENCY( _pvalue_ )           HAL_CLOCK_READ(_pvalue_)
+#endif
+
+//--------------------------------------------------------------------------
+#endif // ifndef CYGONCE_HAL_HAL_INTR_H
+// End of hal_intr.h
new file mode 100644
--- /dev/null
+++ b/packages/hal/v85x/arch/current/include/hal_io.h
@@ -0,0 +1,140 @@
+#ifndef CYGONCE_HAL_HAL_IO_H
+#define CYGONCE_HAL_HAL_IO_H
+
+//=============================================================================
+//
+//      hal_io.h
+//
+//      HAL device IO register support.
+//
+//=============================================================================
+//####COPYRIGHTBEGIN####
+//                                                                          
+// -------------------------------------------                              
+// The contents of this file are subject to the Red Hat eCos Public License 
+// Version 1.1 (the "License"); you may not use this file except in         
+// compliance with the License.  You may obtain a copy of the License at    
+// http://www.redhat.com/                                                   
+//                                                                          
+// 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 Configurable Operating System,      
+// released September 30, 1998.                                             
+//                                                                          
+// The Initial Developer of the Original Code is Red Hat.                   
+// Portions created by Red Hat are                                          
+// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
+// All Rights Reserved.                                                     
+// -------------------------------------------                              
+//                                                                          
+//####COPYRIGHTEND####
+//=============================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s):   nickg
+// Contributors:        nickg
+// Date:        1998-02-17
+// Purpose:     Define IO register support
+// Description: The macros defined here provide the HAL APIs for handling
+//              device IO control registers.
+//              
+// Usage:
+//              #include <cyg/hal/hal_io.h>
+//              ...
+//              
+//
+//####DESCRIPTIONEND####
+//
+//=============================================================================
+
+#include <pkgconf/hal.h>
+
+#include <cyg/infra/cyg_type.h>
+
+#include <cyg/hal/plf_io.h>
+
+//-----------------------------------------------------------------------------
+// IO Register address.
+// This type is for recording the address of an IO register.
+
+typedef volatile CYG_ADDRWORD HAL_IO_REGISTER;
+
+//-----------------------------------------------------------------------------
+// BYTE Register access.
+// Individual and vectorized access to 8 bit registers.
+
+#define HAL_READ_UINT8( _register_, _value_ ) \
+        ((_value_) = *((volatile CYG_BYTE *)(_register_)))
+
+#define HAL_WRITE_UINT8( _register_, _value_ ) \
+        (*((volatile CYG_BYTE *)(_register_)) = (_value_))
+
+#define HAL_READ_UINT8_VECTOR( _register_, _buf_, _count_, _step_ )     \
+{                                                                       \
+    cyg_count32 _i_,_j_;                                                \
+    for( _i_ = 0, _j_ = 0; _i_ < (_count_); _i_++, _j_ += (_step_))     \
+        (_buf_)[_i_] = ((volatile CYG_BYTE *)(_register_))[_j_];        \
+}
+
+#define HAL_WRITE_UINT8_VECTOR( _register_, _buf_, _count_, _step_ )    \
+{                                                                       \
+    cyg_count32 _i_,_j_;                                                \
+    for( _i_ = 0, _j_ = 0; _i_ < (_count_); _i_++, _j_ += (_step_))     \
+        ((volatile CYG_BYTE *)(_register_))[_j_] = (_buf_)[_i_];        \
+}
+
+
+//-----------------------------------------------------------------------------
+// 16 bit access.
+// Individual and vectorized access to 16 bit registers.
+    
+#define HAL_READ_UINT16( _register_, _value_ ) \
+        ((_value_) = *((volatile CYG_WORD16 *)(_register_)))
+
+#define HAL_WRITE_UINT16( _register_, _value_ ) \
+        (*((volatile CYG_WORD16 *)(_register_)) = (_value_))
+
+#define HAL_READ_UINT16_VECTOR( _register_, _buf_, _count_, _step_ )    \
+{                                                                       \
+    cyg_count32 _i_,_j_;                                                \
+    for( _i_ = 0, _j_ = 0; _i_ < (_count_); _i_++, _j_ += (_step_))     \
+        (_buf_)[_i_] = ((volatile CYG_WORD16 *)(_register_))[_j_];      \
+}
+
+#define HAL_WRITE_UINT16_VECTOR( _register_, _buf_, _count_, _step_ )   \
+{                                                                       \
+    cyg_count32 _i_,_j_;                                                \
+    for( _i_ = 0, _j_ = 0; _i_ < (_count_); _i_++, _j_ += (_step_))     \
+        ((volatile CYG_WORD16 *)(_register_))[_j_] = (_buf_)[_i_];      \
+}
+
+//-----------------------------------------------------------------------------
+// 32 bit access.
+// Individual and vectorized access to 32 bit registers.
+    
+#define HAL_READ_UINT32( _register_, _value_ ) \
+        ((_value_) = *((volatile CYG_WORD32 *)(_register_)))
+
+#define HAL_WRITE_UINT32( _register_, _value_ ) \
+        (*((volatile CYG_WORD32 *)(_register_)) = (_value_))
+
+#define HAL_READ_UINT32_VECTOR( _register_, _buf_, _count_, _step_ )    \
+{                                                                       \
+    cyg_count32 _i_,_j_;                                                \
+    for( _i_ = 0, _j_ = 0; _i_ < (_count_); _i_++, _j_ += (_step_))     \
+        (_buf_)[_i_] = ((volatile CYG_WORD32 *)(_register_))[_j_];      \
+}
+
+#define HAL_WRITE_UINT32_VECTOR( _register_, _buf_, _count_, _step_ )   \
+{                                                                       \
+    cyg_count32 _i_,_j_;                                                \
+    for( _i_ = 0, _j_ = 0; _i_ < (_count_); _i_++, _j_ += (_step_))     \
+        ((volatile CYG_WORD32 *)(_register_))[_j_] = (_buf_)[_i_];      \
+}
+
+//-----------------------------------------------------------------------------
+#endif // ifndef CYGONCE_HAL_HAL_IO_H
+// End of hal_io.h
new file mode 100644
--- /dev/null
+++ b/packages/hal/v85x/arch/current/include/nec-stub.h
@@ -0,0 +1,111 @@
+#ifndef CYGONCE_HAL_NEC_STUB_H
+#define CYGONCE_HAL_NEC_STUB_H
+//========================================================================
+//
+//      nec-stub.h
+//
+//      NEC-specific definitions for generic stub
+//
+//========================================================================
+//####COPYRIGHTBEGIN####
+//                                                                          
+// -------------------------------------------                              
+// The contents of this file are subject to the Red Hat eCos Public License 
+// Version 1.1 (the "License"); you may not use this file except in         
+// compliance with the License.  You may obtain a copy of the License at    
+// http://www.redhat.com/                                                   
+//                                                                          
+// 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 Configurable Operating System,      
+// released September 30, 1998.                                             
+//                                                                          
+// The Initial Developer of the Original Code is Red Hat.                   
+// Portions created by Red Hat are                                          
+// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
+// All Rights Reserved.                                                     
+// -------------------------------------------                              
+//                                                                          
+//####COPYRIGHTEND####
+//========================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s):     Red Hat, nickg
+// Contributors:  Red Hat, nickg
+// Date:          1998-06-08
+// Purpose:       
+// Description:   NEC-specific definitions for generic stub
+// Usage:         
+//
+//####DESCRIPTIONEND####
+//
+//========================================================================
+
+
+#include <pkgconf/system.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define NUMREGS    66
+#define REGSIZE(X) 4
+typedef unsigned long target_register_t;
+
+enum regnames {
+    R0,  R1,  SP,  R3,  R4,  R5,  R6,  R7,
+    R8,  R9 , R10, R11, R12, R13, R14, R15,
+    R16, R17, R18, R19, R20, R21, R22, R23,
+    R24, R25, R26, R27, R28, R29, R30, R31,
+    EIPC, EIPSW, FEPC, FEPSW, ECR, PSW, SR6, SR7,
+    SR8,  SR9 , SR10, SR11, SR12, SR13, SR14, SR15,
+    SR16, SR17, SR18, SR19, SR20, SR21, SR22, SR23,
+    SR24, SR25, SR26, SR27, SR28, SR29, SR30, SR31,
+    PC, FP
+};
+
+typedef enum regnames regnames_t;
+
+/* Given a trap value TRAP, return the corresponding signal. */
+extern int __computeSignal (unsigned int trap_number);
+
+/* Return the SPARC trap number corresponding to the last-taken trap. */
+extern int __get_trap_number (void);
+
+/* Return the currently-saved value corresponding to register REG. */
+extern target_register_t get_register (regnames_t reg);
+
+/* Store VALUE in the register corresponding to WHICH. */
+extern void put_register (regnames_t which, target_register_t value);
+
+/* Set the currently-saved pc register value to PC. This also updates NPC
+   as needed. */
+extern void set_pc (target_register_t pc);
+
+/* Set things up so that the next user resume will execute one instruction.
+   This may be done by setting breakpoints or setting a single step flag
+   in the saved user registers, for example. */
+void __single_step (void);
+
+/* Clear the single-step state. */
+void __clear_single_step (void);
+
+/* If the breakpoint we hit is in the breakpoint() instruction, return a
+   non-zero value. */
+extern int __is_breakpoint_function (void);
+
+/* Skip the current instruction. */
+extern void __skipinst (void);
+
+extern void __install_breakpoints (void);
+
+extern void __clear_breakpoints (void);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif // ifndef CYGONCE_HAL_NEC_STUB_H
new file mode 100644
--- /dev/null
+++ b/packages/hal/v85x/arch/current/src/hal_misc.c
@@ -0,0 +1,211 @@
+/*==========================================================================
+//
+//      hal_misc.c
+//
+//      HAL miscellaneous functions
+//
+//==========================================================================
+//####COPYRIGHTBEGIN####
+//                                                                          
+// -------------------------------------------                              
+// The contents of this file are subject to the Red Hat eCos Public License 
+// Version 1.1 (the "License"); you may not use this file except in         
+// compliance with the License.  You may obtain a copy of the License at    
+// http://www.redhat.com/                                                   
+//                                                                          
+// 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 Configurable Operating System,      
+// released September 30, 1998.                                             
+//                                                                          
+// The Initial Developer of the Original Code is Red Hat.                   
+// Portions created by Red Hat are                                          
+// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
+// All Rights Reserved.                                                     
+// -------------------------------------------                              
+//                                                                          
+//####COPYRIGHTEND####
+//==========================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s):    nickg, gthomas
+// Contributors: nickg, gthomas
+// Date:         1999-02-20
+// Purpose:      HAL miscellaneous functions
+// Description:  This file contains miscellaneous functions provided by the
+//               HAL.
+//
+//####DESCRIPTIONEND####
+//
+//=========================================================================*/
+
+#include <pkgconf/hal.h>
+#include <pkgconf/hal_v85x.h>
+#ifdef CYGPKG_KERNEL
+#include <pkgconf/kernel.h>
+#endif
+#ifdef CYGPKG_CYGMON
+#include <pkgconf/cygmon.h>
+#endif
+
+#include <cyg/infra/cyg_type.h>
+#include <cyg/infra/cyg_trac.h>         // tracing macros
+#include <cyg/infra/cyg_ass.h>          // assertion macros
+#include <cyg/infra/diag.h>
+
+#include <cyg/hal/hal_arch.h>           // HAL header
+#include <cyg/hal/hal_intr.h>           // HAL header
+
+/*------------------------------------------------------------------------*/
+/* First level C exception handler.                                       */
+
+externC void __handle_exception (void);
+
+externC HAL_SavedRegisters *_hal_registers;
+extern void *__mem_fault_handler;
+
+void
+exception_handler(HAL_SavedRegisters *regs)
+{
+#if defined(CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS) && !defined(CYGPKG_CYGMON)
+//    diag_printf("Exception! Frame: %x\n", regs);
+//    show_regs(regs);
+    static int gdb_active;
+    if (gdb_active == 0) {
+        gdb_active = 1;
+        _hal_registers = regs;
+        __handle_exception();
+        gdb_active = 0;
+    }
+
+#elif defined(CYGPKG_KERNEL_EXCEPTIONS)
+
+    // We should decode the vector and pass a more appropriate
+    // value as the second argument. For now we simply pass a
+    // pointer to the saved registers. We should also divert
+    // breakpoint and other debug vectors into the debug stubs.
+
+    cyg_hal_deliver_exception( regs->vector, (CYG_ADDRWORD)regs );
+
+#else
+
+    CYG_FAIL("Exception!!!");
+    
+#endif    
+    
+    return;
+}
+
+/*------------------------------------------------------------------------*/
+/* C++ support - run initial constructors                                 */
+
+#ifdef CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
+cyg_bool cyg_hal_stop_constructors;
+#endif
+
+typedef void (*pfunc) (void);
+extern pfunc __CTOR_LIST__[];
+extern pfunc __CTOR_END__[];
+
+void
+cyg_hal_invoke_constructors (void)
+{
+
+#ifdef CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
+    static pfunc *p = &__CTOR_END__[-1];
+    
+    cyg_hal_stop_constructors = 0;
+    for (; p >= __CTOR_LIST__; p--) {
+        (*p) ();
+        if (cyg_hal_stop_constructors) {
+            p--;
+            break;
+        }
+    }
+#else
+    pfunc *p;
+
+    for (p = &__CTOR_END__[-1]; p >= __CTOR_LIST__; p--) {
+        (*p) ();
+    }
+#endif
+}
+
+/*------------------------------------------------------------------------*/
+/* default ISR                                                            */
+
+externC cyg_uint32
+hal_default_isr(CYG_ADDRWORD vector, CYG_ADDRWORD data)
+{
+    CYG_TRACE1(true, "Interrupt: %d", vector);
+
+#ifndef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
+#ifdef CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT
+#ifdef CYGDBG_HAL_CTRLC_ISR
+    // then see if it is an incoming character interrupt and break
+    // into the stub ROM if the char is a ^C.
+    if ( CYGDBG_HAL_CTRLC_ISR( vector, data ) )
+        return 1; // interrupt handled
+#endif
+#endif
+#endif
+
+    diag_printf("Spurious Interrupt!!! - vector: %d, data: %x\n", vector, 
+                data);
+    CYG_FAIL("Spurious Interrupt!!!");
+    return 0;
+}
+
+/*------------------------------------------------------------------------*/
+/* Idle thread action                                                     */
+
+void
+hal_idle_thread_action( cyg_uint32 count )
+{
+}
+
+/*-------------------------------------------------------------------------*/
+/* Misc functions                                                          */
+
+cyg_uint32
+hal_lsbit_index(cyg_uint32 mask)
+{
+    int i;
+    for (i = 0;  i < 32;  i++) {
+      if (mask & (1<<i)) return ((cyg_uint32)i);
+    }
+    return ((cyg_uint32)-1);
+}
+
+cyg_uint32
+hal_msbit_index(cyg_uint32 mask)
+{
+    int i;
+    for (i = 32;  i >= 0;  i++) {
+      if (mask & (1<<i)) return ((cyg_uint32)i);
+    }
+    return ((cyg_uint32)-1);
+}
+
+void
+show_regs(HAL_SavedRegisters *regs)
+{
+    int i;
+    diag_printf("Regs\n");
+    for (i = 0;  i < 32;  i++) {
+        if ((i % 8) == 0) {
+            diag_printf("R%2d: ", i);
+        }
+        diag_printf("0x%08x ", regs->d[i]);
+        if ((i % 8) == 7) {
+            diag_printf("\n");
+        }
+    }
+    diag_printf("PC = %x, PSW = %x\n", regs->pc, regs->psw);
+}
+
+/*------------------------------------------------------------------------*/
+// EOF hal_misc.c
new file mode 100644
--- /dev/null
+++ b/packages/hal/v85x/arch/current/src/hal_mk_defs.c
@@ -0,0 +1,161 @@
+//==========================================================================
+//
+//      hal_mk_defs.c
+//
+//      HAL (architecture) "make defs" program
+//
+//==========================================================================
+//####COPYRIGHTBEGIN####
+//                                                                          
+// -------------------------------------------                              
+// The contents of this file are subject to the Red Hat eCos Public License 
+// Version 1.1 (the "License"); you may not use this file except in         
+// compliance with the License.  You may obtain a copy of the License at    
+// http://www.redhat.com/                                                   
+//                                                                          
+// 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 Configurable Operating System,      
+// released September 30, 1998.                                             
+//                                                                          
+// The Initial Developer of the Original Code is Red Hat.                   
+// Portions created by Red Hat are                                          
+// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
+// All Rights Reserved.                                                     
+// -------------------------------------------                              
+//                                                                          
+//####COPYRIGHTEND####
+//==========================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s):    gthomas
+// Contributors: gthomas, jskov
+// Date:         2000-02-21
+// Purpose:      SH architecture dependent definition generator
+// Description:  This file contains code that can be compiled by the target
+//               compiler and used to generate machine specific definitions
+//               suitable for use in assembly code.
+//
+//####DESCRIPTIONEND####
+//
+//==========================================================================
+
+#include <pkgconf/hal.h>
+
+#include <cyg/hal/hal_arch.h>           // HAL header
+#include <cyg/hal/hal_intr.h>           // HAL header
+#ifdef CYGPKG_KERNEL
+# include <pkgconf/kernel.h>
+# include <cyg/kernel/instrmnt.h>
+#endif
+
+/*
+ * This program is used to generate definitions needed by
+ * assembly language modules.
+ *
+ * This technique was first used in the OSF Mach kernel code:
+ * generate asm statements containing #defines,
+ * compile this file to assembler, and then extract the
+ * #defines from the assembly-language output.
+ */
+
+#define DEFINE(sym, val) \
+        asm volatile("\n\t.equ\t" #sym ",%0" : : "i" (val))
+
+int
+main(void)
+{
+    // setjmp/longjmp buffer
+    DEFINE(CYGARC_JMPBUF_SP, offsetof(hal_jmp_buf_t, sp));
+    DEFINE(CYGARC_JMPBUF_GP, offsetof(hal_jmp_buf_t, gp));
+    DEFINE(CYGARC_JMPBUF_TP, offsetof(hal_jmp_buf_t, tp));
+    DEFINE(CYGARC_JMPBUF_R1, offsetof(hal_jmp_buf_t, r1));
+    DEFINE(CYGARC_JMPBUF_R2, offsetof(hal_jmp_buf_t, r2));
+    DEFINE(CYGARC_JMPBUF_R4, offsetof(hal_jmp_buf_t, r4));
+    DEFINE(CYGARC_JMPBUF_R5, offsetof(hal_jmp_buf_t, r5));
+    DEFINE(CYGARC_JMPBUF_R20, offsetof(hal_jmp_buf_t, r20));
+    DEFINE(CYGARC_JMPBUF_R21, offsetof(hal_jmp_buf_t, r21));
+    DEFINE(CYGARC_JMPBUF_R22, offsetof(hal_jmp_buf_t, r22));
+    DEFINE(CYGARC_JMPBUF_R23, offsetof(hal_jmp_buf_t, r23));
+    DEFINE(CYGARC_JMPBUF_R24, offsetof(hal_jmp_buf_t, r24));
+    DEFINE(CYGARC_JMPBUF_R25, offsetof(hal_jmp_buf_t, r25));
+    DEFINE(CYGARC_JMPBUF_R26, offsetof(hal_jmp_buf_t, r26));
+    DEFINE(CYGARC_JMPBUF_R27, offsetof(hal_jmp_buf_t, r27));
+    DEFINE(CYGARC_JMPBUF_R28, offsetof(hal_jmp_buf_t, r28));
+    DEFINE(CYGARC_JMPBUF_FP, offsetof(hal_jmp_buf_t, fp));
+    DEFINE(CYGARC_JMPBUF_EP, offsetof(hal_jmp_buf_t, ep));
+    DEFINE(CYGARC_JMPBUF_LP, offsetof(hal_jmp_buf_t, lp));
+
+    DEFINE(CYGARC_JMPBUF_SIZE, sizeof(hal_jmp_buf_t));
+
+    // Exception/interrupt/context save buffer
+    DEFINE(CYGARC_REG_R1, offsetof(HAL_SavedRegisters, d[1]));
+    DEFINE(CYGARC_REG_R2, offsetof(HAL_SavedRegisters, d[2]));
+    DEFINE(CYGARC_REG_R3, offsetof(HAL_SavedRegisters, d[3]));
+    DEFINE(CYGARC_REG_SP, offsetof(HAL_SavedRegisters, d[3]));
+    DEFINE(CYGARC_REG_R4, offsetof(HAL_SavedRegisters, d[4]));
+    DEFINE(CYGARC_REG_R5, offsetof(HAL_SavedRegisters, d[5]));
+    DEFINE(CYGARC_REG_R6, offsetof(HAL_SavedRegisters, d[6]));
+    DEFINE(CYGARC_REG_R7, offsetof(HAL_SavedRegisters, d[7]));
+    DEFINE(CYGARC_REG_R8, offsetof(HAL_SavedRegisters, d[8]));
+    DEFINE(CYGARC_REG_R9, offsetof(HAL_SavedRegisters, d[9]));
+    DEFINE(CYGARC_REG_R10, offsetof(HAL_SavedRegisters, d[10]));
+    DEFINE(CYGARC_REG_R11, offsetof(HAL_SavedRegisters, d[11]));
+    DEFINE(CYGARC_REG_R12, offsetof(HAL_SavedRegisters, d[12]));
+    DEFINE(CYGARC_REG_R13, offsetof(HAL_SavedRegisters, d[13]));
+    DEFINE(CYGARC_REG_R14, offsetof(HAL_SavedRegisters, d[14]));
+    DEFINE(CYGARC_REG_R15, offsetof(HAL_SavedRegisters, d[15]));
+    DEFINE(CYGARC_REG_R16, offsetof(HAL_SavedRegisters, d[16]));
+    DEFINE(CYGARC_REG_R17, offsetof(HAL_SavedRegisters, d[17]));
+    DEFINE(CYGARC_REG_R18, offsetof(HAL_SavedRegisters, d[18]));
+    DEFINE(CYGARC_REG_R19, offsetof(HAL_SavedRegisters, d[19]));
+    DEFINE(CYGARC_REG_R20, offsetof(HAL_SavedRegisters, d[20]));
+    DEFINE(CYGARC_REG_R21, offsetof(HAL_SavedRegisters, d[21]));
+    DEFINE(CYGARC_REG_R22, offsetof(HAL_SavedRegisters, d[22]));
+    DEFINE(CYGARC_REG_R23, offsetof(HAL_SavedRegisters, d[23]));
+    DEFINE(CYGARC_REG_R24, offsetof(HAL_SavedRegisters, d[24]));
+    DEFINE(CYGARC_REG_R25, offsetof(HAL_SavedRegisters, d[25]));
+    DEFINE(CYGARC_REG_R26, offsetof(HAL_SavedRegisters, d[26]));
+    DEFINE(CYGARC_REG_R27, offsetof(HAL_SavedRegisters, d[27]));
+    DEFINE(CYGARC_REG_R28, offsetof(HAL_SavedRegisters, d[28]));
+    DEFINE(CYGARC_REG_R29, offsetof(HAL_SavedRegisters, d[29]));
+    DEFINE(CYGARC_REG_R30, offsetof(HAL_SavedRegisters, d[30]));
+    DEFINE(CYGARC_REG_R31, offsetof(HAL_SavedRegisters, d[31]));
+    DEFINE(CYGARC_REG_EP, offsetof(HAL_SavedRegisters, d[30]));
+    DEFINE(CYGARC_REG_LP, offsetof(HAL_SavedRegisters, d[31]));
+    DEFINE(CYGARC_REG_PSW, offsetof(HAL_SavedRegisters, psw));
+    DEFINE(CYGARC_REG_PC, offsetof(HAL_SavedRegisters, pc));
+
+    // Below only saved on exceptions/interrupts
+    DEFINE(CYGARC_REG_CAUSE, offsetof(HAL_SavedRegisters, cause));
+    DEFINE(CYGARC_REG_VECTOR, offsetof(HAL_SavedRegisters, vector));
+
+    DEFINE(CYGARC_EXCEPTION_FRAME_SIZE, sizeof(HAL_SavedRegisters));
+
+    // Some other exception related definitions
+    DEFINE(CYGNUM_HAL_ISR_MIN, CYGNUM_HAL_ISR_MIN);
+    DEFINE(CYGNUM_HAL_ISR_COUNT, CYGNUM_HAL_ISR_COUNT);
+    DEFINE(CYGNUM_HAL_VSR_MAX, CYGNUM_HAL_VSR_MAX);
+    DEFINE(CYGNUM_HAL_VSR_COUNT, CYGNUM_HAL_VSR_COUNT);
+    DEFINE(CYGNUM_HAL_EXCEPTION_COUNT, CYGNUM_HAL_EXCEPTION_COUNT);
+    DEFINE(CYGNUM_HAL_VECTOR_WATCHDOG_TIMER, CYGNUM_HAL_VECTOR_WATCHDOG_TIMER);
+    DEFINE(CYGNUM_HAL_VECTOR_TRAP0, CYGNUM_HAL_VECTOR_TRAP0);
+    DEFINE(CYGNUM_HAL_VECTOR_TRAP1, CYGNUM_HAL_VECTOR_TRAP1);
+    DEFINE(CYGNUM_HAL_VECTOR_ILLEGAL_OPCODE, CYGNUM_HAL_VECTOR_ILLEGAL_OPCODE);
+    
+    DEFINE(CYGARC_PSW_ID, CYGARC_PSW_ID);
+    DEFINE(CYGARC_PSW_EP, CYGARC_PSW_EP);
+    DEFINE(CYGARC_PSW_NP, CYGARC_PSW_NP);
+
+#ifdef CYGPKG_KERNEL
+    DEFINE(RAISE_INTR, CYG_INSTRUMENT_CLASS_INTR|CYG_INSTRUMENT_EVENT_INTR_RAISE);
+#endif
+
+    // Variant definitions - want these to be included instead.
+}
+
+//--------------------------------------------------------------------------
+// EOF hal_mk_defs.c
new file mode 100644
--- /dev/null
+++ b/packages/hal/v85x/arch/current/src/v85x.ld
@@ -0,0 +1,123 @@
+//=============================================================================
+//
+// MLT linker script for NEC
+// adapted from packages/hal/arm/pid/v1_1/src/pid.ld
+//
+//=============================================================================
+//####COPYRIGHTBEGIN####
+//                                                                          
+// -------------------------------------------                              
+// The contents of this file are subject to the Red Hat eCos Public License 
+// Version 1.1 (the "License"); you may not use this file except in         
+// compliance with the License.  You may obtain a copy of the License at    
+// http://www.redhat.com/                                                   
+//                                                                          
+// 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 Configurable Operating System,      
+// released September 30, 1998.                                             
+//                                                                          
+// The Initial Developer of the Original Code is Red Hat.                   
+// Portions created by Red Hat are                                          
+// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
+// All Rights Reserved.                                                     
+// -------------------------------------------                              
+//                                                                          
+//####COPYRIGHTEND####
+//=============================================================================
+
+#include <pkgconf/system.h>
+
+STARTUP(vectors.o)
+ENTRY(reset_vector)
+#ifdef EXTRAS
+INPUT(extras.o)
+#endif
+GROUP(libtarget.a libgcc.a)
+
+#define ALIGN_LMA 4
+#define FOLLOWING(_section_) AT ((LOADADDR (_section_) + SIZEOF (_section_) + ALIGN_LMA - 1) & ~ (ALIGN_LMA - 1))
+#define LMA_EQ_VMA
+#define FORCE_OUTPUT . = .
+
+#define SECTIONS_BEGIN                          \
+  /* Debug information */                       \
+  .debug_aranges  0 : { *(.debug_aranges) }     \
+  .debug_pubnames 0 : { *(.debug_pubnames) }    \
+  .debug_info     0 : { *(.debug_info) }        \
+  .debug_abbrev   0 : { *(.debug_abbrev) }      \
+  .debug_line     0 : { *(.debug_line) }        \
+  .debug_frame    0 : { *(.debug_frame) }       \
+  .debug_str      0 : { *(.debug_str) }         \
+  .debug_loc      0 : { *(.debug_loc) }         \
+  .debug_macinfo  0 : { *(.debug_macinfo) }
+
+#define SECTION_rom_vectors(_region_, _vma_, _lma_) \
+    .rom_vectors _vma_ : _lma_ \
+    { FORCE_OUTPUT; KEEP (*(.vectors)) } \
+    > _region_
+
+#define SECTION_text(_region_, _vma_, _lma_) \
+    .text _vma_ : _lma_ \
+    { stext = ABSOLUTE(.); \
+    PROVIDE (__stext = ABSOLUTE(.)); \
+    *(.text*) *(.gnu.warning) *(.gnu.linkonce*) *(.init) \
+    *(.glue_7) *(.glue_7t)  \
+    } > _region_ \
+    etext = .; PROVIDE (__etext = .);
+
+#define SECTION_fini(_region_, _vma_, _lma_) \
+    .fini _vma_ : _lma_ \
+    { FORCE_OUTPUT; *(.fini) } \
+    > _region_
+
+#define SECTION_rodata(_region_, _vma_, _lma_) \
+    .rodata _vma_ : _lma_ \
+    { FORCE_OUTPUT; *(.rodata*) } \
+    > _region_
+
+#define SECTION_rodata1(_region_, _vma_, _lma_) \
+    .rodata1 _vma_ : _lma_ \
+    { FORCE_OUTPUT; *(.rodata1) } \
+    > _region_
+
+#define SECTION_fixup(_region_, _vma_, _lma_) \
+    .fixup _vma_ : _lma_ \
+    { FORCE_OUTPUT; *(.fixup) } \
+    > _region_
+
+#define SECTION_gcc_except_table(_region_, _vma_, _lma_) \
+    .gcc_except_table _vma_ : _lma_ \
+    { FORCE_OUTPUT; *(.gcc_except_table) } \
+    > _region_
+
+#define SECTION_data(_region_,  _vma_, _lma_) \
+    .data _vma_ : _lma_ \
+    { __ram_data_start = ABSOLUTE (.); *(.data*) *(.data1) MERGE_IN_RODATA \
+    _GOT1_START_ = ABSOLUTE (.); *(.got1) _GOT1_END_ = ABSOLUTE (.); \
+    _GOT2_START_ = ABSOLUTE (.); *(.got2) _GOT2_END_ = ABSOLUTE (.); \
+    . = ALIGN (4); \
+    __DEVTAB__ = ABSOLUTE (.); KEEP (*(SORT (.devtab*))) __DEVTAB_END__ = ABSOLUTE (.); \
+    __NETDEVTAB__ = ABSOLUTE (.); KEEP (*(SORT (.netdevtab*))) __NETDEVTAB_END__ = ABSOLUTE (.); \
+    __CTOR_LIST__ = ABSOLUTE (.); KEEP (*(SORT (.ctors*))) __CTOR_END__ = ABSOLUTE (.); \
+    __DTOR_LIST__ = ABSOLUTE (.); KEEP (*(SORT (.dtors*))) __DTOR_END__ = ABSOLUTE (.); \
+    *(.dynamic) *(.sdata*) *(.sbss*) } \
+    > _region_ \
+    __rom_data_start = LOADADDR (.data); \
+    __ram_data_end = .; PROVIDE (__ram_data_end = .); _edata = .; PROVIDE (edata = .); \
+    PROVIDE (__rom_data_end = LOADADDR (.data) + SIZEOF(.data));
+
+#define SECTION_bss(_region_,  _vma_, _lma_) \
+    .bss _vma_ : _lma_ \
+    { __bss_start = ABSOLUTE (.); \
+    *(.scommon) *(.dynbss) *(.bss*) *(COMMON) \
+    __bss_end = ABSOLUTE (.); } \
+    > _region_
+
+#define SECTIONS_END . = ALIGN(4); _end = .; PROVIDE (end = .); \
+
+#include <pkgconf/hal_v85x.h>
+#include CYGHWR_MEMORY_LAYOUT_LDI
new file mode 100644
--- /dev/null
+++ b/packages/hal/v85x/arch/current/src/vectors.S
@@ -0,0 +1,518 @@
+// #========================================================================
+// #
+// #    vectors.S
+// #
+// #    NEC/V85x exception/interrupt vectors
+// #
+// #========================================================================
+// ####COPYRIGHTBEGIN####
+//                                                                          
+// -------------------------------------------                              
+// The contents of this file are subject to the Red Hat eCos Public License 
+// Version 1.1 (the "License"); you may not use this file except in         
+// compliance with the License.  You may obtain a copy of the License at    
+// http://www.redhat.com/                                                   
+//                                                                          
+// 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 Configurable Operating System,      
+// released September 30, 1998.                                             
+//                                                                          
+// The Initial Developer of the Original Code is Red Hat.                   
+// Portions created by Red Hat are                                          
+// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
+// All Rights Reserved.                                                     
+// -------------------------------------------                              
+//                                                                          
+// ####COPYRIGHTEND####
+// #========================================================================
+// ######DESCRIPTIONBEGIN####
+// #
+// # Author(s):     gthomas
+// # Contributors:  gthomas
+// # Date:          2000-03-10
+// # Purpose:       NEC/V85x exception vectors
+// # Description:   This file defines the code placed into the exception
+// #                vectors. It also contains the first level default VSRs
+// #		    that save and restore state for both exceptions and
+// #		    interrupts.
+// #
+// #####DESCRIPTIONEND####
+// #
+// #========================================================================
+
+#include <pkgconf/hal.h>
+#include <pkgconf/hal_v85x.h>
+#ifdef CYGPKG_KERNEL  // no CDL yet
+#include <pkgconf/kernel.h>
+#else
+# undef CYGFUN_HAL_COMMON_KERNEL_SUPPORT
+# undef CYGIMP_HAL_COMMON_INTERRUPTS_USE_INTERRUPT_STACK
+#endif
+#include <cyg/hal/hal_platform_setup.h>
+
+#include <cyg/hal/nec_offsets.inc>
+
+// Two different macros in case we ever decide to differentiate
+// between exceptions and interrupts.                
+        .macro  EXCEPTION
+        .org    reset_vector+(0x0010*VECTOR)
+        addi    -CYGARC_EXCEPTION_FRAME_SIZE,sp,sp
+        st.w    r1,CYGARC_REG_R1[sp]
+        movea   VECTOR,r0,r1
+        .set    VECTOR, VECTOR+1
+        jr      exception
+        .endm
+
+        .macro  INTERRUPT
+        .org    reset_vector+(0x0010*VECTOR)
+        addi    -CYGARC_EXCEPTION_FRAME_SIZE,sp,sp
+        st.w    r1,CYGARC_REG_R1[sp]
+        movea   VECTOR,r0,r1
+        jr      exception
+        .set    VECTOR, VECTOR+1
+        .endm
+
+        .text
+        .globl  reset_vector
+reset_vector:
+        
+#ifdef CYG_HAL_STARTUP_ROM
+//
+// These are the hardware exception vectors.
+//                        
+__ROM_vsr:
+        // 0x000
+        jr      start
+
+        .set    VECTOR, 1
+        .rept   CYGNUM_HAL_EXCEPTION_COUNT-1
+        EXCEPTION
+        .endr
+        .set    VECTOR, 8                
+        .rept   CYGNUM_HAL_ISR_COUNT
+        INTERRUPT
+        .endr               
+#endif  // CYG_HAL_STARTUP_ROM
+        
+        .globl  start
+start:
+        // Perform hardware initialization
+        PLATFORM_SETUP1
+        
+#ifdef CYG_HAL_STARTUP_ROM
+	// Relocate [copy] data from ROM to RAM
+        lea     ___rom_data_start,r6
+        lea     ___ram_data_start,r7
+        lea     ___ram_data_end,r8
+1:      ld.w    0[r6],r1
+        st.w    r1,0[r7]
+        addi    4,r6,r6
+        addi    4,r7,r7
+        cmp     r7,r8
+        bne     1b 
+#endif
+        // Initialize stack
+        lea     __startup_stack,r1
+        mov     r1,sp
+
+        // Clear BSS
+        lea     ___bss_start,r6
+        lea     ___bss_end,r7
+1:      st.w    r0,0[r6]
+        addi    4,r6,r6
+        cmp     r6,r7
+        bne     1b        
+
+#ifdef CYG_HAL_STARTUP_ROM
+        // Built initial trap VSR tables
+        lea     __vsr_table,r6
+        lea     __vsr_table_end,r9
+#if 0        
+        lea     __ROM_vsr,r7
+        mov     r6,r8
+        sub     r7,r8
+        lea     0x003FFFFF,r7        
+        and     r7,r8
+        lea     0x07800000,r7
+        or      r7,r8
+#else
+        lea     0x00000794,r8   // jr 0x0100xx0
+#endif                
+10:     st.w    r8,0[r6]
+        addi    16,r6,r6
+        cmp     r6,r9
+        bne     10b
+#else
+// Set up VSR pointers into this application/image
+        lea     _hal_vsr_table+(CYGNUM_HAL_EXCEPTION_COUNT*4),r6
+        movea   CYGNUM_HAL_ISR_COUNT,r0,r7
+        lea     do_interrupt,r8
+10:     st.w    r8,0[r6]
+        addi    4,r6,r6
+        addi    -1,r7,r7
+        bne     10b        
+#endif
+
+        // Initialize hardware
+        jarl    _cyg_hal_hardware_init,r31
+
+#ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
+#ifndef CYG_HAL_STARTUP_ROM
+// Need to handle exceptions as well
+        lea     _hal_vsr_table,r6
+        movea   CYGNUM_HAL_EXCEPTION_COUNT,r0,r7
+        lea     do_exception,r8
+10:     st.w    r8,0[r6]
+        addi    4,r6,r6
+        addi    -1,r7,r7
+        bne     10b        
+#endif        
+        jarl    _initialize_stub,r31
+#endif
+        
+        // Run through static constructors
+        jarl    _cyg_hal_invoke_constructors,r31
+
+        // Ready to start the eCos kernel
+        jarl    _cyg_start,r31
+
+        // If we get here, something is _very_ wrong
+_start_hang:    
+        br      _start_hang
+        
+#ifdef CYG_HAL_STARTUP_ROM
+        // Handle exception
+exception:
+        // save exception context
+        st.w    ep,CYGARC_REG_EP[sp]
+        mov     sp,ep
+        st.w    r1,CYGARC_REG_VECTOR[ep]
+        addi    CYGARC_EXCEPTION_FRAME_SIZE,ep,r1
+        sst.w   r2,CYGARC_REG_R2[ep]        
+        sst.w   r1,CYGARC_REG_SP[ep] 
+        sst.w   r4,CYGARC_REG_R4[ep]        
+        sst.w   r5,CYGARC_REG_R5[ep]        
+        sst.w   r6,CYGARC_REG_R6[ep]        
+        sst.w   r7,CYGARC_REG_R7[ep]        
+        sst.w   r8,CYGARC_REG_R8[ep]        
+        sst.w   r9,CYGARC_REG_R9[ep]        
+        sst.w   r10,CYGARC_REG_R10[ep]        
+        sst.w   r11,CYGARC_REG_R11[ep]        
+        sst.w   r12,CYGARC_REG_R12[ep]        
+        sst.w   r13,CYGARC_REG_R13[ep]        
+        sst.w   r14,CYGARC_REG_R14[ep]        
+        sst.w   r15,CYGARC_REG_R15[ep]        
+        sst.w   r16,CYGARC_REG_R16[ep]        
+        sst.w   r17,CYGARC_REG_R17[ep]        
+        sst.w   r18,CYGARC_REG_R18[ep]        
+        sst.w   r19,CYGARC_REG_R19[ep]        
+        sst.w   r20,CYGARC_REG_R20[ep]        
+        sst.w   r21,CYGARC_REG_R21[ep]        
+        sst.w   r22,CYGARC_REG_R22[ep]        
+        sst.w   r23,CYGARC_REG_R23[ep]        
+        sst.w   r24,CYGARC_REG_R24[ep]        
+        sst.w   r25,CYGARC_REG_R25[ep]        
+        sst.w   r26,CYGARC_REG_R26[ep]        
+        sst.w   r27,CYGARC_REG_R27[ep]        
+        sst.w   r28,CYGARC_REG_R28[ep]        
+        sst.w   r29,CYGARC_REG_R29[ep]        
+        ld.w    CYGARC_REG_VECTOR[ep],r8
+        sst.w   lp,CYGARC_REG_LP[ep]
+        cmp     CYGNUM_HAL_VECTOR_TRAP0,r8  // NMI?
+        bge     05f
+        stsr    FEPC,r6                 // saved state differs
+        stsr    FEPSW,r7
+        br      20f
+05:     stsr    EIPC,r6
+        cmp     CYGNUM_HAL_VECTOR_ILLEGAL_OPCODE,r8 // Illegal opcode?
+        bne     10f
+        addi    -4,r6,r6                // yes, adjust PC
+10:     stsr    EIPSW,r7        
+20:     st.w    r6,CYGARC_REG_PC[ep]
+        st.w    r7,CYGARC_REG_PSW[ep]
+        stsr    ECR,r6
+        st.w    r6,CYGARC_REG_CAUSE[ep]
+        // Reenable exception processing
+        stsr    PSW,r6
+        andi    ~(CYGARC_PSW_EP|CYGARC_PSW_NP),r6,r6
+        ldsr    r6,PSW
+        shl     2,r8
+        lea     _hal_vsr_table,r1
+        add     r1,r8
+        ld.w    0[r8],r1
+        jmp     [r1]
+#endif
+        
+do_exception:
+        mov     sp,r6
+        jarl    _exception_handler,r31
+
+return_from_exception_or_interrupt: 
+        mov     sp,ep            
+        ld.w    CYGARC_REG_PSW[ep],r7
+        sld.w   CYGARC_REG_R1[ep],r1
+        ld.w    CYGARC_REG_PC[ep],r6
+        sld.w   CYGARC_REG_R2[ep],r2       
+        // disable interrupts while restoring context
+        ld.w    CYGARC_REG_VECTOR[ep],r4
+        stsr    PSW,r8
+        cmp     CYGNUM_HAL_VECTOR_TRAP0,r4
+        bge     10f
+        ori     CYGARC_PSW_NP,r8,r8     // returning from NMI
+        ori     CYGARC_PSW_ID,r8,r8     // disable interrupt
+        ldsr    r8,PSW
+        ldsr    r7,FEPSW
+        ldsr    r6,FEPC
+        br      30f
+10:     cmp     CYGNUM_HAL_ISR_MIN,r4   // exception or interrupt
+        bge     20f
+        ori     CYGARC_PSW_EP,r8,r8     // returning from exception
+20:     ori     CYGARC_PSW_ID,r8,r8     // disable interrupt
+        ldsr    r8,PSW
+        ldsr    r7,EIPSW                // Avoid pipline bubbles
+        ldsr    r6,EIPC
+30:     sld.w   CYGARC_REG_R4[ep],r4
+        sld.w   CYGARC_REG_R5[ep],r5      
+        sld.w   CYGARC_REG_R6[ep],r6      
+        sld.w   CYGARC_REG_R7[ep],r7      
+        sld.w   CYGARC_REG_R8[ep],r8      
+        sld.w   CYGARC_REG_R9[ep],r9      
+        sld.w   CYGARC_REG_R10[ep],r10       
+        sld.w   CYGARC_REG_R11[ep],r11     
+        sld.w   CYGARC_REG_R12[ep],r12
+        sld.w   CYGARC_REG_R13[ep],r13              
+        sld.w   CYGARC_REG_R14[ep],r14       
+        sld.w   CYGARC_REG_R15[ep],r15       
+        sld.w   CYGARC_REG_R16[ep],r16       
+        sld.w   CYGARC_REG_R17[ep],r17       
+        sld.w   CYGARC_REG_R18[ep],r18               
+        sld.w   CYGARC_REG_R19[ep],r19       
+        sld.w   CYGARC_REG_R20[ep],r20       
+        sld.w   CYGARC_REG_R21[ep],r21       
+        sld.w   CYGARC_REG_R22[ep],r22       
+        sld.w   CYGARC_REG_R23[ep],r23       
+        sld.w   CYGARC_REG_R24[ep],r24       
+        sld.w   CYGARC_REG_R25[ep],r25       
+        sld.w   CYGARC_REG_R26[ep],r26       
+        sld.w   CYGARC_REG_R27[ep],r27       
+        sld.w   CYGARC_REG_R28[ep],r28       
+        sld.w   CYGARC_REG_R29[ep],r29       
+        sld.w   CYGARC_REG_LP[ep],lp
+        sld.w   CYGARC_REG_SP[ep],sp
+        sld.w   CYGARC_REG_EP[ep],ep
+        reti
+        
+        // Handle interrupt - these are typically vectored into user code
+do_interrupt:
+        mov     sp,ep                   // save pointer to regs frame
+
+#ifdef CYGIMP_HAL_COMMON_INTERRUPTS_USE_INTERRUPT_STACK
+	// Switch to interrupt stack
+        lea     irq_level,r6            // current number of nested interrupts
+        ld.w    0[r6],r7
+        addi    1,r7,r8
+        st.w    r8,0[r6]
+        cmp     0,r7                    // if was zero, switch stacks
+        bne     10f
+        mov     sp,r1                   // save old stack pointer
+        lea     __interrupt_stack-4,r2
+        mov     r2,sp
+        st.w    r1,0[sp]                
+10:
+#endif // CYGIMP_HAL_COMMON_INTERRUPTS_USE_INTERRUPT_STACK
+
+        // The entire CPU state is now stashed on the stack,
+        // increment the scheduler lock and handle the interrupt
+
+#ifdef CYGFUN_HAL_COMMON_KERNEL_SUPPORT			
+        .extern	cyg_scheduler_sched_lock
+        lea     cyg_scheduler_sched_lock,r7
+        ld.w    0[r7],r8
+        addi    1,r8,r8
+        st.w    r8,0[r7]
+#endif
+
+#if defined(CYGPKG_KERNEL_INSTRUMENT) && \
+    defined(CYGDBG_KERNEL_INSTRUMENT_INTR)
+        lea     RAISE_INTR,r6                   // arg0 = type = INTR,RAISE
+        ld.w    CYGARC_REG_VECTOR[ep],r7        // args = vector
+        mov     r0,r8                           // arg2 = 0
+        jarl    _cyg_instrument,r31
+#endif
+
+        ld.w    CYGARC_REG_VECTOR[ep],r6        // vector #
+        addi    -CYGNUM_HAL_ISR_MIN,r6,r8
+        shl     2,r8
+        lea     _hal_interrupt_objects,r1
+        add     r8,r1
+        ld.w    0[r1],r29                       // save object handle
+        lea     _hal_interrupt_data,r1
+        add     r8,r1
+        ld.w    0[r1],r7                        // handler data
+        lea     _hal_interrupt_handlers,r1
+        add     r8,r1
+        mov     ep,r8                           // pointer to saved registers
+        ld.w    0[r1],r1                        // handler routine
+        jarl    call_via_r1,r31
+        
+#ifdef CYGIMP_HAL_COMMON_INTERRUPTS_USE_INTERRUPT_STACK
+	// If we are returning from the last nested interrupt, move back
+	// to the thread stack. interrupt_end() must be called on the
+	// thread stack since it potentially causes a context switch.
+        lea     irq_level,r6
+        ld.w    0[r6],r7
+        addi    -1,r7,r8
+        st.w    r8,0[r6]
+        cmp     0,r8
+        bne     10f
+        ld.w    0[sp],sp        // Restore non-interrupt stack at last interrupt
+10:
+#endif // CYGIMP_HAL_COMMON_INTERRUPTS_USE_INTERRUPT_STACK
+
+#ifdef CYGFUN_HAL_COMMON_KERNEL_SUPPORT
+	// The return value from the handler (in r10) will indicate whether a 
+	// DSR is to be posted. Pass this together with a pointer to the
+	// interrupt object we have just used to the interrupt tidy up routine.
+
+        mov     r10,r6                          // interrupt handler return code
+        mov     r29,r7                          // object handle
+        mov     ep,r8                           // register frame
+        jarl    _interrupt_end,r31              // post any bottom layer handle
+        
+#endif
+        br      return_from_exception_or_interrupt
+
+#ifdef CYGIMP_HAL_COMMON_INTERRUPTS_USE_INTERRUPT_STACK
+        .globl  _hal_interrupt_stack_call_pending_DSRs
+_hal_interrupt_stack_call_pending_DSRs:
+        stsr    PSW,r9
+        di                              // disable interrupts while changing stack
+	// Switch to interrupt stack
+        lea     irq_level,r6            // current number of nested interrupts
+        mov     1,r7                    // note: this can never be non-zero at this point
+        st.w    r7,0[r6]
+        mov     sp,r1                   // save old stack pointer
+        lea     __interrupt_stack-(4*4),r8
+        mov     r8,sp        
+        st.w    r1,0[sp]               
+        st.w    r9,4[sp]
+        st.w    lp,8[sp]
+        ei
+       	jarl    _cyg_interrupt_call_pending_DSRs,lp
+        di
+        ld.w    8[sp],lp                // restore state
+        ld.w    4[sp],r6
+        ld.w    0[sp],sp
+        lea     irq_level,r7
+        st.w    r0,0[r7]
+        ldsr    r6,PSW
+        jmp     [lp]
+#endif // CYGIMP_HAL_COMMON_INTERRUPTS_USE_INTERRUPT_STACK
+                
+//
+// Indirect subroutine call, via R1
+
+call_via_r1:    
+        jmp     [r1]
+                                        
+#ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
+//
+// Reset the board
+//
+        .globl  _hal_plf_reset_board
+_hal_plf_reset_board:   
+        di                      // Turn off interrupts
+        jmp     [r0]            // Restart machine        
+#endif
+
+#if !defined(CYGSEM_HAL_NEC_INLINE_INTERRUPT_FUNCTIONS)
+        .globl  _hal_disable_interrupts
+_hal_disable_interrupts:
+        stsr    PSW,r10
+        di
+        jmp     [lp]
+
+        .globl  _hal_enable_interrupts
+_hal_enable_interrupts:
+        stsr    PSW,r6
+        ei
+        jmp     [lp]
+
+        .globl  _hal_restore_interrupts
+_hal_restore_interrupts:
+        ldsr    r6,PSW
+        jmp     [lp]
+#endif        
+                
+// -------------------------------------------------------------------------
+        .data
+#ifdef CYG_HAL_STARTUP_ROM
+// Trap jump table - used by builtin ROM
+__vsr_table:            
+        .rept   CYGNUM_HAL_VSR_COUNT
+        .word   0,0,0,0
+        .endr
+__vsr_table_end:
+
+_hal_vsr_table:
+        .rept   CYGNUM_HAL_EXCEPTION_COUNT
+        .word   do_exception
+        .endr
+        .rept   CYGNUM_HAL_ISR_COUNT
+        .word   do_interrupt
+        .endr
+#endif
+
+// Initial stack        
+        .rept   1024
+        .byte   0
+        .endr
+__startup_stack:        
+
+#ifndef CYGNUM_HAL_COMMON_INTERRUPTS_STACK_SIZE
+#define CYGNUM_HAL_COMMON_INTERRUPTS_STACK_SIZE 4096
+#endif
+#ifdef CYGIMP_HAL_COMMON_INTERRUPTS_USE_INTERRUPT_STACK
+	.balign 16
+	.global _cyg_interrupt_stack_base
+_cyg_interrupt_stack_base:
+__interrupt_stack_base:
+        .rept CYGNUM_HAL_COMMON_INTERRUPTS_STACK_SIZE
+        .byte 0
+        .endr
+	.balign 16
+	.global _cyg_interrupt_stack
+_cyg_interrupt_stack:
+__interrupt_stack:
+irq_level:
+	.long	0
+#endif  // CYG_HAL_STARTUP == ROM
+        
+// Interrupt vector tables.
+// These tables contain the isr, data and object pointers used to deliver
+// interrupts to user code.
+
+	.extern _hal_default_isr
+
+	.globl	_hal_interrupt_handlers
+_hal_interrupt_handlers:
+	.rept	CYGNUM_HAL_ISR_COUNT
+	.long	_hal_default_isr
+	.endr
+
+	.globl	_hal_interrupt_data
+_hal_interrupt_data:
+	.rept	CYGNUM_HAL_ISR_COUNT
+	.long	0
+	.endr
+
+	.globl	_hal_interrupt_objects
+_hal_interrupt_objects:
+	.rept	CYGNUM_HAL_ISR_COUNT
+	.long	0
+	.endr
+        
\ No newline at end of file
new file mode 100644
--- /dev/null
+++ b/packages/hal/v85x/ceb_v850/current/ChangeLog
@@ -0,0 +1,90 @@
+2000-05-25  John Dallaway  <jld@redhat.com>
+
+	* cdl/hal_v85x_ceb_v850.cdl: Tidy display strings.
+
+2000-05-25  Gary Thomas  <gthomas@redhat.com>
+
+	* include/plf_intr.h: Interrupt mappings now are in this file.
+
+2000-05-24  Gary Thomas  <gthomas@redhat.com>
+
+	* include/plf_sections.h: 
+	* include/v850_regs.h: New file(s).
+
+2000-05-03  Gary Thomas  <gthomas@redhat.com>
+
+	* src/hal_diag.c (hal_diag_write_char): Work around which fixes ^C
+	handling - GCC function __builtin_return_address() doesn't work.
+
+2000-04-25  John Dallaway  <jld@cygnus.co.uk>
+
+	* cdl/hal_nec_ceb_v850.cdl: Parent this package under the
+	V85X architecture package.
+
+2000-04-14  Gary Thomas  <gthomas@redhat.com>
+
+	* src/plf_stub.c (hal_plf_stub_init): Use watchdog timer to
+	emulate a breakpoint since this hardware doesn't have one.
+
+2000-04-11  Gary Thomas  <gthomas@redhat.com>
+
+	* src/plf_stub.c (hal_plf_get_char): Use LED for "interesting"
+	display during GDB I/O.
+
+	* src/hal_diag.c (hal_diag_write_char): Disable interrupts
+	while sending character - necessary because there is no way to
+	determine that a character has been sent other than to see that
+	there is an interrupt pending.
+
+	* cdl/hal_nec_ceb_v850.cdl: Add implementation of "GDB protocol
+	suppressed" functionality.
+
+2000-03-30  Gary Thomas  <gthomas@redhat.com>
+
+	* src/hal_diag.c (hal_diag_write_char): GDB break support only
+	present if GDB stubs in place.
+
+2000-03-27  Gary Thomas  <gthomas@redhat.com>
+
+	* src/plf_stub.c: 
+	* include/plf_stub.h: Adding GDB break support.
+
+	* include/plf_intr.h: Remove garbage left over from cut&paste.
+
+	* include/plf_cache.h: Add missing INVALIDATE macros.
+
+2000-03-21  Gary Thomas  <gthomas@redhat.com>
+
+	* src/hal_diag.c: Remove ROM startup messages.
+
+	* include/pkgconf/mlt_nec_v850_ceb_rom.mlt: 
+	* include/pkgconf/mlt_nec_v850_ceb_rom.ldi: 
+	* include/pkgconf/mlt_nec_v850_ceb_rom.h: Use proper RAM layout.
+
+	* include/plf_stub.h (HAL_STUB_PLATFORM_RESET): Add board reset.
+
+//===========================================================================
+//####COPYRIGHTBEGIN####
+//                                                                          
+// -------------------------------------------                              
+// The contents of this file are subject to the Red Hat eCos Public License 
+// Version 1.1 (the "License"); you may not use this file except in         
+// compliance with the License.  You may obtain a copy of the License at    
+// http://www.redhat.com/                                                   
+//                                                                          
+// 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 Configurable Operating System,      
+// released September 30, 1998.                                             
+//                                                                          
+// The Initial Developer of the Original Code is Red Hat.                   
+// Portions created by Red Hat are                                          
+// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
+// All Rights Reserved.                                                     
+// -------------------------------------------                              
+//                                                                          
+//####COPYRIGHTEND####
+//===========================================================================
new file mode 100644
--- /dev/null
+++ b/packages/hal/v85x/ceb_v850/current/cdl/hal_v85x_ceb_v850.cdl
@@ -0,0 +1,241 @@
+# ====================================================================
+#
+#      hal_v85x_v850_ceb.cdl
+#
+#      V850/CEB board HAL package configuration data
+#
+# ====================================================================
+#####COPYRIGHTBEGIN####
+#                                                                          
+# -------------------------------------------                              
+# The contents of this file are subject to the Red Hat eCos Public License 
+# Version 1.1 (the "License"); you may not use this file except in         
+# compliance with the License.  You may obtain a copy of the License at    
+# http://www.redhat.com/                                                   
+#                                                                          
+# 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 Configurable Operating System,      
+# released September 30, 1998.                                             
+#                                                                          
+# The Initial Developer of the Original Code is Red Hat.                   
+# Portions created by Red Hat are                                          
+# Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
+# All Rights Reserved.                                                     
+# -------------------------------------------                              
+#                                                                          
+#####COPYRIGHTEND####
+# ====================================================================
+######DESCRIPTIONBEGIN####
+#
+# Author(s):      gthomas
+# Original data:  bartv, jskov
+# Contributors:
+# Date:           2000-03-10
+#
+#####DESCRIPTIONEND####
+#
+# ====================================================================
+
+cdl_package CYGPKG_HAL_V85X_V850_CEB {
+    display  "Cosmo CEB-V850/SA1 board"
+    parent        CYGPKG_HAL_V85X
+    requires      CYGPKG_HAL_V85X_V850
+    define_header hal_v85x_v850_ceb.h
+    include_dir   cyg/hal
+    description   "
+           The CEB HAL package should be used when targetting the
+           actual hardware."
+
+    compile  hal_diag.c plf_misc.c plf_stub.c
+
+    implements    CYGINT_HAL_DEBUG_GDB_STUBS
+    implements    CYGINT_HAL_DEBUG_GDB_STUBS_BREAK
+    implements    CYGINT_HAL_DIAG_DISABLE_GDB_PROTOCOL_SUPPORTED
+
+    define_proc {
+        puts $::cdl_system_header "#define CYGBLD_HAL_TARGET_H   <pkgconf/hal_v85x_v850.h>"
+        puts $::cdl_system_header "#define CYGBLD_HAL_PLATFORM_H <pkgconf/hal_v85x_v850_ceb.h>"
+    }
+
+    cdl_component CYG_HAL_STARTUP {
+        display       "Startup type"
+        flavor        data
+        legal_values  {"RAM" "ROM"}
+        default_value {"RAM"}
+	no_define
+	define -file system.h CYG_HAL_STARTUP
+        description   "
+           When targetting the CEB board it is possible to build
+           the system for either RAM bootstrap or ROM bootstrap."
+    }
+
+   cdl_option CYGHWR_HAL_V85X_V850_CEB_DIAG_BAUD {
+       display          "Diagnostic serial port baud rate"
+       flavor data
+       legal_values     9600 19200 38400
+       default_value    38400
+       description      "
+           This option selects the baud rate used for the diagnostic port.
+           Note: this should match the value chosen for the GDB port if the
+           diagnostic and GDB port are the same."
+   }
+
+    # Real-time clock/counter specifics
+    cdl_component CYGNUM_HAL_RTC_CONSTANTS {
+        display       "Real-time clock constants."
+        flavor        none
+    
+        cdl_option CYGNUM_HAL_RTC_NUMERATOR {
+            display       "Real-time clock numerator"
+            flavor        data
+            calculated    1000000000
+        }
+        cdl_option CYGNUM_HAL_RTC_DENOMINATOR {
+            display       "Real-time clock denominator"
+            flavor        data
+            calculated    100
+        }
+        cdl_option CYGNUM_HAL_RTC_PERIOD {
+            display       "Real-time clock period"
+            flavor        data
+            calculated    42500
+        }
+    }
+
+    cdl_component CYGBLD_GLOBAL_OPTIONS {
+        display "Global build options"
+        flavor  none
+        parent  CYGPKG_NONE
+        description   "
+	    Global build options including control over
+	    compiler flags, linker flags and choice of toolchain."
+
+
+        cdl_option CYGBLD_GLOBAL_COMMAND_PREFIX {
+            display "Global command prefix"
+            flavor  data
+            no_define
+            default_value { "v850-elf" }
+            description "
+                This option specifies the command prefix used when
+                invoking the build tools."
+        }
+
+        cdl_option CYGBLD_GLOBAL_CFLAGS {
+            display "Global compiler flags"
+            flavor  data
+            no_define
+            default_value { "-Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef -Woverloaded-virtual -g -O2 -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions -fvtable-gc -finit-priority" }
+            description   "
+                This option controls the global compiler flags which
+                are used to compile all packages by
+                default. Individual packages may define
+                options which override these global flags."
+        }
+
+        cdl_option CYGBLD_GLOBAL_LDFLAGS {
+            display "Global linker flags"
+            flavor  data
+            no_define
+            default_value { "-g -nostdlib -Wl,--gc-sections -Wl,-static" }
+            description   "
+                This option controls the global linker flags. Individual
+                packages may define options which override these global flags."
+        }
+
+        cdl_option CYGBLD_BUILD_GDB_STUBS {
+            display "Build GDB stub ROM image"
+            default_value 0
+            requires { CYG_HAL_STARTUP == "ROM" }
+            requires CYGSEM_HAL_ROM_MONITOR
+            requires CYGBLD_BUILD_COMMON_GDB_STUBS
+            requires CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
+            requires ! CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT
+            requires ! CYGDBG_HAL_DEBUG_GDB_THREAD_SUPPORT
+            requires ! CYGDBG_HAL_COMMON_INTERRUPTS_SAVE_MINIMUM_CONTEXT
+            requires ! CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM
+            no_define
+            description "
+                This option enables the building of the GDB stubs for the
+                board. The common HAL controls takes care of most of the
+                build process, but the final conversion from ELF image to
+                binary data is handled by the platform CDL, allowing
+                relocation of the data if necessary."
+
+            make -priority 320 {
+                <PREFIX>/bin/gdb_module.bin : <PREFIX>/bin/gdb_module.img
+                $(OBJCOPY) -O binary $< $@
+            }
+        }
+    }
+
+    cdl_component CYGHWR_MEMORY_LAYOUT {
+        display "Memory layout"
+        flavor data
+        no_define
+        calculated { CYG_HAL_STARTUP == "RAM" ? "v85x_v850_ceb_ram" : \
+                     CYG_HAL_STARTUP == "ROM" ? "v85x_v850_ceb_rom" : \
+	                                        "v85x_v850_ceb_romram" }
+
+        cdl_option CYGHWR_MEMORY_LAYOUT_LDI {
+            display "Memory layout linker script fragment"
+            flavor data
+            no_define
+            define -file system.h CYGHWR_MEMORY_LAYOUT_LDI
+            calculated { CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_v85x_v850_ceb_ram.ldi>" : \
+                         CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_v85x_v850_ceb_rom.ldi>" : \
+                                                    "<pkgconf/mlt_v85x_v850_ceb_romram.ldi>" }
+        }
+
+        cdl_option CYGHWR_MEMORY_LAYOUT_H {
+            display "Memory layout header file"
+            flavor data
+            no_define
+            define -file system.h CYGHWR_MEMORY_LAYOUT_H
+            calculated { CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_v85x_v850_ceb_ram.h>" : \
+                         CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_v85x_v850_ceb_rom.h>" : \
+                                                    "<pkgconf/mlt_v85x_v850_ceb_romram.h>" }
+        }
+    }
+
+   cdl_option CYGSEM_HAL_USE_ROM_MONITOR {
+        display       "Work with a ROM monitor"
+        flavor        booldata
+        legal_values  { "Generic" "GDB_stubs" "PMON" }
+        default_value { CYG_HAL_STARTUP == "RAM" ? "GDB_stubs" : 0 }
+        parent        CYGPKG_HAL_ROM_MONITOR
+        requires      { CYG_HAL_STARTUP == "RAM" }
+        description   "
+            Support can be enabled for three different varieties of ROM monitor.
+            This support changes various eCos semantics such as the encoding
+            of diagnostic output, or the overriding of hardware interrupt
+            vectors.
+            Firstly there is \"Generic\" support which prevents the HAL
+            from overriding the hardware vectors that it does not use, to
+            instead allow an installed ROM monitor to handle them. This is
+            the most basic support which is likely to be common to most
+            implementations of ROM monitor.
+            \"GDB_stubs\" provides support when GDB stubs are included in
+            the ROM monitor or boot ROM.
+            And finally, \"PMON\" allows the program to co-operate with
+            the PMON ROM monitor when fitted to the board."
+    }
+
+    cdl_option CYGSEM_HAL_ROM_MONITOR {
+        display       "Behave as a ROM monitor"
+        flavor        bool
+        default_value 0
+        parent        CYGPKG_HAL_ROM_MONITOR
+        requires      { CYG_HAL_STARTUP == "ROM" }
+        description   "
+            Enable this option if this program is to be used as a ROM monitor,
+            i.e. applications will be loaded into RAM on the board, and this
+            ROM monitor may process exceptions or interrupts generated from the
+            application. This enables features such as utilizing a separate
+            interrupt stack when exceptions are generated."
+    }
+}
new file mode 100644
index 0000000000000000000000000000000000000000..d825c44dc60db0364f6877fe4ea6f9e1276031c4
GIT binary patch
literal 18952
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
new file mode 100644
index 0000000000000000000000000000000000000000..a8c226c477419103b7adf47a2c65ad2e98d1f411
GIT binary patch
literal 118796
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
OoMGicwTmxR=YInqDF7+}
new file mode 100644
--- /dev/null
+++ b/packages/hal/v85x/ceb_v850/current/include/hal_diag.h
@@ -0,0 +1,71 @@
+#ifndef CYGONCE_HAL_HAL_DIAG_H
+#define CYGONCE_HAL_HAL_DIAG_H
+
+/*=============================================================================
+//
+//      hal_diag.h
+//
+//      HAL Support for Kernel Diagnostic Routines
+//
+//=============================================================================
+//####COPYRIGHTBEGIN####
+//                                                                          
+// -------------------------------------------                              
+// The contents of this file are subject to the Red Hat eCos Public License 
+// Version 1.1 (the "License"); you may not use this file except in         
+// compliance with the License.  You may obtain a copy of the License at    
+// http://www.redhat.com/                                                   
+//                                                                          
+// 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 Configurable Operating System,      
+// released September 30, 1998.                                             
+//                                                                          
+// The Initial Developer of the Original Code is Red Hat.                   
+// Portions created by Red Hat are                                          
+// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
+// All Rights Reserved.                                                     
+// -------------------------------------------                              
+//                                                                          
+//####COPYRIGHTEND####
+//=============================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s):   nickg
+// Contributors:        nickg
+// Date:        1998-03-02
+// Purpose:     HAL Support for Kernel Diagnostic Routines
+// Description: Diagnostic routines for use during kernel development.
+// Usage:       #include <cyg/hal/hal_diag.h>
+//
+//####DESCRIPTIONEND####
+//
+//===========================================================================*/
+
+#include <pkgconf/hal.h>
+
+#include <cyg/infra/cyg_type.h>
+
+/*---------------------------------------------------------------------------*/
+/* functions implemented in hal_diag.c                                       */
+
+externC void hal_diag_init(void);
+
+externC void hal_diag_write_char(char c);
+
+externC void hal_diag_read_char(char *c);
+
+/*---------------------------------------------------------------------------*/
+
+#define HAL_DIAG_INIT() hal_diag_init()
+
+#define HAL_DIAG_WRITE_CHAR(_c_) hal_diag_write_char(_c_)
+
+#define HAL_DIAG_READ_CHAR(_c_) hal_diag_read_char(&_c_)
+
+/*---------------------------------------------------------------------------*/
+/* end of hal_diag.h                                                         */
+#endif /* CYGONCE_HAL_HAL_DIAG_H */
new file mode 100644
--- /dev/null
+++ b/packages/hal/v85x/ceb_v850/current/include/hal_platform_setup.h
@@ -0,0 +1,129 @@
+#ifndef CYGONCE_HAL_PLATFORM_SETUP_H
+#define CYGONCE_HAL_PLATFORM_SETUP_H
+
+/*=============================================================================
+//
+//      hal_platform_setup.h
+//
+//      Platform specific support for HAL (assembly code)
+//
+//=============================================================================
+//####COPYRIGHTBEGIN####
+//                                                                          
+// -------------------------------------------                              
+// The contents of this file are subject to the Red Hat eCos Public License 
+// Version 1.1 (the "License"); you may not use this file except in         
+// compliance with the License.  You may obtain a copy of the License at    
+// http://www.redhat.com/                                                   
+//                                                                          
+// 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 Configurable Operating System,      
+// released September 30, 1998.                                             
+//                                                                          
+// The Initial Developer of the Original Code is Red Hat.                   
+// Portions created by Red Hat are                                          
+// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
+// All Rights Reserved.                                                     
+// -------------------------------------------                              
+//                                                                          
+//####COPYRIGHTEND####
+//=============================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s):    gthomas
+// Contributors: gthomas
+// Date:         2000-03-10
+// Purpose:      NEC CEB/V850 platform specific support routines
+// Description: 
+// Usage:       #include <cyg/hal/hal_platform_setup.h>
+//
+//####DESCRIPTIONEND####
+//
+//===========================================================================*/
+
+#include <pkgconf/system.h>           // System-wide configuration info
+#include <pkgconf/hal.h>              // Architecture independent configuration
+#include <cyg/hal/v850_common.h>        
+#include CYGBLD_HAL_PLATFORM_H        // Platform specific configuration
+
+        .macro  lea     addr,reg
+        movhi   hi(\addr),r0,\reg
+        movea   lo(\addr),\reg,\reg
+        .endm
+        
+        .macro  PLATFORM_SETUP1
+#ifdef CYG_HAL_STARTUP_ROM         
+        movhi   hi(V850_REGS),r0,r6       
+
+        mov     0x01,r1                        
+        st.b    r1,lo(V850_REG_SYC)[r6]
+
+        // Internal RAM, I/O - 1 wait state
+        // Externam ROM      - 3 wait states
+        movea   0x7FFE,r0,r1
+        st.h    r1,lo(V850_REG_DWC)[r6]
+
+        // Internal RAM, I/O - 0 idle
+        // Externam ROM      - 0 idle
+        movea   0x2AA8,r0,r1
+        st.h    r1,lo(V850_REG_BCC)[r6]
+
+        mov     0x00,r1                        
+        st.b    r1,lo(V850_REG_EGP0)[r6]
+
+        mov     0x01,r1                        
+        st.b    r1,lo(V850_REG_EGN0)[r6]
+
+        movea   0x2C,r0,r1                        
+        st.b    r1,lo(V850_REG_PM1)[r6]
+
+        movea   0xFF,r0,r1                        
+        st.b    r1,lo(V850_REG_PM3)[r6]
+
+        movea   0xEC,r0,r1                        
+        st.b    r1,lo(V850_REG_P1)[r6]
+
+        mov     0x00,r1                        
+        st.b    r1,lo(V850_REG_PM10)[r6]
+
+        mov     0x00,r1                        
+        st.b    r1,lo(V850_REG_P10)[r6]
+
+        movea   0xDD,r0,r1                        
+        st.b    r1,lo(V850_REG_BRGC0)[r6]
+
+        mov     0x03,r1                        
+        st.b    r1,lo(V850_REG_BRGM0)[r6]
+
+        movea   0xC8,r0,r1                        
+        st.b    r1,lo(V850_REG_ASIM0)[r6]
+
+        movea   0x47,r0,r1                        
+        st.b    r1,lo(V850_REG_STIC0)[r6]
+
+        mov     0x07,r1                        
+        st.b    r1,lo(V850_REG_MM)[r6]
+
+        // Setting the PCC register is tricky
+        stsr    PSW,r7
+        ori     CYGARC_PSW_NP,r7,r8
+        ldsr    r8,PSW
+        mov     0x00,r1
+        st.b    r1,lo(V850_REG_PRCMD)[r6]
+        st.b    r1,lo(V850_REG_PCC)[r6]
+        ldsr    r7,PSW
+        nop
+        nop
+        nop
+        nop
+        nop
+#endif
+        .endm
+
+/*---------------------------------------------------------------------------*/
+/* end of hal_platform_setup.h                                               */
+#endif /* CYGONCE_HAL_PLATFORM_SETUP_H */
new file mode 100644
--- /dev/null
+++ b/packages/hal/v85x/ceb_v850/current/include/pkgconf/mlt_v85x_v850_ceb_ram.h
@@ -0,0 +1,13 @@
+// eCos memory layout - Fri Mar 17 13:07:05 2000
+
+// This is a generated file - do not edit
+
+#include <cyg/infra/cyg_type.h>
+#include <stddef.h>
+
+#define CYGMEM_REGION_ram (0xfc0000)
+#define CYGMEM_REGION_ram_SIZE (0x40000)
+#define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
+extern char CYG_LABEL_NAME (_reserved) [];
+#define CYGMEM_SECTION_reserved (CYG_LABEL_NAME (_reserved))
+#define CYGMEM_SECTION_reserved_SIZE (0x4000)
new file mode 100644
--- /dev/null
+++ b/packages/hal/v85x/ceb_v850/current/include/pkgconf/mlt_v85x_v850_ceb_ram.ldi
@@ -0,0 +1,23 @@
+// eCos memory layout - Fri Mar 17 13:07:05 2000
+
+// This is a generated file - do not edit
+
+MEMORY
+{
+    ram : ORIGIN = 0xfc0000, LENGTH = 0x40000
+}
+
+SECTIONS
+{
+    SECTIONS_BEGIN
+    __reserved = 0xfc0000; . = __reserved + 0x4000;
+    SECTION_text (ram, ALIGN (0x4), LMA_EQ_VMA)
+    SECTION_fini (ram, ALIGN (0x4), LMA_EQ_VMA)
+    SECTION_rodata (ram, ALIGN (0x4), LMA_EQ_VMA)
+    SECTION_rodata1 (ram, ALIGN (0x4), LMA_EQ_VMA)
+    SECTION_fixup (ram, ALIGN (0x4), LMA_EQ_VMA)
+    SECTION_gcc_except_table (ram, ALIGN (0x4), LMA_EQ_VMA)
+    SECTION_data (ram, ALIGN (0x4), LMA_EQ_VMA)
+    SECTION_bss (ram, ALIGN (0x4), LMA_EQ_VMA)
+    SECTIONS_END
+}
new file mode 100644
--- /dev/null
+++ b/packages/hal/v85x/ceb_v850/current/include/pkgconf/mlt_v85x_v850_ceb_ram.mlt
@@ -0,0 +1,11 @@
+version 0
+region ram fc0000 40000 0 !
+section reserved 4000 1 0 0 1 1 1 1 fc0000 fc0000 text text !
+section text 0 4 0 1 0 1 0 1 fini fini !
+section fini 0 4 0 1 0 1 0 1 rodata rodata !
+section rodata 0 4 0 1 0 1 0 1 rodata1 rodata1 !
+section rodata1 0 4 0 1 0 1 0 1 fixup fixup !
+section fixup 0 4 0 1 0 1 0 1 gcc_except_table gcc_except_table !
+section gcc_except_table 0 4 0 1 0 1 0 1 data data !
+section data 0 4 0 1 0 1 0 1 bss bss !
+section bss 0 4 0 1 0 0 0 0 !
new file mode 100644
--- /dev/null
+++ b/packages/hal/v85x/ceb_v850/current/include/pkgconf/mlt_v85x_v850_ceb_rom.h
@@ -0,0 +1,13 @@
+// eCos memory layout - Tue Mar 21 04:31:59 2000
+
+// This is a generated file - do not edit
+
+#include <cyg/infra/cyg_type.h>
+#include <stddef.h>
+
+#define CYGMEM_REGION_rom (0x100000)
+#define CYGMEM_REGION_rom_SIZE (0x80000)
+#define CYGMEM_REGION_rom_ATTR (CYGMEM_REGION_ATTR_R)
+#define CYGMEM_REGION_ram (0xfc0000)
+#define CYGMEM_REGION_ram_SIZE (0x40000)
+#define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
new file mode 100644
--- /dev/null
+++ b/packages/hal/v85x/ceb_v850/current/include/pkgconf/mlt_v85x_v850_ceb_rom.ldi
@@ -0,0 +1,24 @@
+// eCos memory layout - Tue Mar 21 04:31:59 2000
+
+// This is a generated file - do not edit
+
+MEMORY
+{
+    rom : ORIGIN = 0x100000, LENGTH = 0x80000
+    ram : ORIGIN = 0xfc0000, LENGTH = 0x40000
+}
+
+SECTIONS
+{
+    SECTIONS_BEGIN
+    SECTION_rom_vectors (rom, 0x100000, LMA_EQ_VMA)
+    SECTION_text (rom, ALIGN (0x4), LMA_EQ_VMA)
+    SECTION_fini (rom, ALIGN (0x4), LMA_EQ_VMA)
+    SECTION_rodata (rom, ALIGN (0x4), LMA_EQ_VMA)
+    SECTION_rodata1 (rom, ALIGN (0x4), LMA_EQ_VMA)
+    SECTION_fixup (rom, ALIGN (0x4), LMA_EQ_VMA)
+    SECTION_gcc_except_table (rom, ALIGN (0x4), LMA_EQ_VMA)
+    SECTION_data (ram, 0xfc0000, FOLLOWING (.gcc_except_table))
+    SECTION_bss (ram, ALIGN (0x4), LMA_EQ_VMA)
+    SECTIONS_END
+}
new file mode 100644
--- /dev/null
+++ b/packages/hal/v85x/ceb_v850/current/include/pkgconf/mlt_v85x_v850_ceb_rom.mlt
@@ -0,0 +1,12 @@
+version 0
+region rom 100000 80000 1 !
+region ram fc0000 40000 0 !
+section rom_vectors 0 1 0 1 1 1 1 1 100000 100000 text text !
+section text 0 4 0 1 0 1 0 1 fini fini !
+section fini 0 4 0 1 0 1 0 1 rodata rodata !
+section rodata 0 4 0 1 0 1 0 1 rodata1 rodata1 !
+section rodata1 0 4 0 1 0 1 0 1 fixup fixup !
+section fixup 0 4 0 1 0 1 0 1 gcc_except_table gcc_except_table !
+section gcc_except_table 0 4 0 1 0 0 0 1 data !
+section data 0 4 1 1 1 1 0 0 fc0000 bss !
+section bss 0 4 0 1 0 0 0 0 !
new file mode 100644
--- /dev/null
+++ b/packages/hal/v85x/ceb_v850/current/include/plf_cache.h
@@ -0,0 +1,71 @@
+#ifndef CYGONCE_PLF_CACHE_H
+#define CYGONCE_PLF_CACHE_H
+
+//=============================================================================
+//
+//      plf_cache.h
+//
+//      HAL cache control API
+//
+//=============================================================================
+//####COPYRIGHTBEGIN####
+//                                                                          
+// -------------------------------------------                              
+// The contents of this file are subject to the Red Hat eCos Public License 
+// Version 1.1 (the "License"); you may not use this file except in         
+// compliance with the License.  You may obtain a copy of the License at    
+// http://www.redhat.com/                                                   
+//                                                                          
+// 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 Configurable Operating System,      
+// released September 30, 1998.                                             
+//                                                                          
+// The Initial Developer of the Original Code is Red Hat.                   
+// Portions created by Red Hat are                                          
+// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
+// All Rights Reserved.                                                     
+// -------------------------------------------                              
+//                                                                          
+//####COPYRIGHTEND####
+//=============================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s):   nickg
+// Contributors:        nickg
+// Date:        1998-02-17
+// Purpose:     Cache control API
+// Description: The macros defined here provide the HAL APIs for handling
+//              cache control operations.
+// Usage:
+//              #include <cyg/hal/plf_cache.h>
+//              ...
+//              
+//
+//####DESCRIPTIONEND####
+//
+//=============================================================================
+
+#include <pkgconf/hal.h>
+#include <cyg/infra/cyg_type.h>
+
+//=============================================================================
+
+// No caches defined on this platform
+#define HAL_ICACHE_ENABLE()
+#define HAL_ICACHE_DISABLE()
+#define HAL_ICACHE_SYNC()
+#define HAL_ICACHE_INVALIDATE_ALL()
+
+#define HAL_DCACHE_ENABLE()
+#define HAL_DCACHE_DISABLE()
+#define HAL_DCACHE_SYNC()
+#define HAL_DCACHE_INVALIDATE_ALL()
+
+//-----------------------------------------------------------------------------
+#endif // ifndef CYGONCE_PLF_CACHE_H
+// End of plf_cache.h
+
new file mode 100644
--- /dev/null
+++ b/packages/hal/v85x/ceb_v850/current/include/plf_intr.h
@@ -0,0 +1,153 @@
+#ifndef CYGONCE_HAL_PLF_INTR_H
+#define CYGONCE_HAL_PLF_INTR_H
+
+//==========================================================================
+//
+//      plf_intr.h
+//
+//      NEC/V85x Interrupt and clock support
+//
+//==========================================================================
+//####COPYRIGHTBEGIN####
+//                                                                          
+// -------------------------------------------                              
+// The contents of this file are subject to the Red Hat eCos Public License 
+// Version 1.1 (the "License"); you may not use this file except in         
+// compliance with the License.  You may obtain a copy of the License at    
+// http://www.redhat.com/                                                   
+//                                                                          
+// 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 Configurable Operating System,      
+// released September 30, 1998.                                             
+//                                                                          
+// The Initial Developer of the Original Code is Red Hat.                   
+// Portions created by Red Hat are                                          
+// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
+// All Rights Reserved.                                                     
+// -------------------------------------------                              
+//                                                                          
+//####COPYRIGHTEND####
+//==========================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s):    nickg
+// Contributors: nickg, jskov,
+//               gthomas, jlarmour
+// Date:         1999-02-16
+// Purpose:      Define Interrupt support
+// Description:  The macros defined here provide the HAL APIs for handling
+//               interrupts and the clock for the VRC4373 board.
+//              
+// Usage:
+//              #include <cyg/hal/plf_intr.h>
+//              ...
+//              
+//
+//####DESCRIPTIONEND####
+//
+//==========================================================================
+
+#include <pkgconf/hal.h>
+
+#include <cyg/infra/cyg_type.h>
+
+//--------------------------------------------------------------------------
+// NEC (70F3017) vectors. 
+
+// These are the exception codes presented in the Cause register and
+// correspond to VSRs. These values are the ones to use for HAL_VSR_GET/SET
+
+#define CYGNUM_HAL_VECTOR_RESET                0x00
+#define CYGNUM_HAL_VECTOR_NMI                  0x01
+#define CYGNUM_HAL_VECTOR_WATCHDOG_TIMER       0x02
+#define CYGNUM_HAL_VECTOR_TRAP0                0x04
+#define CYGNUM_HAL_VECTOR_TRAP1                0x05
+#define CYGNUM_HAL_VECTOR_ILLEGAL_OPCODE       0x06
+#define CYGNUM_HAL_VECTOR_WATCHDOG_TIMER_M     0x08
+#define CYGNUM_HAL_VECTOR_INTP0                0x09
+#define CYGNUM_HAL_VECTOR_INTP1                0x0A
+#define CYGNUM_HAL_VECTOR_INTP2                0x0B
+#define CYGNUM_HAL_VECTOR_INTP3                0x0C
+#define CYGNUM_HAL_VECTOR_INTP4                0x0D
+#define CYGNUM_HAL_VECTOR_INTP5                0x0E
+#define CYGNUM_HAL_VECTOR_INTP6                0x0F
+#define CYGNUM_HAL_VECTOR_INTWTI               0x10
+#define CYGNUM_HAL_VECTOR_INTTM00              0x11
+#define CYGNUM_HAL_VECTOR_INTTM01              0x12
+#define CYGNUM_HAL_VECTOR_INTTM10              0x13
+#define CYGNUM_HAL_VECTOR_INTTM11              0x14
+#define CYGNUM_HAL_VECTOR_INTTM2               0x15
+#define CYGNUM_HAL_VECTOR_INTTM3               0x16
+#define CYGNUM_HAL_VECTOR_INTTM4               0x17
+#define CYGNUM_HAL_VECTOR_INTTM5               0x18
+#define CYGNUM_HAL_VECTOR_INTCSI0              0x19
+#define CYGNUM_HAL_VECTOR_INTSER0              0x1A
+#define CYGNUM_HAL_VECTOR_INTCSI1              0x1B
+#define CYGNUM_HAL_VECTOR_INTST0               0x1C
+#define CYGNUM_HAL_VECTOR_INTCSI2              0x1D
+#define CYGNUM_HAL_VECTOR_INTSER1              0x1E
+#define CYGNUM_HAL_VECTOR_INTSR1               0x1F
+#define CYGNUM_HAL_VECTOR_INTST1               0x20
+#define CYGNUM_HAL_VECTOR_INTAD                0x21
+#define CYGNUM_HAL_VECTOR_INTDMA0              0x22
+#define CYGNUM_HAL_VECTOR_INTDMA1              0x23
+#define CYGNUM_HAL_VECTOR_INTDMA2              0x24
+#define CYGNUM_HAL_VECTOR_INTWT                0x25
+
+#define CYGNUM_HAL_VSR_MIN                     0
+#define CYGNUM_HAL_VSR_MAX                     0x25
+#define CYGNUM_HAL_VSR_COUNT                   0x26
+
+// Min/Max exception numbers and how many there are
+#define CYGNUM_HAL_EXCEPTION_MIN                0
+#define CYGNUM_HAL_EXCEPTION_MAX                7
+#define CYGNUM_HAL_EXCEPTION_COUNT              ((CYGNUM_HAL_EXCEPTION_MAX-CYGNUM_HAL_EXCEPTION_MIN)+1)
+
+// Min/Max ISR numbers and how many there are
+#define CYGNUM_HAL_ISR_MIN                     0x08
+#define CYGNUM_HAL_ISR_MAX                     0x25
+#define CYGNUM_HAL_ISR_COUNT                   ((CYGNUM_HAL_ISR_MAX-CYGNUM_HAL_ISR_MIN)+1)
+
+// The vector used by the Real time clock.
+#define CYGNUM_HAL_INTERRUPT_RTC               CYGNUM_HAL_VECTOR_INTTM10
+
+// Mapping from interrupt numbers to hardware registers
+#define CYG_HAL_V85X_INTERRUPT_CONTROL_REGISTERS        \
+    (volatile unsigned char *)V850_REG_WDTIC,           \
+    (volatile unsigned char *)V850_REG_PIC0,            \
+    (volatile unsigned char *)V850_REG_PIC1,            \
+    (volatile unsigned char *)V850_REG_PIC2,            \
+    (volatile unsigned char *)V850_REG_PIC3,            \
+    (volatile unsigned char *)V850_REG_PIC4,            \
+    (volatile unsigned char *)V850_REG_PIC5,            \
+    (volatile unsigned char *)V850_REG_PIC6,            \
+    (volatile unsigned char *)V850_REG_WTIIC,           \
+    (volatile unsigned char *)V850_REG_TMIC00,          \
+    (volatile unsigned char *)V850_REG_TMIC01,          \
+    (volatile unsigned char *)V850_REG_TMIC10,          \
+    (volatile unsigned char *)V850_REG_TMIC11,          \
+    (volatile unsigned char *)V850_REG_TMIC2,           \
+    (volatile unsigned char *)V850_REG_TMIC3,           \
+    (volatile unsigned char *)V850_REG_TMIC4,           \
+    (volatile unsigned char *)V850_REG_TMIC5,           \
+    (volatile unsigned char *)V850_REG_CSIC0,           \
+    (volatile unsigned char *)V850_REG_SERIC0,          \
+    (volatile unsigned char *)V850_REG_SRIC0,           \
+    (volatile unsigned char *)V850_REG_STIC0,           \
+    (volatile unsigned char *)V850_REG_CSIC2,           \
+    (volatile unsigned char *)V850_REG_SERIC1,          \
+    (volatile unsigned char *)V850_REG_SRIC1,           \
+    (volatile unsigned char *)V850_REG_STIC1,           \
+    (volatile unsigned char *)V850_REG_ADIC,            \
+    (volatile unsigned char *)V850_REG_DMAIC0,          \
+    (volatile unsigned char *)V850_REG_DMAIC1,          \
+    (volatile unsigned char *)V850_REG_DMAIC2,          \
+    (volatile unsigned char *)V850_REG_WTIC
+
+//--------------------------------------------------------------------------
+#endif // ifndef CYGONCE_HAL_PLF_INTR_H
+// End of plf_intr.h
new file mode 100644
--- /dev/null
+++ b/packages/hal/v85x/ceb_v850/current/include/plf_io.h
@@ -0,0 +1,211 @@
+#ifndef CYGONCE_PLF_IO_H
+#define CYGONCE_PLF_IO_H
+
+//=============================================================================
+//
+//      plf_io.h
+//
+//      Platform specific IO support
+//
+//=============================================================================
+//####COPYRIGHTBEGIN####
+//                                                                          
+// -------------------------------------------                              
+// The contents of this file are subject to the Red Hat eCos Public License 
+// Version 1.1 (the "License"); you may not use this file except in         
+// compliance with the License.  You may obtain a copy of the License at    
+// http://www.redhat.com/                                                   
+//                                                                          
+// 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 Configurable Operating System,      
+// released September 30, 1998.                                             
+//                                                                          
+// The Initial Developer of the Original Code is Red Hat.                   
+// Portions created by Red Hat are                                          
+// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
+// All Rights Reserved.                                                     
+// -------------------------------------------                              
+//                                                                          
+//####COPYRIGHTEND####
+//=============================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s):    hmt, jskov, nickg
+// Contributors: hmt, jskov, nickg
+// Date:         1999-08-09
+// Purpose:      VRC4373 PCI IO support macros
+// Description: 
+// Usage:        #include <cyg/hal/plf_io.h>
+//
+// Note:         Based on information in 
+//               "VRC4373 System Controller Data Sheet"
+//####DESCRIPTIONEND####
+//
+//=============================================================================
+
+#include <pkgconf/hal.h>
+
+#include <cyg/hal/hal_io.h>     // IO macros
+#include <cyg/hal/hal_intr.h>   // Interrupt vectors
+
+//-----------------------------------------------------------------------------
+// PCI access registers
+
+#define HAL_PCI_ADDRESS_WINDOW_1        0xAF000014
+#define HAL_PCI_ADDRESS_WINDOW_2        0xAF000018
+#define HAL_PCI_IO_WINDOW               0xAF000024
+#define HAL_PCI_CONFIG_SPACE_DATA       0xAF000028
+#define HAL_PCI_CONFIG_SPACE_ADDR       0xAF00002C
+#define HAL_PCI_ENABLE_REG              0xAF000074
+
+//-----------------------------------------------------------------------------
+// Mappings for PCI memory and IO spaces
+
+// This is where the PCI spaces are mapped in the CPU's (virtual)
+// address space.
+#define HAL_PCI_PHYSICAL_MEMORY_BASE    0xC0000000
+#define HAL_PCI_PHYSICAL_IO_BASE        0xAC000000
+
+//-----------------------------------------------------------------------------
+
+// Initialize the PCI bus.
+// This has actually already been done by the HAL.
+#define HAL_PCI_INIT()
+
+// Compute address necessary to access PCI config space for the given
+// bus and device.
+#define HAL_PCI_CONFIG_ADDRESS( __bus, __devfn, __offset )               \
+    ({                                                                   \
+    cyg_uint32 __addr;                                                   \
+    cyg_uint32 __dev = CYG_PCI_DEV_GET_DEV(__devfn);                     \
+    if (0 == __bus) {                                                    \
+            __addr = (1 << (__dev+16));                                  \
+    } else {                                                             \
+        /* We need better info about how to form type 1 addresses */     \
+        __addr = 0x800000000 | (__bus << 16) | (__dev << 11);            \
+    }                                                                    \
+    __addr |= CYG_PCI_DEV_GET_FN(__devfn) << 8;                          \
+    __addr |= (__offset)&~3;                                             \
+    __addr;                                                              \
+    })
+
+// The following function allows us to read locations in the PCI config
+// space that we are not sure contains a valid device. Support in platform.S
+// catches and fixes any bus errors caused.
+externC CYG_WORD32 hal_pci_config_read(CYG_ADDRESS addr);
+#define HAL_PCI_CONFIG_READ( __addr, __val ) __val = hal_pci_config_read(__addr)
+
+// Read a value from the PCI configuration space of the appropriate
+// size at an address composed from the bus, devfn and offset.
+// We can only make 32 bit accesses to the PCI config data register, hence
+// all the shifing and masking in these macros.
+// Note that we may only use HAL_PCI_CONFIG_READ() here.
+#define HAL_PCI_CFG_READ_UINT8( __bus, __devfn, __offset, __val )       \
+CYG_MACRO_START                                                         \
+    CYG_WORD32 _val_;                                                   \
+    CYG_WORD32 _offset_ = __offset & 3;                                 \
+    HAL_WRITE_UINT32(HAL_PCI_CONFIG_SPACE_ADDR,                         \
+                     HAL_PCI_CONFIG_ADDRESS(__bus, __devfn, __offset)); \
+    HAL_PCI_CONFIG_READ(HAL_PCI_CONFIG_SPACE_DATA, _val_);              \
+    __val = (CYG_BYTE)((_val_>>(_offset_*8))&0xFF);                     \
+CYG_MACRO_END
+
+#define HAL_PCI_CFG_READ_UINT16( __bus, __devfn, __offset, __val )      \
+CYG_MACRO_START                                                         \
+    CYG_WORD32 _val_;                                                   \
+    CYG_WORD32 _offset_ = __offset & 2;                                 \
+    HAL_WRITE_UINT32(HAL_PCI_CONFIG_SPACE_ADDR,                         \
+                     HAL_PCI_CONFIG_ADDRESS(__bus, __devfn, __offset)); \
+    HAL_PCI_CONFIG_READ(HAL_PCI_CONFIG_SPACE_DATA, _val_);              \
+    __val = (CYG_WORD16)((_val_>>(_offset_*8))&0xFFFF);                 \
+CYG_MACRO_END
+
+#define HAL_PCI_CFG_READ_UINT32( __bus, __devfn, __offset, __val )      \
+CYG_MACRO_START                                                         \
+    CYG_WORD32 _val_;                                                   \
+    HAL_WRITE_UINT32(HAL_PCI_CONFIG_SPACE_ADDR,                         \
+                     HAL_PCI_CONFIG_ADDRESS(__bus, __devfn, __offset)); \
+    HAL_PCI_CONFIG_READ(HAL_PCI_CONFIG_SPACE_DATA, _val_);              \
+    __val = (CYG_WORD32)_val_;                                          \
+CYG_MACRO_END
+
+// Write a value to the PCI configuration space of the appropriate
+// size at an address composed from the bus, devfn and offset.
+// We can only make 32 bit accesses to the PCI config data register, hence
+// all the shifing and masking in these macros.
+// Note that we do not need to use HAL_PCI_CONFIG_READ() here since we
+// should not be writing to config space locations that we do not already
+// know are valid.
+#define HAL_PCI_CFG_WRITE_UINT8( __bus, __devfn, __offset, __val )      \
+CYG_MACRO_START                                                         \
+    CYG_WORD32 _val_;                                                   \
+    CYG_WORD32 _offset_ = __offset & 3;                                 \
+    HAL_WRITE_UINT32(HAL_PCI_CONFIG_SPACE_ADDR,                         \
+                     HAL_PCI_CONFIG_ADDRESS(__bus, __devfn, __offset)); \
+    HAL_READ_UINT32(HAL_PCI_CONFIG_SPACE_DATA, _val_);                  \
+    _val_ &= ~(0xFF<<(_offset_*8));                                     \
+    _val_ |= (__val)<<(_offset_*8);                                     \
+    HAL_WRITE_UINT32(HAL_PCI_CONFIG_SPACE_DATA, _val_);                 \
+CYG_MACRO_END
+
+#define HAL_PCI_CFG_WRITE_UINT16( __bus, __devfn, __offset, __val )     \
+CYG_MACRO_START                                                         \
+    CYG_WORD32 _val_;                                                   \
+    CYG_WORD32 _offset_ = __offset & 2;                                 \
+    HAL_WRITE_UINT32(HAL_PCI_CONFIG_SPACE_ADDR,                         \
+                     HAL_PCI_CONFIG_ADDRESS(__bus, __devfn, __offset)); \
+    HAL_READ_UINT32(HAL_PCI_CONFIG_SPACE_DATA, _val_);                  \
+    _val_ &= ~(0xFFFF<<(_offset_*8));                                   \
+    _val_ |= (__val)<<(_offset_*8);                                     \
+    HAL_WRITE_UINT32(HAL_PCI_CONFIG_SPACE_DATA, _val_);                  \
+CYG_MACRO_END
+
+#define HAL_PCI_CFG_WRITE_UINT32( __bus, __devfn, __offset, __val )     \
+CYG_MACRO_START                                                         \
+    HAL_WRITE_UINT32(HAL_PCI_CONFIG_SPACE_ADDR,                         \
+                     HAL_PCI_CONFIG_ADDRESS(__bus, __devfn, __offset)); \
+    HAL_WRITE_UINT32(HAL_PCI_CONFIG_SPACE_DATA, __val);                 \
+CYG_MACRO_END
+
+
+//-----------------------------------------------------------------------------
+// Resources
+
+// Map PCI device resources starting from these addresses in PCI space.
+#define HAL_PCI_ALLOC_BASE_MEMORY       0
+#define HAL_PCI_ALLOC_BASE_IO           0
+
+// Translate the PCI interrupt requested by the device (INTA#, INTB#,
+// INTC# or INTD#) to the associated CPU interrupt (i.e., HAL vector).
+// We don't actually know what the mappings are at present for this
+// board. The following is therefore just a temporary guess until
+// we can find out.
+
+#define HAL_PCI_TRANSLATE_INTERRUPT( __bus, __devfn, __vec, __valid)          \
+    CYG_MACRO_START                                                           \
+    cyg_uint8 __req;                                                          \
+    HAL_PCI_CFG_READ_UINT8(__bus, __devfn, CYG_PCI_CFG_INT_PIN, __req);       \
+    if (0 != __req) {                                                         \
+        CYG_ADDRWORD __translation[4] = {                                     \
+            CYGNUM_HAL_INTERRUPT_PCI_INTA,  /* INTA# */                       \
+            CYGNUM_HAL_INTERRUPT_PCI_INTB,  /* INTB# */                       \
+            CYGNUM_HAL_INTERRUPT_PCI_INTC,  /* INTC# */                       \
+            CYGNUM_HAL_INTERRUPT_PCI_INTD };/* INTD# */                       \
+                                                                              \
+        __vec = __translation[(((__req-1)+CYG_PCI_DEV_GET_DEV(__devfn))&3)];  \
+                                                                              \
+        __valid = true;                                                       \
+    } else {                                                                  \
+        /* Device will not generate interrupt requests. */                    \
+        __valid = false;                                                      \
+    }                                                                         \
+    CYG_MACRO_END
+
+
+//-----------------------------------------------------------------------------
+// end of plf_io.h
+#endif // CYGONCE_PLF_IO_H
new file mode 100644
--- /dev/null
+++ b/packages/hal/v85x/ceb_v850/current/include/plf_sections.h
@@ -0,0 +1,45 @@
+//==========================================================================
+//
+//      plf_sections.h
+//
+//      V85x layout definitions - hardwired sections
+//
+//==========================================================================
+//####COPYRIGHTBEGIN####
+//                                                                          
+// -------------------------------------------                              
+// The contents of this file are subject to the Red Hat eCos Public License 
+// Version 1.1 (the "License"); you may not use this file except in         
+// compliance with the License.  You may obtain a copy of the License at    
+// http://www.redhat.com/                                                   
+//                                                                          
+// 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 Configurable Operating System,      
+// released September 30, 1998.                                             
+//                                                                          
+// The Initial Developer of the Original Code is Red Hat.                   
+// Portions created by Red Hat are                                          
+// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
+// All Rights Reserved.                                                     
+// -------------------------------------------                              
+//                                                                          
+//####COPYRIGHTEND####
+//==========================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s):    gthomas
+// Contributors: gthomas
+// Date:         2000-05-24
+// Purpose:      Hardwired layout definitions
+// Description:  Used only in linker scripts
+//              
+//####DESCRIPTIONEND####
+//
+//==========================================================================
+
+#define SECTIONS_END . = ALIGN(4); _end = .; PROVIDE (end = .); \
+  PROVIDE(_hal_vsr_table = 0x00FC0260);
new file mode 100644
--- /dev/null
+++ b/packages/hal/v85x/ceb_v850/current/include/plf_stub.h
@@ -0,0 +1,85 @@
+#ifndef CYGONCE_HAL_PLF_STUB_H
+#define CYGONCE_HAL_PLF_STUB_H
+
+//=============================================================================
+//
+//      plf_stub.h
+//
+//      Platform header for GDB stub support.
+//
+//=============================================================================
+//####COPYRIGHTBEGIN####
+//                                                                          
+// -------------------------------------------                              
+// The contents of this file are subject to the Red Hat eCos Public License 
+// Version 1.1 (the "License"); you may not use this file except in         
+// compliance with the License.  You may obtain a copy of the License at    
+// http://www.redhat.com/                                                   
+//                                                                          
+// 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 Configurable Operating System,      
+// released September 30, 1998.                                             
+//                                                                          
+// The Initial Developer of the Original Code is Red Hat.                   
+// Portions created by Red Hat are                                          
+// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
+// All Rights Reserved.                                                     
+// -------------------------------------------                              
+//                                                                          
+//####COPYRIGHTEND####
+//=============================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s):   jskov
+// Contributors:jskov, gthomas
+// Date:        2000-03-10
+// Purpose:     Platform HAL stub support for NEC/CEB-V850
+// Usage:       #include <cyg/hal/plf_stub.h>
+//              
+//####DESCRIPTIONEND####
+//
+//=============================================================================
+
+#include <pkgconf/hal.h>
+
+#ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
+
+#include <cyg/infra/cyg_type.h>         // CYG_UNUSED_PARAM
+
+#include <cyg/hal/nec-stub.h>          // architecture stub support
+
+//----------------------------------------------------------------------------
+// Define serial stuff.
+extern void hal_plf_init_serial( void );
+extern int  hal_plf_get_char( void );
+extern void hal_plf_put_char( int c );
+extern int  hal_plf_interruptible( int );
+
+#define HAL_STUB_PLATFORM_INIT_SERIAL()       hal_plf_init_serial()
+#define HAL_STUB_PLATFORM_GET_CHAR()          hal_plf_get_char()
+#define HAL_STUB_PLATFORM_PUT_CHAR(c)         hal_plf_put_char((c))
+#define HAL_STUB_PLATFORM_SET_BAUD_RATE(baud) CYG_UNUSED_PARAM(int, (baud))
+#define HAL_STUB_PLATFORM_INTERRUPTIBLE       hal_plf_interruptible
+#define HAL_STUB_PLATFORM_INIT_BREAK_IRQ()    CYG_EMPTY_STATEMENT
+
+//----------------------------------------------------------------------------
+// Stub initializer.
+
+extern void hal_plf_stub_init(void);
+
+#define HAL_STUB_PLATFORM_INIT()              hal_plf_stub_init();
+
+//----------------------------------------------------------------------------
+// Reset.
+
+#define HAL_STUB_PLATFORM_RESET()             hal_plf_reset_board()
+
+#endif // ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
+
+//-----------------------------------------------------------------------------
+#endif // CYGONCE_HAL_PLF_STUB_H
+// End of plf_stub.h
new file mode 100644
--- /dev/null
+++ b/packages/hal/v85x/ceb_v850/current/include/v850_regs.h
@@ -0,0 +1,247 @@
+#ifndef CYGONCE_V850_REGS_H
+#define CYGONCE_V850_REGS_H
+
+/*=============================================================================
+//
+//      v850_regs.h
+//
+//      NEC/V850 platform register definitions
+//
+//=============================================================================
+//####COPYRIGHTBEGIN####
+//                                                                          
+// -------------------------------------------                              
+// The contents of this file are subject to the Red Hat eCos Public License 
+// Version 1.1 (the "License"); you may not use this file except in         
+// compliance with the License.  You may obtain a copy of the License at    
+// http://www.redhat.com/                                                   
+//                                                                          
+// 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 Configurable Operating System,      
+// released September 30, 1998.                                             
+//                                                                          
+// The Initial Developer of the Original Code is Red Hat.                   
+// Portions created by Red Hat are                                          
+// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
+// All Rights Reserved.                                                     
+// -------------------------------------------                              
+//                                                                          
+//####COPYRIGHTEND####
+//=============================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s):    gthomas
+// Contributors: gthomas
+// Date:         2000-03-10
+// Purpose:      NEC/V850 CPU family hardware description
+// Description:
+// Usage:        #include <cyg/hal/v850_regs.h>
+//
+//####DESCRIPTIONEND####
+//
+//===========================================================================*/
+
+// These definitions are for the SA1 (70F3017)
+
+#define V850_REGS         0xFFFFF000
+
+#define V850_REG_P0       0xFFFFF000
+#define V850_REG_P1       0xFFFFF002
+#define V850_REG_P2       0xFFFFF004
+#define V850_REG_P3       0xFFFFF006
+#define V850_REG_P4       0xFFFFF008
+#define V850_REG_P5       0xFFFFF00A
+#define V850_REG_P6       0xFFFFF00C
+#define V850_REG_P7       0xFFFFF00E
+#define V850_REG_P8       0xFFFFF010
+#define V850_REG_P9       0xFFFFF012
+#define V850_REG_P10      0xFFFFF014
+#define V850_REG_P11      0xFFFFF016
+#define V850_REG_P12      0xFFFFF018
+
+#define V850_REG_PM0      0xFFFFF020
+#define V850_REG_PM1      0xFFFFF022
+#define V850_REG_PM2      0xFFFFF024
+#define V850_REG_PM3      0xFFFFF026
+#define V850_REG_PM4      0xFFFFF028
+#define V850_REG_PM5      0xFFFFF02A
+#define V850_REG_PM6      0xFFFFF02C
+#define V850_REG_PM7      0xFFFFF02E
+#define V850_REG_PM8      0xFFFFF030
+#define V850_REG_PM9      0xFFFFF032
+#define V850_REG_PM10     0xFFFFF034
+#define V850_REG_PM11     0xFFFFF036
+#define V850_REG_PM12     0xFFFFF038
+
+#define V850_REG_MM       0xFFFFF04C
+
+#define V850_REG_PMC12    0xFFFFF058
+
+#define V850_REG_DWC      0xFFFFF060
+#define V850_REG_BCC      0xFFFFF062
+#define V850_REG_SYC      0xFFFFF064
+#define V850_REG_MAM      0xFFFFF068
+
+#define V850_REG_PSC      0xFFFFF070
+#define V850_REG_PCC      0xFFFFF074
+#define V850_REG_SYS      0xFFFFF078
+
+#define V850_REG_PU0      0xFFFFF080
+#define V850_REG_PU1      0xFFFFF082
+#define V850_REG_PU2      0xFFFFF084
+#define V850_REG_PU3      0xFFFFF086
+#define V850_REG_PU10     0xFFFFF094
+#define V850_REG_PU11     0xFFFFF096
+
+#define V850_REG_PF1      0xFFFFF0A2
+#define V850_REG_PF2      0xFFFFF0A4
+#define V850_REG_PF10     0xFFFFF0B4
+
+#define V850_REG_EGP0     0xFFFFF0C0
+#define V850_REG_EGN0     0xFFFFF0C2
+
+#define V850_REG_WDTIC    0xFFFFF100
+#define V850_REG_PIC0     0xFFFFF102
+#define V850_REG_PIC1     0xFFFFF104
+#define V850_REG_PIC2     0xFFFFF106
+#define V850_REG_PIC3     0xFFFFF108
+#define V850_REG_PIC4     0xFFFFF10A
+#define V850_REG_PIC5     0xFFFFF10C
+#define V850_REG_PIC6     0xFFFFF10E
+#define V850_REG_WTIIC    0xFFFFF110
+#define V850_REG_TMIC00   0xFFFFF112
+#define V850_REG_TMIC01   0xFFFFF114
+#define V850_REG_TMIC10   0xFFFFF116
+#define V850_REG_TMIC11   0xFFFFF118
+#define V850_REG_TMIC2    0xFFFFF11A
+#define V850_REG_TMIC3    0xFFFFF11C
+#define V850_REG_TMIC4    0xFFFFF11E
+#define V850_REG_TMIC5    0xFFFFF120
+#define V850_REG_CSIC0    0xFFFFF122
+#define V850_REG_SERIC0   0xFFFFF124
+#define V850_REG_CSIC1    0xFFFFF126  // Is this correct?
+#define V850_REG_SRIC0    0xFFFFF126
+#define V850_REG_STIC0    0xFFFFF128
+#define V850_REG_CSIC2    0xFFFFF12A
+#define V850_REG_SERIC1   0xFFFFF12C
+#define V850_REG_SRIC1    0xFFFFF12E
+#define V850_REG_STIC1    0xFFFFF130
+#define V850_REG_ADIC     0xFFFFF132
+#define V850_REG_DMAIC0   0xFFFFF134
+#define V850_REG_DMAIC1   0xFFFFF136
+#define V850_REG_DMAIC2   0xFFFFF138
+#define V850_REG_WTIC     0xFFFFF13A
+
+#define V850_REG_ISPR     0xFFFFF166
+#define V850_REG_PRCMD    0xFFFFF170
+
+#define V850_REG_DIOA0    0xFFFFF180
+#define V850_REG_DRA0     0xFFFFF182
+#define V850_REG_DBC0     0xFFFFF184
+#define V850_REG_DCHC0    0xFFFFF186
+
+#define V850_REG_DIOA1    0xFFFFF190
+#define V850_REG_DRA1     0xFFFFF192
+#define V850_REG_DBC1     0xFFFFF194
+#define V850_REG_DCHC1    0xFFFFF196
+
+#define V850_REG_DIOA2    0xFFFFF1A0
+#define V850_REG_DRA2     0xFFFFF1A2
+#define V850_REG_DBC2     0xFFFFF1A4
+#define V850_REG_DCHC2    0xFFFFF1A6
+
+#define V850_REG_TM0      0xFFFFF200
+#define V850_REG_CR00     0xFFFFF202
+#define V850_REG_CR01     0xFFFFF204
+#define V850_REG_PRM0     0xFFFFF206
+#define V850_REG_TMC0     0xFFFFF208
+#define V850_REG_CRC0     0xFFFFF20A
+#define V850_REG_TOC0     0xFFFFF20C
+
+#define V850_REG_TM1      0xFFFFF210
+#define V850_REG_CR10     0xFFFFF212
+#define V850_REG_CR11     0xFFFFF214
+#define V850_REG_PRM1     0xFFFFF216
+#define V850_REG_TMC1     0xFFFFF218
+#define V850_REG_CRC1     0xFFFFF21A
+#define V850_REG_TOC1     0xFFFFF21C
+
+#define V850_REG_TM2      0xFFFFF240
+#define V850_REG_CR20     0xFFFFF242
+#define V850_REG_TCL2     0xFFFFF244
+#define V850_REG_TMC2     0xFFFFF246
+#define V850_REG_TM23     0xFFFFF24A
+#define V850_REG_CR23     0xFFFFF24C
+
+#define V850_REG_TM3      0xFFFFF250
+#define V850_REG_CR30     0xFFFFF252
+#define V850_REG_TCL3     0xFFFFF254
+#define V850_REG_TMC3     0xFFFFF256
+
+#define V850_REG_TM4      0xFFFFF260
+#define V850_REG_CR40     0xFFFFF262
+#define V850_REG_TCL4     0xFFFFF264
+#define V850_REG_TMC4     0xFFFFF266
+#define V850_REG_TM45     0xFFFFF26A
+#define V850_REG_CR45     0xFFFFF26C
+
+#define V850_REG_TM5      0xFFFFF270
+#define V850_REG_CR50     0xFFFFF272
+#define V850_REG_TCL5     0xFFFFF274
+#define V850_REG_TMC5     0xFFFFF276
+
+#define V850_REG_SIO0     0xFFFFF2A0
+#define V850_REG_CSIM0    0xFFFFF2A2
+#define V850_REG_CSIS0    0xFFFFF2A4
+
+#define V850_REG_SIO1     0xFFFFF2B0
+#define V850_REG_CSIM1    0xFFFFF2B2
+#define V850_REG_CSIS1    0xFFFFF2B4
+
+#define V850_REG_SIO2     0xFFFFF2C0
+#define V850_REG_CSIM2    0xFFFFF2C2
+#define V850_REG_CSIS2    0xFFFFF2C4
+
+#define V850_REG_ASIM0    0xFFFFF300
+#define V850_REG_ASIS0    0xFFFFF302
+#define V850_REG_BRGC0    0xFFFFF304
+#define V850_REG_TXS0     0xFFFFF306
+#define V850_REG_RXS0     0xFFFFF308
+#define V850_REG_BRGM0    0xFFFFF30E
+#define V850_REG_BRGX0    0xFFFFF320
+
+#define V850_REG_ASIM1    0xFFFFF310
+#define V850_REG_ASIS1    0xFFFFF312
+#define V850_REG_BRGC1    0xFFFFF314
+#define V850_REG_TXS1     0xFFFFF316
+#define V850_REG_RXS1     0xFFFFF318
+#define V850_REG_BRGM1    0xFFFFF31E
+
+#define V850_REG_IICC0    0xFFFFF340
+#define V850_REG_IICS0    0xFFFFF342
+#define V850_REG_IICCL0   0xFFFFF344
+#define V850_REG_SVA0     0xFFFFF346
+#define V850_REG_IIC0     0xFFFFF348
+
+#define V850_REG_WTM      0xFFFFF360
+#define V850_REG_OSTS     0xFFFFF380
+#define V850_REG_WDCS     0xFFFFF382
+#define V850_REG_WDTM     0xFFFFF384
+
+#define V850_REG_RTBL     0xFFFFF3A0
+#define V850_REG_RTBH     0xFFFFF3A2
+#define V850_REG_RTPM     0xFFFFF3A4
+#define V850_REG_RTPC     0xFFFFF3A6
+
+#define V850_REG_ADM      0xFFFFF3C0
+#define V850_REG_ADS      0xFFFFF3C2
+#define V850_REG_ADCR     0xFFFFF3C4
+#define V850_REG_ADCRH    0xFFFFF3C6
+
+/*---------------------------------------------------------------------------*/
+/* end of v850_regs.h                                                         */
+#endif /* CYGONCE_V850_REGS_H */
new file mode 100644
--- /dev/null
+++ b/packages/hal/v85x/ceb_v850/current/src/hal_diag.c
@@ -0,0 +1,320 @@
+/*=============================================================================
+//
+//      hal_diag.c
+//
+//      HAL diagnostic output code
+//
+//=============================================================================
+//####COPYRIGHTBEGIN####
+//                                                                          
+// -------------------------------------------                              
+// The contents of this file are subject to the Red Hat eCos Public License 
+// Version 1.1 (the "License"); you may not use this file except in         
+// compliance with the License.  You may obtain a copy of the License at    
+// http://www.redhat.com/                                                   
+//                                                                          
+// 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 Configurable Operating System,      
+// released September 30, 1998.                                             
+//                                                                          
+// The Initial Developer of the Original Code is Red Hat.                   
+// Portions created by Red Hat are                                          
+// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
+// All Rights Reserved.                                                     
+// -------------------------------------------                              
+//                                                                          
+//####COPYRIGHTEND####
+//=============================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s):   nickg, gthomas
+// Contributors:nickg, gthomas
+// Date:        1998-03-02
+// Purpose:     HAL diagnostic output
+// Description: Implementations of HAL diagnostic output support.
+//
+//####DESCRIPTIONEND####
+//
+//===========================================================================*/
+
+#include <pkgconf/hal.h>
+#include <pkgconf/system.h>
+#include CYGBLD_HAL_PLATFORM_H
+
+#include <cyg/infra/cyg_type.h>         // base types
+#include <cyg/infra/cyg_trac.h>         // tracing macros
+#include <cyg/infra/cyg_ass.h>          // assertion macros
+
+#include <cyg/hal/hal_arch.h>           // basic machine info
+#include <cyg/hal/hal_intr.h>           // interrupt macros
+#include <cyg/hal/hal_io.h>             // IO macros
+#include <cyg/hal/hal_diag.h>
+#ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
+#include <cyg/hal/drv_api.h>
+#include <cyg/hal/hal_stub.h>           // cyg_hal_gdb_interrupt
+#define CYG_DEVICE_SERIAL_INT CYGNUM_HAL_VECTOR_INTCSI1
+#endif
+
+#include <cyg/hal/v850_common.h>        // hardware registers, etc.
+
+// Assumption: all diagnostic output must be GDB packetized unless this is a ROM (i.e.
+// totally stand-alone) system.
+
+#ifdef CYGSEM_HAL_ROM_MONITOR
+#define CYG_HAL_STARTUP_ROM
+#undef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
+#endif
+
+#if defined(CYG_HAL_STARTUP_ROM) && !defined(CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS)
+#define HAL_DIAG_USES_HARDWARE
+#else
+#if defined(CYGDBG_HAL_DIAG_DISABLE_GDB_PROTOCOL)
+#define HAL_DIAG_USES_HARDWARE
+#endif
+#endif
+
+#if (CYGHWR_HAL_V85X_V850_CEB_DIAG_BAUD == 9600)
+#define BAUD_COUNT    0xDD
+#define BAUD_DIVISOR  3
+#endif
+#if (CYGHWR_HAL_V85X_V850_CEB_DIAG_BAUD == 19200)
+#define BAUD_COUNT    0xDD
+#define BAUD_DIVISOR  2
+#endif
+#if (CYGHWR_HAL_V85X_V850_CEB_DIAG_BAUD == 38400)
+#define BAUD_COUNT    0xDD
+#define BAUD_DIVISOR  1
+#endif
+#ifndef BAUD_COUNT
+#error Unsupported BAUD rate
+#endif
+
+/*---------------------------------------------------------------------------*/
+// CEB-v850
+
+void 
+FAIL(char *m)
+{
+    static char *fail_reason;
+    fail_reason = m;
+#if 0
+    while (1) {
+        show_led('~');
+        show_hex4(m);
+        show_led('/');
+    }
+#else
+    diag_printf("FAIL: %s\n", m);
+#endif
+}
+
+void 
+ALERT(char *m)
+{
+    static char *alert_reason;
+    alert_reason = m;
+#if 0
+    show_led('~');
+    show_led('~');
+    show_hex4(m);
+    show_led('/');
+#else
+    diag_printf("ALERT: %s\n", m);
+#endif
+}
+
+// Actually send character down the wire
+void
+hal_diag_write_char_serial(char c)
+{
+    volatile unsigned char *TxDATA = (volatile unsigned char *)V850_REG_TXS0;
+    volatile unsigned char *TxSTAT = (volatile unsigned char *)V850_REG_STIC0;
+    // Send character
+    *TxDATA = (unsigned char)c;
+    // Wait for Tx not busy
+    while ((*TxSTAT & 0x80) == 0x00) ;
+    *TxSTAT &= ~0x80;
+}
+
+bool
+hal_diag_read_serial(char *c)
+{
+    volatile unsigned char *RxDATA = (volatile unsigned char *)V850_REG_RXS0;
+    volatile unsigned char *RxSTAT = (volatile unsigned char *)V850_REG_SRIC0;
+    volatile unsigned char *RxERR = (volatile unsigned char *)V850_REG_SERIC0;
+    int timeout = 0;
+    while ((*RxSTAT & 0x80) == 0x00) {
+        if (++timeout == 50000) return false;
+    }
+    *c = (char)*RxDATA;
+    *RxSTAT &= ~0x80;
+    return true;
+}
+
+#ifdef HAL_DIAG_USES_HARDWARE
+
+void hal_diag_init(void)
+{
+    static int init = 0;
+    volatile unsigned char *mode = (volatile unsigned char *)V850_REG_ASIM0;
+    volatile unsigned char *brgc = (volatile unsigned char *)V850_REG_BRGC0;
+    volatile unsigned char *brgm = (volatile unsigned char *)V850_REG_BRGM0;
+    volatile unsigned char *rxstat = (volatile unsigned char *)V850_REG_SRIC0;
+    volatile unsigned char *rxerr = (volatile unsigned char *)V850_REG_SERIC0;
+    volatile unsigned char *txstat = (volatile unsigned char *)V850_REG_STIC0;
+    if (init) return;
+    init++;
+    *mode = 0xC8;
+    *brgc = BAUD_COUNT;
+    *brgm = BAUD_DIVISOR;
+    *rxstat = 0x47;
+    *rxerr = 0;
+    *txstat = 0x47;
+}
+
+#ifdef DEBUG_DIAG
+#ifndef CYG_HAL_STARTUP_ROM
+#define DIAG_BUFSIZE 2048
+static char diag_buffer[DIAG_BUFSIZE];
+static int diag_bp = 0;
+#endif
+#endif
+
+void hal_diag_write_char(char c)
+{
+    CYG_INTERRUPT_STATE old;
+    HAL_DISABLE_INTERRUPTS(old);
+    hal_diag_init();
+#ifdef DEBUG_DIAG
+#ifndef CYG_HAL_STARTUP_ROM
+    diag_buffer[diag_bp++] = c;
+    if (diag_bp == sizeof(diag_buffer)) diag_bp = 0;
+#endif
+#endif
+    hal_diag_write_char_serial(c);
+    HAL_RESTORE_INTERRUPTS(old);
+}
+
+void hal_diag_read_char(char *c)
+{
+    while (!hal_diag_read_serial(c)) ;
+}
+
+#else // HAL_DIAG relies on GDB
+
+// Initialize diag port
+void hal_diag_init(void)
+{
+    char *msg = "eCos 1.3.x - " __DATE__ "\n\r";
+    static int init = 0;
+    if (init) return;
+    init++;
+    while (*msg) hal_diag_write_char(*msg++);
+}
+
+void 
+hal_diag_read_char(char *c)
+{
+    while (!hal_diag_read_serial(c)) ;
+}
+
+#ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
+static void hal_diag_write_char_break(void)
+{
+}
+#endif
+
+void 
+hal_diag_write_char(char c)
+{
+    static char line[100];
+    static int pos = 0;
+
+    // No need to send CRs
+    if( c == '\r' ) return;
+
+    line[pos++] = c;
+
+    if( c == '\n' || pos == sizeof(line) )
+    {
+        CYG_INTERRUPT_STATE old;
+
+        // Disable interrupts. This prevents GDB trying to interrupt us
+        // while we are in the middle of sending a packet. The serial
+        // receive interrupt will be seen when we re-enable interrupts
+        // later.
+        
+#ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
+        CYG_HAL_GDB_ENTER_CRITICAL_IO_REGION(old);
+#else
+        HAL_DISABLE_INTERRUPTS(old);
+#endif
+
+        while(1)
+        {
+            static char hex[] = "0123456789ABCDEF";
+            cyg_uint8 csum = 0;
+            int i;
+            char c1;
+        
+            hal_diag_write_char_serial('$');
+            hal_diag_write_char_serial('O');
+            csum += 'O';
+            for( i = 0; i < pos; i++ )
+            {
+                char ch = line[i];
+                char h = hex[(ch>>4)&0xF];
+                char l = hex[ch&0xF];
+                hal_diag_write_char_serial(h);
+                hal_diag_write_char_serial(l);
+                csum += h;
+                csum += l;
+            }
+            hal_diag_write_char_serial('#');
+            hal_diag_write_char_serial(hex[(csum>>4)&0xF]);
+            hal_diag_write_char_serial(hex[csum&0xF]);
+
+            // Wait for the ACK character '+' from GDB here and handle
+            // receiving a ^C instead.  This is the reason for this clause
+            // being a loop.
+            if (!hal_diag_read_serial(&c1))
+                continue;   // No response - try sending packet again
+
+            if( c1 == '+' )
+                break;              // a good acknowledge
+
+#if defined(CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS) && \
+    defined(CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT)
+            cyg_drv_interrupt_acknowledge(CYG_DEVICE_SERIAL_INT);
+            if( c1 == 3 ) {
+                // Ctrl-C: breakpoint.
+#if 0  // FIXME - __builtin_return_address() doesn't work
+                cyg_hal_gdb_interrupt (__builtin_return_address(0));
+#else
+                cyg_hal_gdb_interrupt (hal_diag_write_char_break);
+#endif
+                break;
+            }
+#endif
+            // otherwise, loop round again
+        }
+        
+        pos = 0;
+
+        // And re-enable interrupts
+#ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
+        CYG_HAL_GDB_LEAVE_CRITICAL_IO_REGION(old);
+        hal_diag_write_char_break();   // FIXME
+#else
+        HAL_RESTORE_INTERRUPTS(old);
+#endif
+    }
+}
+#endif
+
+/*---------------------------------------------------------------------------*/
+/* End of hal_diag.c */
new file mode 100644
--- /dev/null
+++ b/packages/hal/v85x/ceb_v850/current/src/plf_misc.c
@@ -0,0 +1,289 @@
+//==========================================================================
+//
+//      plf_misc.c
+//
+//      HAL platform miscellaneous functions
+//
+//==========================================================================
+//####COPYRIGHTBEGIN####
+//                                                                          
+// -------------------------------------------                              
+// The contents of this file are subject to the Red Hat eCos Public License 
+// Version 1.1 (the "License"); you may not use this file except in         
+// compliance with the License.  You may obtain a copy of the License at    
+// http://www.redhat.com/                                                   
+//                                                                          
+// 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 Configurable Operating System,      
+// released September 30, 1998.                                             
+//                                                                          
+// The Initial Developer of the Original Code is Red Hat.                   
+// Portions created by Red Hat are                                          
+// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
+// All Rights Reserved.                                                     
+// -------------------------------------------                              
+//                                                                          
+//####COPYRIGHTEND####
+//==========================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s):    nickg
+// Contributors: nickg, gthomas
+// Date:         2000-03-10
+// Purpose:      HAL miscellaneous functions
+// Description:  This file contains miscellaneous functions provided by the
+//               HAL.
+//
+//####DESCRIPTIONEND####
+//
+//========================================================================*/
+
+#include <pkgconf/hal.h>
+
+#include <cyg/infra/cyg_type.h>         // Base types
+#include <cyg/infra/cyg_trac.h>         // tracing macros
+#include <cyg/infra/cyg_ass.h>          // assertion macros
+
+#include <cyg/hal/hal_arch.h>           // architectural definitions
+
+#include <cyg/hal/hal_intr.h>           // Interrupt handling
+#include <cyg/hal/v850_common.h>        // Hardware definitions
+
+extern void show_hex4(unsigned long val);
+extern void show_hex1(unsigned long val);
+extern void show_8bit_reg(void *addr);
+extern void show_led(int p);
+
+void
+cyg_hal_platform_hardware_init(void)
+{
+    int i;
+    show_led(' ');
+    show_led(' ');
+}
+
+void
+show_hex4(unsigned long val)
+{
+    show_hex1(val>>24);
+    show_hex1(val>>16);
+    show_hex1(val>>8);
+    show_hex1(val);
+}
+
+void
+show_hex1(unsigned long val)
+{
+    static char *hex = "0123456789ABCDEF";
+    show_led(hex[(val & 0xF0) >> 4]);
+    show_led(hex[val & 0x0F]);
+}
+
+void
+show_8bit_reg(void *addr)
+{
+    unsigned char *reg = (unsigned char *)addr;
+    unsigned char val = *reg;
+    show_led(' ');
+    show_hex4(reg);
+    show_led('=');
+    show_hex1(val);
+    show_led('/');
+}
+
+#define SEG_0 0x00
+#define SEG_A 0x01
+#define SEG_B 0x02
+#define SEG_C 0x04
+#define SEG_D 0x08
+#define SEG_E 0x10
+#define SEG_F 0x20
+#define SEG_G 0x40
+#define SEG_H 0x80
+#define LED(a,b,c,d,e,f,g,h) SEG_##a|SEG_##b|SEG_##c|SEG_##d|SEG_##e|SEG_##f|SEG_##g|SEG_##h
+
+static unsigned char led_bits[] = {
+    LED(H,0,0,0,0,0,0,0), // 0x20
+        0x30, // 0x21 !
+        0x00, // 0x22 @
+        0x00, // 0x23
+        0x00, // 0x24
+        0x00, // 0x25
+        0x00, // 0x26
+        0x00, // 0x27
+        0x00, // 0x28
+        0x00, // 0x29
+        0x00, // 0x2A
+        0x00, // 0x2B
+        0x00, // 0x2C
+        0x00, // 0x2D
+        0x00, // 0x2E
+        LED(E,G,B,0,0,0,0,0), // 0x2F
+        LED(A,B,C,D,E,F,0,0), // 0x30
+        LED(0,B,C,0,0,0,0,0), // 0x31
+        LED(A,B,G,E,D,0,0,0), // 0x32
+        LED(A,B,G,C,D,0,0,0), // 0x33
+        LED(F,G,B,C,0,0,0,0), // 0x34
+        LED(A,F,G,C,D,0,0,0), // 0x35
+        LED(A,F,G,C,D,E,0,0), // 0x36
+        LED(A,B,C,0,0,0,0,0), // 0x37
+        LED(A,B,C,D,E,F,G,0), // 0x38
+        LED(A,F,G,B,C,0,0,0), // 0x39
+        LED(0,0,0,0,0,0,0,0), // 0x3A
+        LED(0,0,0,0,0,0,0,0), // 0x3B
+        LED(0,0,0,0,0,0,0,0), // 0x3C
+        LED(D,G,0,0,0,0,0,0), // 0x3D - =
+        LED(0,0,0,0,0,0,0,0), // 0x3E
+        LED(0,0,0,0,0,0,0,0), // 0x3F
+        LED(0,0,0,0,0,0,0,0), // 0x40
+        LED(A,F,G,B,E,C,0,0), // 0x41 - A
+        LED(F,G,E,D,C,0,0,0), // 0x42 - B
+        LED(A,F,E,D,0,0,0,0), // 0x43 - C
+        LED(B,G,E,D,C,0,0,0), // 0x44 - D
+        LED(A,F,G,E,D,0,0,0), // 0x45 - E
+        LED(A,F,G,E,0,0,0,0), // 0x46 - F
+        LED(0,0,0,0,0,0,0,0), // 0x47
+        LED(0,0,0,0,0,0,0,0), // 0x48
+        LED(0,0,0,0,0,0,0,0), // 0x49
+        LED(0,0,0,0,0,0,0,0), // 0x4A
+        LED(0,0,0,0,0,0,0,0), // 0x4B
+        LED(0,0,0,0,0,0,0,0), // 0x4C
+        LED(0,0,0,0,0,0,0,0), // 0x4D
+        LED(0,0,0,0,0,0,0,0), // 0x4E
+        LED(0,0,0,0,0,0,0,0), // 0x4F
+        LED(0,0,0,0,0,0,0,0), // 0x50
+        LED(0,0,0,0,0,0,0,0), // 0x51
+        LED(0,0,0,0,0,0,0,0), // 0x52
+        LED(0,0,0,0,0,0,0,0), // 0x53
+        LED(0,0,0,0,0,0,0,0), // 0x54
+        LED(0,0,0,0,0,0,0,0), // 0x55
+        LED(0,0,0,0,0,0,0,0), // 0x56
+        LED(0,0,0,0,0,0,0,0), // 0x57
+        LED(0,0,0,0,0,0,0,0), // 0x58
+        LED(0,0,0,0,0,0,0,0), // 0x59
+        LED(0,0,0,0,0,0,0,0), // 0x5A
+        LED(0,0,0,0,0,0,0,0), // 0x5B
+        LED(0,0,0,0,0,0,0,0), // 0x5C
+        LED(0,0,0,0,0,0,0,0), // 0x5D
+        LED(0,0,0,0,0,0,0,0), // 0x5E
+        LED(0,0,0,0,0,0,0,0), // 0x5F
+        LED(0,0,0,0,0,0,0,0), // 0x60
+        LED(0,0,0,0,0,0,0,0), // 0x61
+        LED(0,0,0,0,0,0,0,0), // 0x62
+        LED(0,0,0,0,0,0,0,0), // 0x63
+        LED(0,0,0,0,0,0,0,0), // 0x64
+        LED(0,0,0,0,0,0,0,0), // 0x65
+        LED(0,0,0,0,0,0,0,0), // 0x66
+        LED(0,0,0,0,0,0,0,0), // 0x67
+        LED(0,0,0,0,0,0,0,0), // 0x68
+        LED(0,0,0,0,0,0,0,0), // 0x69
+        LED(0,0,0,0,0,0,0,0), // 0x6A
+        LED(0,0,0,0,0,0,0,0), // 0x6B
+        LED(0,0,0,0,0,0,0,0), // 0x6C
+        LED(0,0,0,0,0,0,0,0), // 0x6D
+        LED(0,0,0,0,0,0,0,0), // 0x6E
+        LED(0,0,0,0,0,0,0,0), // 0x6F
+        LED(0,0,0,0,0,0,0,0), // 0x70
+        LED(0,0,0,0,0,0,0,0), // 0x71
+        LED(0,0,0,0,0,0,0,0), // 0x72
+        LED(0,0,0,0,0,0,0,0), // 0x73
+        LED(0,0,0,0,0,0,0,0), // 0x74
+        LED(0,0,0,0,0,0,0,0), // 0x75
+        LED(0,0,0,0,0,0,0,0), // 0x76
+        LED(0,0,0,0,0,0,0,0), // 0x77
+        LED(0,0,0,0,0,0,0,0), // 0x78
+        LED(0,0,0,0,0,0,0,0), // 0x79
+        LED(0,0,0,0,0,0,0,0), // 0x7A
+        LED(0,0,0,0,0,0,0,0), // 0x7B
+        LED(0,0,0,0,0,0,0,0), // 0x7C
+        LED(0,0,0,0,0,0,0,0), // 0x7D
+        LED(A,0,0,0,0,0,0,0), // 0x7E - ~
+        LED(0,0,0,0,0,0,0,0), // 0x7F
+};
+
+#ifdef CYG_HAL_STARTUP_ROM
+#define DELAY 10000
+#else
+#define DELAY 100000
+#endif
+
+void
+show_led(int p)
+{
+    volatile unsigned char *led = (volatile unsigned char *)0xFFFFF014;
+    int j;
+    for (j = 0;  j < DELAY;  j++) {
+        *led = led_bits[p-0x20];
+    }
+    for (j = 0;  j < DELAY*3;  j++) {
+        *led = 0;
+    }
+}
+
+//
+// Clock support, using 16 bit timer TM1
+//
+
+CYG_WORD32 cyg_hal_clock_period;
+
+void 
+hal_clock_initialize(cyg_int32 period)
+{
+    volatile unsigned char *tmc = (volatile unsigned char *)V850_REG_TMC1;
+    volatile unsigned char *crc = (volatile unsigned char *)V850_REG_CRC1;
+    volatile unsigned char *prm = (volatile unsigned char *)V850_REG_PRM1;
+    volatile unsigned short *cmp0 = (volatile unsigned short *)V850_REG_CR10;
+    volatile unsigned short *cmp1 = (volatile unsigned short *)V850_REG_CR11;
+    *tmc = 0x00;  // Halt timer
+    *crc = 0x00;  // Select simple compare mode
+    *prm = 0x01;  // System clock / 4 = 4250KHz
+    *cmp0 = period;
+    *cmp1 = period;
+    *tmc = 0x0C;  // Continuous, reset mode (interval timer)
+    cyg_hal_clock_period = period;
+}
+
+void 
+hal_clock_reset(int vector, cyg_uint32 period)
+{
+    hal_clock_initialize(period);
+}
+
+//
+// Return the number of clock "ticks" since last interrupt
+//
+cyg_uint32 hal_clock_read(void)
+{
+    volatile unsigned short *timer = (volatile unsigned short *)V850_REG_TM1;
+    return (cyg_uint32)*timer;
+}
+
+
+extern void _hal_thread_load_context(HAL_SavedRegisters **to);
+extern void _hal_thread_switch_context(HAL_SavedRegisters **to, HAL_SavedRegisters **from);
+
+void hal_thread_load_context(CYG_ADDRESS to)
+{
+    HAL_SavedRegisters **new_context = to;
+#if 0
+    diag_printf("Load context: %x\n", *new_context);
+    show_regs(*new_context);
+#endif
+    _hal_thread_load_context(new_context);
+}
+
+void hal_thread_switch_context(CYG_ADDRESS to, CYG_ADDRESS from)
+{
+    HAL_SavedRegisters **old_context = from;
+    HAL_SavedRegisters **new_context = to;
+#if 0
+    diag_printf("Switch context - old: %x, new: %x\n", *old_context, *new_context);
+    show_regs(*new_context);
+#endif
+    _hal_thread_switch_context(new_context, old_context);
+}
+
new file mode 100644
--- /dev/null
+++ b/packages/hal/v85x/ceb_v850/current/src/plf_stub.c
@@ -0,0 +1,149 @@
+//=============================================================================
+//
+//      plf_stub.c
+//
+//      Platform specific code for GDB stub support.
+//
+//=============================================================================
+//####COPYRIGHTBEGIN####
+//                                                                          
+// -------------------------------------------                              
+// The contents of this file are subject to the Red Hat eCos Public License 
+// Version 1.1 (the "License"); you may not use this file except in         
+// compliance with the License.  You may obtain a copy of the License at    
+// http://www.redhat.com/                                                   
+//                                                                          
+// 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 Configurable Operating System,      
+// released September 30, 1998.                                             
+//                                                                          
+// The Initial Developer of the Original Code is Red Hat.                   
+// Portions created by Red Hat are                                          
+// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
+// All Rights Reserved.                                                     
+// -------------------------------------------                              
+//                                                                          
+//####COPYRIGHTEND####
+//=============================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s):   nickg, jskov (based on the old tx39 hal_stub.c)
+// Contributors:nickg, jskov, gthomas
+// Date:        2000-03-10
+// Purpose:     Platform specific code for GDB stub support.
+//              
+//####DESCRIPTIONEND####
+//
+//=============================================================================
+
+#include <pkgconf/hal.h>
+
+#ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
+
+#include <cyg/hal/hal_stub.h>
+
+#include <cyg/hal/hal_io.h>             // HAL IO macros
+#include <cyg/hal/hal_diag.h>           // diag output. FIXME
+#include <cyg/hal/drv_api.h>
+
+#include <cyg/hal/hal_intr.h>
+
+#include <cyg/hal/v850_common.h>
+
+/*---------------------------------------------------------------------------*/
+#ifdef CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT
+static cyg_interrupt gdb_interrupt;
+static cyg_handle_t  gdb_interrupt_handle;
+#define CYG_DEVICE_SERIAL_INT CYGNUM_HAL_VECTOR_INTCSI1
+
+// This ISR is called only for serial receive interrupts.
+int 
+cyg_hal_gdb_isr(cyg_vector_t vector, cyg_addrword_t data, HAL_SavedRegisters *regs)
+{
+    volatile unsigned char *RxDATA = (volatile unsigned char *)V850_REG_RXS0;
+    cyg_uint8 c;    
+
+    c = *RxDATA;  // Fetch the character
+    if( 3 == c ) {  // ^C
+        // Ctrl-C: set a breakpoint at PC so GDB will display the
+        // correct program context when stopping rather than the
+        // interrupt handler.
+        cyg_hal_gdb_interrupt (regs->pc);
+        cyg_drv_interrupt_acknowledge(CYG_DEVICE_SERIAL_INT);
+    }
+    return 0;  // No need to run DSR
+}
+
+int 
+hal_plf_interruptible(int state)
+{
+    if (state) {
+        cyg_drv_interrupt_unmask(CYG_DEVICE_SERIAL_INT);
+    } else {
+        cyg_drv_interrupt_mask(CYG_DEVICE_SERIAL_INT);
+    }
+
+    return 0;
+}
+#endif
+
+void hal_plf_init_serial()
+{
+#ifdef CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT
+    cyg_drv_interrupt_create(CYG_DEVICE_SERIAL_INT,
+                             99,                     // Priority - what goes here?
+                             0,                      //  Data item passed to interrupt handler
+                             cyg_hal_gdb_isr,
+                             0,
+                             &gdb_interrupt_handle,
+                             &gdb_interrupt);
+    cyg_drv_interrupt_attach(gdb_interrupt_handle);
+    cyg_drv_interrupt_unmask(CYG_DEVICE_SERIAL_INT);
+#endif
+}
+
+/*---------------------------------------------------------------------------*/
+
+void hal_plf_put_char( int c)
+{
+    hal_diag_write_char_serial(c);
+}
+
+/*---------------------------------------------------------------------------*/
+
+int hal_plf_get_char( void )
+{
+    volatile unsigned char *LED = (volatile unsigned char *)V850_REG_P10;
+    char c;
+    unsigned char led = *LED & 0x7F;
+    if (led == 0) {
+        led = 0x01;
+    } else {
+        led <<= 1;
+    }
+    *LED = 0x80 | led;
+    hal_diag_read_char(&c);
+    *LED &= 0x7F;
+    return c;
+}
+
+
+//-----------------------------------------------------------------------------
+// Stub init
+
+void hal_plf_stub_init(void)
+{
+    // Set up watchdog timer since we have to use it to emulate a breakpoint
+    volatile unsigned char *wdcs = (volatile unsigned char *)V850_REG_WDCS;
+    volatile unsigned char *wdtm = (volatile unsigned char *)V850_REG_WDTM;
+    *wdcs = 0x07;  // 246.7ms - lowest possible overhead
+    *wdtm = 0x90;  // Start watchdog
+}
+
+#endif // ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
+//-----------------------------------------------------------------------------
+// End of plf_stub.c
new file mode 100644
--- /dev/null
+++ b/packages/hal/v85x/v850/current/ChangeLog
@@ -0,0 +1,73 @@
+2000-05-25  Gary Thomas  <gthomas@redhat.com>
+
+	* src/v85x_v850.ld: Add platform specifics.  In particular the
+	special, hardwired symbol "hal_vsr_table" needs to be platform
+	specific.
+
+2000-05-24  Gary Thomas  <gthomas@redhat.com>
+
+	* include/v850_common.h: Split into platform specific files.
+
+2000-04-25  Gary Thomas  <gthomas@redhat.com>
+
+	* src/v85x_v850.ld: Fix linking problem with "_etext".
+
+2000-04-14  Gary Thomas  <gthomas@redhat.com>
+
+	* src/v850_stub.c: Use 'br *' with a watchdog to emulate a
+	breakpoint since the hardware does not support them directly.
+
+2000-04-11  Gary Thomas  <gthomas@redhat.com>
+
+	* src/v850_stub.c (next_pc): Instruction "jmp [Rn]" was being
+	decoded incorrectly, leading to erroneous single step behaviour.
+
+2000-03-31  Gary Thomas  <gthomas@redhat.com>
+
+	* src/context.S: Use SLD/SST for smaller, faster code in context
+	save/restore functions.
+
+2000-03-30  Gary Thomas  <gthomas@redhat.com>
+
+	* src/context.S (_hal_longjmp): 
+	(_hal_setjmp): Need to save R1/R2/R4/R5 since GCC seems to use them.
+
+2000-03-27  Gary Thomas  <gthomas@redhat.com>
+
+	* include/var_intr.h: Remove extra junk left over from cut&paste.
+
+	* src/context.S: Add setjmp/longjmp support.
+
+2000-03-21  Gary Thomas  <gthomas@redhat.com>
+
+	* src/v850_stub.c (__skipinst): Use single step code properly.
+
+2000-03-20  Gary Thomas  <gthomas@redhat.com>
+
+	* src/v850_stub.c: Add single step support.
+
+//===========================================================================
+//####COPYRIGHTBEGIN####
+//                                                                          
+// -------------------------------------------                              
+// The contents of this file are subject to the Red Hat eCos Public License 
+// Version 1.1 (the "License"); you may not use this file except in         
+// compliance with the License.  You may obtain a copy of the License at    
+// http://www.redhat.com/                                                   
+//                                                                          
+// 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 Configurable Operating System,      
+// released September 30, 1998.                                             
+//                                                                          
+// The Initial Developer of the Original Code is Red Hat.                   
+// Portions created by Red Hat are                                          
+// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
+// All Rights Reserved.                                                     
+// -------------------------------------------                              
+//                                                                          
+//####COPYRIGHTEND####
+//===========================================================================
new file mode 100644
--- /dev/null
+++ b/packages/hal/v85x/v850/current/cdl/hal_v85x_v850.cdl
@@ -0,0 +1,76 @@
+# ====================================================================
+#
+#      hal_v85x_v850.cdl
+#
+#      NEC/V850 variant architectural HAL package configuration data
+#
+# ====================================================================
+#####COPYRIGHTBEGIN####
+#                                                                          
+# -------------------------------------------                              
+# The contents of this file are subject to the Red Hat eCos Public License 
+# Version 1.1 (the "License"); you may not use this file except in         
+# compliance with the License.  You may obtain a copy of the License at    
+# http://www.redhat.com/                                                   
+#                                                                          
+# 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 Configurable Operating System,      
+# released September 30, 1998.                                             
+#                                                                          
+# The Initial Developer of the Original Code is Red Hat.                   
+# Portions created by Red Hat are                                          
+# Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
+# All Rights Reserved.                                                     
+# -------------------------------------------                              
+#                                                                          
+#####COPYRIGHTEND####
+# ====================================================================
+######DESCRIPTIONBEGIN####
+#
+# Author(s):      gthomas
+# Contributors:
+# Date:           2000-03-09
+#
+#####DESCRIPTIONEND####
+#
+# ====================================================================
+
+cdl_package CYGPKG_HAL_V85X_V850 {
+    display       "V850 variant"
+    parent        CYGPKG_HAL_V85X
+    implements    CYGINT_HAL_V85X_VARIANT
+    hardware
+    include_dir   cyg/hal
+    define_header hal_v85x_v850.h
+    description   "
+           The V850 variant HAL package provides generic support
+           for this processor architecture. It is also necessary to
+           select a specific target platform HAL package."
+
+    define_proc {
+        puts $::cdl_header "#include <pkgconf/hal_v85x.h>"
+    }
+
+    compile v850_stub.c v850_misc.c context.S
+
+    make {
+        <PREFIX>/lib/target.ld: <PACKAGE>/src/v85x_v850.ld
+        $(CC) -E -P -Wp,-MD,target.tmp -DEXTRAS=1 -xc $(INCLUDE_PATH) $(CFLAGS) -o $@ $<
+        @echo $@ ": \\" > $(notdir $@).deps
+        @tail +2 target.tmp >> $(notdir $@).deps
+        @echo >> $(notdir $@).deps
+        @rm target.tmp
+    }
+
+    cdl_option CYGBLD_LINKER_SCRIPT {
+        display "Linker script"
+        flavor data
+	no_define
+        calculated  { "src/v85x_v850.ld" }
+    }
+
+}
new file mode 100644
--- /dev/null
+++ b/packages/hal/v85x/v850/current/include/v850_common.h
@@ -0,0 +1,56 @@
+#ifndef CYGONCE_V850_COMMON_H
+#define CYGONCE_V850_COMMON_H
+
+/*=============================================================================
+//
+//      v850_common.h
+//
+//      NEC/V850 common definitions
+//
+//=============================================================================
+//####COPYRIGHTBEGIN####
+//                                                                          
+// -------------------------------------------                              
+// The contents of this file are subject to the Red Hat eCos Public License 
+// Version 1.1 (the "License"); you may not use this file except in         
+// compliance with the License.  You may obtain a copy of the License at    
+// http://www.redhat.com/                                                   
+//                                                                          
+// 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 Configurable Operating System,      
+// released September 30, 1998.                                             
+//                                                                          
+// The Initial Developer of the Original Code is Red Hat.                   
+// Portions created by Red Hat are                                          
+// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
+// All Rights Reserved.                                                     
+// -------------------------------------------                              
+//                                                                          
+//####COPYRIGHTEND####
+//=============================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s):    gthomas
+// Contributors: gthomas
+// Date:         2000-03-10
+// Purpose:      NEC/V850 CPU family hardware description
+// Description:
+// Usage:        #include <cyg/hal/v850_common.h>
+//
+//####DESCRIPTIONEND####
+//
+//===========================================================================*/
+
+// Note: these defintions match the documentation, thus no attempt is made
+// to sanitize (mangle) the names.  Also, care should be taken to keep this
+// clean for use in assembly code (no "C" constructs).
+
+#include <cyg/hal/v850_regs.h>
+
+/*---------------------------------------------------------------------------*/
+/* end of v850_common.h                                                         */
+#endif /* CYGONCE_V850_COMMON_H */
new file mode 100644
--- /dev/null
+++ b/packages/hal/v85x/v850/current/include/var_arch.h
@@ -0,0 +1,85 @@
+#ifndef CYGONCE_HAL_VAR_ARCH_H
+#define CYGONCE_HAL_VAR_ARCH_H
+
+//==========================================================================
+//
+//      var_arch.h
+//
+//      Architecture specific abstractions
+//
+//==========================================================================
+//####COPYRIGHTBEGIN####
+//                                                                          
+// -------------------------------------------                              
+// The contents of this file are subject to the Red Hat eCos Public License 
+// Version 1.1 (the "License"); you may not use this file except in         
+// compliance with the License.  You may obtain a copy of the License at    
+// http://www.redhat.com/                                                   
+//                                                                          
+// 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 Configurable Operating System,      
+// released September 30, 1998.                                             
+//                                                                          
+// The Initial Developer of the Original Code is Red Hat.                   
+// Portions created by Red Hat are                                          
+// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
+// All Rights Reserved.                                                     
+// -------------------------------------------                              
+//                                                                          
+//####COPYRIGHTEND####
+//==========================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s):    nickg
+// Contributors: nickg, gthomas
+// Date:         1999-02-17
+// Purpose:      Define architecture abstractions
+// Description:  This file contains any extra or modified definitions for
+//               this variant of the architecture.
+// Usage:        #include <cyg/hal/var_arch.h>
+//              
+//####DESCRIPTIONEND####
+//
+//==========================================================================
+
+#include <pkgconf/hal.h>
+#include <cyg/infra/cyg_type.h>
+
+#define CYG_HAL_GDB_REG CYG_WORD32
+
+// Copy a set of registers from a HAL_SavedRegisters structure into a
+// GDB ordered array.    
+#define HAL_GET_GDB_REGISTERS( _aregval_ , _regs_ )             \
+{                                                               \
+    CYG_HAL_GDB_REG *_regval_ = (CYG_HAL_GDB_REG *)(_aregval_); \
+    int _i_;                                                    \
+                                                                \
+    for( _i_ = 0; _i_ < 32; _i_++ )                             \
+        _regval_[_i_] = (_regs_)->d[_i_];                       \
+                                                                \
+    _regval_[37] = (_regs_)->psw;                               \
+    _regval_[36] = (_regs_)->cause;                             \
+    _regval_[64] = (_regs_)->pc;                                \
+}
+
+// Copy a GDB ordered array into a HAL_SavedRegisters structure.
+#define HAL_SET_GDB_REGISTERS( _regs_ , _aregval_ )             \
+{                                                               \
+    CYG_HAL_GDB_REG *_regval_ = (CYG_HAL_GDB_REG *)(_aregval_); \
+    int _i_;                                                    \
+                                                                \
+    for( _i_ = 0; _i_ < 32; _i_++ )                             \
+        (_regs_)->d[_i_] = _regval_[_i_];                       \
+                                                                \
+    (_regs_)->psw = _regval_[37];                               \
+    (_regs_)->cause = _regval_[36];                             \
+    (_regs_)->pc = _regval_[64];                                \
+}
+
+//--------------------------------------------------------------------------
+#endif // CYGONCE_HAL_VAR_ARCH_H
+// End of var_arch.h
new file mode 100644
--- /dev/null
+++ b/packages/hal/v85x/v850/current/include/var_cache.h
@@ -0,0 +1,59 @@
+#ifndef CYGONCE_VAR_CACHE_H
+#define CYGONCE_VAR_CACHE_H
+
+//=============================================================================
+//
+//      var_cache.h
+//
+//      HAL cache control API
+//
+//=============================================================================
+//####COPYRIGHTBEGIN####
+//                                                                          
+// -------------------------------------------                              
+// The contents of this file are subject to the Red Hat eCos Public License 
+// Version 1.1 (the "License"); you may not use this file except in         
+// compliance with the License.  You may obtain a copy of the License at    
+// http://www.redhat.com/                                                   
+//                                                                          
+// 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 Configurable Operating System,      
+// released September 30, 1998.                                             
+//                                                                          
+// The Initial Developer of the Original Code is Red Hat.                   
+// Portions created by Red Hat are                                          
+// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
+// All Rights Reserved.                                                     
+// -------------------------------------------                              
+//                                                                          
+//####COPYRIGHTEND####
+//=============================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s):   nickg
+// Contributors:        nickg
+// Date:        1998-02-17
+// Purpose:     Cache control API
+// Description: The macros defined here provide the HAL APIs for handling
+//              cache control operations.
+// Usage:
+//              #include <cyg/hal/var_cache.h>
+//              ...
+//              
+//
+//####DESCRIPTIONEND####
+//
+//=============================================================================
+
+#include <pkgconf/hal.h>
+#include <cyg/infra/cyg_type.h>
+
+#include <cyg/hal/plf_cache.h>
+
+//-----------------------------------------------------------------------------
+#endif // ifndef CYGONCE_VAR_CACHE_H
+// End of var_cache.h
new file mode 100644
--- /dev/null
+++ b/packages/hal/v85x/v850/current/include/var_intr.h
@@ -0,0 +1,71 @@
+#ifndef CYGONCE_HAL_VAR_INTR_H
+#define CYGONCE_HAL_VAR_INTR_H
+
+//==========================================================================
+//
+//      var_intr.h
+//
+//      VR4300 Interrupt and clock support
+//
+//==========================================================================
+//####COPYRIGHTBEGIN####
+//                                                                          
+// -------------------------------------------                              
+// The contents of this file are subject to the Red Hat eCos Public License 
+// Version 1.1 (the "License"); you may not use this file except in         
+// compliance with the License.  You may obtain a copy of the License at    
+// http://www.redhat.com/                                                   
+//                                                                          
+// 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 Configurable Operating System,      
+// released September 30, 1998.                                             
+//                                                                          
+// The Initial Developer of the Original Code is Red Hat.                   
+// Portions created by Red Hat are                                          
+// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
+// All Rights Reserved.                                                     
+// -------------------------------------------                              
+//                                                                          
+//####COPYRIGHTEND####
+//==========================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s):    nickg
+// Contributors: nickg, jskov,
+//               gthomas, jlarmour
+// Date:         1999-02-16
+// Purpose:      VR4300 Interrupt support
+// Description:  The macros defined here provide the HAL APIs for handling
+//               interrupts and the clock for variants of the NEC VR4300
+//               architecture.
+//              
+// Usage:
+//              #include <cyg/hal/var_intr.h>
+//              ...
+//              
+//
+//####DESCRIPTIONEND####
+//
+//==========================================================================
+
+#include <pkgconf/hal.h>
+
+#include <cyg/infra/cyg_type.h>
+
+#include <cyg/hal/plf_intr.h>
+
+//--------------------------------------------------------------------------
+// Interrupt controller access.
+
+//--------------------------------------------------------------------------
+// Clock control
+
+// This is handled by the default code
+
+//--------------------------------------------------------------------------
+#endif // ifndef CYGONCE_HAL_VAR_INTR_H
+// End of var_intr.h
new file mode 100644
--- /dev/null
+++ b/packages/hal/v85x/v850/current/src/context.S
@@ -0,0 +1,205 @@
+// #=============================================================================
+// #
+// #	context.S
+// #
+// #	NEC/V850 context switch code
+// #
+// #=============================================================================
+// ####COPYRIGHTBEGIN####
+//                                                                          
+// -------------------------------------------                              
+// The contents of this file are subject to the Red Hat eCos Public License 
+// Version 1.1 (the "License"); you may not use this file except in         
+// compliance with the License.  You may obtain a copy of the License at    
+// http://www.redhat.com/                                                   
+//                                                                          
+// 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 Configurable Operating System,      
+// released September 30, 1998.                                             
+//                                                                          
+// The Initial Developer of the Original Code is Red Hat.                   
+// Portions created by Red Hat are                                          
+// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
+// All Rights Reserved.                                                     
+// -------------------------------------------                              
+//                                                                          
+// ####COPYRIGHTEND####
+// #=============================================================================
+// ######DESCRIPTIONBEGIN####
+// #
+// # Author(s): 	nickg, gthomas
+// # Contributors:	nickg, gthomas
+// # Date:	1998-09-15
+// # Purpose:	NEC/V850 context switch code
+// # Description:	This file contains implementations of the thread context 
+// #	switch routines. It also contains the longjmp() and setjmp() routines.
+// #
+// #####DESCRIPTIONEND####
+// #
+// #=============================================================================
+
+#include <pkgconf/hal.h>
+
+#include <cyg/hal/nec_offsets.inc>
+
+	.text
+		
+// ------------------------------------------------------------------------------
+//  hal_thread_switch_context
+//  Switch thread contexts
+//  R6 = address of sp of next thread to execute
+//  R7 = address of sp save location of current thread
+        .globl  __hal_thread_switch_context
+__hal_thread_switch_context:             
+        addi    -CYGARC_EXCEPTION_FRAME_SIZE,sp,sp        
+        st.w    ep,CYGARC_REG_EP[sp]
+        mov     sp,ep
+        sst.w   r1,CYGARC_REG_R1[ep]        
+        sst.w   r2,CYGARC_REG_R2[ep]        
+        addi    CYGARC_EXCEPTION_FRAME_SIZE,ep,r1
+        sst.w   r1,CYGARC_REG_SP[ep]    // sp
+        sst.w   r4,CYGARC_REG_R4[ep]        
+        sst.w   r5,CYGARC_REG_R5[ep]        
+        sst.w   r6,CYGARC_REG_R6[ep]        
+        sst.w   r7,CYGARC_REG_R7[ep]        
+        sst.w   r8,CYGARC_REG_R8[ep]        
+        sst.w   r9,CYGARC_REG_R9[ep]        
+        sst.w   r10,CYGARC_REG_R10[ep]        
+        sst.w   r11,CYGARC_REG_R11[ep]        
+        sst.w   r12,CYGARC_REG_R12[ep]        
+        sst.w   r13,CYGARC_REG_R13[ep]        
+        sst.w   r14,CYGARC_REG_R14[ep]        
+        sst.w   r15,CYGARC_REG_R15[ep]        
+        sst.w   r16,CYGARC_REG_R16[ep]        
+        sst.w   r17,CYGARC_REG_R17[ep]        
+        sst.w   r18,CYGARC_REG_R18[ep]        
+        sst.w   r19,CYGARC_REG_R19[ep]        
+        sst.w   r20,CYGARC_REG_R20[ep]        
+        sst.w   r21,CYGARC_REG_R21[ep]        
+        sst.w   r22,CYGARC_REG_R22[ep]        
+        sst.w   r23,CYGARC_REG_R23[ep]        
+        sst.w   r24,CYGARC_REG_R24[ep]        
+        sst.w   r25,CYGARC_REG_R25[ep]        
+        sst.w   r26,CYGARC_REG_R26[ep]        
+        sst.w   r27,CYGARC_REG_R27[ep]        
+        sst.w   r28,CYGARC_REG_R28[ep]        
+        sst.w   r29,CYGARC_REG_R29[ep]        
+        sst.w   lp,CYGARC_REG_LP[ep]
+        sst.w   lp,CYGARC_REG_PC[ep]
+        stsr    PSW,r1
+        st.w    r1,CYGARC_REG_PSW[ep]
+        st.w    sp,0[r7]        // return new stack pointer
+
+	# Now load the destination thread by dropping through
+	# to hal_thread_load_context
+// ------------------------------------------------------------------------------
+//  hal_thread_load_context
+//  Load thread context
+//  R6 = address of sp of next thread to execute
+//  Note that this function is also the second half of hal_thread_switch_context
+//  and is simply dropped into from it.
+
+        .globl  __hal_thread_load_context
+__hal_thread_load_context:       
+        di                              // disable interrupts while updating state
+        ld.w    0[r6],ep                // get pointer to saved state
+        ld.w    CYGARC_REG_PSW[ep],r6
+        sld.w   CYGARC_REG_LP[ep],r7  
+        sld.w   CYGARC_REG_R1[ep],r1    // restore volatile registers
+        sld.w   CYGARC_REG_R2[ep],r2
+        ldsr    r6,EIPSW                // avoids pipline bubble
+        ldsr    r7,EIPC
+        sld.w   CYGARC_REG_R4[ep],r4
+        sld.w   CYGARC_REG_R5[ep],r5
+        sld.w   CYGARC_REG_R6[ep],r6
+        sld.w   CYGARC_REG_R7[ep],r7
+        sld.w   CYGARC_REG_R8[ep],r8
+        sld.w   CYGARC_REG_R9[ep],r9
+        sld.w   CYGARC_REG_R10[ep],r10
+        sld.w   CYGARC_REG_R11[ep],r11
+        sld.w   CYGARC_REG_R12[ep],r12
+        sld.w   CYGARC_REG_R13[ep],r13
+        sld.w   CYGARC_REG_R14[ep],r14
+        sld.w   CYGARC_REG_R15[ep],r15
+        sld.w   CYGARC_REG_R16[ep],r16
+        sld.w   CYGARC_REG_R17[ep],r17
+        sld.w   CYGARC_REG_R18[ep],r18
+        sld.w   CYGARC_REG_R19[ep],r19
+        sld.w   CYGARC_REG_R20[ep],r20
+        sld.w   CYGARC_REG_R21[ep],r21
+        sld.w   CYGARC_REG_R22[ep],r22
+        sld.w   CYGARC_REG_R23[ep],r23
+        sld.w   CYGARC_REG_R24[ep],r24
+        sld.w   CYGARC_REG_R25[ep],r25
+        sld.w   CYGARC_REG_R26[ep],r26
+        sld.w   CYGARC_REG_R27[ep],r27
+        sld.w   CYGARC_REG_R28[ep],r28
+        sld.w   CYGARC_REG_R29[ep],r29
+        sld.w   CYGARC_REG_LP[ep],lp
+        sld.w   CYGARC_REG_SP[ep],sp
+        sld.w   CYGARC_REG_EP[ep],ep
+        reti
+        
+// ------------------------------------------------------------------------------
+//  HAL longjmp, setjmp implementations
+
+#define fp r29        
+
+        .globl  _hal_setjmp
+_hal_setjmp:    
+        st.w    r1,CYGARC_JMPBUF_R1[r6]        
+        st.w    r2,CYGARC_JMPBUF_R2[r6]        
+        st.w    r4,CYGARC_JMPBUF_R4[r6]        
+        st.w    r5,CYGARC_JMPBUF_R5[r6]        
+        st.w    sp,CYGARC_JMPBUF_SP[r6]        
+        st.w    gp,CYGARC_JMPBUF_GP[r6]        
+        st.w    tp,CYGARC_JMPBUF_TP[r6]        
+        st.w    r20,CYGARC_JMPBUF_R20[r6]        
+        st.w    r21,CYGARC_JMPBUF_R21[r6]        
+        st.w    r22,CYGARC_JMPBUF_R22[r6]        
+        st.w    r23,CYGARC_JMPBUF_R23[r6]        
+        st.w    r24,CYGARC_JMPBUF_R24[r6]        
+        st.w    r25,CYGARC_JMPBUF_R25[r6]        
+        st.w    r26,CYGARC_JMPBUF_R26[r6]        
+        st.w    r27,CYGARC_JMPBUF_R27[r6]        
+        st.w    r28,CYGARC_JMPBUF_R28[r6]        
+        st.w    fp,CYGARC_JMPBUF_FP[r6]        
+        st.w    ep,CYGARC_JMPBUF_EP[r6]        
+        st.w    lp,CYGARC_JMPBUF_LP[r6]
+        mov     r0,r10
+        jmp     [lp]        
+
+//  hal_longjmp loads state from [arg0] and returns arg1
+
+        .globl  _hal_longjmp
+_hal_longjmp:           	
+        ld.w    CYGARC_JMPBUF_SP[r6],sp
+        ld.w    CYGARC_JMPBUF_GP[r6],gp               
+        ld.w    CYGARC_JMPBUF_TP[r6],tp                
+        ld.w    CYGARC_JMPBUF_R1[r6],r1
+        ld.w    CYGARC_JMPBUF_R2[r6],r2        
+        ld.w    CYGARC_JMPBUF_R4[r6],r4        
+        ld.w    CYGARC_JMPBUF_R5[r6],r5        
+        ld.w    CYGARC_JMPBUF_R20[r6],r20        
+        ld.w    CYGARC_JMPBUF_R21[r6],r21        
+        ld.w    CYGARC_JMPBUF_R22[r6],r22        
+        ld.w    CYGARC_JMPBUF_R23[r6],r23        
+        ld.w    CYGARC_JMPBUF_R24[r6],r24        
+        ld.w    CYGARC_JMPBUF_R25[r6],r25                
+        ld.w    CYGARC_JMPBUF_R26[r6],r26                
+        ld.w    CYGARC_JMPBUF_R27[r6],r27                
+        ld.w    CYGARC_JMPBUF_R28[r6],r28                
+        ld.w    CYGARC_JMPBUF_FP[r6],fp
+        ld.w    CYGARC_JMPBUF_EP[r6],ep
+        ld.w    CYGARC_JMPBUF_LP[r6],lp
+        mov     r7,r10
+        jmp     [lp]        
+
+// ------------------------------------------------------------------------------
+//  end of context.S
+
+	
new file mode 100644
--- /dev/null
+++ b/packages/hal/v85x/v850/current/src/nec.ld
@@ -0,0 +1,124 @@
+//=============================================================================
+//
+// MLT linker script for NEC
+// adapted from packages/hal/arm/pid/v1_1/src/pid.ld
+//
+//=============================================================================
+//####COPYRIGHTBEGIN####
+//                                                                          
+// -------------------------------------------                              
+// The contents of this file are subject to the Red Hat eCos Public License 
+// Version 1.1 (the "License"); you may not use this file except in         
+// compliance with the License.  You may obtain a copy of the License at    
+// http://www.redhat.com/                                                   
+//                                                                          
+// 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 Configurable Operating System,      
+// released September 30, 1998.                                             
+//                                                                          
+// The Initial Developer of the Original Code is Red Hat.                   
+// Portions created by Red Hat are                                          
+// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
+// All Rights Reserved.                                                     
+// -------------------------------------------                              
+//                                                                          
+//####COPYRIGHTEND####
+//=============================================================================
+
+#include <pkgconf/system.h>
+
+STARTUP(vectors.o)
+ENTRY(reset_vector)
+#ifdef EXTRAS
+INPUT(extras.o)
+#endif
+GROUP(libtarget.a libgcc.a)
+
+#define ALIGN_LMA 4
+#define FOLLOWING(_section_) AT ((LOADADDR (_section_) + SIZEOF (_section_) + ALIGN_LMA - 1) & ~ (ALIGN_LMA - 1))
+#define LMA_EQ_VMA
+#define FORCE_OUTPUT . = .
+
+#define SECTIONS_BEGIN                          \
+  /* Debug information */                       \
+  .debug_aranges  0 : { *(.debug_aranges) }     \
+  .debug_pubnames 0 : { *(.debug_pubnames) }    \
+  .debug_info     0 : { *(.debug_info) }        \
+  .debug_abbrev   0 : { *(.debug_abbrev) }      \
+  .debug_line     0 : { *(.debug_line) }        \
+  .debug_frame    0 : { *(.debug_frame) }       \
+  .debug_str      0 : { *(.debug_str) }         \
+  .debug_loc      0 : { *(.debug_loc) }         \
+  .debug_macinfo  0 : { *(.debug_macinfo) }
+
+#define SECTION_rom_vectors(_region_, _vma_, _lma_) \
+    .rom_vectors _vma_ : _lma_ \
+    { FORCE_OUTPUT; KEEP (*(.vectors)) } \
+    > _region_
+
+#define SECTION_text(_region_, _vma_, _lma_) \
+    .text _vma_ : _lma_ \
+    { stext = ABSOLUTE(.); \
+    PROVIDE (__stext = ABSOLUTE(.)); \
+    *(.text*) *(.gnu.warning) *(.gnu.linkonce*) *(.init) \
+    *(.glue_7) *(.glue_7t)  \
+    } > _region_ \
+    etext = .; PROVIDE (__etext = .);
+
+#define SECTION_fini(_region_, _vma_, _lma_) \
+    .fini _vma_ : _lma_ \
+    { FORCE_OUTPUT; *(.fini) } \
+    > _region_
+
+#define SECTION_rodata(_region_, _vma_, _lma_) \
+    .rodata _vma_ : _lma_ \
+    { FORCE_OUTPUT; *(.rodata*) } \
+    > _region_
+
+#define SECTION_rodata1(_region_, _vma_, _lma_) \
+    .rodata1 _vma_ : _lma_ \
+    { FORCE_OUTPUT; *(.rodata1) } \
+    > _region_
+
+#define SECTION_fixup(_region_, _vma_, _lma_) \
+    .fixup _vma_ : _lma_ \
+    { FORCE_OUTPUT; *(.fixup) } \
+    > _region_
+
+#define SECTION_gcc_except_table(_region_, _vma_, _lma_) \
+    .gcc_except_table _vma_ : _lma_ \
+    { FORCE_OUTPUT; *(.gcc_except_table) } \
+    > _region_
+
+#define SECTION_data(_region_,  _vma_, _lma_) \
+    .data _vma_ : _lma_ \
+    { __ram_data_start = ABSOLUTE (.); *(.data*) *(.data1) MERGE_IN_RODATA \
+    _GOT1_START_ = ABSOLUTE (.); *(.got1) _GOT1_END_ = ABSOLUTE (.); \
+    _GOT2_START_ = ABSOLUTE (.); *(.got2) _GOT2_END_ = ABSOLUTE (.); \
+    . = ALIGN (4); \
+    __DEVTAB__ = ABSOLUTE (.); KEEP (*(SORT (.devtab*))) __DEVTAB_END__ = ABSOLUTE (.); \
+    __NETDEVTAB__ = ABSOLUTE (.); KEEP (*(SORT (.netdevtab*))) __NETDEVTAB_END__ = ABSOLUTE (.); \
+    __CTOR_LIST__ = ABSOLUTE (.); KEEP (*(SORT (.ctors*))) __CTOR_END__ = ABSOLUTE (.); \
+    __DTOR_LIST__ = ABSOLUTE (.); KEEP (*(SORT (.dtors*))) __DTOR_END__ = ABSOLUTE (.); \
+    *(.dynamic) *(.sdata*) *(.sbss*) } \
+    > _region_ \
+    __rom_data_start = LOADADDR (.data); \
+    __ram_data_end = .; PROVIDE (__ram_data_end = .); _edata = .; PROVIDE (edata = .); \
+    PROVIDE (__rom_data_end = LOADADDR (.data) + SIZEOF(.data));
+
+#define SECTION_bss(_region_,  _vma_, _lma_) \
+    .bss _vma_ : _lma_ \
+    { __bss_start = ABSOLUTE (.); \
+    *(.scommon) *(.dynbss) *(.bss*) *(COMMON) \
+    __bss_end = ABSOLUTE (.); } \
+    > _region_
+
+#define SECTIONS_END . = ALIGN(4); _end = .; PROVIDE (end = .);
+
+#include <pkgconf/hal_nec.h>
+#include <pkgconf/hal_nec_v850.h>
+#include CYGHWR_MEMORY_LAYOUT_LDI
new file mode 100644
--- /dev/null
+++ b/packages/hal/v85x/v850/current/src/v850_misc.c
@@ -0,0 +1,125 @@
+//==========================================================================
+//
+//      v850_misc.c
+//
+//      HAL CPU variant miscellaneous functions
+//
+//==========================================================================
+//####COPYRIGHTBEGIN####
+//                                                                          
+// -------------------------------------------                              
+// The contents of this file are subject to the Red Hat eCos Public License 
+// Version 1.1 (the "License"); you may not use this file except in         
+// compliance with the License.  You may obtain a copy of the License at    
+// http://www.redhat.com/                                                   
+//                                                                          
+// 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 Configurable Operating System,      
+// released September 30, 1998.                                             
+//                                                                          
+// The Initial Developer of the Original Code is Red Hat.                   
+// Portions created by Red Hat are                                          
+// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
+// All Rights Reserved.                                                     
+// -------------------------------------------                              
+//                                                                          
+//####COPYRIGHTEND####
+//==========================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s):    gthomas
+// Contributors: gthomas
+// Date:         2000-03-15
+// Purpose:      HAL miscellaneous functions
+// Description:  This file contains miscellaneous functions provided by the
+//               HAL.
+//
+//####DESCRIPTIONEND####
+//
+//========================================================================*/
+
+#include <pkgconf/hal.h>
+
+#include <cyg/infra/cyg_type.h>         // Base types
+#include <cyg/infra/cyg_trac.h>         // tracing macros
+#include <cyg/infra/cyg_ass.h>          // assertion macros
+
+#include <cyg/hal/hal_intr.h>
+#include <cyg/hal/v850_common.h>
+
+externC void cyg_hal_platform_hardware_init(void);
+
+//
+// Interrupt management functions
+//
+
+static volatile unsigned char *interrupt_control_registers[] = {
+    CYG_HAL_V85X_INTERRUPT_CONTROL_REGISTERS   // Defined in <plf_intr.h>
+};
+
+#define INT_CONTROL_PENDING   0x80
+#define INT_CONTROL_DISABLE   0x40
+#define INT_CONTROL_LEVEL(n)  n
+
+#define INT_CONTROL_DEFAULT INT_CONTROL_DISABLE|INT_CONTROL_LEVEL(7)
+
+//
+// Mask, i.e. disable, interrupt #vector from occurring
+//
+void 
+hal_interrupt_mask(int vector)
+{
+    volatile unsigned char *ctl;
+    ctl = interrupt_control_registers[vector-CYGNUM_HAL_ISR_MIN];
+    *ctl |= INT_CONTROL_DISABLE;
+}
+
+//
+// Unmask, i.e. enable, interrupt #vector
+//
+void 
+hal_interrupt_unmask(int vector)
+{
+    volatile unsigned char *ctl;
+    ctl = interrupt_control_registers[vector-CYGNUM_HAL_ISR_MIN];
+    *ctl &= ~INT_CONTROL_DISABLE;
+}
+
+//
+// Acknowledge, i.e. clear, interrupt #vector
+//
+void 
+hal_interrupt_acknowledge(int vector)
+{
+    volatile unsigned char *ctl;
+    ctl = interrupt_control_registers[vector-CYGNUM_HAL_ISR_MIN];
+    *ctl &= ~INT_CONTROL_PENDING;
+}
+
+static void
+init_interrupts(void)
+{
+    int i;
+    volatile unsigned char *ctl;
+    for (i = CYGNUM_HAL_ISR_MIN;  i <= CYGNUM_HAL_ISR_MAX;  i++) {
+        ctl = interrupt_control_registers[i-CYGNUM_HAL_ISR_MIN];
+        *ctl = INT_CONTROL_DEFAULT;
+    }
+}
+
+//
+// Initialize the hardware.  This may involve platform specific code.
+//
+void
+cyg_hal_hardware_init(void)
+{
+    init_interrupts();
+    cyg_hal_platform_hardware_init();
+}
+
+/*------------------------------------------------------------------------*/
+/* End of v850_misc.c                                                      */
new file mode 100644
--- /dev/null
+++ b/packages/hal/v85x/v850/current/src/v850_stub.c
@@ -0,0 +1,315 @@
+//========================================================================
+//
+//      nec_stub.c
+//
+//      Helper functions for stub, generic to all NEC processors
+//
+//========================================================================
+//####COPYRIGHTBEGIN####
+//                                                                          
+// -------------------------------------------                              
+// The contents of this file are subject to the Red Hat eCos Public License 
+// Version 1.1 (the "License"); you may not use this file except in         
+// compliance with the License.  You may obtain a copy of the License at    
+// http://www.redhat.com/                                                   
+//                                                                          
+// 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 Configurable Operating System,      
+// released September 30, 1998.                                             
+//                                                                          
+// The Initial Developer of the Original Code is Red Hat.                   
+// Portions created by Red Hat are                                          
+// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
+// All Rights Reserved.                                                     
+// -------------------------------------------                              
+//                                                                          
+//####COPYRIGHTEND####
+//========================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s):     Red Hat, gthomas
+// Contributors:  Red Hat, gthomas, jskov
+// Date:          1998-11-26
+// Purpose:       
+// Description:   Helper functions for stub, generic to all NEC processors
+// Usage:         
+//
+//####DESCRIPTIONEND####
+//
+//========================================================================
+
+#include <stddef.h>
+
+#include <pkgconf/hal.h>
+#ifdef CYGPKG_CYGMON
+#include <pkgconf/cygmon.h>
+#endif
+
+#ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
+
+#include <cyg/hal/hal_stub.h>
+#include <cyg/hal/hal_arch.h>
+#include <cyg/hal/hal_intr.h>
+
+#ifndef FALSE
+#define FALSE 0
+#define TRUE  1
+#endif
+
+#ifdef CYGDBG_HAL_DEBUG_GDB_THREAD_SUPPORT
+#include <cyg/hal/dbg-threads-api.h>    // dbg_currthread_id
+#endif
+
+/* Given a trap value TRAP, return the corresponding signal. */
+
+int __computeSignal (unsigned int trap_number)
+{
+    unsigned short curins, *pc;
+    switch (trap_number) {
+    case CYGNUM_HAL_VECTOR_WATCHDOG_TIMER:
+        pc = (unsigned short *)_hal_registers->pc;
+        curins = *pc;
+        if (curins == 0x0585) {
+            // "br *" - used for breakpoint
+            return SIGTRAP;
+        } else {
+            // Anything else - just ignore it happened
+            return 0;
+        }
+    case CYGNUM_HAL_VECTOR_NMI:
+        return SIGINT;
+    default:
+        return SIGTRAP;
+    }
+}
+
+
+/* Return the trap number corresponding to the last-taken trap. */
+int __get_trap_number (void)
+{
+    // The vector is not not part of the GDB register set so get it
+    // directly from the save context.
+    return _hal_registers->vector;
+}
+
+/* Set the currently-saved pc register value to PC. */
+
+void set_pc (target_register_t pc)
+{
+    put_register (PC, pc);
+}
+
+
+/*----------------------------------------------------------------------
+ * Single-step support
+ */
+
+/* Set things up so that the next user resume will execute one instruction.
+   This may be done by setting breakpoints or setting a single step flag
+   in the saved user registers, for example. */
+
+static unsigned short *ss_saved_pc = 0;
+static unsigned short  ss_saved_instr[2];
+static int             ss_saved_instr_size;
+
+#define FIXME() {diag_printf("FIXME - %s\n", __FUNCTION__); }
+
+static unsigned short *
+next_pc(unsigned short *pc)
+{
+    unsigned short curins = *pc;
+    unsigned short *newpc = pc;
+
+    switch ((curins & 0x0780) >> 7) {
+    case 0x0:
+        if ((curins & 0x60) == 0x60) {
+            int Rn = curins & 0x1F;
+            newpc = (unsigned short *)get_register(Rn);
+        } else {
+            newpc = pc+1;
+        }
+        break;
+    case 0x1:
+    case 0x2:
+    case 0x3:
+    case 0x4:
+    case 0x5:
+        // Arithmetic - no branch opcodes
+        newpc = pc+1;
+        break;
+    case 0x6:
+    case 0x7:
+    case 0x8:
+    case 0x9:
+    case 0xA:
+        // Load and store - no branch opcodes
+        newpc = pc+2;
+        break;
+    case 0xB:
+        // Conditional branch
+        if (1) {
+            unsigned long psw = get_register(PSW);
+#define PSW_SAT 0x10
+#define PSW_CY  0x08
+#define PSW_OV  0x04
+#define PSW_S   0x02
+#define PSW_Z   0x01
+            long disp = ((curins & 0xF800) >> 8) | ((curins & 0x70) >> 4);    
+            int cc = curins & 0x0F;
+            int S = (psw & PSW_S) != 0;
+            int Z = (psw & PSW_Z) != 0;
+            int OV = (psw & PSW_OV) != 0;
+            int CY = (psw & PSW_CY) != 0;
+            int do_branch = 0;
+            if (curins & 0x8000) disp |= 0xFFFFFF00;
+            switch (cc) {
+            case 0x0: // BV
+                do_branch = (OV == 1);
+                break;
+            case 0x1: // BL
+                do_branch = (CY == 1);
+                break;
+            case 0x2: // BE
+                do_branch = (Z == 1);
+                break;
+            case 0x3: // BNH
+                do_branch = ((CY | Z) == 1);
+                break;
+            case 0x4: // BN
+                do_branch = (S == 1);
+                break;
+            case 0x5: // - always
+                do_branch = 1;
+                break;
+            case 0x6: // BLT
+                do_branch = ((S ^ OV) == 1);
+                break;
+            case 0x7: // BLE
+                do_branch = (((S ^ OV) | Z) == 1);
+                break;
+            case 0x8: // BNV
+                do_branch = (OV == 0);
+                break;
+            case 0x9: // BNL
+                do_branch = (CY == 0);
+                break;
+            case 0xA: // BNE
+                do_branch = (Z == 0);
+                break;
+            case 0xB: // BH
+                do_branch = ((CY | Z) == 0);
+                break;
+            case 0xC: // BP
+                do_branch = (S == 0);
+                break;
+            case 0xD: // BSA
+                do_branch = ((psw & PSW_SAT) != 0);
+                break;
+            case 0xE: // BGE
+                do_branch = ((S ^ OV) == 0);
+                break;
+            case 0xF: // BGT
+                do_branch = (((S ^ OV) | Z) == 0);
+                break;
+            }
+            if (do_branch) {
+                newpc = pc + disp;
+            } else {
+                newpc = pc + 1;
+            }
+        }
+        break;
+    case 0xC:
+    case 0xD:
+    case 0xE:
+        // Arithmetic & load/store - no branch opcodes
+        newpc = pc+2;
+        break;
+    case 0xF:
+        if ((curins & 0x60) >= 0x40) {
+            // Bitfield and extended instructions - no branch opcodes
+            newpc = pc+2;
+        } else {
+            // JR/JARL
+            long disp = ((curins & 0x3F) << 16) | *(pc+1);
+            if (curins & 0x20) disp |= 0xFFC00000;
+            newpc = pc + (disp>>1);
+        }
+    }
+    return newpc;
+}
+
+void __single_step (void)
+{
+    unsigned short *pc = (unsigned short *)get_register(PC);
+    unsigned short *break_pc;
+    unsigned short  _breakpoint[] = {0x07E0, 0x0780};
+    unsigned short *breakpoint = _breakpoint;
+    // If the current instruction is a branch, decide if the branch will
+    // be taken to determine where to set the breakpoint.
+    break_pc = next_pc(pc);
+    // Now see what kind of breakpoint can be used.
+    // Note: since this is a single step, always use the 32 bit version.
+    ss_saved_pc = break_pc;
+    ss_saved_instr_size = 2;
+    ss_saved_instr[0] = *break_pc;
+    *break_pc++ = *breakpoint++;
+    ss_saved_instr[1] = *break_pc;
+    *break_pc++ = *breakpoint++;
+}
+
+/* Clear the single-step state. */
+
+void __clear_single_step (void)
+{
+    unsigned short *pc, *val;
+    int i;
+    if (ss_saved_instr_size != 0) {
+        pc = ss_saved_pc;
+        val = ss_saved_instr;
+        for (i = 0;  i < ss_saved_instr_size;  i++) {
+            *pc++ = *val++;
+        }
+        ss_saved_instr_size = 0;
+    }
+}
+
+#if !defined(CYGPKG_CYGMON)
+void __install_breakpoints (void)
+{
+//    FIXME();
+}
+
+void __clear_breakpoints (void)
+{
+//    FIXME();
+}
+#endif // !CYGPKG_CYGMON
+
+/* If the breakpoint we hit is in the breakpoint() instruction, return a
+   non-zero value. */
+
+int
+__is_breakpoint_function ()
+{
+    return get_register (PC) == (target_register_t)&CYG_LABEL_NAME(breakinst);
+}
+
+
+/* Skip the current instruction.  Since this is only called by the
+   stub when the PC points to a breakpoint or trap instruction,
+*/
+
+void __skipinst (void)
+{
+    unsigned short *pc = (unsigned short *)get_register(PC);
+    pc = next_pc(pc);
+    put_register(PC, (unsigned long)pc);
+}
+
+
+#endif // CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
new file mode 100644
--- /dev/null
+++ b/packages/hal/v85x/v850/current/src/v85x_v850.ld
@@ -0,0 +1,124 @@
+//=============================================================================
+//
+// MLT linker script for NEC
+// adapted from packages/hal/arm/pid/v1_1/src/pid.ld
+//
+//=============================================================================
+//####COPYRIGHTBEGIN####
+//                                                                          
+// -------------------------------------------                              
+// The contents of this file are subject to the Red Hat eCos Public License 
+// Version 1.1 (the "License"); you may not use this file except in         
+// compliance with the License.  You may obtain a copy of the License at    
+// http://www.redhat.com/                                                   
+//                                                                          
+// 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 Configurable Operating System,      
+// released September 30, 1998.                                             
+//                                                                          
+// The Initial Developer of the Original Code is Red Hat.                   
+// Portions created by Red Hat are                                          
+// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
+// All Rights Reserved.                                                     
+// -------------------------------------------                              
+//                                                                          
+//####COPYRIGHTEND####
+//=============================================================================
+
+#include <pkgconf/system.h>
+
+STARTUP(vectors.o)
+ENTRY(reset_vector)
+#ifdef EXTRAS
+INPUT(extras.o)
+#endif
+GROUP(libtarget.a libgcc.a)
+
+#define ALIGN_LMA 4
+#define FOLLOWING(_section_) AT ((LOADADDR (_section_) + SIZEOF (_section_) + ALIGN_LMA - 1) & ~ (ALIGN_LMA - 1))
+#define LMA_EQ_VMA
+#define FORCE_OUTPUT . = .
+
+#define SECTIONS_BEGIN                          \
+  /* Debug information */                       \
+  .debug_aranges  0 : { *(.debug_aranges) }     \
+  .debug_pubnames 0 : { *(.debug_pubnames) }    \
+  .debug_info     0 : { *(.debug_info) }        \
+  .debug_abbrev   0 : { *(.debug_abbrev) }      \
+  .debug_line     0 : { *(.debug_line) }        \
+  .debug_frame    0 : { *(.debug_frame) }       \
+  .debug_str      0 : { *(.debug_str) }         \
+  .debug_loc      0 : { *(.debug_loc) }         \
+  .debug_macinfo  0 : { *(.debug_macinfo) }
+
+#define SECTION_rom_vectors(_region_, _vma_, _lma_) \
+    .rom_vectors _vma_ : _lma_ \
+    { FORCE_OUTPUT; KEEP (*(.vectors)) } \
+    > _region_
+
+#define SECTION_text(_region_, _vma_, _lma_) \
+    .text _vma_ : _lma_ \
+    { stext = ABSOLUTE(.); \
+    PROVIDE (__stext = ABSOLUTE(.)); \
+    *(.text*) *(.gnu.warning) *(.gnu.linkonce*) *(.init) \
+    *(.glue_7) *(.glue_7t)  \
+    } > _region_ \
+    etext = .; PROVIDE (__etext = .);
+
+#define SECTION_fini(_region_, _vma_, _lma_) \
+    .fini _vma_ : _lma_ \
+    { FORCE_OUTPUT; *(.fini) } \
+    > _region_
+
+#define SECTION_rodata(_region_, _vma_, _lma_) \
+    .rodata _vma_ : _lma_ \
+    { FORCE_OUTPUT; *(.rodata*) } \
+    > _region_
+
+#define SECTION_rodata1(_region_, _vma_, _lma_) \
+    .rodata1 _vma_ : _lma_ \
+    { FORCE_OUTPUT; *(.rodata1) } \
+    > _region_
+
+#define SECTION_fixup(_region_, _vma_, _lma_) \
+    .fixup _vma_ : _lma_ \
+    { FORCE_OUTPUT; *(.fixup) } \
+    > _region_
+
+#define SECTION_gcc_except_table(_region_, _vma_, _lma_) \
+    .gcc_except_table _vma_ : _lma_ \
+    { FORCE_OUTPUT; *(.gcc_except_table) } \
+    > _region_
+
+#define SECTION_data(_region_,  _vma_, _lma_) \
+    .data _vma_ : _lma_ \
+    { ___ram_data_start = ABSOLUTE (.); *(.data*) *(.data1); \
+    _GOT1_START_ = ABSOLUTE (.); *(.got1) _GOT1_END_ = ABSOLUTE (.); \
+    _GOT2_START_ = ABSOLUTE (.); *(.got2) _GOT2_END_ = ABSOLUTE (.); \
+    . = ALIGN (4); \
+    ___DEVTAB__ = ABSOLUTE (.); KEEP (*(SORT (.devtab*))) ___DEVTAB_END__ = ABSOLUTE (.); \
+    ___NETDEVTAB__ = ABSOLUTE (.); KEEP (*(SORT (.netdevtab*))) ___NETDEVTAB_END__ = ABSOLUTE (.); \
+    ___CTOR_LIST__ = ABSOLUTE (.); KEEP (*(SORT (.ctors*))) ___CTOR_END__ = ABSOLUTE (.); \
+    ___DTOR_LIST__ = ABSOLUTE (.); KEEP (*(SORT (.dtors*))) ___DTOR_END__ = ABSOLUTE (.); \
+    *(.dynamic) *(.sdata*) *(.sbss*) } \
+    > _region_ \
+    ___rom_data_start = LOADADDR (.data); \
+    ___ram_data_end = .; PROVIDE (___ram_data_end = .); _edata = .; PROVIDE (edata = .); \
+    PROVIDE (___rom_data_end = LOADADDR (.data) + SIZEOF(.data));
+
+#define SECTION_bss(_region_,  _vma_, _lma_) \
+    .bss _vma_ : _lma_ \
+    { ___bss_start = ABSOLUTE (.); \
+    *(.scommon) *(.dynbss) *(.bss*) *(COMMON) \
+    ___bss_end = ABSOLUTE (.); } \
+    > _region_
+
+#include <cyg/hal/plf_sections.h>
+
+#include <pkgconf/hal_v85x.h>
+#include <pkgconf/hal_v85x_v850.h>
+#include CYGHWR_MEMORY_LAYOUT_LDI
--- a/packages/io/serial/current/ChangeLog
+++ b/packages/io/serial/current/ChangeLog
@@ -1,3 +1,7 @@
+2000-05-28  Gary Thomas  <gthomas@redhat.com>
+
+	* tests/ser_test_protocol.inl: Rename NEC V85x drivers.
+
 2000-05-08  Jesper Skov  <jskov@redhat.com>
 
     	* cdl/io_serial.cdl: active_if CYGPKG_IO
--- a/packages/io/serial/current/tests/ser_test_protocol.inl
+++ b/packages/io/serial/current/tests/ser_test_protocol.inl
@@ -205,6 +205,15 @@
 #  define TEST_TTY_DEV CYGDAT_IO_SERIAL_TTY_TTY0_DEV
 # endif
 #endif
+#if defined(CYGPKG_HAL_V85X_V850)                       \
+    && defined(CYGPKG_IO_SERIAL_V85X_V850)              \
+    && defined(CYGPKG_IO_SERIAL_V85X_V850_SERIAL0)
+# define TEST_CRASH_ID "v85x/v850"
+# define TEST_SER_DEV CYGDAT_IO_SERIAL_V85X_V850_SERIAL0_NAME
+# if defined(CYGPKG_IO_SERIAL_TTY_TTY0)
+#  define TEST_TTY_DEV CYGDAT_IO_SERIAL_TTY_TTY0_DEV
+# endif
+#endif
 
 // We can't rely on haldiag for ser_filter detection - it may not define
 // a working character reading function.
--- a/packages/kernel/current/ChangeLog
+++ b/packages/kernel/current/ChangeLog
@@ -1,3 +1,8 @@
+2000-05-30  Gary Thomas  <gthomas@redhat.com>
+
+	* tests/dhrystone.c: Increase number of test loops for faster
+	StrongARM platforms.
+
 2000-05-15  Jonathan Larmour  <jlarmour@redhat.co.uk>
 
 	* cdl/counters.cdl (CYGVAR_KERNEL_COUNTERS_CLOCK_DSR_LATENCY): 
--- a/packages/kernel/current/tests/dhrystone.c
+++ b/packages/kernel/current/tests/dhrystone.c
@@ -62,6 +62,8 @@ dtime(void)
 // Number of loops to run.
 #if defined(CYGPKG_HAL_ARM_AEB) || defined(CYGPKG_HAL_ARM_PID)
 #define PASSES 100000
+#elif defined(CYGPKG_HAL_ARM_EBSA285)
+#define PASSES 1000000
 #elif defined(CYGPKG_HAL_ARM_CMA230)
 #define PASSES 100000
 #elif defined(CYGPKG_HAL_POWERPC_MPC8xx)