changeset 50:a0774359f013 ecos-sw-1999-11-02

Merge from eCos master repository on 1999-11-02-17:02:15-GMT
author jlarmour
date Tue, 02 Nov 1999 20:57:07 +0000
parents 698ff3191b93
children a44041cee9d2
files packages/ChangeLog packages/NEWS packages/hal/arm/aeb/current/ChangeLog packages/hal/arm/aeb/current/misc/PKGconf.mak packages/hal/arm/aeb/current/misc/STUBS_config packages/hal/arm/aeb/current/src/hal_diag.c packages/hal/arm/arch/current/ChangeLog packages/hal/arm/arch/current/include/hal_io.h packages/hal/arm/arch/current/include/pkgconf/hal_arm.h packages/hal/arm/arch/current/src/arm.ld packages/hal/arm/arch/current/src/arm_stub.c packages/hal/arm/arch/current/src/hal_misc.c packages/hal/arm/arch/current/src/vectors.S packages/hal/arm/cl7211/current/ChangeLog packages/hal/arm/cl7211/current/images/cl7111_gdb_module.bin packages/hal/arm/cl7211/current/images/edb7211_gdb_module.bin packages/hal/arm/cl7211/current/images/gdb_module.bin packages/hal/arm/cl7211/current/include/hal_platform_setup.h packages/hal/arm/cl7211/current/include/pkgconf/hal_arm_cl7211.h packages/hal/arm/cl7211/current/include/pkgconf/mlt_arm_eb7211_ram.h packages/hal/arm/cl7211/current/include/pkgconf/mlt_arm_eb7211_ram.ldi packages/hal/arm/cl7211/current/include/pkgconf/mlt_arm_eb7211_ram.mlt packages/hal/arm/cl7211/current/include/pkgconf/mlt_arm_eb7211_rom.h packages/hal/arm/cl7211/current/include/pkgconf/mlt_arm_eb7211_rom.ldi packages/hal/arm/cl7211/current/include/pkgconf/mlt_arm_eb7211_rom.mlt packages/hal/arm/cl7211/current/include/pkgconf/mlt_arm_eb7211_stubs.h packages/hal/arm/cl7211/current/include/pkgconf/mlt_arm_eb7211_stubs.ldi packages/hal/arm/cl7211/current/include/pkgconf/mlt_arm_eb7211_stubs.mlt packages/hal/arm/cl7211/current/misc/STUBS_config packages/hal/arm/cl7211/current/src/cl7211_misc.c packages/hal/arm/cl7211/current/src/hal_diag.c packages/hal/arm/cl7211/current/support/Makefile packages/hal/arm/cl7211/current/support/download_file.c packages/hal/arm/cl7211/current/tests/PKGconf.mak packages/hal/arm/cl7211/current/tests/dram_test.c packages/hal/arm/cma230/current/ChangeLog packages/hal/arm/cma230/current/images/gdb_module.img packages/hal/arm/cma230/current/misc/PKGconf.mak packages/hal/arm/cma230/current/misc/STUBS_config packages/hal/arm/cma230/current/src/hal_diag.c packages/hal/arm/pid/current/ChangeLog packages/hal/arm/pid/current/include/hal_diag.h packages/hal/arm/pid/current/include/hal_platform_setup.h packages/hal/arm/pid/current/include/pkgconf/hal_arm_pid.h packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pid9_ram.ldi packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pid9_ram.mlt packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pid9_rom.ldi packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pid9_rom.mlt packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pid9_stubs.ldi packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pid9_stubs.mlt packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pidBE_ram.ldi packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pidBE_ram.mlt packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pidBE_rom.ldi packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pidBE_rom.mlt packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pidBE_stubs.ldi packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pidBE_stubs.mlt packages/hal/arm/pid/current/include/plf_stub.h packages/hal/arm/pid/current/misc/Notes packages/hal/arm/pid/current/misc/PKGconf.mak packages/hal/arm/pid/current/misc/STUBS_config packages/hal/arm/pid/current/misc/prog_flash.c packages/hal/arm/pid/current/src/hal_diag.c packages/hal/arm/pid/current/src/pid_misc.c packages/hal/common/current/ChangeLog packages/hal/common/current/include/hal_stub.h packages/hal/common/current/src/hal_stub.c packages/hal/common/current/tests/PKGconf.mak packages/hal/common/current/tests/cache.c packages/hal/mips/arch/current/ChangeLog packages/hal/mips/arch/current/include/pkgconf/hal_mips.h packages/hal/mips/arch/current/src/hal_misc.c packages/hal/mips/arch/current/src/mips-stub.c packages/hal/mips/arch/current/src/vectors.S packages/hal/mips/jmr3904/current/ChangeLog packages/hal/mips/jmr3904/current/include/plf_intr.h packages/hal/mips/jmr3904/current/src/plf_misc.c packages/hal/mips/tx39/current/ChangeLog packages/hal/mips/tx39/current/include/variant.inc packages/hal/powerpc/cogent/current/misc/STUBS_config packages/io/serial/current/ChangeLog packages/io/serial/current/src/PKGconf.mak packages/io/serial/current/src/arm/pid_serial.h packages/kernel/current/ChangeLog packages/kernel/current/tests/PKGconf.mak packages/targets
diffstat 85 files changed, 1960 insertions(+), 485 deletions(-) [+]
line wrap: on
line diff
--- a/packages/ChangeLog
+++ b/packages/ChangeLog
@@ -1,3 +1,12 @@
+1999-10-27  Jesper Skov  <jskov@cygnus.co.uk>
+
+	* targets: Reenabled stubs startup for pid9.
+
+1999-10-26  Jesper Skov  <jskov@cygnus.co.uk>
+
+	* targets: Removed stubs startup for pid9.
+	* targets: Added pidBE platform.
+	
 1999-10-19  Jesper Skov  <jskov@cygnus.co.uk>
 
 	* targets: Added pid9 target.
--- a/packages/NEWS
+++ b/packages/NEWS
@@ -32,10 +32,11 @@
      
 *** The following are the new target platforms...
 
-
 **** ARM:
-     ARM720  - Cirrus Logic CL7211 board
-     ARM710C - Cirrus Logic CL7111 board
+     ARM7TDMI - ARM PID7T board configured in big-endian mode
+     Cirrus Logic EP7211 (ARM720) CPU - Cirrus Logic EDB7211 evaluation board
+                                        (silk-screened EDB7111-2)
+     Cirrus Logic CL-PS7111 (ARM710C) CPU - Cirrus Logic EB7111 evaluation board
      Sharp LH77790 (ARM7DI core) - ARM AEB-1 rev C board
 
 **** PowerPC
@@ -52,11 +53,11 @@
 
 *** These are the new host platforms...
 
-**** FIXME
+**** None yet
 
 ** Host tool features
 
-**** FIXME
+**** None yet
 
 ** Drivers
 *** Watchdog Drivers added for:
@@ -64,18 +65,17 @@
 
 ** New toolchain features
 
-** API additions (are there any?)
+** API additions
+
 
-*** FIXME
+*** Debugging
+	The file <cyg/kernel/test/stackmon.h> defines some functions
+	that can be used to profile stack usage.
 
 ** API changes
 
 *** Kernel
 
-**** Debugging
-	The file <cyg/kernel/test/stackmon.h> defines some functions
-	that can be used to profile stack usage.
-
 **** KAPI
 	include/kapi.h (cyg_thread_delete): is now a boolean function to
 	indicate success.  Failure is when the thread needs to run in
@@ -90,3 +90,6 @@
 	(except in special configurations, see linux_misc.c).
 
 *** Common
+
+** Other new features
+
--- a/packages/hal/arm/aeb/current/ChangeLog
+++ b/packages/hal/arm/aeb/current/ChangeLog
@@ -1,3 +1,22 @@
+1999-10-28  Jesper Skov  <jskov@cygnus.co.uk>
+
+	* misc/PKGconf.mak: Don't strip symbols when making .img.
+
+1999-10-27  Jesper Skov  <jskov@cygnus.co.uk>
+
+	* misc/PKGconf.mak: Build UU encoded stubs per default.
+
+	* misc/STUBS_config: 
+	Updated stub scripts. Allow to configure for revC.
+	
+	* src/hal_diag.c: Fixed conditional include.
+
+1999-10-26  Hugo Tyson  <hmt@cygnus.co.uk>
+
+	* src/hal_diag.c (hal_diag_write_char): Use new macro
+	CYG_HAL_GDB_ENTER_CRITICAL_IO_REGION and its mate to control
+	stepping through gdb $O packet output.
+
 1999-10-12  Jesper Skov  <jskov@cygnus.co.uk>
 
 	* include/pkgconf/hal_arm_aeb.h: Add CT config of revision.
--- a/packages/hal/arm/aeb/current/misc/PKGconf.mak
+++ b/packages/hal/arm/aeb/current/misc/PKGconf.mak
@@ -38,7 +38,7 @@ PACKAGE       := hal_arm_aeb
 include ../../../../../pkgconf/pkgconf.mak
 
 PROGS := gdb_module_ncs
-OTHER_PROGS := gdb_module.img
+OTHER_PROGS := gdb_module.img gdb_module.img.UU
 WHEREAMI := misc
 
 CKSUM = 0
@@ -59,7 +59,7 @@ gdb_module.cs: gdb_module_ncs.stamp
 		$(SRC)/gdb_module.c -DCHECKSUM=$(CKSUM)
 
 gdb_module.img: gdb_module.cs gdb_module.stamp
-	$(OBJCOPY) --strip-all gdb_module gdb_module.img.XX
+	$(OBJCOPY) --strip-debug gdb_module gdb_module.img.XX
 	$(OBJCOPY) --change-addresses=0xFBFF4000 gdb_module.img.XX  gdb_module.img
 	$(OBJCOPY) -O binary gdb_module.img gdb_module.img.raw
 	$(RM) -f gdb_module.img.XX
--- a/packages/hal/arm/aeb/current/misc/STUBS_config
+++ b/packages/hal/arm/aeb/current/misc/STUBS_config
@@ -1,10 +1,33 @@
 #! /bin/sh
-
-# Configure ARM/AEB eCos to create AEB-1 GDB stubs
+# Configure ARM/AEB-1 eCos to create AEB-1 GDB stubs
+# Ensure that PATH include the directory where the ARM tools reside.
+#
+# Run from an empty temporary directory with two arguments: the path to
+# the packages directory (i.e., where pkgconf.tcl lives), and the platform
+# name (aeb or aebC).
+#
+# Output files are in the directory hal/arm/aeb/<version>/misc.
+#  gdb_module.img: suitable for programming via GDB stub/Angel
+#  gdb_module.img.UU: suitable for programming via ROM menu 
+# See Notes for details.
 
+if [ "$2"x = "x" ]; then
+  AEB="aeb"
+else
+  AEB=$2
+fi
 
-tcl $1/pkgconf.tcl                                         \
-   --target=arm --platform=aeb --startup=stubs                         \
+if ( echo | tclsh ) 2>/dev/null ; then
+  TCL=tclsh
+elif ( echo | cygtclsh80 ) 2>/dev/null ; then
+  TCL=cygtclsh80
+else
+  echo Could not find TCL interpreter
+  exit 1
+fi
+
+$TCL $1/pkgconf.tcl                                         \
+   --target=arm --platform=${AEB} --startup=stubs                      \
    --disable CYGPKG_KERNEL --disable CYGPKG_UITRON                     \
    --disable CYGPKG_LIBC --disable CYGPKG_LIBM                         \
    --disable CYGPKG_ERROR --disable CYGPKG_IO                          \
@@ -12,9 +35,18 @@ tcl $1/pkgconf.tcl                      
    --disable CYGPKG_DEVICES_WATCHDOG
 
 patch <<END_OF_PATCH -p0
---- pkgconf/hal.h~      Thu Jul  8 08:26:44 1999
-+++ pkgconf/hal.h       Wed Jul 28 10:51:07 1999
-@@ -369,10 +369,10 @@
+--- pkgconf/hal.h.orig	Fri Oct 22 09:32:14 1999
++++ pkgconf/hal.h	Wed Oct 27 11:15:09 1999
+@@ -110,7 +110,7 @@
+  }
+ 
+  }}CFG_DATA */
+-#define CYGFUN_HAL_COMMON_KERNEL_SUPPORT
++#undef CYGFUN_HAL_COMMON_KERNEL_SUPPORT
+ 
+ /* {{CFG_DATA
+    
+@@ -382,10 +382,10 @@
  
     }}CFG_DATA */
  
@@ -29,3 +61,6 @@ patch <<END_OF_PATCH -p0
  /*
   * NOTE:
 END_OF_PATCH
+
+make
+make misc
--- a/packages/hal/arm/aeb/current/src/hal_diag.c
+++ b/packages/hal/arm/aeb/current/src/hal_diag.c
@@ -49,8 +49,9 @@
 #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_BREAK_SUPPORT
+#ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
 #include <cyg/hal/drv_api.h>
+#include <cyg/hal/hal_stub.h>           // cyg_hal_gdb_interrupt
 #endif
 
 // Assumption: all diagnostic output must be GDB packetized unless this is a ROM (i.e.
@@ -269,7 +270,11 @@ hal_diag_write_char(char c)
         // 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)
         {
@@ -319,7 +324,11 @@ hal_diag_write_char(char c)
 
         
         // And re-enable interrupts
+#ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
+        CYG_HAL_GDB_LEAVE_CRITICAL_IO_REGION(old);
+#else
         HAL_RESTORE_INTERRUPTS(old);
+#endif
         
     }
 }
--- a/packages/hal/arm/arch/current/ChangeLog
+++ b/packages/hal/arm/arch/current/ChangeLog
@@ -1,3 +1,25 @@
+1999-11-01  Jonathan Larmour  <jlarmour@cygnus.co.uk>
+
+	* src/hal_misc.c (exception_handler): Check for CYGDAT_CYGMON_ENABLE
+	rather than just CYGPKG_CYGMON
+	Include <pkgconf/cygmon.h> to get this define
+
+1999-10-26  Jesper Skov  <jskov@cygnus.co.uk>
+
+	* src/vectors.S: Cleaned up LED code a bit.
+
+1999-10-25  Gary Thomas  <gthomas@cygnus.co.uk>
+
+	* src/vectors.S: Reorder context restore so stack changes are
+	protected (interrupts off).
+
+1999-10-26  Jesper Skov  <jskov@cygnus.co.uk>
+
+	* src/arm.ld: Added support for merging RODATA sections into DATA
+	* include/hal_io.h: Added BE support.
+	
+	* src/vectors.S (LED): Added definition for PID board.
+
 1999-10-22  Hugo Tyson  <hmt@cygnus.co.uk>
 
 	* src/arm_stub.c (cyg_hal_gdb_running_step):
--- a/packages/hal/arm/arch/current/include/hal_io.h
+++ b/packages/hal/arm/arch/current/include/hal_io.h
@@ -51,16 +51,22 @@
 #include <pkgconf/system.h>
 #include <cyg/infra/cyg_type.h>
 
+#include <cyg/hal/basetype.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.
 
+// Little-endian version
+#if (CYG_BYTEORDER == CYG_LSBFIRST)
+
 #define HAL_READ_UINT8( _register_, _value_ ) \
         ((_value_) = *((volatile CYG_BYTE *)(_register_)))
 
@@ -81,11 +87,39 @@ typedef volatile CYG_ADDRWORD HAL_IO_REG
         ((volatile CYG_BYTE *)(_register_))[_j_] = (_buf_)[_i_];        \
     CYG_MACRO_END
 
+#else // Big-endian version
+
+#define HAL_READ_UINT8( _register_, _value_ ) \
+        ((_value_) = *((volatile CYG_BYTE *)((CYG_ADDRWORD)(_register_)^3)))
+
+#define HAL_WRITE_UINT8( _register_, _value_ ) \
+        (*((volatile CYG_BYTE *)((CYG_ADDRWORD)(_register_)^3)) = (_value_))
+
+#define HAL_READ_UINT8_VECTOR( _register_, _buf_, _count_, _step_ )     \
+    CYG_MACRO_START                                                     \
+    cyg_count32 _i_,_j_;                                                \
+    volatile CYG_BYTE* _r_ = ((CYG_ADDRWORD)(_register_)^3);            \
+    for( _i_ = 0, _j_ = 0; _i_ < (_count_); _i_++, _j_ += (_step_))     \
+        (_buf_)[_i_] = _r_[_j_];                                        \
+    CYG_MACRO_END
+
+#define HAL_WRITE_UINT8_VECTOR( _register_, _buf_, _count_, _step_ )    \
+    CYG_MACRO_START                                                     \
+    cyg_count32 _i_,_j_;                                                \
+    volatile CYG_BYTE* _r_ = ((CYG_ADDRWORD)(_register_)^3);            \
+    for( _i_ = 0, _j_ = 0; _i_ < (_count_); _i_++, _j_ += (_step_))     \
+        _r_[_j_] = (_buf_)[_i_];                                        \
+    CYG_MACRO_END
+
+#endif // Big-endian
 
 //-----------------------------------------------------------------------------
 // 16 bit access.
 // Individual and vectorized access to 16 bit registers.
     
+// Little-endian version
+#if (CYG_BYTEORDER == CYG_LSBFIRST)
+
 #define HAL_READ_UINT16( _register_, _value_ ) \
         ((_value_) = *((volatile CYG_WORD16 *)(_register_)))
 
@@ -106,9 +140,37 @@ typedef volatile CYG_ADDRWORD HAL_IO_REG
         ((volatile CYG_WORD16 *)(_register_))[_j_] = (_buf_)[_i_];      \
     CYG_MACRO_END
 
+#else // Big-endian version
+
+#define HAL_READ_UINT16( _register_, _value_ ) \
+        ((_value_) = *((volatile CYG_WORD16 *)((CYG_ADDRWORD)(_register_)^3)))
+
+#define HAL_WRITE_UINT16( _register_, _value_ ) \
+        (*((volatile CYG_WORD16 *)((CYG_ADDRWORD)(_register_)^3)) = (_value_))
+
+#define HAL_READ_UINT16_VECTOR( _register_, _buf_, _count_, _step_ )    \
+    CYG_MACRO_START                                                     \
+    cyg_count32 _i_,_j_;                                                \
+    volatile CYG_WORD16* _r_ = ((CYG_ADDRWORD)(_register_)^3);          \
+    for( _i_ = 0, _j_ = 0; _i_ < (_count_); _i_++, _j_ += (_step_))     \
+        (_buf_)[_i_] = _r_[_j_];                                        \
+    CYG_MACRO_END
+
+#define HAL_WRITE_UINT16_VECTOR( _register_, _buf_, _count_, _step_ )   \
+    CYG_MACRO_START                                                     \
+    cyg_count32 _i_,_j_;                                                \
+    volatile CYG_WORD16* _r_ = ((CYG_ADDRWORD)(_register_)^3);          \
+    for( _i_ = 0, _j_ = 0; _i_ < (_count_); _i_++, _j_ += (_step_))     \
+        _r_[_j_] = (_buf_)[_i_];                                        \
+    CYG_MACRO_END
+
+#endif // Big-endian
+
 //-----------------------------------------------------------------------------
 // 32 bit access.
 // Individual and vectorized access to 32 bit registers.
+
+// Note: same macros for little- and big-endian systems.
     
 #define HAL_READ_UINT32( _register_, _value_ ) \
         ((_value_) = *((volatile CYG_WORD32 *)(_register_)))
--- a/packages/hal/arm/arch/current/include/pkgconf/hal_arm.h
+++ b/packages/hal/arm/arch/current/include/pkgconf/hal_arm.h
@@ -73,6 +73,23 @@
    }}CFG_DATA */
 #undef  CYGHWR_HAL_ARM_DUMP_EXCEPTIONS
 
+/* ---------------------------------------------------------------------
+   {{CFG_DATA
+   cdl_option CYGIMP_HAL_PROCESS_ALL_EXCEPTIONS {
+       display          "Process all exceptions with the eCos application"
+       parent           CYGPKG_HAL_ARM
+       description      "
+           Normal [RAM-based] programs which do not include GDB stubs 
+           defer processing of the illegal instruction exception to GDB.
+           Setting this options allows the program to explicitly handle
+           the illegal instruction exception itself.  Note: this will
+           prevent the use of GDB to debug the application as breakpoints
+           will no longer work."
+   }
+   
+   }}CFG_DATA */
+#undef CYGIMP_HAL_PROCESS_ALL_EXCEPTIONS        
+
 
 /* -------------------------------------------------------------------*/
 #endif  /* CYGONCE_PKGCONF_HAL_ARM_H */
--- a/packages/hal/arm/arch/current/src/arm.ld
+++ b/packages/hal/arm/arch/current/src/arm.ld
@@ -35,6 +35,30 @@ INPUT(extras.o)
 #endif
 GROUP(libtarget.a libgcc.a)
 
+#if defined(__ARMEB__)
+OUTPUT_FORMAT(elf32-bigarm)
+#endif
+
+#if defined(CYG_HAL_STARTUP_STUBS) \
+    && defined(CYGPKG_HAL_ARM_PID) \
+    && defined(__ARMEB__)
+// Note: This is only needed when the PID board is used in BE mode without
+//       the proper ROM controller part.
+//
+// In big-endian mode, merge .RODATA sections into the .DATA section. This
+// causes the data in these sections to be copied to RAM. When the CPU
+// makes byte or halfword access to RAM, A0/A1 are modified correctly.
+// This does not happen on ROM access (unless the proper ROM controller
+// is used).
+//
+// This is matched in the PID stubs.ldi file which does not use the
+// RODATA macros.
+#define MERGE_IN_RODATA *(.rodata*)
+#else
+// Keep RODATA in separate sections.
+#define MERGE_IN_RODATA
+#endif
+
 #define ALIGN_LMA 4
 #define FOLLOWING(_section_) AT ((LOADADDR (_section_) + SIZEOF (_section_) + ALIGN_LMA - 1) & ~ (ALIGN_LMA - 1))
 #define LMA_EQ_VMA
@@ -92,7 +116,7 @@ GROUP(libtarget.a libgcc.a)
 
 #define SECTION_data(_region_,  _vma_, _lma_) \
     .data _vma_ : _lma_ \
-    { __ram_data_start = ABSOLUTE (.); *(.data*) *(.data1) \
+    { __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); \
--- a/packages/hal/arm/arch/current/src/arm_stub.c
+++ b/packages/hal/arm/arch/current/src/arm_stub.c
@@ -16,6 +16,9 @@
 #include <stddef.h>
 
 #include <pkgconf/hal.h>
+#ifdef CYGPKG_CYGMON
+#include <pkgconf/cygmon.h>
+#endif
 
 #ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
 
--- a/packages/hal/arm/arch/current/src/hal_misc.c
+++ b/packages/hal/arm/arch/current/src/hal_misc.c
@@ -45,6 +45,9 @@
 #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
@@ -101,7 +104,7 @@ static void
 void
 exception_handler(HAL_SavedRegisters *regs)
 {
-#ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
+#if defined(CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS) && !defined(CYGDAT_CYGMON_ENABLE)
     if (__mem_fault_handler && 
         regs->vector == CYGNUM_HAL_EXCEPTION_DATA_ACCESS) {
         regs->pc = (unsigned long)__mem_fault_handler;
--- a/packages/hal/arm/arch/current/src/vectors.S
+++ b/packages/hal/arm/arch/current/src/vectors.S
@@ -78,8 +78,18 @@
 
 	.file	"vectors.S"
 
+
+// CYGHWR_LED_MACRO can be defined in hal_platform_setup.h. It's free to
+// use r0+r1. Argument is in "\x" - cannot use macro arguments since the
+// macro may contain #-chars and use of arguments cause these to be 
+// interpreted as CPP stringify operators.
+// See example in PID hal_platform_setup.h.
+#ifndef CYGHWR_LED_MACRO
+#define CYGHWR_LED_MACRO
+#endif
 	
 .macro LED x
+    CYGHWR_LED_MACRO
 .endm
 
 
@@ -213,7 +223,7 @@ 10:
 	str	r2,[r0,#0x30]
 
 	LED 4
-	
+
 #if defined(CYG_HAL_STARTUP_ROM) || defined(CYG_HAL_STARTUP_STUBS)
 	// Relocate [copy] data from ROM to RAM
 	ldr	r3,.__rom_data_start
@@ -276,6 +286,10 @@ 2:
 	// to single-step through most of the init code, except the below.
 	// Put a breakpoint at the call to cyg_hal_invoke_constructors to
 	// pass over this bit (s-s depends on internal state in the stub).
+#endif
+
+#if defined(CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS) || \
+    defined(CYGIMP_HAL_PROCESS_ALL_EXCEPTIONS)
 	mov	r0,#0		// move vectors
 	ldr	r1,=__exception_handlers
 	ldr	r2,[r1,#0x04]	// undefined instruction
@@ -482,15 +496,15 @@ call_exception_handler:
 // Restore [interrupted] context
 	mov	ip,sp			// get stack pointer
 
-	ldr	lr,[ip,#armreg_lr]
-	ldr	sp,[sp,#armreg_sp]
-
 	mrs	r0,cpsr			// move back to IRQ mode
 	orr	r0,r0,#CPSR_IRQ_DISABLE|CPSR_FIQ_DISABLE
 	msr	cpsr,r0
         nop
         nop
 
+	ldr	lr,[ip,#armreg_lr]
+	ldr	sp,[sp,#armreg_sp]
+                        
 	bic	r0,r0,#CPSR_MODE_BITS
        	orr	r0,r0,#CPSR_IRQ_MODE
 	msr	cpsr,r0
@@ -575,9 +589,7 @@ 10:
 	str	r4,[r3]
 #endif
 
-// TEMP
 	mov	r0,v6
-// TEMP
 	bl	hal_IRQ_handler		// determine interrupt source
 	mov	v1,r0			// returned vector #
 
@@ -636,15 +648,15 @@ spurious_IRQ:
 
 	mov	ip,sp			// get stack pointer
 
-	ldr	lr,[ip,#armreg_lr]
-	ldr	sp,[sp,#armreg_sp]
-
 	mrs	r0,cpsr			// move back to IRQ mode
 	orr	r0,r0,#CPSR_IRQ_DISABLE|CPSR_FIQ_DISABLE
 	msr	cpsr,r0
         nop
         nop
-        
+
+	ldr	lr,[ip,#armreg_lr]
+	ldr	sp,[sp,#armreg_sp]
+                        
 	bic	r0,r0,#CPSR_MODE_BITS
 	orr	r0,r0,#CPSR_IRQ_MODE
 	msr	cpsr,r0
--- a/packages/hal/arm/cl7211/current/ChangeLog
+++ b/packages/hal/arm/cl7211/current/ChangeLog
@@ -1,3 +1,39 @@
+1999-10-27  Gary Thomas  <gthomas@cygnus.co.uk>
+
+	* src/cl7211_misc.c (enable_FIQ): New function.  Used to re-enable
+	FIQ interrupts during DRAM refresh code.
+
+	* include/pkgconf/mlt_arm_eb7211_stubs.h:
+	* include/pkgconf/mlt_arm_eb7211_rom.h:
+	* include/pkgconf/mlt_arm_eb7211_ram.h: New files.
+
+	* include/pkgconf/mlt_arm_eb7211_rom.ldi:
+	* include/pkgconf/mlt_arm_eb7211_ram.ldi:
+	* include/pkgconf/mlt_arm_eb7211_stubs.ldi:
+	* include/pkgconf/mlt_arm_eb7211_ram.mlt:
+	* include/pkgconf/mlt_arm_eb7211_rom.mlt:
+	* include/pkgconf/mlt_arm_eb7211_stubs.mlt: Update for new layout
+	which describes physical regions completely.
+
+1999-10-27  Jesper Skov  <jskov@cygnus.co.uk>
+
+	* src/hal_diag.c: Fixed conditional include.
+
+1999-10-26  Hugo Tyson  <hmt@cygnus.co.uk>
+
+	* src/hal_diag.c (hal_diag_write_char): Use new macro
+	CYG_HAL_GDB_ENTER_CRITICAL_IO_REGION and its mate to control
+	stepping through gdb $O packet output.
+
+1999-10-25  Gary Thomas  <gthomas@cygnus.co.uk>
+
+	* tests/PKGconf.mak: Add DRAM test program.
+
+	* tests/dram_test.c: New file.
+
+	* include/hal_platform_setup.h: Fix DRAM mapping (was slightly
+	incorrect at end of first DRAM chip).
+
 1999-10-04  Gary Thomas  <gthomas@cygnus.co.uk>
 	* include/hal_platform_setup.h: Allow ROM applications to be linked
 	at "ram" addresses and be automatically relocated at startup time.
new file mode 100644
index 0000000000000000000000000000000000000000..c351918bfd42489822bc4a76d77b6bed0941b2e6
GIT binary patch
literal 15900
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
Sj3p<NmFL6H^mh#U`riS7_AJo=
new file mode 100644
index 0000000000000000000000000000000000000000..5e1c5b52d9d67547ac347786cb61d1febcbac39a
GIT binary patch
literal 15956
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
deleted file mode 100644
index 2c7a2a184b51637e191c514dccbddc5fba971895..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
--- a/packages/hal/arm/cl7211/current/include/hal_platform_setup.h
+++ b/packages/hal/arm/cl7211/current/include/hal_platform_setup.h
@@ -73,8 +73,9 @@
 #else
 #define LCD_BUFFER_SIZE  0x00000000
 #endif
-#define MMU_BASE         0xC0000000+LCD_BUFFER_SIZE
-#define PTE_BASE         0xC0004000+LCD_BUFFER_SIZE
+#define DRAM_PA_START    0xC0000000
+#define MMU_BASE         DRAM_PA_START+LCD_BUFFER_SIZE
+#define PTE_BASE         DRAM_PA_START+0x4000+LCD_BUFFER_SIZE
 #if (CYGHWR_HAL_ARM_CL7211_DRAM_SIZE == 2)
 #define MMU_TABLES_SIZE  0x4000+0x1000+0x1000     // RAM used for PTE entries
 #define DRAM_LA_END      0x00200000-MMU_TABLES_SIZE
@@ -201,10 +202,10 @@ 10:	mov	r6,r2		/* Set up page table desc
 	orr	r6,r6,r7                                                                ;\
 	str	r6,[r1],#4	/* Store PTE, update pointer */                         ;\
         ldr     r8,=MMU_SECTION_SIZE/MMU_PAGE_SIZE                                      ;\
-	ldr	r6,=DRAM_PA+0x00800000   /* Need to skip at 8M boundary */              ;\
-        cmp     r5,r6                                                                   ;\
+	ldr	r9,=DRAM_PA_START+0x00800000   /* Need to skip at 8M boundary */        ;\
+12:     cmp     r5,r9                                                                   ;\
         bne     15f                                                                     ;\
-	ldr	r5,=DRAM_PA+0x01000000   /* Next chunk of DRAM */                       ;\
+	ldr	r5,=DRAM_PA_START+0x01000000   /* Next chunk of DRAM */                 ;\
 15:	mov	r6,r5		/* Build page table entry */                            ;\
 	ldr	r7,=MMU_L2_TYPE_Small|MMU_AP_Any|MMU_Bufferable|MMU_Cacheable           ;\
 	orr	r6,r6,r7                                                                ;\
@@ -216,7 +217,7 @@ 15:	mov	r6,r5		/* Build page table entry
         beq     20f                                                                     ;\
         sub     r8,r8,#1        /* End of 1M section? */                                ;\
         cmp     r8,#0                                                                   ;\
-        bne     15b             /* Next page */                                         ;\
+        bne     12b             /* Next page */                                         ;\
         b       10b             /* Next section */                                      ;\
 20:                                                                                     
 #else
@@ -252,7 +253,7 @@ 10:
 	ldr	r1,=0xFFFFFFFF                                                           ;\
 	mcr	MMU_CP,0,r1,MMU_DomainAccess,c0	                                         ;\
 	ldr	r2,=10f                 	                                         ;\
-        ldr     r3,=__exception_handlers                                                              ;\
+        ldr     r3,=__exception_handlers                                                 ;\
         sub     r2,r2,r3                                                                 ;\
         ldr     r3,=ROM0_LA_START                                                        ;\
         add     r2,r2,r3                                                                 ;\
@@ -396,17 +397,17 @@ 10:	orr	r0,r5,r6                        
 	cmp	r3,r4                                                                   ;\
 	bne	10b                                                                     ;\
 /* Now initialize the MMU to use this new page table */                                 ;\
-        MMU_INITIALIZE                                                                   ;\
-        ldr     r2,=__exception_handlers                                                              ;\
-        ldr     r3,=ROM0_LA_START                                                        ;\
-        cmp     r2,r3                                                                    ;\
-        beq     20f                                                                      ;\
-        ldr     r4,=__rom_data_end                                                       ;\
-15:                                                                                      ;\
-        ldr     r0,[r3],#4                                                               ;\
-        str     r0,[r2],#4                                                               ;\
-        cmp     r2,r4                                                                    ;\
-        bne     15b                                                                      ;\
+        MMU_INITIALIZE                                                                  ;\
+        ldr     r2,=__exception_handlers                                                ;\
+        ldr     r3,=ROM0_LA_START                                                       ;\
+        cmp     r2,r3                                                                   ;\
+        beq     20f                                                                     ;\
+        ldr     r4,=__rom_data_end                                                      ;\
+15:                                                                                     ;\
+        ldr     r0,[r3],#4                                                              ;\
+        str     r0,[r2],#4                                                              ;\
+        cmp     r2,r4                                                                   ;\
+        bne     15b                                                                     ;\
 20:
 
 #else
--- a/packages/hal/arm/cl7211/current/include/pkgconf/hal_arm_cl7211.h
+++ b/packages/hal/arm/cl7211/current/include/pkgconf/hal_arm_cl7211.h
@@ -186,6 +186,23 @@
 /* ----------------------------------------------------------------------------
    {{CFG_DATA
 
+   cdl_option CYGHWR_HAL_ARM_CL7211_SOFTWARE_DRAM_REFRESH {
+       display "Perform DRAM refresh in software"
+       type    bool
+       parent   CYGPKG_HAL_ARM_CL7211
+       description "
+           This option will add code that refreshes the DRAM by
+           touching all of DRAM during the system clock interrupt
+           processing."
+   }
+
+   }}CFG_DATA */
+
+#define CYGHWR_HAL_ARM_CL7211_SOFTWARE_DRAM_REFRESH
+
+/* ----------------------------------------------------------------------------
+   {{CFG_DATA
+
    cdl_option CYGHWR_HAL_ARM_CL7211_LCD_INSTALLED {
        display "LCD panel"
        type    bool
new file mode 100644
--- /dev/null
+++ b/packages/hal/arm/cl7211/current/include/pkgconf/mlt_arm_eb7211_ram.h
@@ -0,0 +1,41 @@
+//===========================================================================
+//
+// MLT linker script export
+//
+//===========================================================================
+//####COPYRIGHTBEGIN####
+//
+// -------------------------------------------
+// The contents of this file are subject to the Cygnus eCos Public License
+// Version 1.0 (the "License"); you may not use this file except in
+// compliance with the License.  You may obtain a copy of the License at
+// http://sourceware.cygnus.com/ecos
+// 
+// Software distributed under the License is distributed on an "AS IS"
+// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the
+// License for the specific language governing rights and limitations under
+// the License.
+// 
+// The Original Code is eCos - Embedded Cygnus Operating System, released
+// September 30, 1998.
+// 
+// The Initial Developer of the Original Code is Cygnus.  Portions created
+// by Cygnus are Copyright (C) 1998,1999 Cygnus Solutions.  All Rights Reserved.
+// -------------------------------------------
+//
+//####COPYRIGHTEND####
+//===========================================================================
+
+// eCos memory layout - Wed Oct 27 13:28:21 1999
+
+// This is a generated file - do not edit
+
+#include <cyg/infra/cyg_type.h>
+#include <stddef.h>
+
+#define CYGMEM_REGION_ram (0)
+#define CYGMEM_REGION_ram_SIZE (0x1000000)
+#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 (0x8000 - (size_t) CYG_LABEL_NAME (_Reserved))
--- a/packages/hal/arm/cl7211/current/include/pkgconf/mlt_arm_eb7211_ram.ldi
+++ b/packages/hal/arm/cl7211/current/include/pkgconf/mlt_arm_eb7211_ram.ldi
@@ -26,26 +26,27 @@
 //####COPYRIGHTEND####
 //===========================================================================
 
-// eCos memory layout - Mon May 17 08:04:39 1999
-
-// This is a generated file - do not edit
-
-MEMORY
-{
-    ram : ORIGIN = 0x8000, LENGTH = 0x00FF8000
-}
-
-SECTIONS
-{
-    SECTIONS_BEGIN
-    SECTION_rom_vectors (ram, 0x8000, LMA_EQ_VMA)
-    SECTION_text (ram, ALIGN (0x1), LMA_EQ_VMA)
-    SECTION_fini (ram, ALIGN (0x1), LMA_EQ_VMA)
-    SECTION_rodata (ram, ALIGN (0x1), LMA_EQ_VMA)
-    SECTION_rodata1 (ram, ALIGN (0x1), LMA_EQ_VMA)
-    SECTION_fixup (ram, ALIGN (0x1), LMA_EQ_VMA)
-    SECTION_gcc_except_table (ram, ALIGN (0x1), LMA_EQ_VMA)
-    SECTION_data (ram, ALIGN (0x1), LMA_EQ_VMA)
-    SECTION_bss (ram, ALIGN (0x4), LMA_EQ_VMA)
-    SECTIONS_END
-}
+// eCos memory layout - Wed Oct 27 13:28:21 1999
+
+// This is a generated file - do not edit
+
+MEMORY
+{
+    ram : ORIGIN = 0, LENGTH = 0x1000000
+}
+
+SECTIONS
+{
+    SECTIONS_BEGIN
+    __Reserved = 0;
+    SECTION_rom_vectors (ram, 0x8000, LMA_EQ_VMA)
+    SECTION_text (ram, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_fini (ram, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_rodata (ram, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_rodata1 (ram, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_fixup (ram, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_gcc_except_table (ram, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_data (ram, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_bss (ram, ALIGN (0x4), LMA_EQ_VMA)
+    SECTIONS_END
+}
--- a/packages/hal/arm/cl7211/current/include/pkgconf/mlt_arm_eb7211_ram.mlt
+++ b/packages/hal/arm/cl7211/current/include/pkgconf/mlt_arm_eb7211_ram.mlt
@@ -1,11 +1,40 @@
-version 0
-region ram 8000 ff8000 0 !
-section rom_vectors 0 1 0 1 1 1 1 1 8000 8000 text text !
-section text 0 1 0 1 0 1 0 1 fini fini !
-section fini 0 1 0 1 0 1 0 1 rodata rodata !
-section rodata 0 1 0 1 0 1 0 1 rodata1 rodata1 !
-section rodata1 0 1 0 1 0 1 0 1 fixup fixup !
-section fixup 0 1 0 1 0 1 0 1 gcc_except_table gcc_except_table !
-section gcc_except_table 0 1 0 1 0 1 0 1 data data !
-section data 0 1 0 1 0 1 0 1 bss bss !
-section bss 0 4 0 1 0 0 0 0 !
+//===========================================================================
+//
+// MLT linker script export
+//
+//===========================================================================
+//####COPYRIGHTBEGIN####
+//
+// -------------------------------------------
+// The contents of this file are subject to the Cygnus eCos Public License
+// Version 1.0 (the "License"); you may not use this file except in
+// compliance with the License.  You may obtain a copy of the License at
+// http://sourceware.cygnus.com/ecos
+// 
+// Software distributed under the License is distributed on an "AS IS"
+// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the
+// License for the specific language governing rights and limitations under
+// the License.
+// 
+// The Original Code is eCos - Embedded Cygnus Operating System, released
+// September 30, 1998.
+// 
+// The Initial Developer of the Original Code is Cygnus.  Portions created
+// by Cygnus are Copyright (C) 1998,1999 Cygnus Solutions.  All Rights Reserved.
+// -------------------------------------------
+//
+//####COPYRIGHTEND####
+//===========================================================================
+
+version 0
+region ram 0 1000000 0 !DRAM
+section Reserved 0 1 0 0 1 0 1 0 0 0 !
+section rom_vectors 0 1 0 1 1 1 1 1 8000 8000 text text !
+section text 0 1 0 1 0 1 0 1 fini fini !
+section fini 0 1 0 1 0 1 0 1 rodata rodata !
+section rodata 0 1 0 1 0 1 0 1 rodata1 rodata1 !
+section rodata1 0 1 0 1 0 1 0 1 fixup fixup !
+section fixup 0 1 0 1 0 1 0 1 gcc_except_table gcc_except_table !
+section gcc_except_table 0 1 0 1 0 1 0 1 data data !
+section data 0 1 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/arm/cl7211/current/include/pkgconf/mlt_arm_eb7211_rom.h
@@ -0,0 +1,44 @@
+//===========================================================================
+//
+// MLT linker script export
+//
+//===========================================================================
+//####COPYRIGHTBEGIN####
+//
+// -------------------------------------------
+// The contents of this file are subject to the Cygnus eCos Public License
+// Version 1.0 (the "License"); you may not use this file except in
+// compliance with the License.  You may obtain a copy of the License at
+// http://sourceware.cygnus.com/ecos
+// 
+// Software distributed under the License is distributed on an "AS IS"
+// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the
+// License for the specific language governing rights and limitations under
+// the License.
+// 
+// The Original Code is eCos - Embedded Cygnus Operating System, released
+// September 30, 1998.
+// 
+// The Initial Developer of the Original Code is Cygnus.  Portions created
+// by Cygnus are Copyright (C) 1998,1999 Cygnus Solutions.  All Rights Reserved.
+// -------------------------------------------
+//
+//####COPYRIGHTEND####
+//===========================================================================
+
+// eCos memory layout - Wed Oct 27 13:34:16 1999
+
+// This is a generated file - do not edit
+
+#include <cyg/infra/cyg_type.h>
+#include <stddef.h>
+
+#define CYGMEM_REGION_ram (0)
+#define CYGMEM_REGION_ram_SIZE (0x1000000)
+#define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
+#define CYGMEM_REGION_rom (0xe0000000)
+#define CYGMEM_REGION_rom_SIZE (0x800000)
+#define CYGMEM_REGION_rom_ATTR (CYGMEM_REGION_ATTR_R)
+extern char CYG_LABEL_NAME (_Reserved) [];
+#define CYGMEM_SECTION_Reserved (CYG_LABEL_NAME (_Reserved))
+#define CYGMEM_SECTION_Reserved_SIZE (0x1000 - (size_t) CYG_LABEL_NAME (_Reserved))
--- a/packages/hal/arm/cl7211/current/include/pkgconf/mlt_arm_eb7211_rom.ldi
+++ b/packages/hal/arm/cl7211/current/include/pkgconf/mlt_arm_eb7211_rom.ldi
@@ -26,27 +26,28 @@
 //####COPYRIGHTEND####
 //===========================================================================
 
-// eCos memory layout - Tue Jun 15 18:13:06 1999
-
-// This is a generated file - do not edit
-
-MEMORY
-{
-    ram : ORIGIN = 0x1000, LENGTH = 0x00FFF000
-    rom : ORIGIN = 0xe0000000, LENGTH = 0x800000
-}
-
-SECTIONS
-{
-    SECTIONS_BEGIN
-    SECTION_rom_vectors (rom, 0xe0000000, LMA_EQ_VMA)
-    SECTION_text (rom, ALIGN (0x1), LMA_EQ_VMA)
-    SECTION_fini (rom, ALIGN (0x1), LMA_EQ_VMA)
-    SECTION_rodata (rom, ALIGN (0x1), LMA_EQ_VMA)
-    SECTION_rodata1 (rom, ALIGN (0x1), LMA_EQ_VMA)
-    SECTION_fixup (rom, ALIGN (0x1), LMA_EQ_VMA)
-    SECTION_gcc_except_table (rom, ALIGN (0x1), LMA_EQ_VMA)
-    SECTION_data (ram, 0x1000, FOLLOWING (.gcc_except_table))
-    SECTION_bss (ram, ALIGN (0x4), LMA_EQ_VMA)
-    SECTIONS_END
-}
+// eCos memory layout - Wed Oct 27 13:34:16 1999
+
+// This is a generated file - do not edit
+
+MEMORY
+{
+    ram : ORIGIN = 0, LENGTH = 0x1000000
+    rom : ORIGIN = 0xe0000000, LENGTH = 0x800000
+}
+
+SECTIONS
+{
+    SECTIONS_BEGIN
+    SECTION_rom_vectors (rom, 0xe0000000, LMA_EQ_VMA)
+    SECTION_text (rom, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_fini (rom, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_rodata (rom, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_rodata1 (rom, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_fixup (rom, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_gcc_except_table (rom, ALIGN (0x1), LMA_EQ_VMA)
+    __Reserved = 0;
+    SECTION_data (ram, 0x1000, FOLLOWING (.gcc_except_table))
+    SECTION_bss (ram, ALIGN (0x4), LMA_EQ_VMA)
+    SECTIONS_END
+}
--- a/packages/hal/arm/cl7211/current/include/pkgconf/mlt_arm_eb7211_rom.mlt
+++ b/packages/hal/arm/cl7211/current/include/pkgconf/mlt_arm_eb7211_rom.mlt
@@ -1,12 +1,41 @@
-version 0
-region ram 1000 fff000 0 !
-region rom e0000000 800000 1 !This is ROM bank 0, physical address 0x00000000.When running eCos, this space is remapped to 0xE0000000.
-section data 0 1 1 1 1 1 0 0 1000 bss !
-section bss 0 4 0 1 0 0 0 0 !
-section rom_vectors 0 1 0 1 1 1 1 1 e0000000 e0000000 text text !
-section text 0 1 0 1 0 1 0 1 fini fini !
-section fini 0 1 0 1 0 1 0 1 rodata rodata !
-section rodata 0 1 0 1 0 1 0 1 rodata1 rodata1 !
-section rodata1 0 1 0 1 0 1 0 1 fixup fixup !
-section fixup 0 1 0 1 0 1 0 1 gcc_except_table gcc_except_table !
-section gcc_except_table 0 1 0 1 0 0 0 1 data !
+//===========================================================================
+//
+// MLT linker script export
+//
+//===========================================================================
+//####COPYRIGHTBEGIN####
+//
+// -------------------------------------------
+// The contents of this file are subject to the Cygnus eCos Public License
+// Version 1.0 (the "License"); you may not use this file except in
+// compliance with the License.  You may obtain a copy of the License at
+// http://sourceware.cygnus.com/ecos
+// 
+// Software distributed under the License is distributed on an "AS IS"
+// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the
+// License for the specific language governing rights and limitations under
+// the License.
+// 
+// The Original Code is eCos - Embedded Cygnus Operating System, released
+// September 30, 1998.
+// 
+// The Initial Developer of the Original Code is Cygnus.  Portions created
+// by Cygnus are Copyright (C) 1998,1999 Cygnus Solutions.  All Rights Reserved.
+// -------------------------------------------
+//
+//####COPYRIGHTEND####
+//===========================================================================
+
+version 0
+region ram 0 1000000 0 !
+region rom e0000000 800000 1 !This is ROM bank 0, physical address 0x00000000.When running eCos, this space is remapped to 0xE0000000.
+section Reserved 0 1 0 0 1 0 1 0 0 0 !
+section data 0 1 1 1 1 1 0 0 1000 bss !
+section bss 0 4 0 1 0 0 0 0 !
+section rom_vectors 0 1 0 1 1 1 1 1 e0000000 e0000000 text text !
+section text 0 1 0 1 0 1 0 1 fini fini !
+section fini 0 1 0 1 0 1 0 1 rodata rodata !
+section rodata 0 1 0 1 0 1 0 1 rodata1 rodata1 !
+section rodata1 0 1 0 1 0 1 0 1 fixup fixup !
+section fixup 0 1 0 1 0 1 0 1 gcc_except_table gcc_except_table !
+section gcc_except_table 0 1 0 1 0 0 0 1 data !
new file mode 100644
--- /dev/null
+++ b/packages/hal/arm/cl7211/current/include/pkgconf/mlt_arm_eb7211_stubs.h
@@ -0,0 +1,44 @@
+//===========================================================================
+//
+// MLT linker script export
+//
+//===========================================================================
+//####COPYRIGHTBEGIN####
+//
+// -------------------------------------------
+// The contents of this file are subject to the Cygnus eCos Public License
+// Version 1.0 (the "License"); you may not use this file except in
+// compliance with the License.  You may obtain a copy of the License at
+// http://sourceware.cygnus.com/ecos
+// 
+// Software distributed under the License is distributed on an "AS IS"
+// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the
+// License for the specific language governing rights and limitations under
+// the License.
+// 
+// The Original Code is eCos - Embedded Cygnus Operating System, released
+// September 30, 1998.
+// 
+// The Initial Developer of the Original Code is Cygnus.  Portions created
+// by Cygnus are Copyright (C) 1998,1999 Cygnus Solutions.  All Rights Reserved.
+// -------------------------------------------
+//
+//####COPYRIGHTEND####
+//===========================================================================
+
+// eCos memory layout - Wed Oct 27 13:37:57 1999
+
+// This is a generated file - do not edit
+
+#include <cyg/infra/cyg_type.h>
+#include <stddef.h>
+
+#define CYGMEM_REGION_ram (0)
+#define CYGMEM_REGION_ram_SIZE (0x1000000)
+#define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
+#define CYGMEM_REGION_rom (0xe0000000)
+#define CYGMEM_REGION_rom_SIZE (0x800000)
+#define CYGMEM_REGION_rom_ATTR (CYGMEM_REGION_ATTR_R)
+extern char CYG_LABEL_NAME (_Reserved) [];
+#define CYGMEM_SECTION_Reserved (CYG_LABEL_NAME (_Reserved))
+#define CYGMEM_SECTION_Reserved_SIZE (0x1000 - (size_t) CYG_LABEL_NAME (_Reserved))
--- a/packages/hal/arm/cl7211/current/include/pkgconf/mlt_arm_eb7211_stubs.ldi
+++ b/packages/hal/arm/cl7211/current/include/pkgconf/mlt_arm_eb7211_stubs.ldi
@@ -26,27 +26,28 @@
 //####COPYRIGHTEND####
 //===========================================================================
 
-// eCos memory layout - Tue Jun 15 18:13:06 1999
-
-// This is a generated file - do not edit
-
-MEMORY
-{
-    ram : ORIGIN = 0x1000, LENGTH = 0x7000
-    rom : ORIGIN = 0xe0000000, LENGTH = 0x800000
-}
-
-SECTIONS
-{
-    SECTIONS_BEGIN
-    SECTION_rom_vectors (rom, 0xe0000000, LMA_EQ_VMA)
-    SECTION_text (rom, ALIGN (0x1), LMA_EQ_VMA)
-    SECTION_fini (rom, ALIGN (0x1), LMA_EQ_VMA)
-    SECTION_rodata (rom, ALIGN (0x1), LMA_EQ_VMA)
-    SECTION_rodata1 (rom, ALIGN (0x1), LMA_EQ_VMA)
-    SECTION_fixup (rom, ALIGN (0x1), LMA_EQ_VMA)
-    SECTION_gcc_except_table (rom, ALIGN (0x1), LMA_EQ_VMA)
-    SECTION_data (ram, 0x1000, FOLLOWING (.gcc_except_table))
-    SECTION_bss (ram, ALIGN (0x4), LMA_EQ_VMA)
-    SECTIONS_END
-}
+// eCos memory layout - Wed Oct 27 13:37:57 1999
+
+// This is a generated file - do not edit
+
+MEMORY
+{
+    ram : ORIGIN = 0, LENGTH = 0x1000000
+    rom : ORIGIN = 0xe0000000, LENGTH = 0x800000
+}
+
+SECTIONS
+{
+    SECTIONS_BEGIN
+    SECTION_rom_vectors (rom, 0xe0000000, LMA_EQ_VMA)
+    SECTION_text (rom, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_fini (rom, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_rodata (rom, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_rodata1 (rom, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_fixup (rom, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_gcc_except_table (rom, ALIGN (0x1), LMA_EQ_VMA)
+    __Reserved = 0;
+    SECTION_data (ram, 0x1000, FOLLOWING (.gcc_except_table))
+    SECTION_bss (ram, ALIGN (0x4), LMA_EQ_VMA)
+    SECTIONS_END
+}
--- a/packages/hal/arm/cl7211/current/include/pkgconf/mlt_arm_eb7211_stubs.mlt
+++ b/packages/hal/arm/cl7211/current/include/pkgconf/mlt_arm_eb7211_stubs.mlt
@@ -1,12 +1,41 @@
-version 0
-region ram 1000 7000 0 !
-region rom e0000000 800000 1 !This is ROM bank 0, physical address 0x00000000.When running eCos, this space is remapped to 0xE0000000.
-section data 0 1 1 1 1 1 0 0 1000 bss !
-section bss 0 4 0 1 0 0 0 0 !
-section rom_vectors 0 1 0 1 1 1 1 1 e0000000 e0000000 text text !
-section text 0 1 0 1 0 1 0 1 fini fini !
-section fini 0 1 0 1 0 1 0 1 rodata rodata !
-section rodata 0 1 0 1 0 1 0 1 rodata1 rodata1 !
-section rodata1 0 1 0 1 0 1 0 1 fixup fixup !
-section fixup 0 1 0 1 0 1 0 1 gcc_except_table gcc_except_table !
-section gcc_except_table 0 1 0 1 0 0 0 1 data !
+//===========================================================================
+//
+// MLT linker script export
+//
+//===========================================================================
+//####COPYRIGHTBEGIN####
+//
+// -------------------------------------------
+// The contents of this file are subject to the Cygnus eCos Public License
+// Version 1.0 (the "License"); you may not use this file except in
+// compliance with the License.  You may obtain a copy of the License at
+// http://sourceware.cygnus.com/ecos
+// 
+// Software distributed under the License is distributed on an "AS IS"
+// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the
+// License for the specific language governing rights and limitations under
+// the License.
+// 
+// The Original Code is eCos - Embedded Cygnus Operating System, released
+// September 30, 1998.
+// 
+// The Initial Developer of the Original Code is Cygnus.  Portions created
+// by Cygnus are Copyright (C) 1998,1999 Cygnus Solutions.  All Rights Reserved.
+// -------------------------------------------
+//
+//####COPYRIGHTEND####
+//===========================================================================
+
+version 0
+region ram 0 1000000 0 !
+region rom e0000000 800000 1 !This is ROM bank 0, physical address 0x00000000.When running eCos, this space is remapped to 0xE0000000.
+section Reserved 0 1 0 0 1 0 1 0 0 0 !
+section data 0 1 1 1 1 1 0 0 1000 bss !
+section bss 0 4 0 1 0 0 0 0 !
+section rom_vectors 0 1 0 1 1 1 1 1 e0000000 e0000000 text text !
+section text 0 1 0 1 0 1 0 1 fini fini !
+section fini 0 1 0 1 0 1 0 1 rodata rodata !
+section rodata 0 1 0 1 0 1 0 1 rodata1 rodata1 !
+section rodata1 0 1 0 1 0 1 0 1 fixup fixup !
+section fixup 0 1 0 1 0 1 0 1 gcc_except_table gcc_except_table !
+section gcc_except_table 0 1 0 1 0 0 0 1 data !
--- a/packages/hal/arm/cl7211/current/misc/STUBS_config
+++ b/packages/hal/arm/cl7211/current/misc/STUBS_config
@@ -1,20 +1,29 @@
 #! /bin/sh
 
-# usage: STUBS_config <repository> [cl7211 | cl7111]
+# usage: STUBS_config <repository> [eb7211 | cl7111]
 
 if [ "$2"x = "x" ]; then
-  CL7x11="cl7211"
+  CL7x11="eb7211"
 else
   CL7x11=$2
 fi
 
-tcl $1/pkgconf.tcl                                              \
+if ( echo | tclsh ) 2>/dev/null ; then
+  TCL=tclsh
+elif ( echo | cygtclsh80 ) 2>/dev/null ; then
+  TCL=cygtclsh80
+else
+  echo Could not find TCL interpreter
+  exit 1
+fi
+
+$TCL $1/pkgconf.tcl                                              \
   --target=arm --platform=${CL7x11} --startup=stubs             \
   --disable CYGPKG_KERNEL --disable CYGPKG_UITRON               \
   --disable CYGPKG_LIBC --disable CYGPKG_LIBM                   \
   --disable CYGPKG_ERROR --disable CYGPKG_IO                    \
   --disable CYGPKG_IO_SERIAL --disable CYGPKG_DEVICES_WALLCLOCK \
-  --disable CYGPKG_DEVICES_WATCHDOG
+  --disable CYGPKG_DEVICES_WATCHDOG --disable-cygmon
 
 patch <<END_OF_PATCH -p0
 --- pkgconf/hal.h~      Thu Jul  8 08:26:44 1999
--- a/packages/hal/arm/cl7211/current/src/cl7211_misc.c
+++ b/packages/hal/arm/cl7211/current/src/cl7211_misc.c
@@ -91,6 +91,35 @@ void hal_clock_initialize(cyg_uint32 per
 
 // This routine is called during a clock interrupt.
 
+#ifdef CYGHWR_HAL_ARM_CL7211_SOFTWARE_DRAM_REFRESH
+#define DRAM_START    0x00000000
+#define DRAM_END      0x01000000
+#define DRAM_ROW_SIZE 0x00000400
+#define DRAM_REFRESH  (((DRAM_END-DRAM_START)/DRAM_ROW_SIZE)+99)/100
+
+static void __inline__
+enable_FIQ(void)
+{
+    asm volatile ("mrs r0,cpsr;"
+                  "bic r0,r0,#0x40;"
+                  "msr cpsr,r0");
+}
+
+static void
+do_DRAM_refresh(void)
+{
+    static cyg_uint32 *row_ptr;
+    volatile cyg_uint32 val;
+    int i;
+    enable_FIQ();  // Should be safe here
+    for (i = 0;  i < DRAM_REFRESH;  i++) {
+        val = *row_ptr;
+        row_ptr += DRAM_ROW_SIZE / sizeof(*row_ptr);
+        if (row_ptr >= (cyg_uint32 *)DRAM_END) row_ptr = (cyg_uint32 *)DRAM_START;
+    }
+}
+#endif // CYGHWR_HAL_ARM_CL7211_SOFTWARE_DRAM_REFRESH
+
 void hal_clock_reset(cyg_uint32 vector, cyg_uint32 period)
 {
     volatile cyg_uint32 *tc2d = (volatile cyg_uint32 *)TC2D;
@@ -98,6 +127,9 @@ void hal_clock_reset(cyg_uint32 vector, 
         *tc2d = period;
         _period = period;
     }
+#ifdef CYGHWR_HAL_ARM_CL7211_SOFTWARE_DRAM_REFRESH
+    do_DRAM_refresh();
+#endif 
 }
 
 // Read the current value of the clock, returning the number of hardware "ticks"
--- a/packages/hal/arm/cl7211/current/src/hal_diag.c
+++ b/packages/hal/arm/cl7211/current/src/hal_diag.c
@@ -51,8 +51,9 @@
 #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_BREAK_SUPPORT
+#ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
 #include <cyg/hal/drv_api.h>
+#include <cyg/hal/hal_stub.h>           // cyg_hal_gdb_interrupt
 #endif
 #include <cyg/hal/hal_cl7211.h>         // Hardware definitions
 
@@ -201,7 +202,11 @@ hal_diag_write_char(char c)
         // 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)
         {
@@ -251,7 +256,11 @@ hal_diag_write_char(char c)
 
         
         // And re-enable interrupts
+#ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
+        CYG_HAL_GDB_LEAVE_CRITICAL_IO_REGION(old);
+#else
         HAL_RESTORE_INTERRUPTS(old);
+#endif
         
     }
 }
--- a/packages/hal/arm/cl7211/current/support/Makefile
+++ b/packages/hal/arm/cl7211/current/support/Makefile
@@ -3,12 +3,11 @@
 #
 
 DL_FILES = dl_7211.o io.o
-DOWNLOAD_FILES = download_file.o io.o
+ALL := dl_7211
 
-all: dl_7211 download
+
+all: $(ALL)
 
 dl_7211: $(DL_FILES)
 	$(CC) -o $@ $(DL_FILES)
 
-download: $(DOWNLOAD_FILES)
-	$(CC) -o $@ $(DOWNLOAD_FILES)
deleted file mode 100644
--- a/packages/hal/arm/cl7211/current/support/download_file.c
+++ /dev/null
@@ -1,260 +0,0 @@
-//****************************************************************************
-//
-// download_file.c - Send a raw data file to the EB72xx board.
-// 
-// Adapted from the Cirrus Logic 'DOWNLOAD.C' program
-//
-// Copyright (c) 1999 Cirrus Logic, Inc.
-//
-// Adapted for Linux by Cygnus Solutions, Inc.
-//
-//****************************************************************************
-#include <stdio.h>
-#include "bootcode.h"
-
-#define DEFAULT_PORT "/dev/ttyS0"
-extern char ReceiveChar(long);
-extern void SendChar(long, char);
-extern void SetBaud(long, long);
-extern int  CharRead(long port);
-extern void WaitForOutputReady(long port);
-extern long OpenPort(char *);
-
-//****************************************************************************
-//
-// WaitFor waits until a specific character is read from the comm port.
-//
-//****************************************************************************
-void
-WaitFor(long lPort, char cWaitChar)
-{
-    char cChar;
-
-    //
-    // Wait until we read a specific character from the comm port.
-    //
-    while(1)
-    {
-        //
-        // Read a character.
-        //
-        cChar = ReceiveChar(lPort);
-
-        //
-        // Stop waiting if we received the character.
-        //
-        if(cChar == cWaitChar)
-        {
-            break;
-        }
-    }
-}
-
-//****************************************************************************
-//
-// This program waits for the '<' character from the boot ROM, sends the boot
-// code, waits for the '>' from the boot ROM, waits for the '?' from the boot
-// code, changes the serial port rate (preferably to 115200), downloads the
-// user data file, and then prints out progress status as the boot code writes
-// the user data file to the flash.
-//
-//****************************************************************************
-void
-main(int argc, char *argv[])
-{
-    long lPort;
-    long lRate = 38400;
-    long lFileSize, lIdx;
-    char cChar, cFirstChar, *pcFile, cRateChar;
-    FILE *pFile;
-
-    //
-    // Make sure that a filename was specified.
-    //
-    if(argc < 2)
-    {
-        fprintf(stderr, "Usage: download <filename> {<baud rate> {<comm port>}}\n");
-        return;
-    }
-
-    //
-    // If a baud rate was specified, then read it and make sure it is valid.
-    //
-    if(argc > 2)
-    {
-        lRate = atoi(argv[2]);
-        if((lRate != 9600) && (lRate != 19200) && (lRate != 28800) &&
-           (lRate != 38400) && (lRate != 57600) && (lRate != 115200))
-        {
-            fprintf(stderr, "Invalid baud rate.\n");
-            return;
-        }
-    }
-
-    //
-    // If a comm port was specified, then read it and make sure it is valid.
-    //
-    if(argc > 3)
-    {
-        lPort = OpenPort(argv[3]);
-    } else 
-    {
-        lPort = OpenPort(DEFAULT_PORT);
-    }
-    if (lPort < 0) 
-    {
-        fprintf(stderr, "Can't open port\n");
-        return;
-    }
-
-    //
-    // Open the file to be downloaded.
-    //
-    pFile = fopen(argv[1], "rb");
-    if(!pFile)
-    {
-        fprintf(stderr, "Could not open file '%s'.\n", argv[1]);
-        return;
-    }
-
-    //
-    // Get the size of the file.
-    //
-    fseek(pFile, 0, SEEK_END);
-    lFileSize = ftell(pFile);
-    fseek(pFile, 0, SEEK_SET);
-
-    //
-    // Allocate memory to hold the file contents.
-    //
-    pcFile = (char *)malloc(lFileSize);
-    if(!pcFile)
-    {
-        fprintf(stderr, "Failed to allocate memory for the file.\n");
-        return;
-    }
-
-    //
-    // Read the contents of the file into memory.
-    //
-    if(fread(pcFile, 1, lFileSize, pFile) != lFileSize)
-    {
-        fprintf(stderr, "Failed to read file '%s'.\n", argv[1]);
-        return;
-    }
-
-    //
-    // Close the file.
-    //
-    fclose(pFile);
-
-    //
-    // Open the port to the desired baud rate.
-    //
-    SetBaud(lPort, lRate);
-
-    //
-    // Empty out the input queue.
-    //
-    while(CharReady(lPort))
-    {
-        cChar = ReceiveChar(lPort);
-    }
-
-    //
-    // Tell the user to reset the board.
-    //
-    fprintf(stderr, "Waiting for the board to wakeup...");
-
-    //
-    // Send a '-' character until we receive back a '?' character.
-    //
-    while(1)
-    {
-        //
-        // Send a '-' character.
-        //
-        SendChar(lPort, '-');
-
-        //
-        // Wait a little bit.
-        //
-        for(lIdx = 0; lIdx < 1024 * 1024; lIdx++)
-        {
-        }
-
-        //
-        // See if there is a character waiting to be read.
-        //
-        if(CharReady(lPort))
-        {
-            //
-            // Read the character.
-            //
-            cChar = ReceiveChar(lPort);
-
-            //
-            // Quit waiting if this is a '?'.
-            //
-            if(cChar == '?')
-            {
-                break;
-            }
-        }
-    }
-
-    //
-    // Empty out the input queue.
-    //
-    while(CharReady(lPort))
-    {
-        cChar = ReceiveChar(lPort);
-    }
-
-    //
-    // Send the download file "command"
-    //
-    SendChar(lPort, 'D');
-
-    //
-    // Send the length of the data file.
-    //
-    SendChar(lPort, (char)(lFileSize & 0xFF));
-    SendChar(lPort, (char)((lFileSize >> 8) & 0xFF));
-    SendChar(lPort, (char)((lFileSize >> 16) & 0xFF));
-    SendChar(lPort, (char)((lFileSize >> 24) & 0xFF));
-
-    //
-    // Tell the user that we are downloading the file data.
-    //
-    fprintf(stderr, "\nDownloading file data...(  0%%)");
-
-    //
-    // Send the actual data in the file.
-    //
-    for(lIdx = 0; lIdx < lFileSize; lIdx++)
-    {
-        //
-        // Send this byte.
-        //
-        SendChar(lPort, pcFile[lIdx]);
-
-        //
-        // Periodically print out our progress.
-        //
-        if((lIdx & 127) == 127)
-        {
-            fprintf(stderr, "\b\b\b\b\b%3d%%)", ((lIdx + 1) * 100) / lFileSize);
-            //
-            // Read a character from the boot code.
-            //
-            cChar = ReceiveChar(lPort);
-        }
-    }
-
-    //
-    // Tell the user we are done.
-    //
-    fprintf(stderr, "\nSuccessfully downloaded '%s'.\n", argv[1]);
-}
-
--- a/packages/hal/arm/cl7211/current/tests/PKGconf.mak
+++ b/packages/hal/arm/cl7211/current/tests/PKGconf.mak
@@ -31,7 +31,7 @@
 PACKAGE       := hal_arm_cl7211
 include ../../../../../pkgconf/pkgconf.mak
 
-TESTS	      :=
+TESTS	      := dram_test
 
 include $(COMPONENT_REPOSITORY)/pkgconf/makrules.tst
 
new file mode 100644
--- /dev/null
+++ b/packages/hal/arm/cl7211/current/tests/dram_test.c
@@ -0,0 +1,316 @@
+//==========================================================================
+//
+//        dram_test.c
+//
+//        Cirrus EB72xx eval board DRAM test code
+//
+//==========================================================================
+//####COPYRIGHTBEGIN####
+//
+// -------------------------------------------
+// The contents of this file are subject to the Cygnus eCos Public License
+// Version 1.0 (the "License"); you may not use this file except in
+// compliance with the License.  You may obtain a copy of the License at
+// http://sourceware.cygnus.com/ecos
+// 
+// Software distributed under the License is distributed on an "AS IS"
+// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the
+// License for the specific language governing rights and limitations under
+// the License.
+// 
+// The Original Code is eCos - Embedded Cygnus Operating System, released
+// September 30, 1998.
+// 
+// The Initial Developer of the Original Code is Cygnus.  Portions created
+// by Cygnus are Copyright (C) 1998,1999 Cygnus Solutions.  All Rights Reserved.
+// -------------------------------------------
+//
+//####COPYRIGHTEND####
+//==========================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s):     gthomas
+// Contributors:  gthomas
+// Date:          1999-10-22
+// Description:   Tool used to test DRAM on eval boards
+//####DESCRIPTIONEND####
+
+#include <pkgconf/kernel.h>   // Configuration header
+#include <cyg/kernel/kapi.h>
+#include <cyg/infra/diag.h>
+
+#include <cyg/hal/hal_cl7211.h>  // Board definitions
+
+#ifndef FALSE
+#define FALSE 0
+#define TRUE  1
+#endif
+
+#define STACK_SIZE 4096
+static char stack[STACK_SIZE];
+static cyg_thread thread_data;
+static cyg_handle_t thread_handle;
+
+extern char _end;
+int total_errors;
+int run_errors;
+int error_count;
+#define MAX_ERRORS   5
+#define NUM_RUNS     25
+#define REFRESH_TIME 5
+
+int decay_time[] = { 50, 100, 200, 500, 1000 };
+#define NUM_DECAY sizeof(decay_time)/sizeof(decay_time[0])
+
+// FUNCTIONS
+
+static void
+cyg_test_exit(void)
+{
+    while (TRUE) ;
+}
+
+static void
+new_test(void)
+{
+    error_count = 0;
+}
+
+static void
+report_error(void *addr, cyg_uint32 actual, cyg_uint32 expected)
+{
+    total_errors++;
+    run_errors++;
+    if (++error_count > MAX_ERRORS) return;
+    diag_printf("   0x%08x: expected - 0x%08x, actual - 0x%08x\n", 
+                addr, expected, actual);
+}
+
+// Fill longwords with their own address and verify
+
+static void
+addr_test(cyg_uint32 start, cyg_uint32 end)
+{
+    cyg_uint32 *mp;
+
+    new_test();
+    diag_printf("-- Address test\n");
+    for (mp = (cyg_uint32 *)start;  mp < (cyg_uint32 *)end;  mp++) {
+        *mp = (cyg_uint32)mp;
+    }
+    for (mp = (cyg_uint32 *)start;  mp < (cyg_uint32 *)end;  mp++) {
+        if (*mp != (cyg_uint32)mp) {
+            report_error(mp, *mp, (cyg_uint32)mp);
+        }
+    }
+}
+
+// Fill longwords with zeros
+
+static void
+zeros_test(cyg_uint32 start, cyg_uint32 end)
+{
+    cyg_uint32 *mp;
+
+    new_test();
+    diag_printf("-- Zeros test\n");
+    for (mp = (cyg_uint32 *)start;  mp < (cyg_uint32 *)end;  mp++) {
+        *mp = (cyg_uint32)0;
+    }
+    for (mp = (cyg_uint32 *)start;  mp < (cyg_uint32 *)end;  mp++) {
+        if (*mp != (cyg_uint32)0) {
+            report_error(mp, *mp, (cyg_uint32)0);
+        }
+    }
+}
+
+// Fill longwords with all ones
+
+static void
+ones_test(cyg_uint32 start, cyg_uint32 end)
+{
+    cyg_uint32 *mp;
+
+    new_test();
+    diag_printf("-- Ones test\n");
+    for (mp = (cyg_uint32 *)start;  mp < (cyg_uint32 *)end;  mp++) {
+        *mp = (cyg_uint32)0xFFFFFFFF;
+    }
+    for (mp = (cyg_uint32 *)start;  mp < (cyg_uint32 *)end;  mp++) {
+        if (*mp != (cyg_uint32)0xFFFFFFFF) {
+            report_error(mp, *mp, (cyg_uint32)0xFFFFFFFF);
+        }
+    }
+}
+
+// Fill longwords with a "walking" bit
+
+static void
+walking_bit_test(cyg_uint32 start, cyg_uint32 end)
+{
+    cyg_uint32 *mp;
+    cyg_uint32 bit;
+
+    new_test();
+    diag_printf("-- Walking test\n");
+    bit = 1;
+    for (mp = (cyg_uint32 *)start;  mp < (cyg_uint32 *)end;  mp++) {
+        *mp = (cyg_uint32)bit;
+        bit <<= 1;
+        if (bit == 0) bit = 1;
+    }
+    bit = 1;
+    for (mp = (cyg_uint32 *)start;  mp < (cyg_uint32 *)end;  mp++) {
+        if (*mp != (cyg_uint32)bit) {
+            report_error(mp, *mp, (cyg_uint32)bit);
+        }
+        bit <<= 1;
+        if (bit == 0) bit = 1;
+    }
+}
+
+// Fill longwords with an alternating pattern
+
+static void
+pattern_test(cyg_uint32 start, cyg_uint32 end)
+{
+    cyg_uint32 *mp;
+    cyg_uint32 pat;
+
+    new_test();
+    diag_printf("-- Pattern test\n");
+    pat = 0x55555555;
+    for (mp = (cyg_uint32 *)start;  mp < (cyg_uint32 *)end;  mp++) {
+        *mp = (cyg_uint32)pat;
+    }
+    for (mp = (cyg_uint32 *)start;  mp < (cyg_uint32 *)end;  mp++) {
+        if (*mp != (cyg_uint32)pat) {
+            report_error(mp, *mp, (cyg_uint32)pat);
+        }
+    }
+    pat = 0xAAAAAAAA;
+    for (mp = (cyg_uint32 *)start;  mp < (cyg_uint32 *)end;  mp++) {
+        *mp = (cyg_uint32)pat;
+    }
+    for (mp = (cyg_uint32 *)start;  mp < (cyg_uint32 *)end;  mp++) {
+        if (*mp != (cyg_uint32)pat) {
+            report_error(mp, *mp, (cyg_uint32)pat);
+        }
+    }
+}
+
+// Verify if refresh works
+
+static void
+refresh_test(cyg_uint32 start, cyg_uint32 end)
+{
+    cyg_uint32 *mp;
+    cyg_uint32 pat;
+
+    new_test();
+    diag_printf("-- Refresh test\n");
+    pat = 0x55555555;
+    for (mp = (cyg_uint32 *)start;  mp < (cyg_uint32 *)end;  mp++) {
+        *mp = (cyg_uint32)pat;
+    }
+    cyg_thread_delay(REFRESH_TIME*100);
+    for (mp = (cyg_uint32 *)start;  mp < (cyg_uint32 *)end;  mp++) {
+        if (*mp != (cyg_uint32)pat) {
+            report_error(mp, *mp, (cyg_uint32)pat);
+        }
+    }
+    pat = 0xAAAAAAAA;
+    for (mp = (cyg_uint32 *)start;  mp < (cyg_uint32 *)end;  mp++) {
+        *mp = (cyg_uint32)pat;
+    }
+    cyg_thread_delay(REFRESH_TIME*100);
+    for (mp = (cyg_uint32 *)start;  mp < (cyg_uint32 *)end;  mp++) {
+        if (*mp != (cyg_uint32)pat) {
+            report_error(mp, *mp, (cyg_uint32)pat);
+        }
+    }
+}
+
+// See how long we can "sleep" before refresh fails
+
+static void
+decay_test(cyg_uint32 start, cyg_uint32 end)
+{
+    cyg_uint32 *mp;
+    cyg_uint32 pat;
+    int i;
+
+    diag_printf("-- Decay test\n");
+    for (i = 0;  i < NUM_DECAY;  i++) {
+        diag_printf("    ... %d.%02d sec delay\n", decay_time[i]/100, decay_time[i]%100);
+        new_test();
+        pat = 0x55555555;
+        for (mp = (cyg_uint32 *)start;  mp < (cyg_uint32 *)end;  mp++) {
+            *mp = (cyg_uint32)pat;
+        }
+        cyg_thread_delay(decay_time[i]);
+        for (mp = (cyg_uint32 *)start;  mp < (cyg_uint32 *)end;  mp++) {
+            if (*mp != (cyg_uint32)pat) {
+                report_error(mp, *mp, (cyg_uint32)pat);
+            }
+        }
+        pat = 0xAAAAAAAA;
+        for (mp = (cyg_uint32 *)start;  mp < (cyg_uint32 *)end;  mp++) {
+            *mp = (cyg_uint32)pat;
+        }
+        cyg_thread_delay(decay_time[i]);
+        for (mp = (cyg_uint32 *)start;  mp < (cyg_uint32 *)end;  mp++) {
+            if (*mp != (cyg_uint32)pat) {
+                report_error(mp, *mp, (cyg_uint32)pat);
+            }
+        }
+        diag_printf("    ... %d errors\n", error_count);
+    }
+}
+
+
+static void
+dram_exercise(cyg_addrword_t p)
+{
+    cyg_uint32 start_DRAM, end_DRAM;
+    int i;
+
+    end_DRAM = 0x01000000;
+    end_DRAM = 0x00F80000;
+    start_DRAM = ((cyg_uint32)&_end + 0x0000FFFF) & 0xFFFF0000;
+    diag_printf("DRAM test - start: 0x%08x, end: 0x%08x\n", start_DRAM, end_DRAM);
+
+    for (i = 0;  i < NUM_RUNS;  i++) {
+        diag_printf("\n*** Start run #%d of %d\n", i+1, NUM_RUNS);
+        run_errors = 0;
+        addr_test(start_DRAM, end_DRAM);
+        ones_test(start_DRAM, end_DRAM);
+        zeros_test(start_DRAM, end_DRAM);
+        walking_bit_test(start_DRAM, end_DRAM);
+        pattern_test(start_DRAM, end_DRAM);
+        refresh_test(start_DRAM, end_DRAM);
+        decay_test(start_DRAM, end_DRAM);
+        diag_printf("\n*** End run, %d errors, %d total errors\n", run_errors, total_errors);
+    }
+
+    diag_printf("All done!\n");
+    cyg_test_exit();
+}
+
+externC void
+cyg_start( void )
+{
+    // Create a main thread, so we can run the scheduler and have time 'pass'
+    cyg_thread_create(10,                // Priority - just a number
+                      dram_exercise,     // entry
+                      0,                 // entry parameter
+                      "DRAM test",       // Name
+                      &stack[0],         // Stack
+                      STACK_SIZE,        // Size
+                      &thread_handle,    // Handle
+                      &thread_data       // Thread data structure
+            );
+    cyg_thread_resume(thread_handle);  // Start it
+    cyg_scheduler_start();
+} // cyg_package_start()
+
--- a/packages/hal/arm/cma230/current/ChangeLog
+++ b/packages/hal/arm/cma230/current/ChangeLog
@@ -1,3 +1,17 @@
+1999-10-28  Jesper Skov  <jskov@cygnus.co.uk>
+
+	* misc/PKGconf.mak: Don't strip symbols when making .img.
+
+1999-10-27  Jesper Skov  <jskov@cygnus.co.uk>
+
+	* src/hal_diag.c: Fixed conditional include.
+
+1999-10-26  Hugo Tyson  <hmt@cygnus.co.uk>
+
+	* src/hal_diag.c (hal_diag_write_char): Use new macro
+	CYG_HAL_GDB_ENTER_CRITICAL_IO_REGION and its mate to control
+	stepping through gdb $O packet output.
+
 
 1999-10-19  Jonathan Larmour  <jlarmour@cygnus.co.uk>
 
new file mode 100644
index 0000000000000000000000000000000000000000..9160fa07ba09717fdb4b59053f16bbe66f25d832
GIT binary patch
literal 24101
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
--- a/packages/hal/arm/cma230/current/misc/PKGconf.mak
+++ b/packages/hal/arm/cma230/current/misc/PKGconf.mak
@@ -42,7 +42,7 @@ include $(COMPONENT_REPOSITORY)/pkgconf/
 
 ifdef CYG_HAL_STARTUP_STUBS
 gdb_module.img: gdb_module.stamp
-	$(OBJCOPY) --strip-all gdb_module$(EXEEXT) gdb_module.img.XX
+	$(OBJCOPY) --strip-debug gdb_module$(EXEEXT) gdb_module.img.XX
 	$(OBJCOPY) --change-addresses=0x10038000 gdb_module.img.XX  gdb_module.img
 	$(OBJCOPY) -O binary gdb_module.img gdb_module.bin
 	$(RM) -f gdb_module.img.XX
--- a/packages/hal/arm/cma230/current/misc/STUBS_config
+++ b/packages/hal/arm/cma230/current/misc/STUBS_config
@@ -1,6 +1,23 @@
 #! /bin/sh
+# Configure ARM/CMA230 eCos to create CMA230 GDB stubs
+# Ensure that PATH include the directory where the ARM tools reside.
+#
+# Run from an empty temporary directory with one argument: the path to
+# the packages directory (i.e., where pkgconf.tcl lives).
+#
+# Output file is in the directory hal/arm/cma230/<version>/misc.
+#  gdb_module.bin: suitable for EPROM programming
 
-tcl $1/pkgconf.tcl                                         \
+if ( echo | tclsh ) 2>/dev/null ; then
+  TCL=tclsh
+elif ( echo | cygtclsh80 ) 2>/dev/null ; then
+  TCL=cygtclsh80
+else
+  echo Could not find TCL interpreter
+  exit 1
+fi
+
+$TCL $1/pkgconf.tcl                                         \
   --target=arm --platform=cma230 --startup=stubs                      \
   --disable CYGPKG_KERNEL --disable CYGPKG_UITRON                     \
   --disable CYGPKG_LIBC --disable CYGPKG_LIBM                         \
@@ -9,20 +26,32 @@ tcl $1/pkgconf.tcl                      
   --disable CYGPKG_DEVICES_WATCHDOG
 
 patch <<END_OF_PATCH -p0
---- pkgconf/hal.h~      Wed Mar 10 13:08:58 1999
-+++ pkgconf/hal.h       Thu Mar 11 15:53:16 1999
+--- pkgconf/hal.h.orig	Fri Oct 22 09:32:14 1999
++++ pkgconf/hal.h	Wed Oct 27 11:15:09 1999
+@@ -110,7 +110,7 @@
+  }
+ 
+  }}CFG_DATA */
+-#define CYGFUN_HAL_COMMON_KERNEL_SUPPORT
++#undef CYGFUN_HAL_COMMON_KERNEL_SUPPORT
+ 
+ /* {{CFG_DATA
+    
 @@ -382,10 +382,10 @@
  
     }}CFG_DATA */
  
 -#undef   CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
-+#define   CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
++#define  CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
  #undef   CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT
 -#define  CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT
 -#define  CYGDBG_HAL_DEBUG_GDB_THREAD_SUPPORT
-+#undef  CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT
-+#undef  CYGDBG_HAL_DEBUG_GDB_THREAD_SUPPORT
++#undef   CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT
++#undef   CYGDBG_HAL_DEBUG_GDB_THREAD_SUPPORT
  
  /*
   * NOTE:
 END_OF_PATCH
+
+make
+make misc
--- a/packages/hal/arm/cma230/current/src/hal_diag.c
+++ b/packages/hal/arm/cma230/current/src/hal_diag.c
@@ -51,8 +51,9 @@
 #include <cyg/hal/hal_io.h>             // IO macros
 #include <cyg/hal/hal_diag.h>
 #include <cyg/hal/hal_cma230.h>         // Hardware definitions
-#ifdef CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT
+#ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
 #include <cyg/hal/drv_api.h>
+#include <cyg/hal/hal_stub.h>           // cyg_hal_gdb_interrupt
 #endif
 
 // Assumption: all diagnostic output must be GDB packetized unless this is a ROM (i.e.
@@ -288,7 +289,11 @@ hal_diag_write_char(char c)
         // 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)
         {
@@ -337,7 +342,11 @@ hal_diag_write_char(char c)
         pos = 0;
 
         // And re-enable interrupts
+#ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
+        CYG_HAL_GDB_LEAVE_CRITICAL_IO_REGION(old);
+#else
         HAL_RESTORE_INTERRUPTS(old);
+#endif
         
     }
 }
--- a/packages/hal/arm/pid/current/ChangeLog
+++ b/packages/hal/arm/pid/current/ChangeLog
@@ -1,9 +1,63 @@
+1999-10-29  Jesper Skov  <jskov@cygnus.co.uk>
+
+	* misc/PKGconf.mak: Also generate stripped .img files.
+
+1999-10-29  Jesper Skov  <jskov@cygnus.co.uk>
+
+	* include/plf_stub.h (HAL_STUB_PLATFORM_RESET): Call stub entry on
+	GDB kill. But only do it for stubs startup.
+
+1999-10-28  Jesper Skov  <jskov@cygnus.co.uk>
+
+	* misc/PKGconf.mak: Don't strip symbols when making .img.
+
+1999-10-27  Jesper Skov  <jskov@cygnus.co.uk>
+
+	* include/pkgconf/mlt_arm_pid9_stubs.ldi: 
+	* include/pkgconf/mlt_arm_pid9_stubs.mlt: 
+	Added some linker files.
+
+	* misc/Notes: 
+	* misc/STUBS_config: 
+	Updated.
+	
+	* src/hal_diag.c: Fixed conditional include.
+
+1999-10-26  Hugo Tyson  <hmt@cygnus.co.uk>
+
+	* src/hal_diag.c (hal_diag_write_char): Use new macro
+	CYG_HAL_GDB_ENTER_CRITICAL_IO_REGION and its mate to control
+	stepping through gdb $O packet output.
+
+1999-10-26  Jesper Skov  <jskov@cygnus.co.uk>
+	* include/hal_platform_setup.h (CYGHWR_LED_MACRO): define.
+	* include/pkgconf/hal_arm_pid.h: 
+	* src/hal_diag.c: 
+	* include/hal_diag.h: 
+	Added CDL for CYGHWR_HAL_ARM_PID_DIAG_LEDS.
+	
+1999-10-26  Jesper Skov  <jskov@cygnus.co.uk>
+	* include/pkgconf/mlt_arm_pidBE_ram.ldi: 
+	* include/pkgconf/mlt_arm_pidBE_ram.mlt: 
+	* include/pkgconf/mlt_arm_pidBE_rom.ldi: 
+	* include/pkgconf/mlt_arm_pidBE_rom.mlt: 
+	* include/pkgconf/mlt_arm_pidBE_stubs.ldi: 
+	* include/pkgconf/mlt_arm_pidBE_stubs.mlt: 
+	* include/pkgconf/mlt_arm_pid9_ram.ldi: 
+	* include/pkgconf/mlt_arm_pid9_ram.mlt: 
+	* include/pkgconf/mlt_arm_pid9_rom.ldi: 
+	* include/pkgconf/mlt_arm_pid9_rom.mlt: 
+	Added some linker files.
+
 1999-10-25  Jesper Skov  <jskov@cygnus.co.uk>
 
 	* misc/STUBS_config: Updated.
 	* src/hal_diag.c (hal_diag_led): Added LED diag.
 	* misc/prog_flash.c: Fixed compiler warning.
 
+	* misc/prog_flash.c: 
+	* misc/PKGconf.mak: 
+	Add support for programming BE images on LE system.
 	
 1999-10-19  Jesper Skov  <jskov@cygnus.co.uk>
 
--- a/packages/hal/arm/pid/current/include/hal_diag.h
+++ b/packages/hal/arm/pid/current/include/hal_diag.h
@@ -54,6 +54,8 @@ externC void hal_diag_init(void);
 externC void hal_diag_write_char(char c);
 externC void hal_diag_read_char(char *c);
 
+externC void hal_diag_led(int n);
+
 /*---------------------------------------------------------------------------*/
 
 #define HAL_DIAG_INIT() hal_diag_init()
--- a/packages/hal/arm/pid/current/include/hal_platform_setup.h
+++ b/packages/hal/arm/pid/current/include/hal_platform_setup.h
@@ -43,6 +43,19 @@
 //
 //===========================================================================*/
 
+
+// Define macro used to diddle the LEDs during early initialization.
+// Can use r0+r1. Argument in \x.
+// Control the LEDs PP0-PP3. This requires the jumpers on pins 9-16 to
+// be set on LK11 in order to be visible. Otherwise the parallel port
+// data pins are diddled instead.
+#ifdef CYGHWR_HAL_ARM_PID_DIAG_LEDS
+#define CYGHWR_LED_MACRO                                                  \
+        ldr     r0,=0x0d800040                                           ;\
+        mov     r1, #((15 & (\x)) << 4)                                  ;\
+        strb    r1, [r0]                                                 ;
+#endif
+
 #define MEM_RESET         0x0B000020  // Write to this location to enable RAM
 
 #define PLATFORM_SETUP1                                 \
--- a/packages/hal/arm/pid/current/include/pkgconf/hal_arm_pid.h
+++ b/packages/hal/arm/pid/current/include/pkgconf/hal_arm_pid.h
@@ -156,6 +156,30 @@
    }}CFG_DATA */
 #define CYGHWR_HAL_ARM_PID_GDB_BAUD     38400
 
+
+/* ---------------------------------------------------------------------
+   {{CFG_DATA
+   cdl_option CYGHWR_HAL_ARM_PID_DIAG_LEDS {
+       display          "Enable use of PPx LEDs"
+       parent           CYGPKG_HAL_ARM_PID
+       type             bool
+       description      "
+           The PID board has four LEDs labelled PP0-PP3. These can be
+           controlled by eCos if jumpers 9-16 on LK11 are
+           shorted. Note that this prevents the parallel port from
+           being used. See the PID board manual for details.
+
+           Enabling this option causes eCos to flash the LEDs during
+           early board initialization. See vectors.S for
+           details. Before calling cyg_start, PP0 is switched on,
+           PP1-3 are switched off. The application code can use the
+           function hal_diag_led() to control the LEDs after this
+           point."
+   }
+   
+   }}CFG_DATA */
+#undef CYGHWR_HAL_ARM_PID_DIAG_LEDS
+
 // Real-time clock/counter specifics
 
 #define CYGNUM_HAL_RTC_NUMERATOR     1000000000
new file mode 100644
--- /dev/null
+++ b/packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pid9_ram.ldi
@@ -0,0 +1,47 @@
+//===========================================================================
+//
+// MLT linker script export - Tue Jan 13 10:14:27 1999
+//
+//===========================================================================
+//####COPYRIGHTBEGIN####
+//
+// -------------------------------------------
+// The contents of this file are subject to the Cygnus eCos Public License
+// Version 1.0 (the "License"); you may not use this file except in
+// compliance with the License.  You may obtain a copy of the License at
+// http://sourceware.cygnus.com/ecos
+// 
+// Software distributed under the License is distributed on an "AS IS"
+// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the
+// License for the specific language governing rights and limitations under
+// the License.
+// 
+// The Original Code is eCos - Embedded Cygnus Operating System, released
+// September 30, 1998.
+// 
+// The Initial Developer of the Original Code is Cygnus.  Portions created
+// by Cygnus are Copyright (C) 1998,1999 Cygnus Solutions.  All Rights Reserved.
+// -------------------------------------------
+//
+//####COPYRIGHTEND####
+//===========================================================================
+
+MEMORY
+{
+    ram : ORIGIN = 0x00004000, LENGTH = 0x7C000
+}
+
+SECTIONS
+{
+    SECTIONS_BEGIN
+    SECTION_rom_vectors (ram, 0x4000, LMA_EQ_VMA)
+    SECTION_text (ram, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_fini (ram, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_rodata (ram, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_rodata1 (ram, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_fixup (ram, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_gcc_except_table (ram, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_data (ram, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_bss (ram, ALIGN (0x4), LMA_EQ_VMA)
+    SECTIONS_END
+}
new file mode 100644
--- /dev/null
+++ b/packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pid9_ram.mlt
@@ -0,0 +1,11 @@
+version 0
+region ram 4000 7c000 0 !
+section rom_vectors 0 1 0 1 1 1 1 1 4000 4000 text text !
+section text 0 1 0 1 0 1 0 1 fini fini !
+section fini 0 1 0 1 0 1 0 1 rodata rodata !
+section rodata 0 1 0 1 0 1 0 1 rodata1 rodata1 !
+section rodata1 0 1 0 1 0 1 0 1 fixup fixup !
+section fixup 0 1 0 1 0 1 0 1 gcc_except_table gcc_except_table !
+section gcc_except_table 0 1 0 1 0 1 0 1 data data !
+section data 0 1 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/arm/pid/current/include/pkgconf/mlt_arm_pid9_rom.ldi
@@ -0,0 +1,51 @@
+//===========================================================================
+//
+// MLT linker script export - Tue Jan 13 10:14:27 1999
+//
+//===========================================================================
+//####COPYRIGHTBEGIN####
+//
+// -------------------------------------------
+// The contents of this file are subject to the Cygnus eCos Public License
+// Version 1.0 (the "License"); you may not use this file except in
+// compliance with the License.  You may obtain a copy of the License at
+// http://sourceware.cygnus.com/ecos
+// 
+// Software distributed under the License is distributed on an "AS IS"
+// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the
+// License for the specific language governing rights and limitations under
+// the License.
+// 
+// The Original Code is eCos - Embedded Cygnus Operating System, released
+// September 30, 1998.
+// 
+// The Initial Developer of the Original Code is Cygnus.  Portions created
+// by Cygnus are Copyright (C) 1998,1999 Cygnus Solutions.  All Rights Reserved.
+// -------------------------------------------
+//
+//####COPYRIGHTEND####
+//===========================================================================
+
+// Modified for ARM/PID7T, generic ROM image
+
+MEMORY
+{
+    rom : ORIGIN = 0x04000000, LENGTH = 0x80000
+    ram : ORIGIN = 0x00000800, LENGTH = 0x7F800
+}
+
+SECTIONS
+{
+    SECTIONS_BEGIN
+    SECTION_rom_vectors (rom, 0x4000000, LMA_EQ_VMA)
+    SECTION_text (rom, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_fini (rom, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_rodata (rom, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_rodata1 (rom, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_fixup (rom, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_gcc_except_table (rom, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_data (ram, 0x800, FOLLOWING (.gcc_except_table))
+    SECTION_bss (ram, ALIGN (0x4), LMA_EQ_VMA)
+    SECTIONS_END
+}
+
new file mode 100644
--- /dev/null
+++ b/packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pid9_rom.mlt
@@ -0,0 +1,12 @@
+version 0
+region ram 800 7f800 0 !
+region rom 4000000 80000 1 !
+section data 0 1 1 1 1 1 0 0 800 bss !
+section bss 0 4 0 1 0 0 0 0 !
+section rom_vectors 0 1 0 1 1 1 1 1 4000000 4000000 text text !
+section text 0 1 0 1 0 1 0 1 fini fini !
+section fini 0 1 0 1 0 1 0 1 rodata rodata !
+section rodata 0 1 0 1 0 1 0 1 rodata1 rodata1 !
+section rodata1 0 1 0 1 0 1 0 1 fixup fixup !
+section fixup 0 1 0 1 0 1 0 1 gcc_except_table gcc_except_table !
+section gcc_except_table 0 1 0 1 0 0 0 1 data !
new file mode 100644
--- /dev/null
+++ b/packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pid9_stubs.ldi
@@ -0,0 +1,50 @@
+//===========================================================================
+//
+// MLT linker script export - Tue Jan 13 10:14:27 1999
+//
+//===========================================================================
+//####COPYRIGHTBEGIN####
+//
+// -------------------------------------------
+// The contents of this file are subject to the Cygnus eCos Public License
+// Version 1.0 (the "License"); you may not use this file except in
+// compliance with the License.  You may obtain a copy of the License at
+// http://sourceware.cygnus.com/ecos
+// 
+// Software distributed under the License is distributed on an "AS IS"
+// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the
+// License for the specific language governing rights and limitations under
+// the License.
+// 
+// The Original Code is eCos - Embedded Cygnus Operating System, released
+// September 30, 1998.
+// 
+// The Initial Developer of the Original Code is Cygnus.  Portions created
+// by Cygnus are Copyright (C) 1998,1999 Cygnus Solutions.  All Rights Reserved.
+// -------------------------------------------
+//
+//####COPYRIGHTEND####
+//===========================================================================
+
+// Modified for ARM/PID7T, GDB/stubs ROM image only
+
+MEMORY
+{
+    rom : ORIGIN = 0x04000000, LENGTH = 0x80000
+    ram : ORIGIN = 0x00000800, LENGTH = 0x03800
+}
+
+SECTIONS
+{
+    SECTIONS_BEGIN
+    SECTION_rom_vectors (rom, 0x4000000, LMA_EQ_VMA)
+    SECTION_text (rom, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_fini (rom, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_rodata (rom, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_rodata1 (rom, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_fixup (rom, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_gcc_except_table (rom, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_data (ram, 0x800, FOLLOWING (.gcc_except_table))
+    SECTION_bss (ram, ALIGN (0x4), LMA_EQ_VMA)
+    SECTIONS_END
+}
new file mode 100644
--- /dev/null
+++ b/packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pid9_stubs.mlt
@@ -0,0 +1,12 @@
+version 0
+region ram 800 3800 0 !
+region rom 4000000 80000 1 !
+section data 0 1 1 1 1 1 0 0 800 bss !
+section bss 0 4 0 1 0 0 0 0 !
+section rom_vectors 0 1 0 1 1 1 1 1 4000000 4000000 text text !
+section text 0 1 0 1 0 1 0 1 fini fini !
+section fini 0 1 0 1 0 1 0 1 rodata rodata !
+section rodata 0 1 0 1 0 1 0 1 rodata1 rodata1 !
+section rodata1 0 1 0 1 0 1 0 1 fixup fixup !
+section fixup 0 1 0 1 0 1 0 1 gcc_except_table gcc_except_table !
+section gcc_except_table 0 1 0 1 0 0 0 1 data !
new file mode 100644
--- /dev/null
+++ b/packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pidBE_ram.ldi
@@ -0,0 +1,47 @@
+//===========================================================================
+//
+// MLT linker script export - Tue Jan 13 10:14:27 1999
+//
+//===========================================================================
+//####COPYRIGHTBEGIN####
+//
+// -------------------------------------------
+// The contents of this file are subject to the Cygnus eCos Public License
+// Version 1.0 (the "License"); you may not use this file except in
+// compliance with the License.  You may obtain a copy of the License at
+// http://sourceware.cygnus.com/ecos
+// 
+// Software distributed under the License is distributed on an "AS IS"
+// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the
+// License for the specific language governing rights and limitations under
+// the License.
+// 
+// The Original Code is eCos - Embedded Cygnus Operating System, released
+// September 30, 1998.
+// 
+// The Initial Developer of the Original Code is Cygnus.  Portions created
+// by Cygnus are Copyright (C) 1998,1999 Cygnus Solutions.  All Rights Reserved.
+// -------------------------------------------
+//
+//####COPYRIGHTEND####
+//===========================================================================
+
+MEMORY
+{
+    ram : ORIGIN = 0x00004000, LENGTH = 0x7C000
+}
+
+SECTIONS
+{
+    SECTIONS_BEGIN
+    SECTION_rom_vectors (ram, 0x4000, LMA_EQ_VMA)
+    SECTION_text (ram, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_fini (ram, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_rodata (ram, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_rodata1 (ram, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_fixup (ram, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_gcc_except_table (ram, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_data (ram, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_bss (ram, ALIGN (0x4), LMA_EQ_VMA)
+    SECTIONS_END
+}
new file mode 100644
--- /dev/null
+++ b/packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pidBE_ram.mlt
@@ -0,0 +1,11 @@
+version 0
+region ram 4000 7c000 0 !
+section rom_vectors 0 1 0 1 1 1 1 1 4000 4000 text text !
+section text 0 1 0 1 0 1 0 1 fini fini !
+section fini 0 1 0 1 0 1 0 1 rodata rodata !
+section rodata 0 1 0 1 0 1 0 1 rodata1 rodata1 !
+section rodata1 0 1 0 1 0 1 0 1 fixup fixup !
+section fixup 0 1 0 1 0 1 0 1 gcc_except_table gcc_except_table !
+section gcc_except_table 0 1 0 1 0 1 0 1 data data !
+section data 0 1 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/arm/pid/current/include/pkgconf/mlt_arm_pidBE_rom.ldi
@@ -0,0 +1,51 @@
+//===========================================================================
+//
+// MLT linker script export - Tue Jan 13 10:14:27 1999
+//
+//===========================================================================
+//####COPYRIGHTBEGIN####
+//
+// -------------------------------------------
+// The contents of this file are subject to the Cygnus eCos Public License
+// Version 1.0 (the "License"); you may not use this file except in
+// compliance with the License.  You may obtain a copy of the License at
+// http://sourceware.cygnus.com/ecos
+// 
+// Software distributed under the License is distributed on an "AS IS"
+// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the
+// License for the specific language governing rights and limitations under
+// the License.
+// 
+// The Original Code is eCos - Embedded Cygnus Operating System, released
+// September 30, 1998.
+// 
+// The Initial Developer of the Original Code is Cygnus.  Portions created
+// by Cygnus are Copyright (C) 1998,1999 Cygnus Solutions.  All Rights Reserved.
+// -------------------------------------------
+//
+//####COPYRIGHTEND####
+//===========================================================================
+
+// Modified for ARM/PID7T, generic ROM image
+
+MEMORY
+{
+    rom : ORIGIN = 0x04000000, LENGTH = 0x80000
+    ram : ORIGIN = 0x00000800, LENGTH = 0x7F800
+}
+
+SECTIONS
+{
+    SECTIONS_BEGIN
+    SECTION_rom_vectors (rom, 0x4000000, LMA_EQ_VMA)
+    SECTION_text (rom, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_fini (rom, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_rodata (rom, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_rodata1 (rom, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_fixup (rom, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_gcc_except_table (rom, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_data (ram, 0x800, FOLLOWING (.gcc_except_table))
+    SECTION_bss (ram, ALIGN (0x4), LMA_EQ_VMA)
+    SECTIONS_END
+}
+
new file mode 100644
--- /dev/null
+++ b/packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pidBE_rom.mlt
@@ -0,0 +1,12 @@
+version 0
+region ram 800 7f800 0 !
+region rom 4000000 80000 1 !
+section data 0 1 1 1 1 1 0 0 800 bss !
+section bss 0 4 0 1 0 0 0 0 !
+section rom_vectors 0 1 0 1 1 1 1 1 4000000 4000000 text text !
+section text 0 1 0 1 0 1 0 1 fini fini !
+section fini 0 1 0 1 0 1 0 1 rodata rodata !
+section rodata 0 1 0 1 0 1 0 1 rodata1 rodata1 !
+section rodata1 0 1 0 1 0 1 0 1 fixup fixup !
+section fixup 0 1 0 1 0 1 0 1 gcc_except_table gcc_except_table !
+section gcc_except_table 0 1 0 1 0 0 0 1 data !
new file mode 100644
--- /dev/null
+++ b/packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pidBE_stubs.ldi
@@ -0,0 +1,49 @@
+//===========================================================================
+//
+// MLT linker script export - Tue Jan 13 10:14:27 1999
+//
+//===========================================================================
+//####COPYRIGHTBEGIN####
+//
+// -------------------------------------------
+// The contents of this file are subject to the Cygnus eCos Public License
+// Version 1.0 (the "License"); you may not use this file except in
+// compliance with the License.  You may obtain a copy of the License at
+// http://sourceware.cygnus.com/ecos
+// 
+// Software distributed under the License is distributed on an "AS IS"
+// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the
+// License for the specific language governing rights and limitations under
+// the License.
+// 
+// The Original Code is eCos - Embedded Cygnus Operating System, released
+// September 30, 1998.
+// 
+// The Initial Developer of the Original Code is Cygnus.  Portions created
+// by Cygnus are Copyright (C) 1998,1999 Cygnus Solutions.  All Rights Reserved.
+// -------------------------------------------
+//
+//####COPYRIGHTEND####
+//===========================================================================
+
+// Modified for ARM/PID BigEndian GDB/stubs ROM image only
+// Note that .rodata(1) must be merged into the .data section!
+
+MEMORY
+{
+    rom : ORIGIN = 0x04000000, LENGTH = 0x80000
+    ram : ORIGIN = 0x00000800, LENGTH = 0x03800
+}
+
+SECTIONS
+{
+    SECTIONS_BEGIN
+    SECTION_rom_vectors (rom, 0x4000000, LMA_EQ_VMA)
+    SECTION_text (rom, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_fini (rom, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_fixup (rom, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_gcc_except_table (rom, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_data (ram, 0x800, FOLLOWING (.gcc_except_table))
+    SECTION_bss (ram, ALIGN (0x4), LMA_EQ_VMA)
+    SECTIONS_END
+}
new file mode 100644
--- /dev/null
+++ b/packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pidBE_stubs.mlt
@@ -0,0 +1,10 @@
+version 0
+region ram 800 3800 0 !
+region rom 4000000 80000 1 !
+section data 0 1 1 1 1 1 0 0 800 bss !
+section bss 0 4 0 1 0 0 0 0 !
+section rom_vectors 0 1 0 1 1 1 1 1 4000000 4000000 text text !
+section text 0 1 0 1 0 1 0 1 fini fini !
+section fini 0 1 0 1 0 1 0 1 fixup fixup !
+section fixup 0 1 0 1 0 1 0 1 gcc_except_table gcc_except_table !
+section gcc_except_table 0 1 0 1 0 0 0 1 data !
--- a/packages/hal/arm/pid/current/include/plf_stub.h
+++ b/packages/hal/arm/pid/current/include/plf_stub.h
@@ -73,7 +73,14 @@ extern int  hal_pid_interruptible(int);
 
 //----------------------------------------------------------------------------
 // Reset.
-#define HAL_STUB_PLATFORM_RESET()             CYG_EMPTY_STATEMENT
+#ifdef CYG_HAL_STARTUP_STUBS
+// Just call the ROM's entry point. Not as safe as a reset, but the PID
+// doesn't have a watchdog, so this'll have to do.
+externC void reset_vector(void);
+#define HAL_STUB_PLATFORM_RESET() reset_vector()
+#else
+#define HAL_STUB_PLATFORM_RESET() CYG_EMPTY_STATEMENT
+#endif
 
 #endif // ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
 
--- a/packages/hal/arm/pid/current/misc/Notes
+++ b/packages/hal/arm/pid/current/misc/Notes
@@ -22,25 +22,116 @@ by Cygnus are Copyright (C) 1998,1999 Cy
 ####COPYRIGHTEND####
 ===========================================================================
 
-15 Jan 1999
+27 Oct 1999
 
 How to build and install the GDB module on the PID
 
-1. Configure a minimal eCos system with all packages except 'infra' disabled.
-2. Edit <hal/hal.h> to enable GDB:
+Make GDB module
+~~~~~~~~~~~~~~~
+ 1. Configure a minimal eCos system with all packages except 'infra' disabled.
+ 2. Edit <hal/hal.h> to enable GDB:
     #define  CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
     #undef   CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT
     #undef   CYGDBG_HAL_DEBUG_GDB_THREAD_SUPPORT
-3. make;make -C hal/arm/pid/current/misc
-4. Download the image onto the PID board:
-      arm-elf-gdb -nw hal/arm/pid/current/misc/gdb_module.img
-   You can connect to the board using either existing GDB stubs or Angel.
+ 3. make;make -C hal/arm/pid/<version>/misc
+
+ Alternatively run hal/arm/pid/<version>/misc/STUBS_config.
+
+
+ GDB image is in the file hal/arm/pid/<version>/misc/gdb_module.img
+
+
+Make FLASH tool
+~~~~~~~~~~~~~~~
+ 1. Configure a separate eCos system with all packages enabled.
+ 2. Change diag chanel to port B (in file pkgconf/hal_arm_pid.h):
+     #define CYGHWR_HAL_ARM_PID_DIAG_PORT     1
+ 2. make misc
+
+ FLASH tool is in the file hal/arm/pid/<version>/misc/prog_flash
+
+
+Prepare board for eCos
+~~~~~~~~~~~~~~~~~~~~~~
+ 1. Set jumper 7-8 on LK6   [using the Angle code in the 16 bit EPROM]
+ 2. Set jumper 5-6 on LK6   [select 8bit ROM mode]
+ 3. Set jumper LK18         [ROM remap - this is also required for eCos]
+ 4. Set S1 to 0-0-1-1       [20MHz operation]
+
+
+Program FLASH
+~~~~~~~~~~~~~
+ 1. Download the image onto the PID board:
+      arm-elf-gdb -nw hal/arm/pid/<version>/misc/gdb_module.img
+
+      (gdb) target rdi s=<serial device>
+      (gdb) load
+      [...]
+      (gdb) quit
+
    This will download the stubs onto the board at 0x60000..0x64000
-5. Configure a separate eCos system with all packages enabled.
-6. make misc
-7. Now download the FLASH programmer tool
-      arm-elf-gdb -nw hal/arm/pid/current/misc/prog_flash
-8. Run the tool.  The GDB stubs will now be programmed into the FLASH.
+
+ 2. Now download the FLASH programmer tool
+      arm-elf-gdb -nw hal/arm/pid/<version>/misc/prog_flash
+
+      (gdb) target rdi s=<serial device>
+      (gdb) load
+      [...]
+      (gdb) cont
+
+ 3. The FLASH tool will output some text on the board serial port B at
+    38400 baud:
+
+       ARM eCos
+       FLASH here!
+       manuf: 8, device: 40
+       Error: Wrong Manufaturer: 08
+       ... Please change FLASH jumper
+
+ 4. This text is repeated until you remove the jumper 7-8 on LK6. Then
+    the output should be:
+
+       manuf: 1F, device: A4
+       AT29C040A recognised
+       About to program FLASH using data at 60000..64000
+       *** Press RESET now to abort!
+    
+ 5. You have about 10 seconds to abort the operation by pressing
+    reset. After this timeout, the FLASH programming happens:
+  
+      ...Programming FLASH
+      All done!
 
-eCos GDB stubs should now be installed and set up as the default monitor when you
-run from FLASH.
+ 6. Quit/kill the GDB process which will hang.
+
+ 7. Next time you reset the board, the stub will be in control, communicating
+    on serial port A at 38400 baud. See documentation for further details
+    on how to connect with GDB.
+
+
+
+Big-Endian operation
+~~~~~~~~~~~~~~~~~~~~
+
+  1) If the board is to be used in big-endian mode, the stub should be
+     configured for platform 'pidbe' instead of 'pid'. 'pidbe' can also
+     be used as a second argument to the STUBS_config script.
+
+ 2a) If a big-endian rom controller is installed on the board, the
+     programming of a new stub into flash is covered in the ARM PID
+     manual.
+
+ 2b) If a big-endian rom controller is _not_ used, this is what you
+     must do:
+
+       1) Follow the above instructions (including jumper settings) ,
+          but instead of using the 'prog_flash' FLASH tool, use the
+          'prog_flash_BE_image_LE_system' FLASH tool.
+
+       2) Instead of resetting the board after the FLASH has been
+          programmed, switch off the power and enable jumper LK4.
+
+     If you have to re-program the FLASH later, you can follow the
+     steps above again, but also disable jumper LK4 when changing the
+     other jumpers.
+
--- a/packages/hal/arm/pid/current/misc/PKGconf.mak
+++ b/packages/hal/arm/pid/current/misc/PKGconf.mak
@@ -37,17 +37,37 @@ PROGS	      := gdb_module
 OTHER_PROGS   := gdb_module.img
 endif
 ifdef CYG_HAL_STARTUP_RAM
-PROGS	      := flash prog_flash
+PROGS         := flash prog_flash
+OTHER_PROGS   := prog_flash.img
+# And for BE support
+PROGS         += prog_flash_BE_image_LE_system
+OTHER_PROGS   += prog_flash_BE_image_LE_system.img
 endif
 WHEREAMI      := misc
 
 include $(COMPONENT_REPOSITORY)/pkgconf/makrules.prv
 
+ifdef CYG_HAL_STARTUP_RAM
+prog_flash.img: prog_flash.stamp
+	$(OBJCOPY) --strip-debug prog_flash$(EXEEXT) prog_flash.img
+endif
+
 ifdef CYG_HAL_STARTUP_STUBS
 gdb_module.img: gdb_module.stamp
-	$(OBJCOPY) --strip-all gdb_module$(EXEEXT) gdb_module.img.XX
+	$(OBJCOPY) --strip-debug gdb_module$(EXEEXT) gdb_module.img.XX
 	$(OBJCOPY) --change-addresses=0xFC060000 gdb_module.img.XX  gdb_module.img
 	$(OBJCOPY) -O binary gdb_module.img gdb_module.bin
 	$(RM) -f gdb_module.img.XX
 endif
 
+ifdef CYG_HAL_STARTUP_RAM
+prog_flash_BE_image_LE_system.img: prog_flash_BE_image_LE_system.stamp
+	$(OBJCOPY) --strip-debug prog_flash_BE_image_LE_system$(EXEEXT) prog_flash_BE_image_LE_system.img
+
+hal_arm_pid_prog_flash_BE_image_LE_system.o: prog_flash.c
+	$(CC) -DBE_IMAGE -c $(INCLUDE_PATH) $(CFLAGS) $($(notdir $<)-CFLAGS)  -Wp,-MD,$(@:.o=.tmp) -o $@ $< 
+	@echo > $(@:.o=.d)
+	@echo $@ ':' $< '\' >> $(@:.o=.d)
+	@$(TAIL) +2 $(@:.o=.tmp) >> $(@:.o=.d)
+	@$(RM) $(@:.o=.tmp)
+endif
--- a/packages/hal/arm/pid/current/misc/STUBS_config
+++ b/packages/hal/arm/pid/current/misc/STUBS_config
@@ -1,10 +1,35 @@
 #! /bin/sh
 
-# Configure ARM/AEB eCos to create PID GDB stubs
-
+# Configure ARM/PID eCos to create PID GDB stubs
+# Ensure that PATH include the directory where the ARM tools reside.
+#
+# Run from an empty temporary directory with two arguments: the path to
+# the packages directory (i.e., where pkgconf.tcl lives), and the platform
+# name (pid or pid9).
+# If a big-endian stub is required, use the name 'pidBE'
+#
+# Output files are in the directory hal/arm/pid/<version>/misc.
+#  gdb_module.img: suitable for programming via GDB stub/Angel
+#  gdb_module.bin: suitable for programming with an EPROM programmer
+# See Notes for details.
 
-tcl $1/pkgconf.tcl                                         \
-   --target=arm --platform=pid --startup=stubs                         \
+if [ "$2"x = "x" ]; then
+  PID="pid"
+else
+  PID=$2
+fi
+
+if ( echo | tclsh ) 2>/dev/null ; then
+  TCL=tclsh
+elif ( echo | cygtclsh80 ) 2>/dev/null ; then
+  TCL=cygtclsh80
+else
+  echo Could not find TCL interpreter
+  exit 1
+fi
+
+$TCL $1/pkgconf.tcl                                         \
+   --target=arm --platform=${PID} --startup=stubs                      \
    --disable CYGPKG_KERNEL --disable CYGPKG_UITRON                     \
    --disable CYGPKG_LIBC --disable CYGPKG_LIBM                         \
    --disable CYGPKG_ERROR --disable CYGPKG_IO                          \
@@ -38,3 +63,6 @@ patch <<END_OF_PATCH -p0
  /*
   * NOTE:
 END_OF_PATCH
+
+make
+make misc
--- a/packages/hal/arm/pid/current/misc/prog_flash.c
+++ b/packages/hal/arm/pid/current/misc/prog_flash.c
@@ -62,7 +62,11 @@ void write_sector(int, char *);
 char *flash_buffer = (char *)0x60000;
 char *flash_buffer_end = (char *)0x64000;
 
+#ifdef BE_IMAGE
+#define BUF(x) buf[x^3]
+#else
 #define BUF(x) buf[x]
+#endif
 
 // FUNCTIONS
 
--- a/packages/hal/arm/pid/current/src/hal_diag.c
+++ b/packages/hal/arm/pid/current/src/hal_diag.c
@@ -50,8 +50,9 @@
 #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_BREAK_SUPPORT
+#ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
 #include <cyg/hal/drv_api.h>
+#include <cyg/hal/hal_stub.h>           // cyg_hal_gdb_interrupt
 #endif
 
 // Assumption: all diagnostic output must be GDB packetized unless this is a ROM (i.e.
@@ -290,7 +291,11 @@ hal_diag_write_char(char c)
         // 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)
         {
@@ -339,7 +344,11 @@ hal_diag_write_char(char c)
         pos = 0;
 
         // And re-enable interrupts
+#ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
+        CYG_HAL_GDB_LEAVE_CRITICAL_IO_REGION(old);
+#else
         HAL_RESTORE_INTERRUPTS(old);
+#endif
         
     }
 }
@@ -347,7 +356,8 @@ hal_diag_write_char(char c)
 
 /*---------------------------------------------------------------------------*/
 
-// Control the LEDs PP0-PP3. this requires the jumpers on pins 1-8 to
+#ifdef CYGHWR_HAL_ARM_PID_DIAG_LEDS
+// Control the LEDs PP0-PP3. This requires the jumpers on pins 9-16 to
 // be set on LK11, thus preventing the use of the parallel port.
 
 #define CYG_DEVICE_PARALLEL_DATA 0x0d800040
@@ -357,6 +367,6 @@ hal_diag_led(int n)
 {
     HAL_WRITE_UINT8(CYG_DEVICE_PARALLEL_DATA, (n & 0xf) << 4);
 }
-
+#endif // CYGHWR_HAL_ARM_PID_DIAG_LEDS
 /*---------------------------------------------------------------------------*/
 /* End of hal_diag.c */
--- a/packages/hal/arm/pid/current/src/pid_misc.c
+++ b/packages/hal/arm/pid/current/src/pid_misc.c
@@ -197,6 +197,6 @@ void hal_show_IRQ(int vector, int data, 
 {
     //    diag_printf("IRQ - vector: %x, data: %x, handler: %x\n", vector, data, handler);
 }
-
+ 
 /*---------------------------------------------------------------------------*/
 /* End of hal_misc.c */
--- a/packages/hal/common/current/ChangeLog
+++ b/packages/hal/common/current/ChangeLog
@@ -1,3 +1,40 @@
+1999-10-29  Gary Thomas  <gthomas@cygnus.co.uk>
+
+	* tests/PKGconf.mak: Add cache tests for Cirrus Logic boards.
+
+1999-10-29  Jesper Skov  <jskov@cygnus.co.uk>
+
+	* tests/cache.c: Made safe for targets with no cache.
+
+	* tests/PKGconf.mak: Don't build cache test for ARM unless
+	explicitly enabled.
+
+1999-10-28  Jesper Skov  <jskov@cygnus.co.uk>
+
+	* tests/cache.c: Fix array size.
+
+1999-10-27  Hugo Tyson  <hmt@cygnus.co.uk>
+
+	* src/hal_stub.c (cyg_hal_gdb_interrupt): Bugfix to previous: ^Cs
+	were being ignored when received by the diag output code, because
+	there was already a break in place.  Solution is to let
+	cyg_hal_gdb_interrupt() override any previous break, and tidy up
+	state of course.
+
+1999-10-26  Hugo Tyson  <hmt@cygnus.co.uk>
+
+	* include/hal_stub.h (CYG_HAL_GDB_ENTER_CRITICAL_IO_REGION): Place
+	the break at the address of a label within the calling context
+	[normally hal_diag_write_char()]; this is neater and more
+	portable; it's supported for more targets.  Also use
+	cyg_hal_place_break() to place it, define that, &c.
+
+	* src/hal_stub.c (cyg_hal_gdb_place_break): New routine to
+	specially handle the inline breakpoint.  It basically does the
+	same as cyg_hal_gdb_interrupt(), except on some platforms where
+	you must do different things to set a bp from a non-interrupt
+	context.
+
 1999-10-22  Hugo Tyson  <hmt@cygnus.co.uk>
 
 	* include/hal_stub.h (CYG_HAL_GDB_ENTER_CRITICAL_IO_REGION):
--- a/packages/hal/common/current/include/hal_stub.h
+++ b/packages/hal/common/current/include/hal_stub.h
@@ -151,8 +151,13 @@ extern void CYG_LABEL_NAME(breakinst) (v
 extern unsigned long __break_opcode (void);
 
 #ifdef CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT
+// This one may assume a valid saved interrupt context on some platforms
 extern void cyg_hal_gdb_interrupt    (target_register_t pc);
+// This one does not; use from CRITICAL_IO_REGION macros below.
+extern void cyg_hal_gdb_place_break  (target_register_t pc);
+// Remove a break from either above - or not if cyg_hal_gdb_running_step
 extern int  cyg_hal_gdb_remove_break (target_register_t pc);
+// Bool: is such a breakpoint set?
 extern int  cyg_hal_gdb_break_is_set (void);
 
 /* This is used so that the generic stub can tell
@@ -166,10 +171,27 @@ extern volatile int cyg_hal_gdb_running_
 // NB they require __builtin_return_address() to work: if your platform
 // does not support this, use HAL_DISABLE_INTERRUPTS &c instead.
 
+#if 1 // Can use the address of a label: this is more portable
+
 #define CYG_HAL_GDB_ENTER_CRITICAL_IO_REGION( _old_ )                           \
 do {                                                                            \
     HAL_DISABLE_INTERRUPTS(_old_);                                              \
-    cyg_hal_gdb_interrupt((target_register_t)__builtin_return_address(0));      \
+    cyg_hal_gdb_place_break( &&cyg_hal_gdb_break_place );                       \
+} while ( 0 )
+
+#define CYG_HAL_GDB_LEAVE_CRITICAL_IO_REGION( _old_ )                           \
+do {                                                                            \
+    cyg_hal_gdb_remove_break( &&cyg_hal_gdb_break_place );                      \
+    HAL_RESTORE_INTERRUPTS(_old_);                                              \
+cyg_hal_gdb_break_place:                                                        \
+} while ( 0 )
+
+#else // use __builtin_return_address instead.
+
+#define CYG_HAL_GDB_ENTER_CRITICAL_IO_REGION( _old_ )                           \
+do {                                                                            \
+    HAL_DISABLE_INTERRUPTS(_old_);                                              \
+    cyg_hal_place_break((target_register_t)__builtin_return_address(0));        \
 } while ( 0 )
 
 #define CYG_HAL_GDB_LEAVE_CRITICAL_IO_REGION( _old_ )                           \
@@ -178,6 +200,8 @@ do {                                    
     HAL_RESTORE_INTERRUPTS(_old_);                                              \
 } while ( 0 )
 
+#endif
+
 #else // NO debug_gdb_break_support
 
 // so define these just to do interrupts:
--- a/packages/hal/common/current/src/hal_stub.c
+++ b/packages/hal/common/current/src/hal_stub.c
@@ -43,6 +43,9 @@
 //=============================================================================
 
 #include <pkgconf/hal.h>
+#ifdef CYGPKG_CYGMON
+#include <pkgconf/cygmon.h>
+#endif
 
 #ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
 
@@ -139,11 +142,20 @@ static instrBuffer break_buffer;
 volatile int cyg_hal_gdb_running_step = 0;
 
 void 
+cyg_hal_gdb_place_break (target_register_t pc)
+{
+    cyg_hal_gdb_interrupt( pc ); // Let's hope this becomes a drop-through:
+}
+
+void 
 cyg_hal_gdb_interrupt (target_register_t pc)
 {
-    // Clear this regardless
+    // Clear flag that we Continued instead of Stepping
     cyg_hal_gdb_running_step = 0;
-    // so that a call to set a BP because of a ^C will take effect
+    // and override existing break? So that a ^C takes effect...
+    if (NULL != break_buffer.targetAddr)
+        cyg_hal_gdb_remove_break( (target_register_t)break_buffer.targetAddr );
+
     if (NULL == break_buffer.targetAddr) {
         break_buffer.targetAddr = (t_inst*) pc;
         break_buffer.savedInstr = *(t_inst*)pc;
--- a/packages/hal/common/current/tests/PKGconf.mak
+++ b/packages/hal/common/current/tests/PKGconf.mak
@@ -33,8 +33,19 @@ include ../../../../pkgconf/pkgconf.mak
 include ../../../../pkgconf/system.mak
 
 TESTS	      := intr context
-ifndef CYG_HAL_ARM_AEB
-TESTS	      += cache
+
+ifndef CYGPKG_HAL_ARM
+TESTS	+= cache
+endif
+
+# Must be CYG_ - if CYGPKG_ would also match revision B
+ifdef CYG_HAL_ARM_AEBC
+TESTS	+= cache
+endif
+
+
+ifdef CYGPKG_HAL_ARM_CL7211
+TESTS	+= cache
 endif
 
 include $(COMPONENT_REPOSITORY)/pkgconf/makrules.tst
--- a/packages/hal/common/current/tests/cache.c
+++ b/packages/hal/common/current/tests/cache.c
@@ -43,6 +43,8 @@
 #include <cyg/hal/hal_intr.h>
 #include <cyg/infra/diag.h>
 
+#if (HAL_DCACHE_SIZE > 0)
+
 // -------------------------------------------------------------------------
 // If the HAL does not supply this, we supply our own version
 
@@ -69,14 +71,12 @@ CYG_MACRO_END
 
 // -------------------------------------------------------------------------
 
-#define MAXSIZE 1<<18
-
-volatile char m[MAXSIZE];
-
 #ifndef MAX_STRIDE
 #define MAX_STRIDE 64
 #endif
 
+volatile char m[(HAL_DCACHE_SIZE/HAL_DCACHE_LINE_SIZE)*MAX_STRIDE];
+
 // -------------------------------------------------------------------------
 
 static void time0(register cyg_uint32 stride)
@@ -209,5 +209,18 @@ cyg_start( void )
     cache_main();
 }
 
+#else // (HAL_DCACHE_SIZE > 0)
+#define N_A_MSG "No cache"
+#endif // (HAL_DCACHE_SIZE > 0)
+
+#ifdef N_A_MSG
+externC void
+cyg_start( void )
+{
+    CYG_TEST_INIT();
+    CYG_TEST_NA( N_A_MSG );
+}
+#endif // N_A_MSG
+
 // -------------------------------------------------------------------------
 /* EOF cache.c */
--- a/packages/hal/mips/arch/current/ChangeLog
+++ b/packages/hal/mips/arch/current/ChangeLog
@@ -1,3 +1,28 @@
+1999-10-29  Nick Garnett  <nickg@cygnus.co.uk>
+
+	* include/pkgconf/hal_mips.h: Added condition to set a
+	MIPS-private option (CYGDBG_HAL_MIPS_DEBUG_GDB_CTRLC_SUPPORT) if
+	either CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT or
+	CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT are defined. In the MIPS HAL
+	these are implmented with the same code.
+
+	* src/hal_misc.c: Changed CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT to
+	CYGDBG_HAL_MIPS_DEBUG_GDB_CTRLC_SUPPORT.
+
+	* src/vectors.S: Space for old SP after switching to interrupt
+	stack must be 8 bytes to preserve alignment of SP. Otherwise any
+	nested interrupts or exceptions will get an address error
+	exception if the FP regs are saved, which then recurses.
+	Changed CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT to
+	CYGDBG_HAL_MIPS_DEBUG_GDB_CTRLC_SUPPORT.
+	
+	* src/mips-stub.c (__is_breakpoint_function): Fixed comparison
+	between PC register and label. On 64 bit CPUs these are both 32
+	bit values in 64 bit types, but the way that they are generated,
+	the PC is zero extended and the label is sign extended. This
+	caused them to always differ. Fixed by casting label to unsigned
+	long before widening.
+
 1999-10-22  Nick Garnett  <nickg@cygnus.co.uk>
 
 	* src/vectors.S: Replaced ifdef with call to hal_intc_translate
--- a/packages/hal/mips/arch/current/include/pkgconf/hal_mips.h
+++ b/packages/hal/mips/arch/current/include/pkgconf/hal_mips.h
@@ -81,5 +81,19 @@
 #define CYGHWR_HAL_MIPS_CPU_FREQ        50
 
 /* -------------------------------------------------------------------*/
+/* If either the CTRLC or BREAK support options in hal.h are set      */
+/* then set our own option to turn on shared generic support for      */
+/* control C handling.                                                */
+
+
+#if defined(CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT) || \
+    defined(CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT)
+
+#define CYGDBG_HAL_MIPS_DEBUG_GDB_CTRLC_SUPPORT
+
+#endif
+
+
+/* -------------------------------------------------------------------*/
 #endif  /* CYGONCE_PKGCONF_HAL_MIPS_H */
 /* EOF hal_mips.h */
--- a/packages/hal/mips/arch/current/src/hal_misc.c
+++ b/packages/hal/mips/arch/current/src/hal_misc.c
@@ -125,7 +125,7 @@ externC cyg_uint32 cyg_hal_exception_han
 
 externC cyg_uint32 hal_default_isr(CYG_ADDRWORD vector, CYG_ADDRWORD data)
 {
-#if defined(CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT) &&      \
+#if defined(CYGDBG_HAL_MIPS_DEBUG_GDB_CTRLC_SUPPORT) &&      \
     defined(CYGHWR_HAL_GDB_PORT_VECTOR) &&              \
     defined(HAL_CTRLC_ISR)
 
--- a/packages/hal/mips/arch/current/src/mips-stub.c
+++ b/packages/hal/mips/arch/current/src/mips-stub.c
@@ -332,7 +332,7 @@ void __clear_breakpoints (void)
 int
 __is_breakpoint_function ()
 {
-    return get_register (PC) == (target_register_t)&CYG_LABEL_NAME(breakinst);
+    return get_register (PC) == (target_register_t)(unsigned long)&CYG_LABEL_NAME(breakinst);
 }
 
 
--- a/packages/hal/mips/arch/current/src/vectors.S
+++ b/packages/hal/mips/arch/current/src/vectors.S
@@ -488,7 +488,8 @@ FUNC_START(__default_interrupt_vsr)
 1:	
 	move	sp,a0				# switch to istack
 8:
-	addi	sp,sp,-4			# space for old SP
+	addi	sp,sp,-8			# space for old SP 
+						# (8 to keep dword alignment!)
 	sw	s0,0(sp)			# save old SP on stack
 	
 #endif
@@ -522,7 +523,7 @@ 8:
 	 move	a2,s2				# a2 = interrupt number
 #endif
 
-#if defined(CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT)
+#if defined(CYGDBG_HAL_MIPS_DEBUG_GDB_CTRLC_SUPPORT)
 	# If we are supporting Ctrl-C interrupts from GDB, we must squirrel
 	# away a pointer to the save interrupt state here so that we can
 	# plant a breakpoint at some later time.
--- a/packages/hal/mips/jmr3904/current/ChangeLog
+++ b/packages/hal/mips/jmr3904/current/ChangeLog
@@ -1,3 +1,10 @@
+1999-10-29  Nick Garnett  <nickg@cygnus.co.uk>
+
+	* include/plf_intr.h:
+	* src/plf_misc.c: 
+	Changed CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT to
+	CYGDBG_HAL_MIPS_DEBUG_GDB_CTRLC_SUPPORT.	
+
 1999-08-25  Nick Garnett  <nickg@cygnus.co.uk>
 
 	* include/platform.inc: Rearranged code a little to avoid
--- a/packages/hal/mips/jmr3904/current/include/plf_intr.h
+++ b/packages/hal/mips/jmr3904/current/include/plf_intr.h
@@ -56,7 +56,7 @@
 //--------------------------------------------------------------------------
 // Control-C support.
 
-#if defined(CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT)
+#if defined(CYGDBG_HAL_MIPS_DEBUG_GDB_CTRLC_SUPPORT)
 
 # define CYGHWR_HAL_GDB_PORT_VECTOR CYGNUM_HAL_INTERRUPT_SIO_0
 
--- a/packages/hal/mips/jmr3904/current/src/plf_misc.c
+++ b/packages/hal/mips/jmr3904/current/src/plf_misc.c
@@ -76,7 +76,7 @@ void hal_platform_init(void)
 
 #endif
 
-#if defined(CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT)    
+#if defined(CYGDBG_HAL_MIPS_DEBUG_GDB_CTRLC_SUPPORT)    
         {
             void hal_ctrlc_isr_init(void);
             hal_ctrlc_isr_init();
@@ -147,7 +147,7 @@ void cyg_hal_user_break( CYG_ADDRWORD *r
 /*------------------------------------------------------------------------*/
 /* Control C ISR support                                                  */
 
-#if defined(CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT)
+#if defined(CYGDBG_HAL_MIPS_DEBUG_GDB_CTRLC_SUPPORT)
 
 #define DIAG_BASE       0xfffff300
 #define DIAG_SLCR       (DIAG_BASE+0x00)
--- a/packages/hal/mips/tx39/current/ChangeLog
+++ b/packages/hal/mips/tx39/current/ChangeLog
@@ -1,3 +1,8 @@
+1999-10-26  Nick Garnett  <nickg@cygnus.co.uk>
+
+	* include/variant.inc: Added implementations of hal_intc_translate
+	macro.
+
 1999-10-06  Jonathan Larmour  <jlarmour@cygnus.co.uk>
 
 	* src/PKGconf.mak: Don't create extras.o here any more
--- a/packages/hal/mips/tx39/current/include/variant.inc
+++ b/packages/hal/mips/tx39/current/include/variant.inc
@@ -213,6 +213,17 @@
 	lb	\vnum,0(v0)			# load it
 	.endm
 
+#ifndef CYGPKG_HAL_MIPS_INTC_TRANSLATE_DEFINED
+#ifdef CYGIMP_HAL_COMMON_INTERRUPTS_CHAIN
+	.macro	hal_intc_translate inum,vnum
+	move	\vnum,zero			# Just vector zero is supported
+	.endm
+#else			
+	.macro	hal_intc_translate inum,vnum
+	move	\vnum,\inum			# Vector == interrupt number
+	.endm
+#endif
+#endif
 
 # This table translates from the 6 bit value supplied in the IP bits
 # of the cause register into a 0..16 offset into the ISR tables.
--- a/packages/hal/powerpc/cogent/current/misc/STUBS_config
+++ b/packages/hal/powerpc/cogent/current/misc/STUBS_config
@@ -8,7 +8,16 @@
 # Output will be ./stubrom.bin which is suitable for burning into ROM.
 # Remember to be careful with byte-endianess in the ROM programmer.
 
-tcl $1/pkgconf.tcl                                                     \
+if ( echo | tclsh ) 2>/dev/null ; then
+  TCL=tclsh
+elif ( echo | cygtclsh80 ) 2>/dev/null ; then
+  TCL=cygtclsh80
+else
+  echo Could not find TCL interpreter
+  exit 1
+fi
+
+$TCL $1/pkgconf.tcl                                                     \
    --target=powerpc --platform=cogent --startup=stubs                  \
    --disable CYGPKG_KERNEL --disable CYGPKG_UITRON                     \
    --disable CYGPKG_LIBC --disable CYGPKG_LIBM                         \
--- a/packages/io/serial/current/ChangeLog
+++ b/packages/io/serial/current/ChangeLog
@@ -1,3 +1,10 @@
+1999-10-26  Jesper Skov  <jskov@cygnus.co.uk>
+
+	* src/arm/pid_serial.h: Added BE support.
+
+	* src/PKGconf.mak: Use CYGPKG_<> instead of CYG_<> to control what
+	needs to be compiled.
+
 1999-10-25  Gary Thomas  <gthomas@cygnus.co.uk>
 
 	* src/arm/pid_serial.h (ISR_RxTO): Define - character received but
--- a/packages/io/serial/current/src/PKGconf.mak
+++ b/packages/io/serial/current/src/PKGconf.mak
@@ -34,31 +34,31 @@ include ../../../../pkgconf/system.mak
 
 LIBRARY         := libtarget.a
 EXTRAS_COMPILE  := common/serial.c common/tty.c common/haldiag.c
-ifdef CYG_HAL_ARM_PID
+ifdef CYGPKG_HAL_ARM_PID
 EXTRAS_COMPILE  += arm/pid_serial_with_ints.c
 endif
-ifdef CYG_HAL_ARM_AEB
+ifdef CYGPKG_HAL_ARM_AEB
 EXTRAS_COMPILE  += arm/aeb_serial.c
 endif
-ifdef CYG_HAL_ARM_EB7211
+ifdef CYGPKG_HAL_ARM_CL7211
 EXTRAS_COMPILE  += arm/cl7211_serial.c
 endif
-ifdef CYG_HAL_ARM_CMA230
+ifdef CYGPKG_HAL_ARM_CMA230
 EXTRAS_COMPILE  += arm/cma230_serial.c
 endif
-ifdef CYG_HAL_MN10300_AM31
+ifdef CYGPKG_HAL_MN10300_AM31
 EXTRAS_COMPILE  += mn10300/mn10300_serial.c
 endif
-ifdef CYG_HAL_MIPS_TX39
+ifdef CYGPKG_HAL_MIPS_TX39
 EXTRAS_COMPILE  += mips/tx3904_serial.c
 endif
-ifdef CYG_HAL_POWERPC_COGENT
+ifdef CYGPKG_HAL_POWERPC_COGENT
 EXTRAS_COMPILE  += powerpc/cogent_serial_with_ints.c
 endif
 ifdef CYGPKG_HAL_QUICC
 EXTRAS_COMPILE  += powerpc/quicc_smc_serial.c
 endif
-ifdef CYG_HAL_SPARCLITE_SLEB
+ifdef CYGPKG_HAL_SPARCLITE_SLEB
 EXTRAS_COMPILE  += sparclite/sleb_sdtr.c
 endif
 OTHER_OBJS    :=
--- a/packages/io/serial/current/src/arm/pid_serial.h
+++ b/packages/io/serial/current/src/arm/pid_serial.h
@@ -48,8 +48,17 @@ struct serial_port {
     unsigned char _byte[32];
 };
 
+// Little-endian version
+#if (CYG_BYTEORDER == CYG_LSBFIRST)
+
 #define reg(n) _byte[n*4]
 
+#else // Big-endian version
+
+#define reg(n) _byte[(n*4)^3]
+
+#endif
+
 // Receive control registers
 #define rhr reg(0)    // Receive holding register
 #define isr reg(2)    // Interrupt status register
--- a/packages/kernel/current/ChangeLog
+++ b/packages/kernel/current/ChangeLog
@@ -1,3 +1,7 @@
+1999-10-29  Gary Thomas  <gthomas@cygnus.co.uk>
+
+	* tests/PKGconf.mak: Enable cache tests for Cirrus Logic boards.
+
 1999-10-08  Jesper Skov  <jskov@cygnus.co.uk>
 
 	* tests/kcache1.c: Fix array size.
--- a/packages/kernel/current/tests/PKGconf.mak
+++ b/packages/kernel/current/tests/PKGconf.mak
@@ -46,6 +46,10 @@ TESTS	+= kcache1 kcache2
 endif
 
 
+ifdef CYGPKG_HAL_ARM_CL7211
+TESTS	+= kcache1 kcache2
+endif
+
 ifndef CYGPKG_HAL_ARM_AEB
 TESTS   += stress_threads
 endif
--- a/packages/targets
+++ b/packages/targets
@@ -250,6 +250,24 @@ target arm {
             LDLANGFLAGS      "-Wl,--gc-sections -Wl,-static"
         }
     }
+
+    platform pidBE {
+        alias		{ "ARM PID7 development board in big-endian mode" }
+	startup		{ ram rom stubs }
+	packages	{
+	    CYGPKG_HAL_ARM_PID
+	}
+	base_platform pid
+        cflags {
+            ARCHFLAGS        "-mcpu=arm7tdmi -mbig-endian"
+            ERRFLAGS         "-Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef"
+            CXXERRFLAGS      "-Woverloaded-virtual"
+            DBGFLAGS         "-g -O2"
+            LANGFLAGS        "-ffunction-sections -fdata-sections"
+            CXXLANGFLAGS     "-fno-rtti -fno-exceptions -fvtable-gc -finit-priority"
+            LDLANGFLAGS      "-Wl,--gc-sections -Wl,-static"
+        }
+    }
     platform aeb {
         alias		{ "ARM Eval Board (AEB)" }
 	startup		{ ram rom stubs }