Remove ancient patches.
authorPavel Pisa <pisa@cmp.felk.cvut.cz>
Sat, 16 Apr 2016 09:49:47 +0000 (11:49 +0200)
committerPavel Pisa <pisa@cmp.felk.cvut.cz>
Sat, 16 Apr 2016 09:49:47 +0000 (11:49 +0200)
Signed-off-by: Pavel Pisa <pisa@cmp.felk.cvut.cz>
26 files changed:
gcc-patches/4.3.4/gcc-core-4.3.4-rtems4.9-20090825.diff [deleted file]
gcc-patches/4.3.4/series [deleted file]
newlib-patches/newlib-1.16.0/newlib-1.16.0-rtems4.9-20090324.diff [deleted file]
newlib-patches/newlib-1.16.0/series [deleted file]
rtems-patches/applied/rtems-arm-more-abort-info.patch [deleted file]
rtems-patches/applied/rtems-csb336-20051008-other.patch [deleted file]
rtems-patches/applied/rtems-csb336-20051008-uart.patch [deleted file]
rtems-patches/applied/rtems-csb336-undef-stack.patch [deleted file]
rtems-patches/applied/rtems-dosfs-fix1.patch [deleted file]
rtems-patches/current/mount-problems-noisy-reporting.patch [deleted file]
rtems-patches/current/rtems-clone-mrm332-to-mo376.patch [deleted file]
rtems-patches/current/rtems-clone-ss555-to-ec555.patch [deleted file]
rtems-patches/current/rtems-csb336-20051008-asyncmclk.patch [deleted file]
rtems-patches/current/rtems-csb336-20051008.patch [deleted file]
rtems-patches/current/rtems-ec555-add-to-configs.patch [deleted file]
rtems-patches/current/rtems-m5235bcc-changes.patch [deleted file]
rtems-patches/current/rtems-m9328-pimx1-baud-19200.patch [deleted file]
rtems-patches/current/rtems-m9328-pimx1-mapping-change.patch [deleted file]
rtems-patches/current/rtems-m9328-pimx1-syncmclk.patch [deleted file]
rtems-patches/current/rtems-m9328-pimx1-uart1to3.patch [deleted file]
rtems-patches/current/rtems-mo376-add-to-configs.patch [deleted file]
rtems-patches/current/rtems-mo376-m68376-updates.patch [deleted file]
rtems-patches/current/rtems-update-mrm332-to-mo376.patch [deleted file]
rtems-patches/current/rtems-update-ss555-to-ec555-cpld-remove.patch [deleted file]
rtems-patches/current/rtems-update-ss555-to-ec555.patch [deleted file]
rtems-patches/current/series [deleted file]

diff --git a/gcc-patches/4.3.4/gcc-core-4.3.4-rtems4.9-20090825.diff b/gcc-patches/4.3.4/gcc-core-4.3.4-rtems4.9-20090825.diff
deleted file mode 100644 (file)
index 31d6089..0000000
+++ /dev/null
@@ -1,146 +0,0 @@
----
- configure                  |    3 ++-
- configure.ac               |    3 ++-
- gcc/config/arm/rtems-elf.h |    1 -
- gcc/config/avr/t-rtems     |    3 ++-
- gcc/config/mips/elf.h      |    2 --
- gcc/config/rs6000/rtems.h  |   12 +++++++++++-
- gcc/config/rs6000/t-rtems  |   11 +++++++----
- 7 files changed, 24 insertions(+), 11 deletions(-)
-
-Index: gcc-4.3.4/configure
-===================================================================
---- gcc-4.3.4.orig/configure   2009-04-25 07:55:24.000000000 +0200
-+++ gcc-4.3.4/configure        2009-11-28 22:40:01.647590027 +0100
-@@ -2185,6 +2185,7 @@
-     noconfigdirs="$noconfigdirs target-newlib target-libiberty target-libgloss ${libgcj} target-libmudflap"
-     ;;
-   *-*-rtems*)
-+    skipdirs="$skipdirs target-libiberty"
-     noconfigdirs="$noconfigdirs target-libgloss ${libgcj}"
-     ;;
-     # The tpf target doesn't support gdb yet.
-@@ -5831,7 +5832,7 @@
-        # to it.  This is right: we don't want to search that directory
-        # for binaries, but we want the header files in there, so add
-        # them explicitly.
--       FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -isystem $$r/$(HOST_SUBDIR)/gcc/include'
-+       FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -isystem $$r/$(HOST_SUBDIR)/gcc/include -isystem $$r/$(HOST_SUBDIR)/gcc/include-fixed'
-        # Someone might think of using the pre-installed headers on
-        # Canadian crosses, in case the installed compiler is not fully
-Index: gcc-4.3.4/configure.ac
-===================================================================
---- gcc-4.3.4.orig/configure.ac        2009-04-25 07:55:24.000000000 +0200
-+++ gcc-4.3.4/configure.ac     2009-11-28 22:40:01.647590027 +0100
-@@ -462,6 +462,7 @@
-     noconfigdirs="$noconfigdirs target-newlib target-libiberty target-libgloss ${libgcj} target-libmudflap"
-     ;;
-   *-*-rtems*)
-+    skipdirs="$skipdirs target-libiberty"
-     noconfigdirs="$noconfigdirs target-libgloss ${libgcj}"
-     ;;
-     # The tpf target doesn't support gdb yet.
-@@ -2342,7 +2343,7 @@
-        # to it.  This is right: we don't want to search that directory
-        # for binaries, but we want the header files in there, so add
-        # them explicitly.
--       FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -isystem $$r/$(HOST_SUBDIR)/gcc/include'
-+       FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -isystem $$r/$(HOST_SUBDIR)/gcc/include -isystem $$r/$(HOST_SUBDIR)/gcc/include-fixed'
-        # Someone might think of using the pre-installed headers on
-        # Canadian crosses, in case the installed compiler is not fully
-Index: gcc-4.3.4/gcc/config/arm/rtems-elf.h
-===================================================================
---- gcc-4.3.4.orig/gcc/config/arm/rtems-elf.h  2008-02-06 08:33:26.000000000 +0100
-+++ gcc-4.3.4/gcc/config/arm/rtems-elf.h       2009-11-28 22:40:01.647590027 +0100
-@@ -43,4 +43,3 @@
-  *  with how this used to be defined.
-  */
- #undef LINK_GCC_C_SEQUENCE_SPEC
--#define LINK_GCC_C_SEQUENCE_SPEC "%G %L"
-Index: gcc-4.3.4/gcc/config/avr/t-rtems
-===================================================================
---- gcc-4.3.4.orig/gcc/config/avr/t-rtems      2004-11-23 04:44:03.000000000 +0100
-+++ gcc-4.3.4/gcc/config/avr/t-rtems   2009-11-28 22:40:01.647590027 +0100
-@@ -1,3 +1,4 @@
- # Multilibs for avr RTEMS targets.
--# ATM, this is just a stub
-+# RTEMS uses _exit from newlib
-+LIB1ASMFUNCS := $(filter-out _exit,$(LIB1ASMFUNCS))
-Index: gcc-4.3.4/gcc/config/mips/elf.h
-===================================================================
---- gcc-4.3.4.orig/gcc/config/mips/elf.h       2007-08-02 12:49:31.000000000 +0200
-+++ gcc-4.3.4/gcc/config/mips/elf.h    2009-11-28 22:40:01.651569933 +0100
-@@ -48,6 +48,4 @@
- #undef  ENDFILE_SPEC
- #define ENDFILE_SPEC "crtend%O%s crtn%O%s"
--#define NO_IMPLICIT_EXTERN_C 1
--
- #define HANDLE_PRAGMA_PACK_PUSH_POP 1
-Index: gcc-4.3.4/gcc/config/rs6000/rtems.h
-===================================================================
---- gcc-4.3.4.orig/gcc/config/rs6000/rtems.h   2007-08-02 12:49:31.000000000 +0200
-+++ gcc-4.3.4/gcc/config/rs6000/rtems.h        2009-11-28 22:40:01.651569933 +0100
-@@ -49,8 +49,18 @@
- %{mcpu=604:  %{!Dppc*: %{!Dmpc*: -Dmpc604}  } } \
- %{mcpu=750:  %{!Dppc*: %{!Dmpc*: -Dmpc750}  } } \
- %{mcpu=821:  %{!Dppc*: %{!Dmpc*: -Dmpc821}  } } \
--%{mcpu=860:  %{!Dppc*: %{!Dmpc*: -Dmpc860}  } }" 
-+%{mcpu=860:  %{!Dppc*: %{!Dmpc*: -Dmpc860}  } } \
-+%{mcpu=8540: %{!Dppc*: %{!Dmpc*: -Dppc8540}  } }" 
- #undef  SUBSUBTARGET_EXTRA_SPECS
- #define SUBSUBTARGET_EXTRA_SPECS \
-   { "cpp_os_rtems",           CPP_OS_RTEMS_SPEC }
-+
-+#undef SUBSUBTARGET_OVERRIDE_OPTIONS
-+#define SUBSUBTARGET_OVERRIDE_OPTIONS         \
-+  do {                                                \
-+    if (TARGET_E500)                          \
-+      {                                               \
-+      rs6000_float_gprs = 1;                  \
-+      }                                               \
-+  } while(0)
-Index: gcc-4.3.4/gcc/config/rs6000/t-rtems
-===================================================================
---- gcc-4.3.4.orig/gcc/config/rs6000/t-rtems   2005-05-27 09:54:06.000000000 +0200
-+++ gcc-4.3.4/gcc/config/rs6000/t-rtems        2009-11-28 22:40:01.651569933 +0100
-@@ -1,17 +1,15 @@
- # Multilibs for powerpc RTEMS targets.
- MULTILIB_OPTIONS      = \
--mcpu=403/mcpu=505/mcpu=601/mcpu=603e/mcpu=604/mcpu=860/mcpu=7400 \
-+mcpu=403/mcpu=505/mcpu=601/mcpu=603e/mcpu=604/mcpu=860/mcpu=7400/mcpu=8540 \
- Dmpc8260 \
- msoft-float
- MULTILIB_DIRNAMES     = \
--m403 m505 m601 m603e m604 m860 m7400 \
-+m403 m505 m601 m603e m604 m860 m7400 m8540 \
- mpc8260 \
- nof
--MULTILIB_EXTRA_OPTS   = mrelocatable-lib mno-eabi mstrict-align
--
- # MULTILIB_MATCHES    = ${MULTILIB_MATCHES_FLOAT}
- MULTILIB_MATCHES      =
- MULTILIB_MATCHES      += ${MULTILIB_MATCHES_ENDIAN}
-@@ -31,6 +29,10 @@
- # Map 750 to .
- MULTILIB_MATCHES      += mcpu?750=
-+# Map e500, 8548 to 8540
-+MULTILIB_MATCHES      += mcpu?8540=mcpu?e500
-+MULTILIB_MATCHES      += mcpu?8540=mcpu?8548
-+
- # Soft-float only, default implies msoft-float
- # NOTE: Must match with MULTILIB_MATCHES_FLOAT and MULTILIB_MATCHES
- MULTILIB_SOFTFLOAT_ONLY = \
-@@ -64,3 +66,4 @@
- MULTILIB_EXCEPTIONS += *mcpu=750/Dmpc*
- MULTILIB_EXCEPTIONS += *mcpu=860/Dmpc*
- MULTILIB_EXCEPTIONS += *mcpu=7400/Dmpc*
-+MULTILIB_EXCEPTIONS += *mcpu=8540/Dmpc*
diff --git a/gcc-patches/4.3.4/series b/gcc-patches/4.3.4/series
deleted file mode 100644 (file)
index ee5ee2a..0000000
+++ /dev/null
@@ -1 +0,0 @@
-gcc-core-4.3.4-rtems4.9-20090825.diff
diff --git a/newlib-patches/newlib-1.16.0/newlib-1.16.0-rtems4.9-20090324.diff b/newlib-patches/newlib-1.16.0/newlib-1.16.0-rtems4.9-20090324.diff
deleted file mode 100644 (file)
index ce08abf..0000000
+++ /dev/null
@@ -1,1199 +0,0 @@
-diff -Naur newlib-1.16.0.orig/newlib/ChangeLog.rtems newlib-1.16.0/newlib/ChangeLog.rtems
---- newlib-1.16.0.orig/newlib/ChangeLog.rtems  1970-01-01 01:00:00.000000000 +0100
-+++ newlib-1.16.0/newlib/ChangeLog.rtems       2009-03-24 04:29:55.000000000 +0100
-@@ -0,0 +1,5 @@
-+2009-03-09    Ralf Corsépius <ralf.corsepius@rtems.org>
-+
-+      * libc/machine/powerpc/times.c: Remove.
-+      * libc/machine/powerpc/Makefile.am: Remove times.c.
-+      * libc/machine/powerpc/Makefile.in: Regenerate.
-diff -Naur newlib-1.16.0.orig/newlib/configure.host newlib-1.16.0/newlib/configure.host
---- newlib-1.16.0.orig/newlib/configure.host   2007-11-07 22:42:24.000000000 +0100
-+++ newlib-1.16.0/newlib/configure.host        2009-03-24 04:29:55.000000000 +0100
-@@ -528,6 +528,7 @@
- #  NOTE: When newlib malloc uses a semaphore, RTEMS will switch to that.
-   *-*-rtems*)
-       default_newlib_io_long_long="yes"
-+      default_newlib_io_c99_formats="yes"
-       newlib_cflags="${newlib_cflags} -DMALLOC_PROVIDED -DEXIT_PROVIDED -DMISSING_SYSCALL_NAMES -DSIGNAL_PROVIDED -DREENTRANT_SYSCALLS_PROVIDED -DHAVE_OPENDIR -DNO_EXEC -DHAVE_FCNTL"
-       ;;
- # VxWorks supplies its own version of malloc, and the newlib one
-diff -Naur newlib-1.16.0.orig/newlib/libc/include/getopt.h newlib-1.16.0/newlib/libc/include/getopt.h
---- newlib-1.16.0.orig/newlib/libc/include/getopt.h    2006-01-04 22:21:52.000000000 +0100
-+++ newlib-1.16.0/newlib/libc/include/getopt.h 2009-03-24 04:29:55.000000000 +0100
-@@ -89,31 +89,40 @@
- /* include files needed by this include file */
--/* macros defined by this include file */
--#define NO_ARG          0
--#define REQUIRED_ARG    1
--#define OPTIONAL_ARG    2
--
--/* types defined by this include file */
--
--struct option
--{
--  char *name;                   /* the name of the long option */
--  int has_arg;                  /* one of the above macros */
--  int *flag;                    /* determines if getopt_long() returns a
--                                 * value for a long option; if it is
--                                 * non-NULL, 0 is returned as a function
--                                 * value and the value of val is stored in
--                                 * the area pointed to by flag.  Otherwise,
--                                 * val is returned. */
--  int val;                      /* determines the value to return if flag is
--                                 * NULL. */
--};
-+  /* These #defines are to keep the namespace clear... */
-+#define getopt_r              __getopt_r
-+#define getopt_long_r         __getopt_long_r
-+#define getopt_long_only_r    __getopt_long_only_r
- #ifdef __cplusplus
- extern "C"
- {
--#endif
-+
-+#endif                                /* __cplusplus */
-+
-+/* types defined by this include file */
-+  struct option
-+  {
-+    char *name;                       /* the name of the long option */
-+    int has_arg;              /* one of the above macros */
-+    int *flag;                        /* determines if getopt_long() returns a
-+                               * value for a long option; if it is
-+                               * non-NULL, 0 is returned as a function
-+                               * value and the value of val is stored in
-+                               * the area pointed to by flag.  Otherwise,
-+                               * val is returned. */
-+    int val;                  /* determines the value to return if flag is
-+                               * NULL. */
-+
-+  };
-+
-+  /* The getopt_data structure is for reentrancy. Its members are similar to
-+     the externally-defined variables.  */
-+  typedef struct getopt_data
-+  {
-+    char *optarg;
-+    int optind, opterr, optopt, optwhere;
-+  } getopt_data;
-   /* externally-defined variables */
-   extern char *optarg;
-@@ -122,14 +131,35 @@
-   extern int optopt;
-   /* function prototypes */
--  int _EXFUN (getopt, (int __argc, char *const __argv[], const char *__optstring));
--  int _EXFUN (getopt_long, (int __argc, char *const __argv[], const char *__shortopts, const struct option *__longopts, int *__longind));
--  int _EXFUN (getopt_long_only, (int __argc, char *const __argv[], const char *__shortopts, const struct option *__longopts, int *__longind));
-+  int _EXFUN (getopt,
-+            (int __argc, char *const __argv[], const char *__optstring));
-+
-+  int _EXFUN (getopt_long,
-+            (int __argc, char *const __argv[], const char *__shortopts,
-+             const struct option * __longopts, int *__longind));
-+
-+  int _EXFUN (getopt_long_only,
-+            (int __argc, char *const __argv[], const char *__shortopts,
-+             const struct option * __longopts, int *__longind));
-+
-+  int _EXFUN (__getopt_r,
-+            (int __argc, char *const __argv[], const char *__optstring,
-+             struct getopt_data * __data));
-+
-+  int _EXFUN (__getopt_long_r,
-+            (int __argc, char *const __argv[], const char *__shortopts,
-+             const struct option * __longopts, int *__longind,
-+             struct getopt_data * __data));
-+
-+  int _EXFUN (__getopt_long_only_r,
-+            (int __argc, char *const __argv[], const char *__shortopts,
-+             const struct option * __longopts, int *__longind,
-+             struct getopt_data * __data));
- #ifdef __cplusplus
- };
--#endif
-+#endif /* __cplusplus  */
- #endif /* GETOPT_H */
-diff -Naur newlib-1.16.0.orig/newlib/libc/include/inttypes.h newlib-1.16.0/newlib/libc/include/inttypes.h
---- newlib-1.16.0.orig/newlib/libc/include/inttypes.h  2005-12-16 20:03:12.000000000 +0100
-+++ newlib-1.16.0/newlib/libc/include/inttypes.h       2009-03-24 04:29:55.000000000 +0100
-@@ -242,9 +242,12 @@
- #define SCNxMAX               __SCNMAX(x)
- /* ptr types */
--#if __have_longlong64
--#define __PRIPTR(x) __STRINGIFY(ll##x)
--#define __SCNPTR(x) __STRINGIFY(ll##x)
-+#if __ptrint_t_long_defined
-+#define __PRIPTR(x) __STRINGIFY(l##x)
-+#define __SCNPTR(x) __STRINGIFY(l##x)
-+#elif __ptrint_t_int_defined
-+#define __PRIPTR(x) __STRINGIFY(x)
-+#define __SCNPTR(x) __STRINGIFY(x)
- #elif __have_long64
- #define __PRIPTR(x) __STRINGIFY(l##x)
- #define __SCNPTR(x) __STRINGIFY(l##x)
-diff -Naur newlib-1.16.0.orig/newlib/libc/include/machine/ieeefp.h newlib-1.16.0/newlib/libc/include/machine/ieeefp.h
---- newlib-1.16.0.orig/newlib/libc/include/machine/ieeefp.h    2007-11-07 22:42:24.000000000 +0100
-+++ newlib-1.16.0/newlib/libc/include/machine/ieeefp.h 2009-03-24 04:29:55.000000000 +0100
-@@ -62,8 +62,12 @@
- #  define __IEEE_BIG_ENDIAN
- # endif
- #else
--# define __IEEE_BIG_ENDIAN
- # ifdef __ARMEL__
-+#  define __IEEE_LITTLE_ENDIAN
-+# else
-+#  define __IEEE_BIG_ENDIAN
-+# endif
-+# ifdef __ARMWEL__
- #  define __IEEE_BYTES_LITTLE_ENDIAN
- # endif
- #endif
-diff -Naur newlib-1.16.0.orig/newlib/libc/include/machine/setjmp.h newlib-1.16.0/newlib/libc/include/machine/setjmp.h
---- newlib-1.16.0.orig/newlib/libc/include/machine/setjmp.h    2007-11-07 22:42:24.000000000 +0100
-+++ newlib-1.16.0/newlib/libc/include/machine/setjmp.h 2009-03-24 04:29:55.000000000 +0100
-@@ -27,7 +27,7 @@
- /* necv70 was 9 as well. */
--#ifdef __mc68000__
-+#if defined(__m68k__) || defined(__mc68000__)
- /*
-  * onsstack,sigmask,sp,pc,psl,d2-d7,a2-a6,
-  * fp2-fp7    for 68881.
-@@ -268,6 +268,12 @@
- # define _CYGWIN_WORKING_SIGSETJMP
- #endif
-+#ifdef _POSIX_THREADS
-+#define __SIGMASK_FUNC pthread_sigmask
-+#else
-+#define __SIGMASK_FUNC sigprocmask
-+#endif
-+
- #if defined(__GNUC__)
- #define sigsetjmp(env, savemask) \
-@@ -275,7 +281,7 @@
-             ({ \
-               sigjmp_buf *_sjbuf = &(env); \
-               ((*_sjbuf)[_SAVEMASK] = savemask,\
--              sigprocmask (SIG_SETMASK, 0, (sigset_t *)((*_sjbuf) + _SIGMASK)),\
-+              __SIGMASK_FUNC (SIG_SETMASK, 0, (sigset_t *)((*_sjbuf) + _SIGMASK)),\
-               setjmp (*_sjbuf)); \
-             })
-@@ -284,7 +290,7 @@
-             ({ \
-               sigjmp_buf *_sjbuf = &(env); \
-               ((((*_sjbuf)[_SAVEMASK]) ? \
--               sigprocmask (SIG_SETMASK, (sigset_t *)((*_sjbuf) + _SIGMASK), 0)\
-+               __SIGMASK_FUNC (SIG_SETMASK, (sigset_t *)((*_sjbuf) + _SIGMASK), 0)\
-                : 0), \
-                longjmp (*_sjbuf, val)); \
-             })
-@@ -292,15 +298,21 @@
- #else /* !__GNUC__ */
- #define sigsetjmp(env, savemask) ((env)[_SAVEMASK] = savemask,\
--               sigprocmask (SIG_SETMASK, 0, (sigset_t *) ((env) + _SIGMASK)),\
-+               __SIGMASK_FUNC (SIG_SETMASK, 0, (sigset_t *) ((env) + _SIGMASK)),\
-                setjmp (env))
- #define siglongjmp(env, val) ((((env)[_SAVEMASK])?\
--               sigprocmask (SIG_SETMASK, (sigset_t *) ((env) + _SIGMASK), 0):0),\
-+               __SIGMASK_FUNC (SIG_SETMASK, (sigset_t *) ((env) + _SIGMASK), 0):0),\
-                longjmp (env, val))
- #endif
-+/* POSIX _setjmp/_longjmp macros, maintained for XSI compatibility.  These
-+   are equivalent to sigsetjmp/siglongjmp when not saving the signal mask.
-+   New applications should use sigsetjmp/siglongjmp instead. */
-+#define _setjmp(env)          sigsetjmp ((env), 0)
-+#define _longjmp(env, val)    siglongjmp ((env), (val))
-+
- #ifdef __cplusplus
- }
- #endif
-diff -Naur newlib-1.16.0.orig/newlib/libc/include/pthread.h newlib-1.16.0/newlib/libc/include/pthread.h
---- newlib-1.16.0.orig/newlib/libc/include/pthread.h   2006-09-14 00:09:27.000000000 +0200
-+++ newlib-1.16.0/newlib/libc/include/pthread.h        2009-03-24 04:29:55.000000000 +0100
-@@ -283,14 +283,6 @@
- int   _EXFUN(pthread_getcpuclockid,
-       (pthread_t __pthread_id, clockid_t *__clock_id));
-  
--/* CPU-time Clock Thread Creation Attribute, P1003.4b/D8, p. 59 */
--
--int   _EXFUN(pthread_attr_setcputime,
--      (pthread_attr_t *__attr, int __clock_allowed));
--
--int   _EXFUN(pthread_attr_getcputime,
--      (pthread_attr_t *__attr, int *__clock_allowed));
--
- #endif /* defined(_POSIX_THREAD_CPUTIME) */
-diff -Naur newlib-1.16.0.orig/newlib/libc/include/sched.h newlib-1.16.0/newlib/libc/include/sched.h
---- newlib-1.16.0.orig/newlib/libc/include/sched.h     2007-09-21 23:02:15.000000000 +0200
-+++ newlib-1.16.0/newlib/libc/include/sched.h  1970-01-01 01:00:00.000000000 +0100
-@@ -1,14 +0,0 @@
--#ifndef _SCHED_H_
--#define _SCHED_H_
--
--#ifdef __cplusplus
--extern "C" {
--#endif
--
--#include <sys/sched.h>
--
--#ifdef __cplusplus
--}
--#endif
--
--#endif /* _SCHED_H_ */
-diff -Naur newlib-1.16.0.orig/newlib/libc/include/stdint.h newlib-1.16.0/newlib/libc/include/stdint.h
---- newlib-1.16.0.orig/newlib/libc/include/stdint.h    2006-08-16 23:39:43.000000000 +0200
-+++ newlib-1.16.0/newlib/libc/include/stdint.h 2009-03-24 04:29:55.000000000 +0100
-@@ -348,8 +348,7 @@
- #endif
- /* This must match size_t in stddef.h, currently long unsigned int */
--#define SIZE_MIN (-__STDINT_EXP(LONG_MAX) - 1L)
--#define SIZE_MAX __STDINT_EXP(LONG_MAX)
-+#define SIZE_MAX (__STDINT_EXP(LONG_MAX) * 2UL + 1)
- /* This must match sig_atomic_t in <signal.h> (currently int) */
- #define SIG_ATOMIC_MIN (-__STDINT_EXP(INT_MAX) - 1)
-@@ -393,6 +392,9 @@
- #define UINTMAX_C(x)  x##UL
- #endif
-+#ifdef __rtems__
-+#include <machine/stdint.h>
-+#endif
- #ifdef __cplusplus
- }
-diff -Naur newlib-1.16.0.orig/newlib/libc/include/sys/features.h newlib-1.16.0/newlib/libc/include/sys/features.h
---- newlib-1.16.0.orig/newlib/libc/include/sys/features.h      2007-12-19 19:51:19.000000000 +0100
-+++ newlib-1.16.0/newlib/libc/include/sys/features.h   2009-03-24 04:29:55.000000000 +0100
-@@ -38,11 +38,12 @@
- #define _POSIX_MEMLOCK_RANGE          1
- #define _POSIX_MEMORY_PROTECTION      1
- #define _POSIX_MESSAGE_PASSING                1
-+#define _POSIX_MONOTONIC_CLOCK                200112L
- #define _POSIX_PRIORITIZED_IO         1
- #define _POSIX_PRIORITY_SCHEDULING    1
- #define _POSIX_REALTIME_SIGNALS               1
- #define _POSIX_SEMAPHORES             1
--#define _POSIX_SHARED_MEMORY_OBJECTS  1
-+/* #define _POSIX_SHARED_MEMORY_OBJECTS       1 */
- #define _POSIX_SYNCHRONIZED_IO                1
- #define _POSIX_TIMERS                 1
- #define _POSIX_BARRIERS                 200112L
-diff -Naur newlib-1.16.0.orig/newlib/libc/include/sys/_types.h newlib-1.16.0/newlib/libc/include/sys/_types.h
---- newlib-1.16.0.orig/newlib/libc/include/sys/_types.h        2007-09-18 22:05:17.000000000 +0200
-+++ newlib-1.16.0/newlib/libc/include/sys/_types.h     2009-03-24 04:29:55.000000000 +0100
-@@ -84,4 +84,7 @@
- typedef void *_iconv_t;
- #endif
-+typedef long * __intptr_t;
-+typedef unsigned long* __uintptr_t;
-+
- #endif        /* _SYS__TYPES_H */
-diff -Naur newlib-1.16.0.orig/newlib/libc/include/sys/unistd.h newlib-1.16.0/newlib/libc/include/sys/unistd.h
---- newlib-1.16.0.orig/newlib/libc/include/sys/unistd.h        2007-11-08 17:20:12.000000000 +0100
-+++ newlib-1.16.0/newlib/libc/include/sys/unistd.h     2009-03-24 04:29:55.000000000 +0100
-@@ -157,7 +157,7 @@
- pid_t   _EXFUN(tcgetpgrp, (int __fildes ));
- int     _EXFUN(tcsetpgrp, (int __fildes, pid_t __pgrp_id ));
- char    _EXFUN(*ttyname, (int __fildes ));
--#if defined(__CYGWIN__)
-+#if defined(__CYGWIN__) || defined(__rtems__)
- int     _EXFUN(ttyname_r, (int, char *, size_t)); 
- #endif
- int     _EXFUN(unlink, (const char *__path ));
-@@ -219,13 +219,11 @@
- char *        _EXFUN(mktemp, (char *));
- #endif
--#if defined(__CYGWIN__) || defined(__SPU__)
-+#if defined(__CYGWIN__) || defined(__SPU__) || defined(__rtems__)
- void    _EXFUN(sync, (void));
--#elif defined(__rtems__)
--int     _EXFUN(sync, (void));
- #endif
--int     _EXFUN(readlink, (const char *__path, char *__buf, int __buflen));
-+ssize_t _EXFUN(readlink, (const char *__path, char *__buf, size_t __buflen));
- int     _EXFUN(symlink, (const char *__name1, const char *__name2));
- #define       F_OK    0
-diff -Naur newlib-1.16.0.orig/newlib/libc/include/_syslist.h newlib-1.16.0/newlib/libc/include/_syslist.h
---- newlib-1.16.0.orig/newlib/libc/include/_syslist.h  2005-08-22 23:13:35.000000000 +0200
-+++ newlib-1.16.0/newlib/libc/include/_syslist.h       2009-03-24 04:29:55.000000000 +0100
-@@ -11,6 +11,7 @@
- #define _fstat fstat
- #define _getpid getpid
- #define _gettimeofday gettimeofday
-+#define _isatty isatty
- #define _kill kill
- #define _link link
- #define _lseek lseek
-diff -Naur newlib-1.16.0.orig/newlib/libc/include/time.h newlib-1.16.0/newlib/libc/include/time.h
---- newlib-1.16.0.orig/newlib/libc/include/time.h      2005-11-18 16:57:24.000000000 +0100
-+++ newlib-1.16.0/newlib/libc/include/time.h   2009-03-24 04:29:55.000000000 +0100
-@@ -226,6 +226,16 @@
- #endif
-+#if defined(_POSIX_MONOTONIC_CLOCK)
-+
-+/*  The identifier for the system-wide monotonic clock, which is defined
-+    as a clock whose value cannot be set via clock_settime() and which 
-+    cannot have backward clock jumps. */
-+
-+#define CLOCK_MONOTONIC (clockid_t)4
-+
-+#endif
-+
- #if defined(_POSIX_CPUTIME)
- /* Accessing a Process CPU-time CLock, P1003.4b/D8, p. 55 */
-diff -Naur newlib-1.16.0.orig/newlib/libc/machine/arm/machine/endian.h newlib-1.16.0/newlib/libc/machine/arm/machine/endian.h
---- newlib-1.16.0.orig/newlib/libc/machine/arm/machine/endian.h        2004-05-07 22:29:24.000000000 +0200
-+++ newlib-1.16.0/newlib/libc/machine/arm/machine/endian.h     1970-01-01 01:00:00.000000000 +0100
-@@ -1,12 +0,0 @@
--/* ARM configuration file */
--
--#ifndef _MACHINE_ENDIAN_H
--# define _MACHINE_ENDIAN_H
--
--#ifdef __ARMEB__
--#define BYTE_ORDER BIG_ENDIAN
--#else
--#define BYTE_ORDER LITTLE_ENDIAN
--#endif
--
--#endif
-diff -Naur newlib-1.16.0.orig/newlib/libc/machine/powerpc/Makefile.am newlib-1.16.0/newlib/libc/machine/powerpc/Makefile.am
---- newlib-1.16.0.orig/newlib/libc/machine/powerpc/Makefile.am 2007-05-24 19:33:35.000000000 +0200
-+++ newlib-1.16.0/newlib/libc/machine/powerpc/Makefile.am      2009-03-24 04:29:55.000000000 +0100
-@@ -10,7 +10,7 @@
- AM_CFLAGS = -I $(srcdir)/../../stdio -I $(srcdir)/../../stdlib
--lib_a_SOURCES = setjmp.S times.c
-+lib_a_SOURCES = setjmp.S
- lib_a_CCASFLAGS=$(AM_CCASFLAGS)
- lib_a_CFLAGS=$(AM_CFLAGS)
- lib_a_LIBADD = @extra_objs@
-diff -Naur newlib-1.16.0.orig/newlib/libc/machine/powerpc/Makefile.in newlib-1.16.0/newlib/libc/machine/powerpc/Makefile.in
---- newlib-1.16.0.orig/newlib/libc/machine/powerpc/Makefile.in 2007-12-19 23:36:34.000000000 +0100
-+++ newlib-1.16.0/newlib/libc/machine/powerpc/Makefile.in      2009-03-24 04:29:55.000000000 +0100
-@@ -39,8 +39,7 @@
- DIST_COMMON = $(srcdir)/../../../../config.guess \
-       $(srcdir)/../../../../config.sub $(srcdir)/Makefile.in \
-       $(srcdir)/Makefile.am $(top_srcdir)/configure \
--      $(am__configure_deps) $(srcdir)/../../../../mkinstalldirs \
--      $(srcdir)/../../../../compile
-+      $(am__configure_deps) $(srcdir)/../../../../mkinstalldirs
- subdir = .
- ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
- am__aclocal_m4_deps = $(top_srcdir)/../../../acinclude.m4 \
-@@ -54,7 +53,7 @@
- LIBRARIES = $(noinst_LIBRARIES)
- ARFLAGS = cru
- lib_a_AR = $(AR) $(ARFLAGS)
--am_lib_a_OBJECTS = lib_a-setjmp.$(OBJEXT) lib_a-times.$(OBJEXT)
-+am_lib_a_OBJECTS = lib_a-setjmp.$(OBJEXT)
- lib_a_OBJECTS = $(am_lib_a_OBJECTS)
- DEFAULT_INCLUDES = -I. -I$(srcdir)
- depcomp =
-@@ -184,7 +183,7 @@
- AM_CCASFLAGS = $(INCLUDES)
- noinst_LIBRARIES = lib.a
- AM_CFLAGS = -I $(srcdir)/../../stdio -I $(srcdir)/../../stdlib
--lib_a_SOURCES = setjmp.S times.c
-+lib_a_SOURCES = setjmp.S
- lib_a_CCASFLAGS = $(AM_CCASFLAGS)
- lib_a_CFLAGS = $(AM_CFLAGS)
- lib_a_LIBADD = @extra_objs@
-@@ -195,7 +194,7 @@
- all: all-am
- .SUFFIXES:
--.SUFFIXES: .S .c .o .obj
-+.SUFFIXES: .S .o .obj
- am--refresh:
-       @:
- $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
-@@ -254,18 +253,6 @@
- lib_a-setjmp.obj: setjmp.S
-       $(CCAS) $(lib_a_CCASFLAGS) $(CCASFLAGS) -c -o lib_a-setjmp.obj `if test -f 'setjmp.S'; then $(CYGPATH_W) 'setjmp.S'; else $(CYGPATH_W) '$(srcdir)/setjmp.S'; fi`
--
--.c.o:
--      $(COMPILE) -c $<
--
--.c.obj:
--      $(COMPILE) -c `$(CYGPATH_W) '$<'`
--
--lib_a-times.o: times.c
--      $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-times.o `test -f 'times.c' || echo '$(srcdir)/'`times.c
--
--lib_a-times.obj: times.c
--      $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-times.obj `if test -f 'times.c'; then $(CYGPATH_W) 'times.c'; else $(CYGPATH_W) '$(srcdir)/times.c'; fi`
- uninstall-info-am:
- ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-diff -Naur newlib-1.16.0.orig/newlib/libc/machine/powerpc/times.c newlib-1.16.0/newlib/libc/machine/powerpc/times.c
---- newlib-1.16.0.orig/newlib/libc/machine/powerpc/times.c     2002-07-22 22:26:51.000000000 +0200
-+++ newlib-1.16.0/newlib/libc/machine/powerpc/times.c  1970-01-01 01:00:00.000000000 +0100
-@@ -1,36 +0,0 @@
--/* Time support routines for PowerPC.
-- *
-- * Written by Aldy Hernandez.
-- */
--
--#include <_ansi.h>
--#include <reent.h>
--#include <sys/time.h>
--#include <sys/times.h>
--#include <sys/resource.h>
--
--clock_t
--times (struct tms *tp)
--{
--  struct rusage usage;
--  union {
--    struct rusage r;
--    /* Newlib's rusage has only 2 fields.  We need to make room for
--       when we call the system's rusage.  This should be enough.  */
--    int filler[32];
--  } host_ru;
--
--  getrusage (RUSAGE_SELF, (void *)&host_ru);
--
--  if (tp)
--    {
--      tp->tms_utime = host_ru.r.ru_utime.tv_sec * 1000
--      + host_ru.r.ru_utime.tv_usec;
--      tp->tms_stime = host_ru.r.ru_stime.tv_sec * 1000
--      + host_ru.r.ru_stime.tv_usec;
--      tp->tms_cutime = 0;     /* user time, children */
--      tp->tms_cstime = 0;     /* system time, children */
--    }
--
--  return tp->tms_utime;
--}
-diff -Naur newlib-1.16.0.orig/newlib/libc/stdlib/getopt.c newlib-1.16.0/newlib/libc/stdlib/getopt.c
---- newlib-1.16.0.orig/newlib/libc/stdlib/getopt.c     2007-05-29 23:26:59.000000000 +0200
-+++ newlib-1.16.0/newlib/libc/stdlib/getopt.c  2009-03-24 04:29:55.000000000 +0100
-@@ -90,6 +90,9 @@
- #include <getopt.h>
- /* macros */
-+#define NO_ARG                0
-+#define REQUIRED_ARG          1
-+#define OPTIONAL_ARG          2
- /* types */
- typedef enum GETOPT_ORDERING_T
-@@ -100,16 +103,19 @@
- } GETOPT_ORDERING_T;
- /* globally-defined variables */
--char *optarg = NULL;
-+char *optarg = 0;
- int optind = 0;
- int opterr = 1;
- int optopt = '?';
-+/* static variables */
-+static int optwhere = 0;
-+
- /* functions */
- /* reverse_argv_elements:  reverses num elements starting at argv */
- static void
--reverse_argv_elements (char ** argv, int num)
-+reverse_argv_elements (char **argv, int num)
- {
-   int i;
-   char *tmp;
-@@ -126,281 +132,346 @@
- static void
- permute (char *const argv[], int len1, int len2)
- {
--  reverse_argv_elements ((char **)argv, len1);
--  reverse_argv_elements ((char **)argv, len1 + len2);
--  reverse_argv_elements ((char **)argv, len2);
-+  reverse_argv_elements ((char **) argv, len1);
-+  reverse_argv_elements ((char **) argv, len1 + len2);
-+  reverse_argv_elements ((char **) argv, len2);
- }
- /* is_option: is this argv-element an option or the end of the option list? */
- static int
- is_option (char *argv_element, int only)
- {
--  return ((argv_element == NULL)
--          || (argv_element[0] == '-') || (only && argv_element[0] == '+'));
-+  return ((argv_element == 0)
-+        || (argv_element[0] == '-') || (only && argv_element[0] == '+'));
-+}
-+
-+/* read_globals: read the values from the globals into a getopt_data 
-+   structure */
-+static void
-+read_globals (struct getopt_data *data)
-+{
-+  data->optarg = optarg;
-+  data->optind = optind;
-+  data->opterr = opterr;
-+  data->optopt = optopt;
-+  data->optwhere = optwhere;
-+}
-+
-+/* write_globals: write the values into the globals from a getopt_data
-+   structure */
-+static void
-+write_globals (struct getopt_data *data)
-+{
-+  optarg = data->optarg;
-+  optind = data->optind;
-+  opterr = data->opterr;
-+  optopt = data->optopt;
-+  optwhere = data->optwhere;
- }
- /* getopt_internal:  the function that does all the dirty work */
- static int
- getopt_internal (int argc, char *const argv[], const char *shortopts,
--                 const struct option *longopts, int *longind, int only)
-+               const struct option *longopts, int *longind, int only,
-+               struct getopt_data *data)
- {
-   GETOPT_ORDERING_T ordering = PERMUTE;
--  static size_t optwhere = 0;
-   size_t permute_from = 0;
-   int num_nonopts = 0;
-   int optindex = 0;
-   size_t match_chars = 0;
--  char *possible_arg = NULL;
-+  char *possible_arg = 0;
-   int longopt_match = -1;
-   int has_arg = -1;
--  char *cp = NULL;
-+  char *cp = 0;
-   int arg_next = 0;
-   /* first, deal with silly parameters and easy stuff */
--  if (argc == 0 || argv == NULL || (shortopts == NULL && longopts == NULL))
--    return EOF;
--  if (optind >= argc || argv[optind] == NULL)
-+  if (argc == 0 || argv == 0 || (shortopts == 0 && longopts == 0)
-+      || data->optind >= argc || argv[data->optind] == 0)
-     return EOF;
--  if (strcmp (argv[optind], "--") == 0)
-+  if (strcmp (argv[data->optind], "--") == 0)
-     {
--      optind++;
-+      data->optind++;
-       return EOF;
-     }
-+
-   /* if this is our first time through */
--  if (optind == 0)
--    optind = optwhere = 1;
-+  if (data->optind == 0)
-+    data->optind = data->optwhere = 1;
-   /* define ordering */
--  if (shortopts != NULL && (*shortopts == '-' || *shortopts == '+'))
-+  if (shortopts != 0 && (*shortopts == '-' || *shortopts == '+'))
-     {
-       ordering = (*shortopts == '-') ? RETURN_IN_ORDER : REQUIRE_ORDER;
-       shortopts++;
-     }
-   else
--    ordering = (getenv ("POSIXLY_CORRECT") != NULL) ? REQUIRE_ORDER : PERMUTE;
-+    ordering = (getenv ("POSIXLY_CORRECT") != 0) ? REQUIRE_ORDER : PERMUTE;
-   /*
-    * based on ordering, find our next option, if we're at the beginning of
-    * one
-    */
--  if (optwhere == 1)
-+  if (data->optwhere == 1)
-     {
-       switch (ordering)
--        {
--        case PERMUTE:
--          permute_from = optind;
--          num_nonopts = 0;
--          while (!is_option (argv[optind], only))
--            {
--              optind++;
--              num_nonopts++;
--            }
--          if (argv[optind] == NULL)
--            {
--              /* no more options */
--              optind = permute_from;
--              return EOF;
--            }
--          else if (strcmp (argv[optind], "--") == 0)
--            {
--              /* no more options, but have to get `--' out of the way */
--              permute (argv + permute_from, num_nonopts, 1);
--              optind = permute_from + 1;
--              return EOF;
--            }
--          break;
--        case RETURN_IN_ORDER:
--          if (!is_option (argv[optind], only))
--            {
--              optarg = argv[optind++];
--              return (optopt = 1);
--            }
--          break;
--        case REQUIRE_ORDER:
--          if (!is_option (argv[optind], only))
--            return EOF;
--          break;
--        }
-+      {
-+      default:                /* shouldn't happen */
-+      case PERMUTE:
-+        permute_from = data->optind;
-+        num_nonopts = 0;
-+        while (!is_option (argv[data->optind], only))
-+          {
-+            data->optind++;
-+            num_nonopts++;
-+          }
-+        if (argv[data->optind] == 0)
-+          {
-+            /* no more options */
-+            data->optind = permute_from;
-+            return EOF;
-+          }
-+        else if (strcmp (argv[data->optind], "--") == 0)
-+          {
-+            /* no more options, but have to get `--' out of the way */
-+            permute (argv + permute_from, num_nonopts, 1);
-+            data->optind = permute_from + 1;
-+            return EOF;
-+          }
-+        break;
-+      case RETURN_IN_ORDER:
-+        if (!is_option (argv[data->optind], only))
-+          {
-+            data->optarg = argv[data->optind++];
-+            return (data->optopt = 1);
-+          }
-+        break;
-+      case REQUIRE_ORDER:
-+        if (!is_option (argv[data->optind], only))
-+          return EOF;
-+        break;
-+      }
-     }
-   /* we've got an option, so parse it */
-   /* first, is it a long option? */
--  if (longopts != NULL
--      && (memcmp (argv[optind], "--", 2) == 0
--          || (only && argv[optind][0] == '+')) && optwhere == 1)
-+  if (longopts != 0
-+      && (memcmp (argv[data->optind], "--", 2) == 0
-+        || (only && argv[data->optind][0] == '+')) && data->optwhere == 1)
-     {
-       /* handle long options */
--      if (memcmp (argv[optind], "--", 2) == 0)
--        optwhere = 2;
-+      if (memcmp (argv[data->optind], "--", 2) == 0)
-+      data->optwhere = 2;
-       longopt_match = -1;
--      possible_arg = strchr (argv[optind] + optwhere, '=');
--      if (possible_arg == NULL)
--        {
--          /* no =, so next argv might be arg */
--          match_chars = strlen (argv[optind]);
--          possible_arg = argv[optind] + match_chars;
--          match_chars = match_chars - optwhere;
--        }
-+      possible_arg = strchr (argv[data->optind] + data->optwhere, '=');
-+      if (possible_arg == 0)
-+      {
-+        /* no =, so next argv might be arg */
-+        match_chars = strlen (argv[data->optind]);
-+        possible_arg = argv[data->optind] + match_chars;
-+        match_chars = match_chars - data->optwhere;
-+      }
-       else
--        match_chars = (possible_arg - argv[optind]) - optwhere;
--      for (optindex = 0; longopts[optindex].name != NULL; optindex++)
--        {
--          if (memcmp (argv[optind] + optwhere,
--                      longopts[optindex].name, match_chars) == 0)
--            {
--              /* do we have an exact match? */
--              if (match_chars == (int) (strlen (longopts[optindex].name)))
--                {
--                  longopt_match = optindex;
--                  break;
--                }
--              /* do any characters match? */
--              else
--                {
--                  if (longopt_match < 0)
--                    longopt_match = optindex;
--                  else
--                    {
--                      /* we have ambiguous options */
--                      if (opterr)
--                        fprintf (stderr, "%s: option `%s' is ambiguous "
--                                 "(could be `--%s' or `--%s')\n",
--                                 argv[0],
--                                 argv[optind],
--                                 longopts[longopt_match].name,
--                                 longopts[optindex].name);
--                      return (optopt = '?');
--                    }
--                }
--            }
--        }
-+      match_chars = (possible_arg - argv[data->optind]) - data->optwhere;
-+      for (optindex = 0; longopts[optindex].name != 0; ++optindex)
-+      {
-+        if (memcmp
-+            (argv[data->optind] + data->optwhere, longopts[optindex].name,
-+             match_chars) == 0)
-+          {
-+            /* do we have an exact match? */
-+            if (match_chars == (int) (strlen (longopts[optindex].name)))
-+              {
-+                longopt_match = optindex;
-+                break;
-+              }
-+            /* do any characters match? */
-+            else
-+              {
-+                if (longopt_match < 0)
-+                  longopt_match = optindex;
-+                else
-+                  {
-+                    /* we have ambiguous options */
-+                    if (data->opterr)
-+                      fprintf (stderr, "%s: option `%s' is ambiguous "
-+                               "(could be `--%s' or `--%s')\n",
-+                               argv[0],
-+                               argv[data->optind],
-+                               longopts[longopt_match].name,
-+                               longopts[optindex].name);
-+                    return (data->optopt = '?');
-+                  }
-+              }
-+          }
-+      }
-       if (longopt_match >= 0)
--        has_arg = longopts[longopt_match].has_arg;
-+      has_arg = longopts[longopt_match].has_arg;
-     }
-+
-   /* if we didn't find a long option, is it a short option? */
--  if (longopt_match < 0 && shortopts != NULL)
-+  if (longopt_match < 0 && shortopts != 0)
-     {
--      cp = strchr (shortopts, argv[optind][optwhere]);
--      if (cp == NULL)
--        {
--          /* couldn't find option in shortopts */
--          if (opterr)
--            fprintf (stderr,
--                     "%s: invalid option -- `-%c'\n",
--                     argv[0], argv[optind][optwhere]);
--          optwhere++;
--          if (argv[optind][optwhere] == '\0')
--            {
--              optind++;
--              optwhere = 1;
--            }
--          return (optopt = '?');
--        }
-+      cp = strchr (shortopts, argv[data->optind][data->optwhere]);
-+      if (cp == 0)
-+      {
-+        /* couldn't find option in shortopts */
-+        if (data->opterr)
-+          fprintf (stderr,
-+                   "%s: invalid option -- `-%c'\n",
-+                   argv[0], argv[data->optind][data->optwhere]);
-+        data->optwhere++;
-+        if (argv[data->optind][data->optwhere] == '\0')
-+          {
-+            data->optind++;
-+            data->optwhere = 1;
-+          }
-+        return (data->optopt = '?');
-+      }
-       has_arg = ((cp[1] == ':')
--                 ? ((cp[2] == ':') ? OPTIONAL_ARG : REQUIRED_ARG) : NO_ARG);
--      possible_arg = argv[optind] + optwhere + 1;
--      optopt = *cp;
-+               ? ((cp[2] == ':') ? OPTIONAL_ARG : REQUIRED_ARG) : NO_ARG);
-+      possible_arg = argv[data->optind] + data->optwhere + 1;
-+      data->optopt = *cp;
-     }
--  /* get argument and reset optwhere */
-+
-+  /* get argument and reset data->optwhere */
-   arg_next = 0;
-   switch (has_arg)
-     {
-     case OPTIONAL_ARG:
-       if (*possible_arg == '=')
--        possible_arg++;
--      if (*possible_arg != '\0')
--        {
--          optarg = possible_arg;
--          optwhere = 1;
--        }
--      else
--        optarg = NULL;
-+      possible_arg++;
-+      data->optarg = (*possible_arg != '\0') ? possible_arg : 0;
-+      data->optwhere = 1;
-       break;
-     case REQUIRED_ARG:
-       if (*possible_arg == '=')
--        possible_arg++;
-+      possible_arg++;
-       if (*possible_arg != '\0')
--        {
--          optarg = possible_arg;
--          optwhere = 1;
--        }
--      else if (optind + 1 >= argc)
--        {
--          if (opterr)
--            {
--              fprintf (stderr, "%s: argument required for option `", argv[0]);
--              if (longopt_match >= 0)
--                fprintf (stderr, "--%s'\n", longopts[longopt_match].name);
--              else
--                fprintf (stderr, "-%c'\n", *cp);
--            }
--          optind++;
--          return (optopt = ':');
--        }
-+      {
-+        data->optarg = possible_arg;
-+        data->optwhere = 1;
-+      }
-+      else if (data->optind + 1 >= argc)
-+      {
-+        if (data->opterr)
-+          {
-+            fprintf (stderr, "%s: argument required for option `", argv[0]);
-+            if (longopt_match >= 0)
-+              fprintf (stderr, "--%s'\n", longopts[longopt_match].name);
-+            else
-+              fprintf (stderr, "-%c'\n", *cp);
-+          }
-+        data->optind++;
-+        return (data->optopt = ':');
-+      }
-       else
--        {
--          optarg = argv[optind + 1];
--          arg_next = 1;
--          optwhere = 1;
--        }
-+      {
-+        data->optarg = argv[data->optind + 1];
-+        arg_next = 1;
-+        data->optwhere = 1;
-+      }
-       break;
-+    default:                  /* shouldn't happen */
-     case NO_ARG:
-       if (longopt_match < 0)
--        {
--          optwhere++;
--          if (argv[optind][optwhere] == '\0')
--            optwhere = 1;
--        }
-+      {
-+        data->optwhere++;
-+        if (argv[data->optind][data->optwhere] == '\0')
-+          data->optwhere = 1;
-+      }
-       else
--        optwhere = 1;
--      optarg = NULL;
-+      data->optwhere = 1;
-+      data->optarg = 0;
-       break;
-     }
--  /* do we have to permute or otherwise modify optind? */
--  if (ordering == PERMUTE && optwhere == 1 && num_nonopts != 0)
-+  /* do we have to permute or otherwise modify data->optind? */
-+  if (ordering == PERMUTE && data->optwhere == 1 && num_nonopts != 0)
-     {
-       permute (argv + permute_from, num_nonopts, 1 + arg_next);
--      optind = permute_from + 1 + arg_next;
-+      data->optind = permute_from + 1 + arg_next;
-     }
--  else if (optwhere == 1)
--    optind = optind + 1 + arg_next;
-+  else if (data->optwhere == 1)
-+    data->optind = data->optind + 1 + arg_next;
-   /* finally return */
-   if (longopt_match >= 0)
-     {
--      if (longind != NULL)
--        *longind = longopt_match;
--      if (longopts[longopt_match].flag != NULL)
--        {
--          *(longopts[longopt_match].flag) = longopts[longopt_match].val;
--          return 0;
--        }
-+      if (longind != 0)
-+      *longind = longopt_match;
-+      if (longopts[longopt_match].flag != 0)
-+      {
-+        *(longopts[longopt_match].flag) = longopts[longopt_match].val;
-+        return 0;
-+      }
-       else
--        return longopts[longopt_match].val;
-+      return longopts[longopt_match].val;
-     }
-   else
--    return optopt;
-+    return data->optopt;
- }
- int
- getopt (int argc, char *const argv[], const char *optstring)
- {
--  return getopt_internal (argc, argv, optstring, NULL, NULL, 0);
-+  struct getopt_data data;
-+  int r;
-+
-+  read_globals (&data);
-+  r = getopt_internal (argc, argv, optstring, 0, 0, 0, &data);
-+  write_globals (&data);
-+  return r;
- }
- int
- getopt_long (int argc, char *const argv[], const char *shortopts,
--             const struct option *longopts, int *longind)
-+           const struct option *longopts, int *longind)
- {
--  return getopt_internal (argc, argv, shortopts, longopts, longind, 0);
-+  struct getopt_data data;
-+  int r;
-+
-+  read_globals (&data);
-+  r = getopt_internal (argc, argv, shortopts, longopts, longind, 0, &data);
-+  write_globals (&data);
-+  return r;
- }
- int
- getopt_long_only (int argc, char *const argv[], const char *shortopts,
--                  const struct option *longopts, int *longind)
-+                const struct option *longopts, int *longind)
-+{
-+  struct getopt_data data;
-+  int r;
-+
-+  read_globals (&data);
-+  r = getopt_internal (argc, argv, shortopts, longopts, longind, 1, &data);
-+  write_globals (&data);
-+  return r;
-+}
-+
-+int
-+__getopt_r (int argc, char *const argv[], const char *optstring,
-+          struct getopt_data *data)
-+{
-+  return getopt_internal (argc, argv, optstring, 0, 0, 0, data);
-+}
-+
-+int
-+__getopt_long_r (int argc, char *const argv[], const char *shortopts,
-+               const struct option *longopts, int *longind,
-+               struct getopt_data *data)
-+{
-+  return getopt_internal (argc, argv, shortopts, longopts, longind, 0, data);
-+}
-+
-+int
-+__getopt_long_only_r (int argc, char *const argv[], const char *shortopts,
-+                    const struct option *longopts, int *longind,
-+                    struct getopt_data *data)
- {
--  return getopt_internal (argc, argv, shortopts, longopts, longind, 1);
-+  return getopt_internal (argc, argv, shortopts, longopts, longind, 1, data);
- }
- /* end of file GETOPT.C */
-diff -Naur newlib-1.16.0.orig/newlib/libc/sys/rtems/machine/stdint.h newlib-1.16.0/newlib/libc/sys/rtems/machine/stdint.h
---- newlib-1.16.0.orig/newlib/libc/sys/rtems/machine/stdint.h  1970-01-01 01:00:00.000000000 +0100
-+++ newlib-1.16.0/newlib/libc/sys/rtems/machine/stdint.h       2009-03-24 04:29:55.000000000 +0100
-@@ -0,0 +1,35 @@
-+/*
-+ *
-+ */
-+#ifndef _MACHINE_STDINT_H
-+#define _MACHINE_STDINT_H
-+
-+#ifndef _STDINT_H
-+#error machine/stdint.h is an internal file and must not be directly included
-+#endif
-+
-+#ifndef __rtems__
-+#error machine/stdint.h is an RTEMS specific internal file and must not be used otherwise
-+#endif
-+
-+#if defined(__sparc__) \
-+  || defined(__powerpc__) || defined(__PPC__) \
-+  || defined(__mips__) \
-+  || defined(__sh__) \
-+  || defined(__AVR__) \
-+  || defined(_C4x) || defined(_C3x) \
-+  || defined(__H8300__)
-+/* PTRDIFF_TYPE = int */
-+#define __ptrint_t_int_defined 1
-+#endif
-+
-+#if defined(__i386__) \
-+  || defined(__m68k__) \
-+  || defined(__bfin__) \
-+  || defined(__arm__) \
-+  || defined(__H8300S__) || defined(__H8300H__)
-+/* PTRDIFF_TYPE = long */
-+#define __ptrint_t_long_defined 1
-+#endif
-+
-+#endif
-diff -Naur newlib-1.16.0.orig/newlib/libc/sys/rtems/sys/param.h newlib-1.16.0/newlib/libc/sys/rtems/sys/param.h
---- newlib-1.16.0.orig/newlib/libc/sys/rtems/sys/param.h       2004-05-07 22:29:24.000000000 +0200
-+++ newlib-1.16.0/newlib/libc/sys/rtems/sys/param.h    2009-03-24 04:29:55.000000000 +0100
-@@ -93,7 +93,6 @@
- #include <sys/resource.h>
- #include <sys/ucred.h>
- #include <sys/uio.h>
--#include <sys/rtprio.h>
- #ifndef FALSE
- #define       FALSE   0
-diff -Naur newlib-1.16.0.orig/newlib/Makefile.am newlib-1.16.0/newlib/Makefile.am
---- newlib-1.16.0.orig/newlib/Makefile.am      2007-05-24 19:33:29.000000000 +0200
-+++ newlib-1.16.0/newlib/Makefile.am   2009-03-24 04:29:55.000000000 +0100
-@@ -81,7 +81,7 @@
-       libc.a
- endif
--noinst_DATA = stmp-targ-include
-+BUILT_SOURCES = stmp-targ-include
- toollib_DATA = $(CRT0) $(CRT1)
-@@ -186,9 +186,6 @@
- $(CRT1_DIR)$(CRT1): ; @true
--
--all-recursive: stmp-targ-include
--
- # The targ-include directory just holds the includes files for the
- # particular system and machine we have been configured for.  It is
- # used while building.
-diff -Naur newlib-1.16.0.orig/newlib/Makefile.in newlib-1.16.0/newlib/Makefile.in
---- newlib-1.16.0.orig/newlib/Makefile.in      2007-12-19 23:36:26.000000000 +0100
-+++ newlib-1.16.0/newlib/Makefile.in   2009-03-24 04:29:55.000000000 +0100
-@@ -105,7 +105,7 @@
-       pdf-recursive ps-recursive uninstall-info-recursive \
-       uninstall-recursive
- toollibDATA_INSTALL = $(INSTALL_DATA)
--DATA = $(noinst_DATA) $(toollib_DATA)
-+DATA = $(toollib_DATA)
- ETAGS = etags
- CTAGS = ctags
- DEJATOOL = $(PACKAGE)
-@@ -339,7 +339,7 @@
- @USE_LIBTOOL_FALSE@toollib_LIBRARIES = libm.a \
- @USE_LIBTOOL_FALSE@   libc.a
--noinst_DATA = stmp-targ-include
-+BUILT_SOURCES = stmp-targ-include
- toollib_DATA = $(CRT0) $(CRT1)
- # The functions ldexp, frexp and modf are traditionally supplied in
-@@ -398,7 +398,7 @@
- # dejagnu support
- RUNTESTFLAGS = 
--all: newlib.h
-+all: $(BUILT_SOURCES) newlib.h
-       $(MAKE) $(AM_MAKEFLAGS) all-recursive
- .SUFFIXES:
-@@ -703,14 +703,16 @@
-       done
- check-am:
-       $(MAKE) $(AM_MAKEFLAGS) check-DEJAGNU
--check: check-recursive
-+check: $(BUILT_SOURCES)
-+      $(MAKE) $(AM_MAKEFLAGS) check-recursive
- all-am: Makefile $(LIBRARIES) $(LTLIBRARIES) $(DATA) newlib.h
- installdirs: installdirs-recursive
- installdirs-am:
-       for dir in "$(DESTDIR)$(toollibdir)" "$(DESTDIR)$(toollibdir)" "$(DESTDIR)$(toollibdir)"; do \
-         test -z "$$dir" || $(mkdir_p) "$$dir"; \
-       done
--install: install-recursive
-+install: $(BUILT_SOURCES)
-+      $(MAKE) $(AM_MAKEFLAGS) install-recursive
- install-exec: install-exec-recursive
- install-data: install-data-recursive
- uninstall: uninstall-recursive
-@@ -735,6 +737,7 @@
- maintainer-clean-generic:
-       @echo "This command is intended for maintainers to use"
-       @echo "it deletes files that may require special tools to rebuild."
-+      -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
- clean: clean-recursive
- clean-am: clean-generic clean-libtool clean-toollibLIBRARIES \
-@@ -853,8 +856,6 @@
- $(CRT1_DIR)$(CRT1): ; @true
--all-recursive: stmp-targ-include
--
- # The targ-include directory just holds the includes files for the
- # particular system and machine we have been configured for.  It is
- # used while building.
diff --git a/newlib-patches/newlib-1.16.0/series b/newlib-patches/newlib-1.16.0/series
deleted file mode 100644 (file)
index 00d990d..0000000
+++ /dev/null
@@ -1 +0,0 @@
-newlib-1.16.0-rtems4.9-20090324.diff
diff --git a/rtems-patches/applied/rtems-arm-more-abort-info.patch b/rtems-patches/applied/rtems-arm-more-abort-info.patch
deleted file mode 100644 (file)
index b9fac29..0000000
+++ /dev/null
@@ -1,143 +0,0 @@
-Index: rtems-051009/cpukit/score/cpu/arm/cpu.c
-===================================================================
---- rtems-051009.orig/cpukit/score/cpu/arm/cpu.c
-+++ rtems-051009/cpukit/score/cpu/arm/cpu.c
-@@ -124,9 +124,9 @@ void _defaultExcHandler (CPU_Exception_f
- {
-     printk("\n\r");
-     printk("----------------------------------------------------------\n\r");
--#if 0
-+#if 1
-     printk("Exception 0x%x caught at PC 0x%x by thread %d\n",
--           ctx->register_pc, ctx->register_lr - 4,
-+           ctx->register_ip, ctx->register_lr - 4,
-            _Thread_Executing->Object.id);
- #endif
-     printk("----------------------------------------------------------\n\r");
-@@ -221,6 +221,47 @@ void rtems_exception_init_mngt()
- #define SET_REG(r, ctx, v)   (((uint32_t   *)ctx)[r] = v)
- #define GET_OFFSET(insn)     (insn & 0xfff)
-+char *_print_full_context_mode2txt[0x20]={
-+        [0x10]="user",  /* User */
-+      [0x11]="fiq",   /* FIQ - Fast Interrupt Request */
-+      [0x12]="irq",   /* IRQ - Interrupt Request */
-+      [0x13]="super", /* Supervisor */
-+      [0x17]="abort", /* Abort */
-+      [0x1b]="undef", /* Undefined */
-+      [0x1f]="system" /* System */
-+    };
-+
-+void _print_full_context(uint32_t spsr)
-+{
-+    char *mode;
-+    uint32_t prev_sp,prev_lr,cpsr,tmp;
-+    int i;
-+
-+    printk("active thread thread 0x%08x\n", _Thread_Executing->Object.id);
-+
-+    mode=_print_full_context_mode2txt[spsr&0x1f];
-+    if(!mode) mode="unknown";
-+
-+    asm volatile ("   MRS  %[cpsr], cpsr \n"
-+              "       ORR  %[tmp], %[spsr], #0xc0 \n"
-+              "       MSR  cpsr_c, %[tmp] \n"
-+              "       MOV  %[prev_sp], sp \n"
-+              "       MOV  %[prev_lr], lr \n"
-+              "       MSR  cpsr_c, %[cpsr] \n"
-+              : [prev_sp] "=&r" (prev_sp), [prev_lr] "=&r" (prev_lr),
-+              [cpsr] "=&r" (cpsr), [tmp] "=&r" (tmp)
-+              : [spsr] "r" (spsr)
-+            : "cc");
-+
-+    printk("Previous sp=0x%08x lr=0x%08x and actual cpsr=%08x\n", prev_sp, prev_lr, cpsr);
-+
-+    for(i=0;i<48;){
-+        printk(" 0x%08x",((uint32_t*)prev_sp)[i++]);
-+        if((i%6) == 0)
-+            printk("\n");
-+    }
-+
-+}
- /* This function is supposed to figure out what caused the 
-  * data abort, do that, then return.
-@@ -229,8 +270,10 @@ void rtems_exception_init_mngt()
-  */
- void do_data_abort(uint32_t   insn, uint32_t   spsr, 
--                   CPU_Exception_frame *ctx)
-+                    Context_Control *ctx)
- {
-+    /* Clarify, which type is correct, CPU_Exception_frame or Context_Control */
-+
-     uint8_t    decode;
-     uint8_t    insn_type;
-@@ -268,6 +311,7 @@ void do_data_abort(uint32_t   insn, uint
-     case INSN_LDR:
-         printk("\n\nINSN_LDR\n");
-+#if 0
-         rn = GET_RN(insn);
-         rd = GET_RD(insn);
-@@ -299,6 +343,8 @@ void do_data_abort(uint32_t   insn, uint
-                 break;
-             }
-         }
-+#endif
-+
-         break;
-     case INSN_LDRB:
-         printk("\n\nINSN_LDRB\n");
-@@ -311,6 +357,8 @@ void do_data_abort(uint32_t   insn, uint
-     printk("data_abort at address 0x%x, instruction: 0x%x,   spsr = 0x%x\n",
-            ctx->register_lr - 8, insn, spsr);
-+    _print_full_context(spsr);
-+
-     /* disable interrupts, wait forever */
-     _CPU_ISR_Disable(tmp);
-     while(1) {
-Index: rtems-051009/cpukit/score/cpu/arm/cpu_asm.S
-===================================================================
---- rtems-051009.orig/cpukit/score/cpu/arm/cpu_asm.S
-+++ rtems-051009/cpukit/score/cpu/arm/cpu_asm.S
-@@ -134,21 +134,31 @@ _go_back_2:
-       ldr     lr,  [r13, #REG_LR]
-       add     r13,r13,#SIZE_REGS
-       subs    pc,r14,#4                       /* return */
-+
-+#define ABORT_REGS_OFFS 32-REG_R4
-+#define ABORT_SIZE_REGS SIZE_REGS+ABORT_REGS_OFFS
-       
-       .globl _exc_data_abort
- _exc_data_abort:
--      sub     sp, sp, #SIZE_REGS              /* reserve register frame */
--      stmia   sp, {r0-r12}
-+      sub     sp, sp, #ABORT_SIZE_REGS        /* reserve register frame */
-+      stmia   sp, {r0-r11}
-+      add     sp, sp, #ABORT_REGS_OFFS        /* the Context_Control structure starts by CPSR, R4, ... */
-+
-+      str     ip, [sp, #REG_PC]               /* store R12 (ip) somewhere, oh hackery, hackery, hack */
-       str     lr, [sp, #REG_LR]
-+
-       mov     r1, lr
-       ldr     r0, [r1, #-8]                   /* r0 = bad instruction */
-       mrs     r1, spsr                        /* r1 = spsr */
--      mov     r2, r13                         /* r2 = exception frame */
-+      mov     r2, r13                         /* r2 = exception frame of Context_Control type */
-       bl      do_data_abort
-       
-       ldr     lr, [sp, #REG_LR]
--      ldmia   sp, {r0-r12}
--      add     sp, sp, #SIZE_REGS
-+      ldr     ip, [sp, #REG_PC]               /* restore R12 (ip) */
-+
-+      sub     sp, sp, #ABORT_REGS_OFFS
-+      ldmia   sp, {r0-r11}
-+      add     sp, sp, #ABORT_SIZE_REGS
-       subs    pc, r14, #4                     /* return to the instruction */
-                                               /* _AFTER_ the aborted one */
diff --git a/rtems-patches/applied/rtems-csb336-20051008-other.patch b/rtems-patches/applied/rtems-csb336-20051008-other.patch
deleted file mode 100644 (file)
index 526a48c..0000000
+++ /dev/null
@@ -1,881 +0,0 @@
-Index: rtems/c/src/lib/libbsp/arm/csb336/times
-===================================================================
---- rtems/c/src/lib/libbsp/arm/csb336/times    (revision 42)
-+++ rtems/c/src/lib/libbsp/arm/csb336/times    (working copy)
-@@ -18,155 +18,155 @@
-                                              
- == ====================================================================  ===
-- 1 rtems_semaphore_create                                                16
-- 1 rtems_semaphore_delete                                                17
-- 1 rtems_semaphore_obtain: available                                     2
-- 1 rtems_semaphore_obtain: not available -- NO_WAIT                      2
-- 1 rtems_semaphore_release: no waiting tasks                             5
-+ 1 rtems_semaphore_create                                                15
-+ 1 rtems_semaphore_delete                                                15
-+ 1 rtems_semaphore_obtain: available                                     0
-+ 1 rtems_semaphore_obtain: not available -- NO_WAIT                      0
-+ 1 rtems_semaphore_release: no waiting tasks                             0
-- 2 rtems_semaphore_obtain: not available -- caller blocks                20
-+ 2 rtems_semaphore_obtain: not available -- caller blocks                12
-- 3 rtems_semaphore_release: task readied -- preempts caller              16
-+ 3 rtems_semaphore_release: task readied -- preempts caller              11
-- 4 rtems_task_restart: blocked task -- preempts caller                   48
-- 4 rtems_task_restart: ready task -- preempts caller                     36
-- 4 rtems_semaphore_release: task readied -- returns to caller            9
-- 4 rtems_task_create                                                     33
-- 4 rtems_task_start                                                      12
-- 4 rtems_task_restart: suspended task -- returns to caller               14
-- 4 rtems_task_delete: suspended task                                     31
-- 4 rtems_task_restart: ready task -- returns to caller                   14
-- 4 rtems_task_restart: blocked task -- returns to caller                 19
-- 4 rtems_task_delete: blocked task                                       32
-+ 4 rtems_task_restart: blocked task -- preempts caller                   38
-+ 4 rtems_task_restart: ready task -- preempts caller                     29
-+ 4 rtems_semaphore_release: task readied -- returns to caller            5
-+ 4 rtems_task_create                                                     24
-+ 4 rtems_task_start                                                      8
-+ 4 rtems_task_restart: suspended task -- returns to caller               9
-+ 4 rtems_task_delete: suspended task                                     20
-+ 4 rtems_task_restart: ready task -- returns to caller                   10
-+ 4 rtems_task_restart: blocked task -- returns to caller                 11
-+ 4 rtems_task_delete: blocked task                                       21
-- 5 rtems_task_suspend: calling task                                      14
-- 5 rtems_task_resume: task readied -- preempts caller                    12
-+ 5 rtems_task_suspend: calling task                                      9
-+ 5 rtems_task_resume: task readied -- preempts caller                    8
-- 6 rtems_task_restart: calling task                                      14
-- 6 rtems_task_suspend: returns to caller                                 6
-- 6 rtems_task_resume: task readied -- returns to caller                  6
-- 6 rtems_task_delete: ready task                                         32
-+ 6 rtems_task_restart: calling task                                      8
-+ 6 rtems_task_suspend: returns to caller                                 3
-+ 6 rtems_task_resume: task readied -- returns to caller                  3
-+ 6 rtems_task_delete: ready task                                         22
-- 7 rtems_task_restart: suspended task -- preempts caller                 24
-+ 7 rtems_task_restart: suspended task -- preempts caller                 14
-- 8 rtems_task_set_priority: obtain current priority                      4
-- 8 rtems_task_set_priority: returns to caller                            8
-- 8 rtems_task_mode: obtain current mode                                  2
-- 8 rtems_task_mode: no reschedule                                        2
-- 8 rtems_task_mode: reschedule -- returns to caller                      4
-- 8 rtems_task_mode: reschedule -- preempts caller                        19
-- 8 rtems_task_set_note                                                   4
-- 8 rtems_task_get_note                                                   4
-- 8 rtems_clock_set                                                       9
-+ 8 rtems_task_set_priority: obtain current priority                      1
-+ 8 rtems_task_set_priority: returns to caller                            3
-+ 8 rtems_task_mode: obtain current mode                                  0
-+ 8 rtems_task_mode: no reschedule                                        0
-+ 8 rtems_task_mode: reschedule -- returns to caller                      3
-+ 8 rtems_task_mode: reschedule -- preempts caller                        13
-+ 8 rtems_task_set_note                                                   1
-+ 8 rtems_task_get_note                                                   1
-+ 8 rtems_clock_set                                                       4
-  8 rtems_clock_get                                                       0
-- 9 rtems_message_queue_create                                            54
-- 9 rtems_message_queue_send: no waiting tasks                            8
-- 9 rtems_message_queue_urgent: no waiting tasks                          8
-- 9 rtems_message_queue_receive: available                                7
-- 9 rtems_message_queue_flush: no messages flushed                        4
-- 9 rtems_message_queue_flush: messages flushed                           5
-- 9 rtems_message_queue_delete                                            21
-+ 9 rtems_message_queue_create                                            38
-+ 9 rtems_message_queue_send: no waiting tasks                            4
-+ 9 rtems_message_queue_urgent: no waiting tasks                          4
-+ 9 rtems_message_queue_receive: available                                4
-+ 9 rtems_message_queue_flush: no messages flushed                        2
-+ 9 rtems_message_queue_flush: messages flushed                           3
-+ 9 rtems_message_queue_delete                                            19
--10 rtems_message_queue_receive: not available -- NO_WAIT                 4
--10 rtems_message_queue_receive: not available -- caller blocks           20
-+10 rtems_message_queue_receive: not available -- NO_WAIT                 2
-+10 rtems_message_queue_receive: not available -- caller blocks           12
--11 rtems_message_queue_send: task readied -- preempts caller             18
-+11 rtems_message_queue_send: task readied -- preempts caller             13
--12 rtems_message_queue_send: task readied -- returns to caller           11
-+12 rtems_message_queue_send: task readied -- returns to caller           7
--13 rtems_message_queue_urgent: task readied -- preempts caller           19
-+13 rtems_message_queue_urgent: task readied -- preempts caller           13
--14 rtems_message_queue_urgent: task readied -- returns to caller 11
-+14 rtems_message_queue_urgent: task readied -- returns to caller         7
- 15 rtems_event_receive: obtain current events                            0
--15 rtems_event_receive: not available -- NO_WAIT                         3
--15 rtems_event_receive: not available -- caller blocks                   17
--15 rtems_event_send: no task readied                                     3
--15 rtems_event_receive: available                                        5
--15 rtems_event_send: task readied -- returns to caller                   10
-+15 rtems_event_receive: not available -- NO_WAIT                         1
-+15 rtems_event_receive: not available -- caller blocks                   11
-+15 rtems_event_send: no task readied                                     1
-+15 rtems_event_receive: available                                        3
-+15 rtems_event_send: task readied -- returns to caller                   7
--16 rtems_event_send: task readied -- preempts caller                     16
-+16 rtems_event_send: task readied -- preempts caller                     12
--17 rtems_task_set_priority: preempts caller                              19
-+17 rtems_task_set_priority: preempts caller                              13
--18 rtems_task_delete: calling task                                       41
-+18 rtems_task_delete: calling task                                       26
--19 rtems_signal_catch                                                    6
--19 rtems_signal_send: returns to caller                                  15
--19 rtems_signal_send: signal to self                                     25
--19 exit ASR overhead: returns to calling task                            11
--19 exit ASR overhead: returns to preempting task                         12
-+19 rtems_signal_catch                                                    5
-+19 rtems_signal_send: returns to caller                                  12
-+19 rtems_signal_send: signal to self                                     19
-+19 exit ASR overhead: returns to calling task                            7
-+19 exit ASR overhead: returns to preempting task                         10
--20 rtems_partition_create                                                22
--20 rtems_region_create                                                   30
--20 rtems_partition_get_buffer: available                                 10
--20 rtems_partition_get_buffer: not available                             4
--20 rtems_partition_return_buffer                                         9
--20 rtems_partition_delete                                                10
--20 rtems_region_get_segment: available                                   15
--20 rtems_region_get_segment: not available -- NO_WAIT                    16
--20 rtems_region_return_segment: no waiting tasks                         13
--20 rtems_region_get_segment: not available -- caller blocks              47
--20 rtems_region_return_segment: task readied -- preempts caller 45                                                          
--20 rtems_region_return_segment: task readied -- returns to caller 25
--20 rtems_region_delete                                                   23
--20 rtems_io_initialize                                                   1
-+20 rtems_partition_create                                                21
-+20 rtems_region_create                                                   33
-+20 rtems_partition_get_buffer: available                                 9
-+20 rtems_partition_get_buffer: not available                             3
-+20 rtems_partition_return_buffer                                         8
-+20 rtems_partition_delete                                                8
-+20 rtems_region_get_segment: available                                   7
-+20 rtems_region_get_segment: not available -- NO_WAIT                    7
-+20 rtems_region_return_segment: no waiting tasks                         6
-+20 rtems_region_get_segment: not available -- caller blocks              36
-+20 rtems_region_return_segment: task readied -- preempts caller          33                                                 
-+20 rtems_region_return_segment: task readied -- returns to caller        13
-+20 rtems_region_delete                                                   18
-+20 rtems_io_initialize                                                   0
- 20 rtems_io_open                                                         0
- 20 rtems_io_close                                                        0
- 20 rtems_io_read                                                         0
- 20 rtems_io_write                                                        0
- 20 rtems_io_control                                                      0
--21 rtems_task_ident                                                      39
--21 rtems_message_queue_ident                                             38
--21 rtems_semaphore_ident                                                 43
--21 rtems_partition_ident                                                 38
--21 rtems_region_ident                                                    38
--21 rtems_port_ident                                                      37
--21 rtems_timer_ident                                                     38
--21 rtems_rate_monotonic_ident                                            38
-+21 rtems_task_ident                                                      8
-+21 rtems_message_queue_ident                                             8
-+21 rtems_semaphore_ident                                                 9
-+21 rtems_partition_ident                                                 8
-+21 rtems_region_ident                                                    8
-+21 rtems_port_ident                                                      8
-+21 rtems_timer_ident                                                     8
-+21 rtems_rate_monotonic_ident                                            8
- 22 rtems_message_queue_broadcast: task readied -- returns to caller      27
--22 rtems_message_queue_broadcast: no waiting tasks                       6
--22 rtems_message_queue_broadcast: task readied -- preempts caller        22
-+22 rtems_message_queue_broadcast: no waiting tasks                       2
-+22 rtems_message_queue_broadcast: task readied -- preempts caller        16
--23 rtems_timer_create                                                    4
--23 rtems_timer_fire_after: inactive                                      7
--23 rtems_timer_fire_after: active                                        7
--23 rtems_timer_cancel: active                                            4
--23 rtems_timer_cancel: inactive                                          3
--23 rtems_timer_reset: inactive                                           6
--23 rtems_timer_reset: active                                             7
--23 rtems_timer_fire_when: inactive                                       9
--23 rtems_timer_fire_when: active                                         9
--23 rtems_timer_delete: active                                            5
--23 rtems_timer_delete: inactive                                          4
--23 rtems_task_wake_when                                                  21
-+23 rtems_timer_create                                                    3
-+23 rtems_timer_fire_after: inactive                                      4
-+23 rtems_timer_fire_after: active                                        4
-+23 rtems_timer_cancel: active                                            2
-+23 rtems_timer_cancel: inactive                                          1
-+23 rtems_timer_reset: inactive                                           3
-+23 rtems_timer_reset: active                                             3
-+23 rtems_timer_fire_when: inactive                                       4
-+23 rtems_timer_fire_when: active                                         4
-+23 rtems_timer_delete: active                                            3
-+23 rtems_timer_delete: inactive                                          3
-+23 rtems_task_wake_when                                                  12
--24 rtems_task_wake_after: yield -- returns to caller                     2
--24 rtems_task_wake_after: yields -- preempts caller                      12
-+24 rtems_task_wake_after: yield -- returns to caller                     1
-+24 rtems_task_wake_after: yields -- preempts caller                      9
--25 rtems_clock_tick                                                      13
-+25 rtems_clock_tick                                                      10
--26 _ISR_Disable                                                           3
-+26 _ISR_Disable                                                          3
- 26 _ISR_Flash                                                            1
- 26 _ISR_Enable                                                           0
- 26 _Thread_Disable_dispatch                                              1
- 26 _Thread_Enable_dispatch                                               3
- 26 _Thread_Set_state                                                     6
--26 _Thread_Disptach (NO FP)                                              13
--26 context switch: no floating point contexts                            10
-+26 _Thread_Disptach (NO FP)                                              9
-+26 context switch: no floating point contexts                            7
- 26 context switch: self                                                  1
- 26 context switch: to another task                                       2
- 26 fp context switch: restore 1st FP task -                              NA
- 26 fp context switch: save idle, restore initialized -                   NA
- 26 fp context switch: save idle, restore idle -                          NA
- 26 fp context switch: save initialized, restore initialized -            NA
--26 _Thread_Resume                                                        9
--26 _Thread_Unblock                                                       8
--26 _Thread_Ready                                                         5
--26 _Thread_Get                                                           1
-+26 _Thread_Resume                                                        8
-+26 _Thread_Unblock                                                       7
-+26 _Thread_Ready                                                         4
-+26 _Thread_Get                                                           0
- 26 _Semaphore_Get                                                        0
- 26 _Thread_Get: invalid id                                               0
-@@ -175,15 +175,15 @@
- 27 interrupt entry overhead: returns to nested interrupt                 0
- 27 interrupt exit overhead: returns to nested interrupt                  0
--28 rtems_port_create                                                     13
--28 rtems_port_external_to_internal                                       3
--28 rtems_port_internal_to_external                                       3
--28 rtems_port_delete                                                     11
-+28 rtems_port_create                                                     10
-+28 rtems_port_external_to_internal                                       1
-+28 rtems_port_internal_to_external                                       1
-+28 rtems_port_delete                                                     8
--29 rtems_rate_monotonic_create                                           13
--29 rtems_rate_monotonic_period: initiate period -- returns to caller     24
--29 rtems_rate_monotonic_period: obtain status                            5
--29 rtems_rate_monotonic_cancel                                           15
-+29 rtems_rate_monotonic_create                                           12
-+29 rtems_rate_monotonic_period: initiate period -- returns to caller     17
-+29 rtems_rate_monotonic_period: obtain status                            3
-+29 rtems_rate_monotonic_cancel                                           12
- 29 rtems_rate_monotonic_delete: inactive                                 12
--29 rtems_rate_monotonic_delete: active                                   7
--29 rtems_rate_monotonic_period: conclude periods -- caller blocks        13
-+29 rtems_rate_monotonic_delete: active                                   4
-+29 rtems_rate_monotonic_period: conclude periods -- caller blocks        9
-Index: rtems/c/src/lib/libbsp/arm/csb336/startup/bspstart.c
-===================================================================
---- rtems/c/src/lib/libbsp/arm/csb336/startup/bspstart.c       (revision 42)
-+++ rtems/c/src/lib/libbsp/arm/csb336/startup/bspstart.c       (working copy)
-@@ -153,12 +169,12 @@
- /* Calcuate the frequency for perclk1 */
- int get_perclk1_freq(void)
- {
--    int fin;
--    int fpll;
--    int pd;
--    int mfd;
--    int mfi;
--    int mfn;
-+    unsigned int fin;
-+    unsigned int fpll;
-+    unsigned int pd;
-+    unsigned int mfd;
-+    unsigned int mfi;
-+    unsigned int mfn;
-     uint32_t reg;
-     int perclk1;
-@@ -187,13 +203,14 @@
-     printk("mfd = %d\n", mfd);
-     printk("mfi = %d\n", mfi);
-     printk("mfn = %d\n", mfn);
--    printk("(fin * mfi) / (pd + 1) = %d\n", (fin * mfi) / (pd + 1));
--    printk("(fin * mfn) / ((pd + 1) * (mfd + 1)) = %d\n",
--           (fin * mfn) / ((pd + 1) * (mfd + 1)));
-+    printk("rounded (fin * mfi) / (pd + 1) = %d\n", (fin * mfi) / (pd + 1));
-+    printk("rounded (fin * mfn) / ((pd + 1) * (mfd + 1)) = %d\n",
-+           ((long long)fin * mfn) / ((pd + 1) * (mfd + 1)));
- #endif
--    fpll = 2 * ( ((fin * mfi) / (pd + 1)) +
--                 ((fin * mfn) / ((pd + 1) * (mfd + 1))) );
-+    fpll = 2 * ( ((fin * mfi  + (pd + 1) / 2) / (pd + 1)) +
-+                 (((long long)fin * mfn + ((pd + 1) * (mfd + 1)) / 2) / 
-+               ((pd + 1) * (mfd + 1))) );
-     /* calculate the output of the PERCLK1 divider */
-     reg = MC9328MXL_PLL_PCDR;
-Index: rtems/c/src/lib/libbsp/arm/csb336/startup/linkcmds
-===================================================================
---- rtems/c/src/lib/libbsp/arm/csb336/startup/linkcmds (revision 42)
-+++ rtems/c/src/lib/libbsp/arm/csb336/startup/linkcmds (working copy)
-@@ -75,9 +75,6 @@
-     rtems_vector_table = .;
-     . += (8 * 4);                     /* 8 ARM interrupts */
-       
--    bsp_vector_table = .;
--    . += (64 * 4);                    /* 64 MC9328MXL interrupts */
--
-     . = ALIGN (0x100);
-Index: rtems/c/src/lib/libbsp/arm/csb336/startup/exit.c
-===================================================================
---- rtems/c/src/lib/libbsp/arm/csb336/startup/exit.c   (revision 42)
-+++ rtems/c/src/lib/libbsp/arm/csb336/startup/exit.c   (working copy)
-@@ -29,7 +29,7 @@
-    */
-   printk("\n");
-   printk(line);
--  while (uart_poll_read(0) < 0) continue;
-+  while (BSP_poll_char() < 0) continue;
-   bsp_reset();
-Index: rtems/c/src/lib/libbsp/arm/csb336/network/network.c
-===================================================================
---- rtems/c/src/lib/libbsp/arm/csb336/network/network.c        (revision 42)
-+++ rtems/c/src/lib/libbsp/arm/csb336/network/network.c        (working copy)
-@@ -41,20 +41,20 @@
- /* RTEMS event used to start transmit daemon. */
- #define START_TRANSMIT_EVENT    RTEMS_EVENT_2
--static rtems_isr enet_isr(rtems_vector_number vector);
-+static void enet_isr(rtems_irq_hdl_param);
- static void enet_isr_on(const rtems_irq_connect_data *unused);
- static void enet_isr_off(const rtems_irq_connect_data *unused);
- static int enet_isr_is_on(const rtems_irq_connect_data *irq);
- /* Replace the first value with the clock's interrupt name. */
--rtems_irq_connect_data mc9328mxl_enet_isr_data = {BSP_INT_GPIO_PORTA,
--                                                  (rtems_irq_hdl)enet_isr,
--                                                  enet_isr_on,
--                                                  enet_isr_off,
--                                                  enet_isr_is_on,
--                                                  3,    /* unused for ARM */
--                                                  0 };  /* unused for ARM */
--
-+rtems_irq_connect_data mc9328mxl_enet_isr_data = {
-+    .name    = BSP_INT_GPIO_PORTA,
-+    .hdl     = (rtems_irq_hdl)enet_isr,
-+    .handle  = (void *)BSP_INT_GPIO_PORTA,
-+    .on      = enet_isr_on,
-+    .off     = enet_isr_off,
-+    .isOn    = enet_isr_is_on,
-+};
- typedef struct {
-   unsigned long rx_packets;        /* total packets received         */
-   unsigned long tx_packets;        /* total packets transmitted      */
-@@ -102,7 +102,8 @@
- void mc9328mxl_enet_sendpacket (struct ifnet *ifp, struct mbuf *m);
- void mc9328mxl_enet_rx_task(void *arg);
- void mc9328mxl_enet_stats(mc9328mxl_enet_softc_t *sc);
--static int mc9328mxl_enet_ioctl(struct ifnet *ifp, int command, caddr_t data);
-+static int mc9328mxl_enet_ioctl(struct ifnet *ifp, 
-+                                unsigned long command, caddr_t data);
- int rtems_mc9328mxl_enet_attach (
-@@ -631,7 +632,7 @@
- /*  Driver ioctl handler */
- static int
--mc9328mxl_enet_ioctl (struct ifnet *ifp, int command, caddr_t data)
-+mc9328mxl_enet_ioctl (struct ifnet *ifp, unsigned long command, caddr_t data)
- {
-     mc9328mxl_enet_softc_t *sc = ifp->if_softc;
-     int error = 0;
-@@ -678,7 +679,7 @@
- }
- /* interrupt handler */
--rtems_isr enet_isr (rtems_vector_number v)
-+static void enet_isr(rtems_irq_hdl_param unused)
- {
-     uint16_t int_reg;
-Index: rtems/c/src/lib/libbsp/arm/shared/irq/irq_init.c
-===================================================================
---- rtems/c/src/lib/libbsp/arm/shared/irq/irq_init.c   (revision 42)
-+++ rtems/c/src/lib/libbsp/arm/shared/irq/irq_init.c   (working copy)
-@@ -30,21 +30,14 @@
- void  rtems_irq_mngt_init()
- {
-     int                       i;
--    long                      *vectorTable;
-     rtems_interrupt_level       level;
--    vectorTable = (long *) VECTOR_TABLE;
--
-     _CPU_ISR_Disable(level);
-     /* First, connect the ISR_Handler for IRQ and FIQ interrupts */
-     _CPU_ISR_install_vector(ARM_EXCEPTION_IRQ, _ISR_Handler, NULL);
-     _CPU_ISR_install_vector(ARM_EXCEPTION_FIQ, _ISR_Handler, NULL);
--     /* Initialize the vector table contents with default handler */
--    for (i=0; i<BSP_MAX_INT; i++)
--      *(vectorTable + i) = (long)(default_int_handler);
--
-     /* Initialize the INT at the BSP level */
-     BSP_rtems_irq_mngt_init();
- }
-Index: rtems/c/src/lib/libbsp/arm/edb7312/irq/bsp_irq_init.c
-===================================================================
---- rtems/c/src/lib/libbsp/arm/edb7312/irq/bsp_irq_init.c      (revision 42)
-+++ rtems/c/src/lib/libbsp/arm/edb7312/irq/bsp_irq_init.c      (working copy)
-@@ -22,7 +22,16 @@
- void BSP_rtems_irq_mngt_init()
- {
-       long int_stat;
-+        long *vectorTable;
-+        int i;
-+        vectorTable = (long *) VECTOR_TABLE;
-+
-+        /* Initialize the vector table contents with default handler */
-+        for (i=0; i<BSP_MAX_INT; i++) {
-+            *(vectorTable + i) = (long)(default_int_handler);
-+        }
-+
-       /* mask all interrupts */
-       *EP7312_INTMR1 = 0x0;
-       *EP7312_INTMR2 = 0x0;
-Index: rtems/c/src/lib/libbsp/arm/gba/irq/bsp_irq_init.c
-===================================================================
---- rtems/c/src/lib/libbsp/arm/gba/irq/bsp_irq_init.c  (revision 42)
-+++ rtems/c/src/lib/libbsp/arm/gba/irq/bsp_irq_init.c  (working copy)
-@@ -29,6 +29,16 @@
-  */
- void BSP_rtems_irq_mngt_init(void)
- {
-+  long *vectorTable;
-+  int i;
-+
-+  vectorTable = (long *) VECTOR_TABLE;
-+    
-+  /* Initialize the vector table contents with default handler */
-+  for (i=0; i<BSP_MAX_INT; i++) {
-+      *(vectorTable + i) = (long)(default_int_handler);
-+  }
-+
-   /* clear all interrupt status flags */
-   GBA_REG_IF = 0xffff;
-   /* disable all interrupts */
-Index: rtems/c/src/lib/libcpu/arm/mc9328mxl/include/mc9328mxl.h
-===================================================================
---- rtems/c/src/lib/libcpu/arm/mc9328mxl/include/mc9328mxl.h   (revision 42)
-+++ rtems/c/src/lib/libcpu/arm/mc9328mxl/include/mc9328mxl.h   (working copy)
-@@ -131,6 +131,33 @@
- #define MC9328MXL_UART2_MPR4  (*((volatile uint32_t *)((MC9328MXL_UART2_BASE) + 0xcc)))
- #define MC9328MXL_UART2_TS    (*((volatile uint32_t *)((MC9328MXL_UART2_BASE) + 0xd0)))
-+typedef struct {
-+    volatile uint32_t rxd;
-+    volatile uint32_t _res0[15];
-+    volatile uint32_t txd;
-+    volatile uint32_t _res1[15];
-+    volatile uint32_t cr1;
-+    volatile uint32_t cr2;
-+    volatile uint32_t cr3;
-+    volatile uint32_t cr4;
-+    volatile uint32_t fcr;
-+    volatile uint32_t sr1;
-+    volatile uint32_t sr2;
-+    volatile uint32_t esc;
-+    volatile uint32_t tim;
-+    volatile uint32_t bir;
-+    volatile uint32_t bmr;
-+    volatile uint32_t brc;
-+    volatile uint32_t ipr1;
-+    volatile uint32_t ipr2;
-+    volatile uint32_t ipr3;
-+    volatile uint32_t ipr4;
-+    volatile uint32_t mpr1;
-+    volatile uint32_t mpr2;
-+    volatile uint32_t mpr3;
-+    volatile uint32_t mpr4;
-+    volatile uint32_t ts;
-+} mc9328mxl_uart_regs_t;
- #define MC9328MXL_UART_RXD_CHARRDY    (bit(15))
- #define MC9328MXL_UART_RXD_ERR        (bit(14))
-@@ -205,6 +232,17 @@
- #define MC9328MXL_UART_CR4_OREN       (bit(1))
- #define MC9328MXL_UART_CR4_DREN       (bit(0))
-+#define MC9328MXL_UART_FCR_TXTL(x)    (((x) & 0x3f) << 10)
-+#define MC9328MXL_UART_FCR_RFDIV_1    (5 << 7)
-+#define MC9328MXL_UART_FCR_RFDIV_2    (4 << 7)
-+#define MC9328MXL_UART_FCR_RFDIV_3    (3 << 7)
-+#define MC9328MXL_UART_FCR_RFDIV_4    (2 << 7)
-+#define MC9328MXL_UART_FCR_RFDIV_5    (1 << 7)
-+#define MC9328MXL_UART_FCR_RFDIV_6    (0 << 7)
-+#define MC9328MXL_UART_FCR_RFDIV_7    (6 << 7)
-+#define MC9328MXL_UART_FCR_RFDIV_MASK (7 << 7)
-+#define MC9328MXL_UART_FCR_RXTL(x)    (((x) & 0x3f) << 0)
-+
- #define MC9328MXL_UART_SR1_PARERR     (bit(15))
- #define MC9328MXL_UART_SR1_RTSS       (bit(14))
- #define MC9328MXL_UART_SR1_TRDY       (bit(13))
-Index: rtems/c/src/lib/libcpu/arm/mc9328mxl/clock/clockdrv.c
-===================================================================
---- rtems/c/src/lib/libcpu/arm/mc9328mxl/clock/clockdrv.c      (revision 42)
-+++ rtems/c/src/lib/libcpu/arm/mc9328mxl/clock/clockdrv.c      (working copy)
-@@ -28,13 +28,14 @@
- static int clock_isr_is_on(const rtems_irq_connect_data *irq);
- /* Replace the first value with the clock's interrupt name. */
--rtems_irq_connect_data clock_isr_data = {BSP_INT_TIMER1,
--                                         (rtems_irq_hdl)Clock_isr,
--                                         clock_isr_on,
--                                         clock_isr_off,
--                                         clock_isr_is_on,
--                                         3,     /* unused for ARM cpus */
--                                         0 };   /* unused for ARM cpus */
-+rtems_irq_connect_data clock_isr_data = {
-+    .name   = BSP_INT_TIMER1,
-+    .hdl    = (rtems_irq_hdl)Clock_isr,
-+    .handle = (void *)BSP_INT_TIMER1,
-+    .on     = clock_isr_on,
-+    .off    = clock_isr_off,
-+    .isOn   = clock_isr_is_on,
-+};
- /* If you follow the code, this is never used, so any value 
-  * should work
-@@ -82,7 +83,7 @@
-         int cnt; \
-         freq = get_perclk1_freq(); \
-         printk("perclk1 freq is %d\n", freq); \
--        cnt = ((freq / 1000) * BSP_Configuration.microseconds_per_tick) / 1000;\
-+        cnt = ((long long)freq * BSP_Configuration.microseconds_per_tick + 500000) / 1000000;\
-         printk("cnt freq is %d\n", cnt); \
-         MC9328MXL_TMR1_TCMP = cnt; \
-         /* use PERCLK1 as input, enable timer */ \
-Index: rtems/c/src/lib/libcpu/arm/mc9328mxl/irq/bsp_irq_asm.S
-===================================================================
---- rtems/c/src/lib/libcpu/arm/mc9328mxl/irq/bsp_irq_asm.S     (revision 42)
-+++ rtems/c/src/lib/libcpu/arm/mc9328mxl/irq/bsp_irq_asm.S     (working copy)
-@@ -31,13 +31,15 @@
-   /* find the ISR's address based on the vector */    
-   ldr   r0, =bsp_vector_table
--  ldr r0, [r0, r1, LSL #2]    /* Read the address */
-+  mov   r1, r1, LSL #3          /* Shift vector to get offset into table */
-+  add   r1, r0, r1              /* r1 has address of vector entry */
-+  ldr   r0, [r1, #4]            /* Get the data pointer */
-+  ldr r1, [r1]                /* Get the vector */
--
-   stmdb         sp!,{lr}
-   ldr     lr, =IRQ_return         /* prepare the return from handler  */
--  mov     pc, r0              /* EXECUTE INT HANDLER */
-+  mov     pc, r1              /* EXECUTE INT HANDLER */
- IRQ_return:
-   ldmia sp!,{lr}
-Index: rtems/c/src/lib/libcpu/arm/mc9328mxl/irq/irq.h
-===================================================================
---- rtems/c/src/lib/libcpu/arm/mc9328mxl/irq/irq.h     (revision 42)
-+++ rtems/c/src/lib/libcpu/arm/mc9328mxl/irq/irq.h     (working copy)
-@@ -15,6 +15,8 @@
- #ifndef __IRQ_H__
- #define __IRQ_H__
-+#include <rtems/irq.h>
-+
- #ifdef __cplusplus
- extern "C" {
- #endif
-@@ -34,7 +36,7 @@
-  * Constants
-  **********************************************************************/
--/* possible interrupt sources on the AT91RM9200 */
-+/* possible interrupt sources on the MC9328MXL */
- #define BSP_INT_UART3_PFERR       0 
- #define BSP_INT_UART3_RTS         1     
- #define BSP_INT_UART3_DTR         2     
-@@ -101,64 +103,21 @@
- #define BSP_INT_WDT              63
- #define BSP_MAX_INT              64
-               
--typedef unsigned char  rtems_irq_level;
--typedef unsigned char  rtems_irq_trigger;
-+typedef struct {
-+    rtems_irq_hdl       vector;
-+    rtems_irq_hdl_param data;
-+} mc9328mxl_irq_info_t;
--typedef unsigned int rtems_irq_number;
--struct  __rtems_irq_connect_data__;     /* forward declaratiuon */
--typedef void (*rtems_irq_hdl)       (void);
--typedef void (*rtems_irq_enable)    (const struct __rtems_irq_connect_data__*);
--typedef void (*rtems_irq_disable)   (const struct __rtems_irq_connect_data__*);
--typedef int  (*rtems_irq_is_enabled)(const struct __rtems_irq_connect_data__*);
--extern rtems_irq_hdl bsp_vector_table[BSP_MAX_INT];
--#define VECTOR_TABLE bsp_vector_table
--                                                                                         
--typedef struct __rtems_irq_connect_data__ {
--    /* IRQ line */
--    rtems_irq_number              name;
-+extern mc9328mxl_irq_info_t bsp_vector_table[BSP_MAX_INT];
--    /* Handler */
--    rtems_irq_hdl                 hdl;
--
--    /* function for enabling interrupts at device level. */
--    rtems_irq_enable              on;
--
--    /* function for disabling interrupts at device level. */
--    rtems_irq_disable             off;
--
--    /* Function to test if interrupt is enabled */
--    rtems_irq_is_enabled        isOn;
--
--    /* priority level of interrupt */
--    rtems_irq_level               irqLevel;
--
--    /* Trigger method (rising/falling edge or high/low level) */
--    rtems_irq_trigger             irqTrigger;
--} rtems_irq_connect_data;
--
- /*
-  * function to initialize the interrupt for a specific BSP
-  */
- void BSP_rtems_irq_mngt_init();
--/*
-- * function to connect a particular irq handler.
-- */
--int BSP_install_rtems_irq_handler       (const rtems_irq_connect_data*);
--
--/*
-- * function to get the current RTEMS irq handler for ptr->name. 
-- */
--int BSP_get_current_rtems_irq_handler   (rtems_irq_connect_data* ptr);
--
--/*
-- * function to disconnect the RTEMS irq handler for ptr->name.
-- */
--int BSP_remove_rtems_irq_handler        (const rtems_irq_connect_data*);
--
- #endif /* __asm__ */
- #ifdef __cplusplus
-Index: rtems/c/src/lib/libcpu/arm/mc9328mxl/irq/bsp_irq_init.c
-===================================================================
---- rtems/c/src/lib/libcpu/arm/mc9328mxl/irq/bsp_irq_init.c    (revision 42)
-+++ rtems/c/src/lib/libcpu/arm/mc9328mxl/irq/bsp_irq_init.c    (working copy)
-@@ -23,10 +23,11 @@
-  */
- void BSP_rtems_irq_mngt_init()
- {
--#if 0
--    /* disable all interrupts */
--    AIC_CTL_REG(AIC_IDCR) = 0xffffffff;
--#endif
-+    int i;
-+    for (i = 0; i < BSP_MAX_INT; i++) {
-+        bsp_vector_table[i].vector = default_int_handler;
-+        bsp_vector_table[i].data   = NULL;
-+    }
- }
-Index: rtems/c/src/lib/libcpu/arm/mc9328mxl/irq/irq.c
-===================================================================
---- rtems/c/src/lib/libcpu/arm/mc9328mxl/irq/irq.c     (revision 42)
-+++ rtems/c/src/lib/libcpu/arm/mc9328mxl/irq/irq.c     (working copy)
-@@ -16,6 +16,8 @@
- #include <rtems/score/apiext.h>
- #include <mc9328mxl.h>
-+mc9328mxl_irq_info_t bsp_vector_table[BSP_MAX_INT];
-+
- /*
-  * This function check that the value given for the irq line
-  * is valid.
-@@ -36,9 +38,6 @@
- int BSP_install_rtems_irq_handler  (const rtems_irq_connect_data* irq)
- {
-     rtems_interrupt_level level;
--    rtems_irq_hdl *bsp_tbl;
--
--    bsp_tbl = (rtems_irq_hdl *)&bsp_vector_table;
-     
-     if (!isValidInterrupt(irq->name)) {
-       return 0;
-@@ -47,8 +46,8 @@
-     /*
-      * Check if default handler is actually connected. If not issue an error.
-      */
--    if (bsp_tbl[irq->name] != default_int_handler) {
--      return 0;
-+    if (bsp_vector_table[irq->name].vector != default_int_handler) {
-+        return 0;
-     }
-     _CPU_ISR_Disable(level);
-@@ -56,7 +55,8 @@
-     /*
-      * store the new handler
-      */
--    bsp_tbl[irq->name] = irq->hdl;
-+    bsp_vector_table[irq->name].vector = irq->hdl;
-+    bsp_vector_table[irq->name].data = irq->handle;
-     /*
-      * Enable interrupt on device
-@@ -80,18 +80,15 @@
- int BSP_remove_rtems_irq_handler  (const rtems_irq_connect_data* irq)
- {
-     rtems_interrupt_level level;
--    rtems_irq_hdl *bsp_tbl;
--    bsp_tbl = (rtems_irq_hdl *)&bsp_vector_table;
--  
-     if (!isValidInterrupt(irq->name)) {
-       return 0;
-     }
-     /*
-      * Check if the handler is actually connected. If not issue an error.
-      */
--    if (bsp_tbl[irq->name] != irq->hdl) {
--      return 0;
-+    if (bsp_vector_table[irq->name].vector != irq->hdl) {
-+        return 0;
-     }
-     _CPU_ISR_Disable(level);
-@@ -106,8 +103,8 @@
-     /*
-      * restore the default irq value
-      */
--    bsp_tbl[irq->name] = default_int_handler;
--    
-+    bsp_vector_table[irq->name].vector = default_int_handler;
-+    bsp_vector_table[irq->name].data = NULL;
-     _CPU_ISR_Enable(level);
-Index: rtems/c/src/lib/libcpu/arm/shared/arm920/mmu.c
-===================================================================
---- rtems/c/src/lib/libcpu/arm/shared/arm920/mmu.c     (revision 42)
-+++ rtems/c/src/lib/libcpu/arm/shared/arm920/mmu.c     (working copy)
-@@ -151,7 +151,7 @@
- static inline uint32_t mmu_get_ctrl(void)
- {
-     uint32_t val;
--    asm volatile ("msr 15, 0, %0, cr1, cr0\n" : "=r" (val));
-+    asm volatile ("mrc 15, 0, %0, cr1, cr0\n" : "=r" (val));
-     return val;
- }
-@@ -240,3 +240,13 @@
-         base[i] = MMU_SET_LVL1_INVAL;
-     }
- }
-+
-+
-+void mmu_set_cpu_async_mode(void)
-+{
-+    uint32_t reg;
-+    reg = mmu_get_ctrl();
-+    reg |= 0xc0000000;
-+    mmu_set_ctrl(reg);
-+}
-+    
-Index: rtems/c/src/lib/libcpu/arm/at91rm9200/irq/bsp_irq_init.c
-===================================================================
---- rtems/c/src/lib/libcpu/arm/at91rm9200/irq/bsp_irq_init.c   (revision 42)
-+++ rtems/c/src/lib/libcpu/arm/at91rm9200/irq/bsp_irq_init.c   (working copy)
-@@ -23,6 +23,16 @@
-  */
- void BSP_rtems_irq_mngt_init()
- {
-+    long *vectorTable;
-+    int i;
-+
-+    vectorTable = (long *) VECTOR_TABLE;
-+
-+    /* Initialize the vector table contents with default handler */
-+    for (i=0; i<BSP_MAX_INT; i++) {
-+        *(vectorTable + i) = (long)(default_int_handler);
-+    }
-+
-     /* disable all interrupts */
-     AIC_CTL_REG(AIC_IDCR) = 0xffffffff;
- }
-Index: rtems/c/src/lib/libcpu/arm/s3c2400/irq/bsp_irq_init.c
-===================================================================
---- rtems/c/src/lib/libcpu/arm/s3c2400/irq/bsp_irq_init.c      (revision 42)
-+++ rtems/c/src/lib/libcpu/arm/s3c2400/irq/bsp_irq_init.c      (working copy)
-@@ -20,6 +20,16 @@
- void BSP_rtems_irq_mngt_init() 
- {
-+    long *vectorTable;
-+    int i;
-+
-+    vectorTable = (long *) VECTOR_TABLE;
-+
-+    /* Initialize the vector table contents with default handler */
-+    for (i=0; i<BSP_MAX_INT; i++) {
-+        *(vectorTable + i) = (long)(default_int_handler);
-+    }
-+
-     /*
-      * Here is the code to initialize the INT for
-      * the specified BSP
-Index: rtems/make/custom/csb336.cfg
-===================================================================
---- rtems/make/custom/csb336.cfg       (revision 42)
-+++ rtems/make/custom/csb336.cfg       (working copy)
-@@ -22,12 +22,12 @@
- # -O4 is ok for RTEMS
- # NOTE2: some level of -O may be actually required by inline assembler (at least
- # -O2 so far.
--CFLAGS_OPTIMIZE_V=-O3
-+CFLAGS_OPTIMIZE_V=-O3 -g
- #CFLAGS_OPTIMIZE_V=-O4 -mmultiple -mstring -mstrict-align
- # debug flags: typically none, but at least -O1 is required due to this
- # BSP using inlined code
--CFLAGS_DEBUG_V = -O1
-+CFLAGS_DEBUG_V = -O1 -g
- #CFLAGS_DEBUG_V = -O1 -mmultiple -mstring -mstrict-align
diff --git a/rtems-patches/applied/rtems-csb336-20051008-uart.patch b/rtems-patches/applied/rtems-csb336-20051008-uart.patch
deleted file mode 100644 (file)
index 292feea..0000000
+++ /dev/null
@@ -1,664 +0,0 @@
-Index: rtems/c/src/lib/libbsp/arm/csb336/console/uart.c
-===================================================================
---- rtems.orig/c/src/lib/libbsp/arm/csb336/console/uart.c
-+++ rtems/c/src/lib/libbsp/arm/csb336/console/uart.c
-@@ -1,262 +1,453 @@
- /*
-- *  console driver for MC9328XML UARTs
-+ * Console driver for MC9328XML UARTs.
-  *
-- *  This driver uses the shared console driver in 
-- *  ...../libbsp/shared/console.c
-+ * Written Jay Monkman <jtm@lopingdog.com>
-+ * Copyright (c) 2005 by Loping Dog Embedded Systems
-  *
-- *  If you want the driver to be interrupt driven, you 
-- *  need to write the ISR, and in the ISR insert the
-- *  chars into termios's queue.
-+ * The license and distribution terms for this file may be
-+ * found in the file LICENSE in this distribution or at
-+ *    http://www.rtems.com/license
-  *
-- *  Copyright (c) 2004 Cogent Computer Systems
-- *  Written by Jay Monkman <jtm@lopingdog.com>
-- *
-- *  The license and distribution terms for this file may be
-- *  found in the file LICENSE in this distribution or at
-- *
-- *  http://www.OARcorp.com/rtems/license.html.
-- *
-- *
-- *  $Id: uart.c,v 1.1 2004/07/15 06:12:05 jtm Exp $
--*/
--#include <bsp.h>                /* Must be before libio.h */
-+ * $Id:$
-+ */
-+#include <bsp.h>
- #include <rtems/libio.h>
--#include <termios.h>
-+#include <libchip/sersupp.h>
-+#include <rtems/error.h>
- #include <rtems/bspIo.h>
--
--/* Put the CPU (or UART) specific header file #include here */
-+#include <termios.h>
-+#include <irq.h>
- #include <mc9328mxl.h>
--#include <libchip/serial.h>
--#include <libchip/sersupp.h>
-+
-+
-+/* Define this to use interrupt driver UART driver */
-+#define USE_INTERRUPTS 1
- /* How many serial ports? */
- #define NUM_DEVS       2
-+#define poll_write(c)  imx_uart_poll_write_char(0, c)
-+#define poll_read()  imx_uart_poll_read_char(0)
--int     uart_poll_read(int minor);
-+static int imx_uart_first_open(int, int, void *);
-+static int imx_uart_last_close(int, int, void *);
-+static int imx_uart_poll_read(int);
-+static int imx_uart_set_attrs(int, const struct termios *);
-+static void imx_uart_init(int minor);
-+static void imx_uart_set_baud(int, int);
-+static int imx_uart_poll_write(int, const char *, int);
-+
-+#if defined(USE_INTERRUPTS)
-+static void imx_uart_tx_isr(rtems_irq_hdl_param);
-+static void imx_uart_rx_isr(rtems_irq_hdl_param);
-+static void imx_uart_isr_on(const rtems_irq_connect_data *irq);
-+static void imx_uart_isr_off(const rtems_irq_connect_data *irq);
-+static int imx_uart_isr_is_on(const rtems_irq_connect_data *irq);
-+static int imx_uart_intr_write(int, const char *, int);
-+#endif
--int dbg_dly;
--/* static function prototypes */
--static int     uart_first_open(int major, int minor, void *arg);
--static int     uart_last_close(int major, int minor, void *arg);
--static int     uart_read(int minor);
--static int     uart_write(int minor, const char *buf, int len);
--static void    uart_init(int minor);
--static void    uart_write_polled(int minor, char c);
--static int     uart_set_attributes(int minor, const struct termios *t);
--
--/* These are used by code in console.c */
--unsigned long Console_Port_Count = NUM_DEVS;
--console_data  Console_Port_Data[NUM_DEVS];
--
--/* rtems console uses the following minor number */
--rtems_device_minor_number  Console_Port_Minor = 0;
--
--/* Pointers to functions for handling the UART. */
--console_fns uart_fns = 
--{ 
--    libchip_serial_default_probe,
--    uart_first_open,
--    uart_last_close,
--    uart_read,
--    uart_write,
--    uart_init,
--    uart_write_polled,   /* not used in this driver */
--    uart_set_attributes,
--    FALSE      /* TRUE if interrupt driven, FALSE if not. */
-+
-+/* TERMIOS callbacks */
-+#if defined(USE_INTERRUPTS)
-+rtems_termios_callbacks imx_uart_cbacks = {
-+    .firstOpen            = imx_uart_first_open,
-+    .lastClose            = imx_uart_last_close,
-+    .pollRead             = NULL,
-+    .write                = imx_uart_intr_write,
-+    .setAttributes        = imx_uart_set_attrs,
-+    .stopRemoteTx         = NULL,
-+    .startRemoteTx        = NULL,
-+    .outputUsesInterrupts = 1,
-+};
-+#else
-+rtems_termios_callbacks imx_uart_cbacks = {
-+    .firstOpen            = imx_uart_first_open,
-+    .lastClose            = imx_uart_last_close,
-+    .pollRead             = imx_uart_poll_read,
-+    .write                = imx_uart_poll_write,
-+    .setAttributes        = imx_uart_set_attrs,
-+    .stopRemoteTx         = NULL,
-+    .startRemoteTx        = NULL,
-+    .outputUsesInterrupts = 0,
- };
-+#endif
--/* 
-- * There's one item in array for each UART.
-- *
-- * Some of these fields are marked "NOT USED". They are not used
-- * by console.c, but may be used by drivers in libchip
-- *
-- */
--console_tbl Console_Port_Tbl[] = {
--    {
--        "/dev/com0",                      /* sDeviceName */
--        SERIAL_CUSTOM,                    /* deviceType */
--        &uart_fns,                        /* pDeviceFns */
--        NULL,                             /* deviceProbe */
--        NULL,                             /* pDeviceFlow */
--        0,                                /* ulMargin - NOT USED */
--        0,                                /* ulHysteresis - NOT USED */
--        NULL,                             /* pDeviceParams */
--        0,                                /* ulCtrlPort1  - NOT USED */
--        0,                                /* ulCtrlPort2  - NOT USED */
--        0,                                /* ulDataPort  - NOT USED */
--        NULL,                             /* getRegister - NOT USED */
--        NULL,                             /* setRegister - NOT USED */
--        NULL,                             /* getData - NOT USED */
--        NULL,                             /* setData - NOT USED */
--        0,                                /* ulClock - NOT USED */
--        0                                 /* ulIntVector - NOT USED */
--    },
--    {
--        "/dev/com1",                      /* sDeviceName */
--        SERIAL_CUSTOM,                    /* deviceType */
--        &uart_fns,                        /* pDeviceFns */
--        NULL,                             /* deviceProbe */
--        NULL,                             /* pDeviceFlow */
--        0,                                /* ulMargin - NOT USED */
--        0,                                /* ulHysteresis - NOT USED */
--        NULL,                             /* pDeviceParams */
--        0,                                /* ulCtrlPort1  - NOT USED */
--        0,                                /* ulCtrlPort2  - NOT USED */
--        0,                                /* ulDataPort  - NOT USED */
--        NULL,                             /* getRegister - NOT USED */
--        NULL,                             /* setRegister - NOT USED */
--        NULL,                             /* getData - NOT USED */
--        NULL,                             /* setData - NOT USED */
--        0,                                /* ulClock - NOT USED */
--        0                                 /* ulIntVector - NOT USED */
-+#if defined(USE_INTERRUPTS)
-+static rtems_irq_connect_data imx_uart_tx_isr_data[NUM_DEVS];
-+static rtems_irq_connect_data imx_uart_rx_isr_data[NUM_DEVS];
-+#endif
-+
-+typedef struct {
-+    int minor;
-+    mc9328mxl_uart_regs_t * regs;
-+    volatile const char *buf;
-+    volatile int len;
-+    volatile int idx;
-+    void *tty;
-+} imx_uart_data_t;
-+
-+static imx_uart_data_t imx_uart_data[NUM_DEVS];
-+
-+rtems_device_driver console_initialize(
-+    rtems_device_major_number  major,
-+    rtems_device_minor_number  minor,
-+    void                      *arg
-+)
-+{
-+    rtems_status_code status;
-+    int i;
-+
-+    for (i = 0; i < NUM_DEVS; i++) {
-+        imx_uart_init(i);
-     }
--};
--/*********************************************************************/
--/* Functions called via termios callbacks (i.e. the ones in uart_fns */
--/*********************************************************************/
--
--/* 
-- * This is called the first time each device is opened. If the driver 
-- * is interrupt driven, you should enable interrupts here. Otherwise, 
-- * it's probably safe to do nothing.
-- *
-- * Since micromonitor already set up the UART, we do nothing.
-- */
--static int uart_first_open(int major, int minor, void *arg) 
-+    rtems_termios_initialize();
-+
-+    /* /dev/console and /dev/tty0 are the same */
-+    status = rtems_io_register_name("/dev/console", major, 0);
-+    if (status != RTEMS_SUCCESSFUL) {
-+        rtems_panic("%s:%d Error registering /dev/console :: %d\n",
-+                    __FUNCTION__, __LINE__, status);
-+    }
-+
-+    status = rtems_io_register_name("/dev/tty0", major, 0);
-+    if (status != RTEMS_SUCCESSFUL) {
-+        rtems_panic("%s:%d Error registering /dev/tty0 :: %d\n",
-+                    __FUNCTION__, __LINE__, status);
-+    }
-+
-+    status = rtems_io_register_name("/dev/tty1", major, 1);
-+    if (status != RTEMS_SUCCESSFUL) {
-+        rtems_panic("%s:%d Error registering /dev/tty1 :: %d\n",
-+                    __FUNCTION__, __LINE__, status);
-+    }
-+    return RTEMS_SUCCESSFUL;
-+}
-+
-+rtems_device_driver console_open(
-+    rtems_device_major_number major,
-+    rtems_device_minor_number minor,
-+    void                    * arg
-+)
- {
--    return 0;
-+    rtems_status_code rc;
-+
-+    if (minor > (NUM_DEVS - 1)) {
-+        return RTEMS_INVALID_NUMBER;
-+    }
-+
-+    rc = rtems_termios_open(major, minor, arg, &imx_uart_cbacks);
-+
-+    return rc;
- }
-+rtems_device_driver console_close(
-+    rtems_device_major_number major,
-+    rtems_device_minor_number minor,
-+    void                    * arg
-+)
-+{
-+    return rtems_termios_close(arg);
-+}
--/* 
-- * This is called the last time each device is closed. If the driver 
-- * is interrupt driven, you should disable interrupts here. Otherwise, 
-- * it's probably safe to do nothing.
-- */
--static int uart_last_close(int major, int minor, void *arg) 
-+rtems_device_driver console_read(
-+    rtems_device_major_number major,
-+    rtems_device_minor_number minor,
-+    void                    * arg
-+)
- {
--    return 0;
-+  return rtems_termios_read(arg);
- }
-+rtems_device_driver console_write(
-+    rtems_device_major_number major,
-+    rtems_device_minor_number minor,
-+    void                    * arg
-+)
-+{
-+  return rtems_termios_write(arg);
-+}
--/*
-- * Read one character from UART.
-- *
-- * Return -1 if there's no data, otherwise return
-- * the character in lowest 8 bits of returned int.
-- */
--static int uart_read(int minor) 
-+rtems_device_driver console_control(
-+    rtems_device_major_number major,
-+    rtems_device_minor_number minor,
-+    void                    * arg
-+)
- {
--    char c;
-+  return rtems_termios_ioctl(arg);
-+}
-+
-+static void imx_uart_init(int minor)
-+{
-+    imx_uart_data[minor].minor = minor;
-+    imx_uart_data[minor].buf   = NULL;
-+    imx_uart_data[minor].len   = 0;
-+    imx_uart_data[minor].idx   = 0;
-     if (minor == 0) {
--        if (MC9328MXL_UART1_SR2 & MC9328MXL_UART_SR2_RDR) {
--            c = MC9328MXL_UART1_RXD & MC9328MXL_UART_RXD_CHARMASK;
--            return c;
--        } else {
--            return -1;
--        }
-+#if defined(USE_INTERRUPTS)
-+        imx_uart_tx_isr_data[minor].name = BSP_INT_UART1_TX;
-+        imx_uart_rx_isr_data[minor].name = BSP_INT_UART1_RX;
-+#endif
-+        imx_uart_data[minor].regs =
-+            (mc9328mxl_uart_regs_t *) MC9328MXL_UART1_BASE;
-     } else if (minor == 1) {
--        if (MC9328MXL_UART2_SR2 & MC9328MXL_UART_SR2_RDR) {
--            c = MC9328MXL_UART2_RXD & MC9328MXL_UART_RXD_CHARMASK;
--            return c;
--        } else {
--            return -1;
--        }
-+#if defined(USE_INTERRUPTS)
-+        imx_uart_tx_isr_data[minor].name = BSP_INT_UART2_TX;
-+        imx_uart_rx_isr_data[minor].name = BSP_INT_UART2_RX;
-+#endif
-+        imx_uart_data[minor].regs =
-+            (mc9328mxl_uart_regs_t *) MC9328MXL_UART2_BASE;
-     } else {
--        printk("Unknown console minor number: %d\n", minor);
--        return -1;
-+        rtems_panic("%s:%d Unknown UART minor number %d\n",
-+                    __FUNCTION__, __LINE__, minor);
-     }
-+#if defined(USE_INTERRUPTS)
-+    imx_uart_tx_isr_data[minor].hdl    = imx_uart_tx_isr;
-+    imx_uart_tx_isr_data[minor].handle = &imx_uart_data[minor];
-+    imx_uart_tx_isr_data[minor].on     = imx_uart_isr_on;
-+    imx_uart_tx_isr_data[minor].off    = imx_uart_isr_off;
-+    imx_uart_tx_isr_data[minor].isOn   = imx_uart_isr_is_on;
-+
-+    imx_uart_rx_isr_data[minor].hdl    = imx_uart_rx_isr;
-+    imx_uart_rx_isr_data[minor].handle = &imx_uart_data[minor];
-+    imx_uart_rx_isr_data[minor].on     = imx_uart_isr_on;
-+    imx_uart_rx_isr_data[minor].off    = imx_uart_isr_off;
-+    imx_uart_rx_isr_data[minor].isOn   = imx_uart_isr_is_on;
-+#endif
-+
-+    imx_uart_data[minor].regs->cr1 = (
-+        MC9328MXL_UART_CR1_UARTCLKEN |
-+        MC9328MXL_UART_CR1_UARTEN);
-+
-+    imx_uart_data[minor].regs->cr2 = (
-+        MC9328MXL_UART_CR2_IRTS |
-+        MC9328MXL_UART_CR2_WS   |
-+        MC9328MXL_UART_CR2_TXEN |
-+        MC9328MXL_UART_CR2_RXEN |
-+        MC9328MXL_UART_CR2_SRST);
-+
-+    imx_uart_data[minor].regs->cr3 = 0;
-+
-+    imx_uart_data[minor].regs->cr4 = 0;
-+
-+    imx_uart_data[minor].regs->fcr = (
-+        MC9328MXL_UART_FCR_TXTL(32) |
-+        MC9328MXL_UART_FCR_RFDIV_1 |
-+        MC9328MXL_UART_FCR_RXTL(1));
-+
-+    imx_uart_set_baud(minor, 38400);
-+
- }
-+static int imx_uart_first_open(int major, int minor, void *arg)
-+{
-+    rtems_libio_open_close_args_t *args = arg;
--/* 
-- * Write buffer to UART 
-- *
-- * return 1 on success, -1 on error
-- */
--static int uart_write(int minor, const char *buf, int len)
-+    imx_uart_data[minor].tty   = args->iop->data1;
-+
-+#if defined(USE_INTERRUPTS)
-+    BSP_install_rtems_irq_handler(&imx_uart_tx_isr_data[minor]);
-+    BSP_install_rtems_irq_handler(&imx_uart_rx_isr_data[minor]);
-+
-+    imx_uart_data[minor].regs->cr1 |= MC9328MXL_UART_CR1_RRDYEN;
-+#endif
-+
-+    return 0;
-+}
-+
-+static int imx_uart_last_close(int major, int minor, void *arg)
- {
--    int i;
-+#if defined(USE_INTERRUPTS)
-+    BSP_remove_rtems_irq_handler(&imx_uart_tx_isr_data[minor]);
-+    BSP_remove_rtems_irq_handler(&imx_uart_rx_isr_data[minor]);
-+#endif
--    if (minor == 0) {
--        for (i = 0; i < len; i++) {
--            /* Wait for fifo to have room */
--            while(!(MC9328MXL_UART1_SR2 & MC9328MXL_UART_SR2_TXDC)) {
--                continue;
--            }
--            
--            MC9328MXL_UART1_TXD = (char) buf[i];
--        }
--    } else if (minor == 1) {
--        for (i = 0; i < len; i++) {
--            /* Wait for fifo to have room */
--            while(!(MC9328MXL_UART2_SR2 & MC9328MXL_UART_SR2_TXDC)) {
--                continue;
--            }
--            
--            MC9328MXL_UART2_TXD = (char) buf[i];
--        }
-+    return 0;
-+}
-+
-+static int imx_uart_poll_read(int minor)
-+{
-+    if (imx_uart_data[minor].regs->sr2 & MC9328MXL_UART_SR2_RDR) {
-+        return imx_uart_data[minor].regs->rxd & 0xff;
-     } else {
--        printk("Unknown console minor number: %d\n", minor);
-         return -1;
-     }
--    
--    return 1;
- }
--/* Set up the UART. */
--static void uart_init(int minor)
-+static int imx_uart_poll_write(int minor, const char *buf, int len)
- {
--        /* leave the debug sio port as setup by umon */
-+    int i;
-+    for (i = 0; i < len; i++) {
-+        /* Wait for there to be room in the fifo */
-+        while (!(imx_uart_data[minor].regs->sr2 & MC9328MXL_UART_SR2_TXDC)) {
-+            continue;
-+        }
-+
-+        imx_uart_data[minor].regs->txd = buf[i];
-+    }
-+    return 1;
-+
- }
--/* I'm not sure this is needed for the shared console driver. */
--static void    uart_write_polled(int minor, char c)
-+#if defined(USE_INTERRUPTS)
-+static int imx_uart_intr_write(int minor, const char *buf, int len)
- {
--    uart_write(minor, &c, 1);
-+    imx_uart_data[minor].buf = buf;
-+    imx_uart_data[minor].len = len;
-+    imx_uart_data[minor].idx = 0;
-+
-+    imx_uart_data[minor].regs->cr1 |= MC9328MXL_UART_CR1_TXMPTYEN;
-+
-+    return 1;
- }
-+#endif
-+
- /* This is for setting baud rate, bits, etc. */
--static int     uart_set_attributes(int minor, const struct termios *t) 
-+static int imx_uart_set_attrs(int minor, const struct termios *t)
- {
-+    int baud;
-+
-+    baud = termios_baud_to_number(t->c_cflag & CBAUD);
-+    imx_uart_set_baud(minor, baud);
-+
-     return 0;
- }
--/***********************************************************************/
-+#if defined(USE_INTERRUPTS)
-+static void imx_uart_isr_on(const rtems_irq_connect_data *irq)
-+{
-+    MC9328MXL_AITC_INTENNUM = irq->name;
-+}
-+static void imx_uart_isr_off(const rtems_irq_connect_data *irq)
-+{
-+    MC9328MXL_AITC_INTDISNUM = irq->name;
-+}
-+static int imx_uart_isr_is_on(const rtems_irq_connect_data *irq)
-+{
-+    int irq_num = (int)irq->name;
-+    if (irq_num < 32) {
-+        return MC9328MXL_AITC_INTENABLEL & (1 << irq_num);
-+    } else {
-+        return MC9328MXL_AITC_INTENABLEH & (1 << (irq_num - 32));
-+    }
-+}
-+
-+static void imx_uart_rx_isr(rtems_irq_hdl_param param)
-+{
-+    imx_uart_data_t *uart_data = param;
-+    char buf[32];
-+    int i=0;
-+
-+    while (uart_data->regs->sr2 & MC9328MXL_UART_SR2_RDR) {
-+        buf[i] = uart_data->regs->rxd & 0xff;
-+        i++;
-+    }
-+
-+    rtems_termios_enqueue_raw_characters(uart_data->tty, buf, i);
-+}
-+
-+static void imx_uart_tx_isr(rtems_irq_hdl_param param)
-+{
-+    imx_uart_data_t *uart_data = param;
-+    int len;
-+    int minor = uart_data->minor;
-+
-+
-+    if (uart_data->idx < uart_data->len) {
-+        while ( (uart_data->regs->sr1 & MC9328MXL_UART_SR1_TRDY) &&
-+                (uart_data->idx < uart_data->len)) {
-+            uart_data->regs->txd = uart_data->buf[uart_data->idx];
-+            uart_data->idx++;
-+        }
-+    } else {
-+        len = uart_data->len;
-+        uart_data->len = 0;
-+        imx_uart_data[minor].regs->cr1 &= ~MC9328MXL_UART_CR1_TXMPTYEN;
-+        rtems_termios_dequeue_characters(uart_data->tty, len);
-+    }
-+}
-+#endif
-+
- /*
-- * The following functions are not used by TERMIOS, but other RTEMS
-- * functions use them instead.
-+ * Set the UART's baud rate. The calculation is:
-+ *   (baud * 16) / ref_freq  = num/demom
-+ *
-+ *   ref_freq = perclk1 / RFDIV[2:0]
-+ *   BIR = num - 1
-+ *   BMR = demom - 1
-+ *
-+ * Setting 'num' to 16 yields this equation:
-+ *    demom = ref_freq / baud
-  */
--/***********************************************************************/
--/* 
-- * Read from UART. This is used in the exit code, and can't
-- * rely on interrupts.
--*/
--int uart_poll_read(int minor)
-+static void imx_uart_set_baud(int minor, int baud)
- {
--    return uart_read(minor);
-+    unsigned int perclk1;
-+    unsigned int denom;
-+    unsigned int ref_freq = 0;
-+    uint32_t fcr;
-+
-+    perclk1 = get_perclk1_freq();
-+    fcr = imx_uart_data[minor].regs->fcr;
-+
-+    switch(fcr & MC9328MXL_UART_FCR_RFDIV_MASK) {
-+    case MC9328MXL_UART_FCR_RFDIV_1:  ref_freq = perclk1/1; break;
-+    case MC9328MXL_UART_FCR_RFDIV_2:  ref_freq = perclk1/2; break;
-+    case MC9328MXL_UART_FCR_RFDIV_3:  ref_freq = perclk1/3; break;
-+    case MC9328MXL_UART_FCR_RFDIV_4:  ref_freq = perclk1/4; break;
-+    case MC9328MXL_UART_FCR_RFDIV_5:  ref_freq = perclk1/5; break;
-+    case MC9328MXL_UART_FCR_RFDIV_6:  ref_freq = perclk1/6; break;
-+    case MC9328MXL_UART_FCR_RFDIV_7:  ref_freq = perclk1/7; break;
-+    default:
-+        rtems_panic("%s:%d Unknown RFDIV: 0x%x",
-+                    __FUNCTION__, __LINE__,
-+                    fcr & MC9328MXL_UART_FCR_RFDIV_MASK);
-+        break;
-+    }
-+
-+    denom = ref_freq / baud;
-+
-+    imx_uart_data[minor].regs->bir = 0xf;
-+    imx_uart_data[minor].regs->bmr = denom;
- }
- /*
-- * Write a character to the console. This is used by printk() and 
-- * maybe other low level functions. It should not use interrupts or any
-- * RTEMS system calls. It needs to be very simple
-+ * Polled, non-blocking read from UART
-+ */
-+int imx_uart_poll_read_char(int minor)
-+{
-+    return imx_uart_poll_read(minor);
-+}
-+
-+/*
-+ * Polled, blocking write from UART
-  */
--static void _BSP_put_char( char c ) {
--    uart_write_polled(0, c);
-+void  imx_uart_poll_write_char(int minor, char c)
-+{
-+    imx_uart_poll_write(minor, &c, 1);
-+}
-+
-+/*
-+ * Functions for printk() and friends.
-+ */
-+void _BSP_output_char(char c)
-+{
-+    poll_write(c);
-     if (c == '\n') {
--        uart_write_polled(0, '\r');
-+        poll_write('\r');
-     }
- }
-+BSP_output_char_function_type BSP_output_char = _BSP_output_char;
--BSP_output_char_function_type BSP_output_char = _BSP_put_char;
-+char _BSP_poll_char()
-+{
-+    return poll_read();
-+}
-+BSP_polling_getchar_function_type BSP_poll_char = _BSP_poll_char;
-Index: rtems/c/src/lib/libbsp/arm/csb336/Makefile.am
-===================================================================
---- rtems.orig/c/src/lib/libbsp/arm/csb336/Makefile.am
-+++ rtems/c/src/lib/libbsp/arm/csb336/Makefile.am
-@@ -35,7 +35,7 @@ startup_rel_CPPFLAGS = $(AM_CPPFLAGS)
- startup_rel_LDFLAGS = $(RTEMS_RELLDFLAGS)
- noinst_PROGRAMS += console.rel
--console_rel_SOURCES = console/uart.c ../../shared/console.c
-+console_rel_SOURCES = console/uart.c
- console_rel_CPPFLAGS = $(AM_CPPFLAGS)
- console_rel_LDFLAGS = $(RTEMS_RELLDFLAGS)
diff --git a/rtems-patches/applied/rtems-csb336-undef-stack.patch b/rtems-patches/applied/rtems-csb336-undef-stack.patch
deleted file mode 100644 (file)
index 7826105..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-Index: rtems-051009/c/src/lib/libbsp/arm/csb336/start/start.S
-===================================================================
---- rtems-051009.orig/c/src/lib/libbsp/arm/csb336/start/start.S
-+++ rtems-051009/c/src/lib/libbsp/arm/csb336/start/start.S
-@@ -72,6 +72,13 @@ _bss_init:        
-         ldr     sp, =_abt_stack
-         add     sp, sp, r1
-         
-+        /* Enter UNDEF mode and set up the UNDEF stack pointer */
-+        mov     r0, #(PSR_MODE_UNDEF | PSR_I | PSR_F)     /* No interrupts */
-+        msr     cpsr, r0
-+        ldr     r1, =_undef_stack_size
-+        ldr     sp, =_undef_stack
-+        add     sp, sp, r1
-+        
-         /* Set up the SVC stack pointer last and stay in SVC mode */
-         mov     r0, #(PSR_MODE_SVC | PSR_I | PSR_F)     /* No interrupts */
-         msr     cpsr, r0
-Index: rtems-051009/c/src/lib/libbsp/arm/csb336/startup/linkcmds
-===================================================================
---- rtems-051009.orig/c/src/lib/libbsp/arm/csb336/startup/linkcmds
-+++ rtems-051009/c/src/lib/libbsp/arm/csb336/startup/linkcmds
-@@ -33,7 +33,8 @@ _sdram_size = DEFINED(_sdram_size) ? _sd
- _irq_stack_size = DEFINED(_irq_stack_size) ? _irq_stack_size : 0x1000;
- _fiq_stack_size = DEFINED(_fiq_stack_size) ? _fiq_stack_size : 0x400;
--_abt_stack_size = DEFINED(_abt_stack_size) ? _abt_stack_size : 0x100;
-+_abt_stack_size = DEFINED(_abt_stack_size) ? _abt_stack_size : 0x400;
-+_undef_stack_size = DEFINED(_undef_stack_size) ? _undef_stack_size : 0x400;
- _svc_stack_size = DEFINED(_svc_stack_size) ? _svc_stack_size : 0x1000;
-@@ -167,6 +168,10 @@ SECTIONS
-       . += _abt_stack_size;
-       . = ALIGN (256);
-+      _undef_stack = .;
-+      . += _undef_stack_size;
-+
-+      . = ALIGN (256);
-       _irq_stack = .;
-       . += _irq_stack_size;
diff --git a/rtems-patches/applied/rtems-dosfs-fix1.patch b/rtems-patches/applied/rtems-dosfs-fix1.patch
deleted file mode 100644 (file)
index 5df2973..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-Index: rtems-051009/cpukit/libfs/src/dosfs/msdos_misc.c
-===================================================================
---- rtems.orig/cpukit/libfs/src/dosfs/msdos_misc.c
-+++ rtems/cpukit/libfs/src/dosfs/msdos_misc.c
-@@ -252,7 +252,7 @@ msdos_find_name(
-  *     error occured (errno set apropriately)
-  *
-  */
--int
-+msdos_status_t
- msdos_get_name_node(
-     rtems_filesystem_location_info_t *parent_loc,
-     char                             *name,
-@@ -762,7 +762,7 @@ msdos_dir_is_empty(
-  *     appropriately)
-  *
-  */
--int
-+msdos_status_t
- msdos_find_name_in_fat_file(
-     rtems_filesystem_mount_table_entry_t *mt_entry,
-     fat_file_fd_t                        *fat_fd,
-@@ -880,7 +880,7 @@ msdos_find_name_in_fat_file(
-  *     RC_OK on success, or error code if error occured
-  *
-  */
--int
-+msdos_status_t
- msdos_find_node_by_cluster_num_in_fat_file(
-     rtems_filesystem_mount_table_entry_t *mt_entry,
-     fat_file_fd_t                        *fat_fd,
diff --git a/rtems-patches/current/mount-problems-noisy-reporting.patch b/rtems-patches/current/mount-problems-noisy-reporting.patch
deleted file mode 100644 (file)
index fbca60f..0000000
+++ /dev/null
@@ -1,324 +0,0 @@
-Index: rtems-051009/cpukit/libcsupport/src/mount.c
-===================================================================
---- rtems-051009.orig/cpukit/libcsupport/src/mount.c
-+++ rtems-051009/cpukit/libcsupport/src/mount.c
-@@ -85,9 +85,9 @@ int mount(
-   /*
-    *  Is there a file system operations table?
-    */
--
-   if ( fs_ops == NULL ) {
-     errno = EINVAL;
-+    printk("mount: fs_ops cannot be zero\n",mount_point);
-     return -1;
-   }
-@@ -98,12 +98,14 @@ int mount(
-   if ( options != RTEMS_FILESYSTEM_READ_ONLY &&
-        options != RTEMS_FILESYSTEM_READ_WRITE ) {
-     errno = EINVAL;
-+    printk("mount: bad options\n");
-     return -1;
-   }
-   /* Do they support being mounted at all ? */
-   if ( !fs_ops->fsmount_me_h ) {
-     errno = ENOTSUP;
-+    printk("mount: mounting not supported for this fs\n");
-     goto cleanup_and_bail;
-   }
-@@ -118,6 +120,7 @@ int mount(
-    temp_mt_entry = malloc( size );
-    if ( !temp_mt_entry ) {
-+     printk("mount: cannot allocate memory for temp_mt_entry\n");
-      errno = ENOMEM;
-      return -1;
-    }
-@@ -139,8 +142,10 @@ int mount(
-   if ( mount_point ) {
-     if ( rtems_filesystem_evaluate_path(
--            mount_point, RTEMS_LIBIO_PERMS_RWX, &loc, TRUE ) == -1 )
-+            mount_point, RTEMS_LIBIO_PERMS_RWX, &loc, TRUE ) == -1 ){
-+      printk("mount: evaluate mount point path \"%s\" failed\n",mount_point);
-       goto cleanup_and_bail;
-+    }
-     loc_to_free = &loc;
-@@ -150,6 +155,7 @@ int mount(
-     if (!loc.ops->node_type_h) {
-       errno =  ENOTSUP;
-+      printk("mount: mount point \"%s\" has no node_type_h\n",mount_point);
-       goto cleanup_and_bail;
-     }
-@@ -159,6 +165,7 @@ int mount(
-     if ( loc.ops->node_type_h( &loc ) != RTEMS_FILESYSTEM_DIRECTORY ) {
-       errno = ENOTDIR;
-+      printk("mount: mount point \"%s\" is not a directory\n",mount_point);
-       goto cleanup_and_bail;
-     }
-@@ -168,6 +175,7 @@ int mount(
-     if ( Is_node_fs_root(  &loc ) ){
-       errno = EBUSY;
-+      printk("mount: mount point \"%s\" Is_node_fs_root\n",mount_point);
-       goto cleanup_and_bail;
-     }
-@@ -191,10 +199,12 @@ int mount(
-     if ( !loc.ops->mount_h ){
-       errno = ENOTSUP;
-+      printk("mount: mount point \"%s\" does not support mount_h\n",mount_point);
-       goto cleanup_and_bail;
-     }
-     if ( loc.ops->mount_h( temp_mt_entry ) ) {
-+      printk("mount: mount_h at mount point \"%s\" failed\n",mount_point);
-       goto cleanup_and_bail;
-     }
-   } else {
-@@ -220,6 +230,7 @@ int mount(
-       if ( loc.ops->unmount_h ) {
-               loc.ops->unmount_h( temp_mt_entry );
-     }
-+    printk("mount: unmounting because problem arose\n",mount_point);
-     goto cleanup_and_bail;
-   }
-@@ -240,6 +251,7 @@ cleanup_and_bail:
-   if ( loc_to_free )
-     rtems_filesystem_freenode( loc_to_free );
-+  printk("mount: bailing out\n");
-   return -1;
- }
-Index: rtems-051009/cpukit/libmisc/fsmount/fsmount.c
-===================================================================
---- rtems-051009.orig/cpukit/libmisc/fsmount/fsmount.c
-+++ rtems-051009/cpukit/libmisc/fsmount/fsmount.c
-@@ -160,13 +160,15 @@ int rtems_fsmount
-                    fstab_ptr->mount_options,
-                    fstab_ptr->dev,
-                    fstab_ptr->mount_point);
-+      
-       if (tmp_rc != RTEMS_SUCCESSFUL) {
-       if (0 != (fstab_ptr->report_reasons & FSMOUNT_MNT_FAILED)) {
-         fprintf(stdout,"fsmount: mounting of \"%s\" to"
--               " \"%s\" failed: %s\n",
-+               " \"%s\" failed: %s , tmp_rc=%d\n",
-                fstab_ptr->dev,
-                fstab_ptr->mount_point,
--               strerror(errno));
-+               strerror(errno),
-+               tmp_rc);
-       }
-       if (0 != (fstab_ptr->abort_reasons & FSMOUNT_MNT_FAILED)) {
-         terminate = TRUE;
-Index: rtems-051009/cpukit/libfs/src/dosfs/msdos_initsupp.c
-===================================================================
---- rtems-051009.orig/cpukit/libfs/src/dosfs/msdos_initsupp.c
-+++ rtems-051009/cpukit/libfs/src/dosfs/msdos_initsupp.c
-@@ -69,6 +69,7 @@ msdos_initialize_support(
-     if (rc != RC_OK)
-     {
-         free(fs_info);
-+      printk("msdos_initialize_support: fat_init_volume_info failed\n");
-         return rc;
-     }
-@@ -84,6 +85,7 @@ msdos_initialize_support(
-     {
-         fat_shutdown_drive(temp_mt_entry);
-         free(fs_info);
-+      printk("msdos_initialize_support: fat_file_open\n");
-         return rc;
-     }
-@@ -104,6 +106,7 @@ msdos_initialize_support(
-         cl_buf_size = (fs_info->fat.vol.bpc > fs_info->fat.vol.rdir_size) ?
-                       fs_info->fat.vol.bpc                                :
-                       fs_info->fat.vol.rdir_size;
-+      printk("msdos_initialize_support: FAT12/16\n");
-     }
-     else
-     {
-@@ -113,9 +116,11 @@ msdos_initialize_support(
-             fat_file_close(temp_mt_entry, fat_fd);
-             fat_shutdown_drive(temp_mt_entry);
-             free(fs_info);
-+          printk("msdos_initialize_support: fat_file_size\n");
-             return rc;
-         }
-         cl_buf_size = fs_info->fat.vol.bpc;
-+      printk("msdos_initialize_support: FAT32\n");
-     }
-     fs_info->cl_buf = (uint8_t *)calloc(cl_buf_size, sizeof(char));
-@@ -124,6 +129,7 @@ msdos_initialize_support(
-         fat_file_close(temp_mt_entry, fat_fd);
-         fat_shutdown_drive(temp_mt_entry);
-         free(fs_info);
-+        printk("msdos_initialize_support: alloc fs_info->cl_buf\n");
-         set_errno_and_return_minus_one(ENOMEM);
-     }
-@@ -138,6 +144,7 @@ msdos_initialize_support(
-         fat_shutdown_drive(temp_mt_entry);
-         free(fs_info->cl_buf);
-         free(fs_info);
-+        printk("msdos_initialize_support: semaphore\n");
-         set_errno_and_return_minus_one( EIO );
-     }
-Index: rtems-051009/cpukit/libfs/src/dosfs/fat.c
-===================================================================
---- rtems-051009.orig/cpukit/libfs/src/dosfs/fat.c
-+++ rtems-051009/cpukit/libfs/src/dosfs/fat.c
-@@ -217,17 +217,23 @@ fat_init_volume_info(rtems_filesystem_mo
-     int                 i = 0;
-     rc = stat(mt_entry->dev, &stat_buf);
--    if (rc == -1)
-+    if (rc == -1){
-+        printk("fat_init_volume_info: stat\n");
-         return rc;
-+    }
-     /* rtmes feature: no block devices, all are character devices */
--    if (!S_ISCHR(stat_buf.st_mode))
-+    if (!S_ISCHR(stat_buf.st_mode)){
-+        printk("fat_init_volume_info: S_ISCHR\n");
-         set_errno_and_return_minus_one(ENOTBLK);
-+    }
-     /* check that  device is registred as block device and lock it */
-     vol->dd = rtems_disk_lookup(stat_buf.st_dev);
--    if (vol->dd == NULL)
-+    if (vol->dd == NULL){
-+        printk("fat_init_volume_info: vol->dd == NULL\n");
-         set_errno_and_return_minus_one(ENOTBLK);
-+    }
-     vol->dev = stat_buf.st_dev;
-@@ -235,6 +241,7 @@ fat_init_volume_info(rtems_filesystem_mo
-     if (fd == -1)
-     {
-         rtems_disk_release(vol->dd);
-+        printk("fat_init_volume_info: open\n");
-         return -1;
-     }
-@@ -243,6 +250,7 @@ fat_init_volume_info(rtems_filesystem_mo
-     {
-         close(fd);
-         rtems_disk_release(vol->dd);
-+        printk("fat_init_volume_info: read BPB\n");
-         set_errno_and_return_minus_one( EIO );
-     }
-     close(fd);
-@@ -255,6 +263,7 @@ fat_init_volume_info(rtems_filesystem_mo
-          (vol->bps != 4096))
-     {
-         rtems_disk_release(vol->dd);
-+        printk("fat_init_volume_info: vol->bps %d\n",vol->bps);
-         set_errno_and_return_minus_one( EINVAL );
-     }
-@@ -271,6 +280,7 @@ fat_init_volume_info(rtems_filesystem_mo
-     if (vol->spc == 0)
-     {
-         rtems_disk_release(vol->dd);
-+        printk("fat_init_volume_info: vol->spc == 0\n");
-         set_errno_and_return_minus_one(EINVAL);
-     }
-@@ -283,6 +293,7 @@ fat_init_volume_info(rtems_filesystem_mo
-     if ((vol->bpc = vol->bps << vol->spc_log2) > MS_BYTES_PER_CLUSTER_LIMIT)
-     {
-         rtems_disk_release(vol->dd);
-+        printk("fat_init_volume_info: bytes per cluster value greater than 32K is invalid\n");
-         set_errno_and_return_minus_one(EINVAL);
-     }
-@@ -357,6 +368,7 @@ fat_init_volume_info(rtems_filesystem_mo
-         if( vol->info_sec == 0 )
-         {
-             rtems_disk_release(vol->dd);
-+            printk("fat_init_volume_info: FAT_GET_BR_FAT32_FS_INFO_SECTOR\n");
-             set_errno_and_return_minus_one( EINVAL );
-         }
-         else
-@@ -366,6 +378,7 @@ fat_init_volume_info(rtems_filesystem_mo
-             if ( ret < 0 )
-             {
-                 rtems_disk_release(vol->dd);
-+                printk("fat_init_volume_info: _fat_block_read 0\n");
-                 return -1;
-             }    
-       
-@@ -373,6 +386,7 @@ fat_init_volume_info(rtems_filesystem_mo
-                 FAT_FSINFO_LEAD_SIGNATURE_VALUE)
-             {
-                 rtems_disk_release(vol->dd);
-+                printk("fat_init_volume_info: FAT_GET_FSINFO_LEAD_SIGNATURE\n");
-                 set_errno_and_return_minus_one( EINVAL );
-             }
-             else
-@@ -382,6 +396,7 @@ fat_init_volume_info(rtems_filesystem_mo
-                 if ( ret < 0 )
-                 {
-                     rtems_disk_release(vol->dd);
-+                    printk("fat_init_volume_info: _fat_block_read FAT_FSI_INFO\n");
-                     return -1;
-                 }    
-                     
-@@ -392,6 +407,7 @@ fat_init_volume_info(rtems_filesystem_mo
-                 if ( rc != RC_OK )
-                 {
-                     rtems_disk_release(vol->dd);
-+                    printk("fat_init_volume_info: fat_fat32_update_fsinfo_sector\n");
-                     return rc;
-                 }
-             }
-@@ -412,6 +428,7 @@ fat_init_volume_info(rtems_filesystem_mo
-     if ( fs_info->vhash == NULL )
-     {
-         rtems_disk_release(vol->dd);
-+        printk("fat_init_volume_info: fs_info->vhash == NULL\n");
-         set_errno_and_return_minus_one( ENOMEM );
-     }
-@@ -423,6 +440,7 @@ fat_init_volume_info(rtems_filesystem_mo
-     {
-         rtems_disk_release(vol->dd);
-         free(fs_info->vhash);
-+        printk("fat_init_volume_info: fs_info->rhash == NULL\n");
-         set_errno_and_return_minus_one( ENOMEM );
-     }
-     for (i = 0; i < FAT_HASH_SIZE; i++)
-@@ -437,6 +455,7 @@ fat_init_volume_info(rtems_filesystem_mo
-         rtems_disk_release(vol->dd);
-         free(fs_info->vhash);
-         free(fs_info->rhash);
-+        printk("fat_init_volume_info: fs_info->uino == NULL\n");
-         set_errno_and_return_minus_one( ENOMEM );
-     }
-     fs_info->sec_buf = (uint8_t *)calloc(vol->bps, sizeof(uint8_t));
-@@ -446,6 +465,7 @@ fat_init_volume_info(rtems_filesystem_mo
-         free(fs_info->vhash);
-         free(fs_info->rhash);
-         free(fs_info->uino);
-+        printk("fat_init_volume_info: fs_info->sec_buf\n");
-         set_errno_and_return_minus_one( ENOMEM );
-     }
diff --git a/rtems-patches/current/rtems-clone-mrm332-to-mo376.patch b/rtems-patches/current/rtems-clone-mrm332-to-mo376.patch
deleted file mode 100644 (file)
index 982b7ef..0000000
+++ /dev/null
@@ -1,4823 +0,0 @@
----
- c/src/lib/libbsp/m68k/mo376/ChangeLog                     |  567 ++++
- c/src/lib/libbsp/m68k/mo376/Makefile.am                   |   50 
- c/src/lib/libbsp/m68k/mo376/README                        |   24 
- c/src/lib/libbsp/m68k/mo376/bsp_specs                     |   13 
- c/src/lib/libbsp/m68k/mo376/clock/ckinit.c                |   96 
- c/src/lib/libbsp/m68k/mo376/configure.ac                  |   20 
- c/src/lib/libbsp/m68k/mo376/console/console.c             |  171 +
- c/src/lib/libbsp/m68k/mo376/console/sci.c                 | 1596 ++++++++++++++
- c/src/lib/libbsp/m68k/mo376/console/sci.h                 |  234 ++
- c/src/lib/libbsp/m68k/mo376/include/bsp.h                 |  131 +
- c/src/lib/libbsp/m68k/mo376/include/bspopts.h.in          |   16 
- c/src/lib/libbsp/m68k/mo376/include/mrm332.h              |   70 
- c/src/lib/libbsp/m68k/mo376/include/tm27.h                |   34 
- c/src/lib/libbsp/m68k/mo376/misc/dotests                  |   15 
- c/src/lib/libbsp/m68k/mo376/misc/gdbinit68                |   16 
- c/src/lib/libbsp/m68k/mo376/misc/interr.c                 |   99 
- c/src/lib/libbsp/m68k/mo376/preinstall.am                 |   66 
- c/src/lib/libbsp/m68k/mo376/spurious/spinit.c             |  105 
- c/src/lib/libbsp/m68k/mo376/start/start.S                 |  150 +
- c/src/lib/libbsp/m68k/mo376/startup/bspclean.c            |   27 
- c/src/lib/libbsp/m68k/mo376/startup/bspstart.c            |   59 
- c/src/lib/libbsp/m68k/mo376/startup/except_vect_332_ROM.S |  293 ++
- c/src/lib/libbsp/m68k/mo376/startup/linkcmds              |  164 +
- c/src/lib/libbsp/m68k/mo376/startup/linkcmds_ROM          |  200 +
- c/src/lib/libbsp/m68k/mo376/startup/start_c.c             |  125 +
- c/src/lib/libbsp/m68k/mo376/timer/timer.c                 |   61 
- c/src/lib/libbsp/m68k/mo376/times                         |  195 +
- make/custom/mo376.cfg                                     |   55 
- 28 files changed, 4652 insertions(+)
-
-Index: rtems/make/custom/mo376.cfg
-===================================================================
---- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ rtems/make/custom/mo376.cfg        2009-11-29 01:21:43.173939736 +0100
-@@ -0,0 +1,55 @@
-+#
-+#  Config file for the mrm332 BSP
-+#
-+#  $Id: mrm332.cfg,v 1.18 2008/06/11 08:17:27 ccj Exp $
-+#
-+
-+include $(RTEMS_ROOT)/make/custom/default.cfg
-+
-+RTEMS_CPU=m68k
-+RTEMS_CPU_MODEL=m68332
-+
-+# This is the actual bsp directory used during the build process.
-+RTEMS_BSP_FAMILY=mrm332
-+
-+#  This contains the compiler options necessary to select the CPU model
-+#  and (hopefully) optimize for it. 
-+CPU_CFLAGS = -mcpu=cpu32
-+
-+# optimize flag: typically -O2
-+CFLAGS_OPTIMIZE_V = -O2 -g -fomit-frame-pointer
-+
-+ifeq ($(MRM_IN_ROM),yes)
-+# Build a rommable image - move the .data section after the .text section
-+# in the image.
-+CPU_CFLAGS += -qnolinkcmds -T $(exec_prefix)/mrm332/lib/linkcmds_ROM
-+endif
-+
-+ifeq ($(MRM_IN_ROM),yes)
-+define bsp-post-link
-+      $(OBJCOPY) --adjust-section-vma \
-+        .data=`m68k-rtems-objdump --section-headers $(basename $@).pxe | \
-+        awk 'function h2d(x) { x=toupper(x); digits=length(x); s=0 ; \
-+             for (p=digits; p>0; p--) \
-+             s += (16^(p-1)) * ( index("0123456789ABCDEF",\
-+              substr(x,1+digits-p,1)) -1 );\
-+              return s } ;\
-+              /\.text/ { base = $$4 ; size = $$3 };\
-+              END { printf("0x%x", h2d(base) + h2d(size)) }'\
-+             ` $(basename $@).pxe $(basename $@).exe
-+      $(OBJCOPY) -O srec $(basename $@).exe $(basename $@).srec
-+      sed -e 's/.$$//' -e '/^S0/d' $(basename $@).srec | \
-+          $(PACKHEX) > $(basename $@)$(DOWNEXT)
-+      $(NM) -g -n $(basename $@).pxe > $(basename $@).pnum
-+      rm -f $(basename $@).srec $(basename $@).srec
-+      $(default-bsp-post-link)
-+endef
-+else
-+define bsp-post-link
-+      $(OBJCOPY) -O srec $(basename $@).exe $(basename $@).srec
-+      sed -e 's/.$$//' -e '/^S0/d' $(basename $@).srec | \
-+          $(PACKHEX) > $(basename $@)$(DOWNEXT)
-+      rm -f $(basename $@).srec
-+      $(default-bsp-post-link)
-+endef
-+endif
-Index: rtems/c/src/lib/libbsp/m68k/mo376/console/sci.h
-===================================================================
---- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ rtems/c/src/lib/libbsp/m68k/mo376/console/sci.h    2006-09-11 23:43:55.000000000 +0200
-@@ -0,0 +1,234 @@
-+/****************************************************************************
-+* File:     sci.h
-+*
-+* Desc:     This is the include file for the serial communications interface.
-+*
-+* Note:     See bsp.h,confdefs.h,system.h for installing drivers into RTEMS.
-+*
-+* $Id: sci.h,v 1.5 2006/09/11 21:43:55 joel Exp $
-+****************************************************************************/
-+
-+#ifndef _sci_h_
-+#define _sci_h_
-+
-+/*******************************************************************************
-+  IOCTL commands for the sci driver.
-+  I'm still working on these...
-+*******************************************************************************/
-+
-+#define SCI_IOCTL_PARITY_NONE           0x00    /* no parity bit after the data bits */
-+#define SCI_IOCTL_PARITY_ODD            0x01    /* parity bit added after data bits */
-+#define SCI_IOCTL_PARITY_EVEN           0x02    /* parity bit added after data bits */
-+#define SCI_IOCTL_PARITY_MARK           0x03    /* parity bit is lo, -12 volts, logical 1 */
-+#define SCI_IOCTL_PARITY_SPACE          0x04    /* parity bit is hi, +12 volts, logical 0 */
-+#define SCI_IOCTL_PARITY_FORCED_ON      0x03    /* parity bit is forced hi or lo */
-+#define SCI_IOCTL_PARITY_FORCED_OFF     0x04    /* parity bit is forced hi or lo */
-+
-+#define SCI_IOCTL_BAUD_RATE             0x20    /* set the baud rate, arg is baud */
-+
-+#define SCI_IOCTL_DATA_BITS             0x30    /* set the data bits, arg is # bits */
-+
-+#define SCI_IOCTL_STOP_BITS_1           0x40    /* 1 stop bit after char frame */
-+#define SCI_IOCTL_STOP_BITS_2           0x41    /* 2 stop bit after char frame */
-+
-+#define SCI_IOCTL_MODE_NORMAL           0x50    /* normal operating mode */
-+#define SCI_IOCTL_MODE_LOOP             0x51    /* internal loopback mode */
-+
-+#define SCI_IOCTL_FLOW_NONE             0x60    /* no flow control */
-+#define SCI_IOCTL_FLOW_RTS_CTS          0x61    /* hardware flow control */
-+
-+#define SCI_IOCTL_SEND_BREAK            0x70    /* send an rs-232 break */
-+
-+#define SCI_IOCTL_MODE_1200             0x80    /* 1200,n,8,1 download mode */
-+#define SCI_IOCTL_MODE_9600             0x81    /* 9600,n,8,1 download mode */
-+#define SCI_IOCTL_MODE_9_BIT            0x82    /* 9600,forced,8,1 command mode */
-+\f
-+
-+/*******************************************************************************
-+  SCI Registers
-+*******************************************************************************/
-+
-+/* SCI Control Register 0  (SCCR0)  $FFFC08
-+
-+    8 4 2 1 - 8 4 2 1 - 8 4 2 1 - 8 4 2 1
-+    ^ ^ ^ ^   ^ ^ ^ ^   ^ ^ ^ ^   ^ ^ ^ ^
-+    | | | |   | | | |   | | | |   | | | |
-+    | | | |   | | | |   | | | |   | | | +-----   0 baud rate divisor
-+    | | | |   | | | |   | | | |   | | +-------   1 baud rate divisor
-+    | | | |   | | | |   | | | |   | +---------   2 baud rate divisor
-+    | | | |   | | | |   | | | |   +-----------   3 baud rate divisor
-+    | | | |   | | | |   | | | |
-+    | | | |   | | | |   | | | +---------------   4 baud rate divisor
-+    | | | |   | | | |   | | +-----------------   5 baud rate divisor
-+    | | | |   | | | |   | +-------------------   6 baud rate divisor
-+    | | | |   | | | |   +---------------------   7 baud rate divisor
-+    | | | |   | | | |
-+    | | | |   | | | +-------------------------   8 baud rate divisor
-+    | | | |   | | +---------------------------   9 baud rate divisor
-+    | | | |   | +-----------------------------  10 baud rate divisor
-+    | | | |   +-------------------------------  11 baud rate divisor
-+    | | | |
-+    | | | +-----------------------------------  12 baud rate divisor
-+    | | +-------------------------------------  13 unused
-+    | +---------------------------------------  14 unused
-+    +-----------------------------------------  15 unused
-+
-+    0 0 0 0 - 0 0 0 0 - 0 0 0 0 - 0 1 0 0       reset value - (64k baud?)
-+ */
-+
-+#define SCI_BAUD_57_6K            9
-+#define SCI_BAUD_38_4K           14
-+#define SCI_BAUD_19_2K           27
-+#define SCI_BAUD_9600            55
-+#define SCI_BAUD_4800           109
-+#define SCI_BAUD_2400           218
-+#define SCI_BAUD_1200           437
-+\f
-+
-+/*  SCI Control Register 1  (SCCR1)  $FFFC0A
-+
-+    8 4 2 1 - 8 4 2 1 - 8 4 2 1 - 8 4 2 1
-+    ^ ^ ^ ^   ^ ^ ^ ^   ^ ^ ^ ^   ^ ^ ^ ^
-+    | | | |   | | | |   | | | |   | | | |
-+    | | | |   | | | |   | | | |   | | | +-----   0 send a break
-+    | | | |   | | | |   | | | |   | | +-------   1 rcvr wakeup mode
-+    | | | |   | | | |   | | | |   | +---------   2 rcvr enable
-+    | | | |   | | | |   | | | |   +-----------   3 xmtr enable
-+    | | | |   | | | |   | | | |
-+    | | | |   | | | |   | | | +---------------   4 idle line intr enable
-+    | | | |   | | | |   | | +-----------------   5 rcvr intr enable
-+    | | | |   | | | |   | +-------------------   6 xmit complete intr enable
-+    | | | |   | | | |   +---------------------   7 xmtr intr enable
-+    | | | |   | | | |
-+    | | | |   | | | +-------------------------   8 wakeup on address mark
-+    | | | |   | | +---------------------------   9 mode 1=9 bits, 0=8 bits
-+    | | | |   | +-----------------------------  10 parity enable 1=on, 0=off
-+    | | | |   +-------------------------------  11 parity type 1=odd, 0=even
-+    | | | |
-+    | | | +-----------------------------------  12 idle line select
-+    | | +-------------------------------------  13 wired-or mode
-+    | +---------------------------------------  14 loop mode
-+    +-----------------------------------------  15 unused
-+  
-+    0 0 0 0 - 0 0 0 0 - 0 0 0 0 - 0 0 0 0       reset value
-+*/
-+
-+#define SCI_SEND_BREAK          0x0001          /* 0000-0000-0000-0001 */
-+#define SCI_RCVR_WAKEUP         0x0002          /* 0000-0000-0000-0010 */
-+#define SCI_ENABLE_RCVR         0x0004          /* 0000-0000-0000-0100 */
-+#define SCI_ENABLE_XMTR         0x0008          /* 0000-0000-0000-1000 */
-+
-+#define SCI_DISABLE_RCVR        0xFFFB          /* 1111-1111-1111-1011 */
-+#define SCI_DISABLE_XMTR        0xFFF7          /* 1111-1111-1111-0111 */
-+
-+#define SCI_ENABLE_INT_IDLE     0x0010          /* 0000-0000-0001-0000 */
-+#define SCI_ENABLE_INT_RX       0x0020          /* 0000-0000-0010-0000 */
-+#define SCI_ENABLE_INT_TX_DONE  0x0040          /* 0000-0000-0100-0000 */
-+#define SCI_ENABLE_INT_TX       0x0080          /* 0000-0000-1000-0000 */
-+
-+#define SCI_DISABLE_INT_ALL     0xFF00          /* 1111-1111-0000-0000 ??? */
-+
-+#define SCI_DISABLE_INT_RX      0xFFDF          /* 1111-1111-1101-1111 */
-+#define SCI_CLEAR_RX_INT        0xFFBF          /* 1111-1111-1011-1111 */
-+#define SCI_DISABLE_INT_TX      0xFF7F          /* 1111-1111-0111-1111 */
-+#define SCI_CLEAR_TDRE          0xFEFF          /* 1111-1110-1111-1111 */
-+
-+#define SCI_RCVR_WAKE_ON_MARK   0x0100          /* 0000-0001-0000-0000 */
-+#define SCI_9_DATA_BITS         0x0200          /* 0000-0010-0000-0000 */
-+#define SCI_PARITY_ENABLE       0x0400          /* 0000-0100-0000-0000 */
-+#define SCI_PARITY_ODD          0x0800          /* 0000-1000-0000-0000 */
-+
-+#define SCI_RCVR_WAKE_ON_IDLE   0xFEFF          /* 1111-1110-1111-1111 */
-+#define SCI_8_DATA_BITS         0xFDFF          /* 1111-1101-1111-1111 */
-+#define SCI_PARITY_DISABLE      0xFBFF          /* 1111-1011-1111-1111 */
-+#define SCI_PARITY_EVEN         0xF7FF          /* 1111-0111-1111-1111 */
-+
-+#define SCI_PARITY_NONE         0xF3FF          /* 1111-0011-1111-1111 */
-+
-+#define SCI_IDLE_LINE_LONG      0x1000          /* 0001-0000-0000-0000 */
-+#define SCI_TXD_OPEN_DRAIN      0x2000          /* 0010-0000-0000-0000 */
-+#define SCI_LOOPBACK_MODE       0x4000          /* 0100-0000-0000-0000 */
-+#define SCI_SCCR1_UNUSED        0x8000          /* 1000-0000-0000-0000 */
-+\f
-+
-+/*  SCI Status Register  (SCSR)  $FFFC0C
-+
-+    8 4 2 1 - 8 4 2 1 - 8 4 2 1 - 8 4 2 1
-+    ^ ^ ^ ^   ^ ^ ^ ^   ^ ^ ^ ^   ^ ^ ^ ^
-+    | | | |   | | | |   | | | |   | | | |
-+    | | | |   | | | |   | | | |   | | | +-----   0 PF - parity error
-+    | | | |   | | | |   | | | |   | | +-------   1 FE - framing error
-+    | | | |   | | | |   | | | |   | +---------   2 NF - noise flag
-+    | | | |   | | | |   | | | |   +-----------   3 OR - overrun flag
-+    | | | |   | | | |   | | | |
-+    | | | |   | | | |   | | | +---------------   4 IDLE - idle line detected
-+    | | | |   | | | |   | | +-----------------   5 RAF  - rcvr active flag
-+    | | | |   | | | |   | +-------------------   6 RDRF - rcv data reg full
-+    | | | |   | | | |   +---------------------   7 TC   - xmt complete flag
-+    | | | |   | | | |
-+    | | | |   | | | +-------------------------   8 TDRE - xmt data reg empty
-+    | | | |   | | +---------------------------   9 always zero
-+    | | | |   | +-----------------------------  10 always zero
-+    | | | |   +-------------------------------  11 always zero
-+    | | | |
-+    | | | +-----------------------------------  12 always zero
-+    | | +-------------------------------------  13 always zero
-+    | +---------------------------------------  14 always zero
-+    +-----------------------------------------  15 always zero
-+  
-+    0 0 0 0 - 0 0 0 1 - 1 0 0 0 - 0 0 0 0       reset value
-+*/
-+
-+#define SCI_ERROR_PARITY        0x0001          /* 0000-0000-0000-0001 */
-+#define SCI_ERROR_FRAMING       0x0002          /* 0000-0000-0000-0010 */
-+#define SCI_ERROR_NOISE         0x0004          /* 0000-0000-0000-0100 */
-+#define SCI_ERROR_OVERRUN       0x0008          /* 0000-0000-0000-1000 */
-+
-+#define SCI_IDLE_LINE           0x0010          /* 0000-0000-0001-0000 */
-+#define SCI_RCVR_ACTIVE         0x0020          /* 0000-0000-0010-0000 */
-+#define SCI_RCVR_READY          0x0040          /* 0000-0000-0100-0000 */
-+#define SCI_XMTR_IDLE           0x0080          /* 0000-0000-1000-0000 */
-+
-+#define SCI_CLEAR_RX_INT        0xFFBF          /* 1111-1111-1011-1111 */
-+
-+#define SCI_XMTR_READY          0x0100          /* 0000-0001-0000-0000 */
-+
-+#define SCI_CLEAR_TDRE          0xFEFF          /* 1111-1110-1111-1111 */
-+
-+#define SCI_XMTR_AVAILABLE      0x0180          /* 0000-0001-1000-0000 */
-+
-+\f
-+
-+/*******************************************************************************
-+  Function prototypes
-+*******************************************************************************/
-+
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-+
-+/* look at console_open to see how this is called */
-+
-+const rtems_termios_callbacks * SciGetTermiosHandlers( int32_t   polled );
-+
-+/* SCI interrupt */
-+
-+/*rtems_isr SciIsr( rtems_vector_number vector ); */
-+
-+/*int32_t   SciOpenPolled    ( int32_t   major, int32_t   minor, void *arg ); */
-+/*int32_t   SciOpenInterrupt ( int32_t   major, int32_t   minor, void *arg ); */
-+
-+/*int32_t   SciClose         ( int32_t   major, int32_t   minor, void *arg ); */
-+
-+/*int32_t   SciWritePolled   ( int32_t   minor, const char *buf, int32_t   len ); */
-+/*int32_t   SciWriteInterrupt( int32_t   minor, const char *buf, int32_t   len ); */
-+
-+/*int32_t   SciReadPolled    ( int32_t   minor ); */
-+
-+/*int32_t   SciSetAttributes ( int32_t   minor, const struct termios *t ); */
-+
-+#ifdef __cplusplus
-+}
-+#endif
-+
-+#endif  /* _sci_h_ */
-Index: rtems/c/src/lib/libbsp/m68k/mo376/startup/linkcmds_ROM
-===================================================================
---- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ rtems/c/src/lib/libbsp/m68k/mo376/startup/linkcmds_ROM     2008-03-04 00:06:30.000000000 +0100
-@@ -0,0 +1,200 @@
-+/*  linkcmds
-+ *
-+ *  $Id: linkcmds_ROM,v 1.5 2008/03/03 23:06:30 joel Exp $
-+ */
-+
-+OUTPUT_ARCH(m68k)
-+STARTUP(except_vect_332_ROM.o)
-+__DYNAMIC  =  0;
-+
-+/*
-+ * ROM:
-+ * +--------------------+ <- low memory
-+ * | .text              |
-+ * |        etext       |
-+ * |        ctor list   | the ctor and dtor lists are for
-+ * |        dtor list   | C++ support
-+ * |        _endtext    |
-+ * | temporary .data    | .data is moved to RAM by crt0
-+ * |                    |
-+ * +--------------------+ <- high memory
-+ *
-+ *
-+ * RAM:
-+ * +--------------------+ <- low memory
-+ * | .data              | initialized data goes here
-+ * |        _sdata      |
-+ * |        _edata      |
-+ * +--------------------+
-+ * | .bss               |
-+ * |        __bss_start | start of bss, cleared by crt0
-+ * |        _end        | start of heap, used by sbrk()
-+ * +--------------------+
-+ * |    heap space      |
-+ * |        _ENDHEAP    |
-+ * |    stack space     | 
-+ * |        __stack     | top of stack
-+ * +--------------------+ <- high memory
-+ */
-+
-+MEMORY
-+{
-+  rom     : ORIGIN = 0x90000, LENGTH = 0x70000
-+  ram     : ORIGIN = 0x03000, LENGTH = 0x7d000
-+}
-+
-+_RamBase = DEFINED(_RamBase) ? _RamBase : 0x003000;
-+_RamSize = DEFINED(_RamSize) ? _RamSize : 0x7d000;
-+_RamEnd = _RamBase + _RamSize;
-+
-+__end_of_ram = 0x080000;
-+_copy_data_from_rom = 1;
-+_HeapSize = DEFINED(_HeapSize) ? _HeapSize : 0x10000;
-+_StackSize = DEFINED(_StackSize) ? _StackSize : 0x2000;
-+
-+/*
-+ * 
-+ */
-+SECTIONS
-+{
-+  .text :
-+  {
-+    . = .;
-+    CREATE_OBJECT_SYMBOLS
-+    text_start = .;
-+    _text_start = .;
-+    *(.text*)
-+    . = ALIGN (16);
-+
-+
-+    /*
-+     * Initialization and finalization code.
-+     *
-+     * Various files can provide initialization and finalization
-+     * functions.  crtbegin.o and crtend.o are two instances. The
-+     * body of these functions are in .init and .fini sections. We
-+     * accumulate the bodies here, and prepend function prologues
-+     * from crti.o and function epilogues from crtn.o. crti.o must
-+     * be linked first; crtn.o must be linked last.  Because these
-+     * are wildcards, it doesn't matter if the user does not
-+     * actually link against crti.o and crtn.o; the linker won't
-+     * look for a file to match a wildcard.  The wildcard also
-+     * means that it doesn't matter which directory crti.o and
-+     * crtn.o are in. 
-+     */
-+    PROVIDE (_init = .);
-+    *crti.o(.init)
-+    *(.init)
-+    *crtn.o(.init)
-+    PROVIDE (_fini = .);
-+    *crti.o(.fini)
-+    *(.fini)
-+    *crtn.o(.fini)
-+
-+    /*
-+     * Special FreeBSD sysctl sections.
-+     */
-+    . = ALIGN (16);
-+    __start_set_sysctl_set = .;
-+    *(set_sysctl_*);
-+    __stop_set_sysctl_set = ABSOLUTE(.);
-+    *(set_domain_*);
-+    *(set_pseudo_*);
-+
-+    /*
-+     * C++ constructors/destructors
-+     *
-+     * gcc uses crtbegin.o to find the start of the constructors
-+     * and destructors so we make sure it is first.  Because this
-+     * is a wildcard, it doesn't matter if the user does not
-+     * actually link against crtbegin.o; the linker won't look for
-+     * a file to match a wildcard.  The wildcard also means that
-+     * it doesn't matter which directory crtbegin.o is in. The
-+     * constructor and destructor list are terminated in
-+     * crtend.o.  The same comments apply to it.
-+     */
-+    . = ALIGN (16);
-+    *crtbegin.o(.ctors)
-+    *(.ctors)
-+    *crtend.o(.ctors)
-+    *crtbegin.o(.dtors)
-+    *(.dtors)
-+    *crtend.o(.dtors)
-+
-+    *(.eh_frame)
-+    . = ALIGN (16);
-+
-+    /*
-+     * Read-only data
-+     */
-+    . = ALIGN (16);
-+    _rodata_start = . ;
-+    *(.rodata*)
-+    *(.gnu.linkonce.r*)
-+
-+    etext = ALIGN(0x10);
-+    __CTOR_LIST__ = .;
-+    LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2)
-+    *(.ctors)
-+    LONG(0)
-+    __CTOR_END__ = .;
-+    __DTOR_LIST__ = .;
-+    LONG((__DTOR_END__ - __DTOR_LIST__) / 4 - 2)
-+    *(.dtors)
-+    LONG(0)
-+    __DTOR_END__ = .;
-+    *(.lit)
-+    *(.shdata)
-+    _etext = .;
-+    _endtext = .;
-+  } > rom
-+  .gcc_exc :
-+  AT ( ADDR(.text) + SIZEOF( .text ) )
-+  {
-+    *(.gcc_exc)
-+  } > ram
-+  .data :
-+  {
-+    data_start = .;
-+    _data_start = .;
-+    _copy_start = .;
-+    _sdata = . ;
-+    *(.data)
-+    *(.gnu.linkonce.d*)
-+    *(.gcc_except_table*)
-+    *(.jcr)
-+
-+    CONSTRUCTORS
-+    edata = ALIGN(0x10);
-+    _edata = .;
-+  } > ram
-+  .shbss :
-+  {
-+    *(.shbss)
-+  } > ram
-+  .bss :
-+  {
-+    __bss_start = ALIGN(0x8);
-+    bss_start = .;
-+    _bss_start = .;
-+    _clear_start = .;
-+    *(.shbss)
-+    *(.dynbss)
-+    *(.bss* .gnu.linkonce.b.*)
-+    *(COMMON)
-+    . = ALIGN (16);
-+    end = .;
-+    _end = ALIGN(0x8);
-+    __end = ALIGN(0x8);
-+
-+    _WorkspaceBase = . + _StackSize;
-+  } > ram
-+  .stab . (NOLOAD) :
-+  {
-+    [ .stab ]
-+  }
-+  .stabstr . (NOLOAD) :
-+  {
-+    [ .stabstr ]
-+  }
-+}
-Index: rtems/c/src/lib/libbsp/m68k/mo376/startup/except_vect_332_ROM.S
-===================================================================
---- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ rtems/c/src/lib/libbsp/m68k/mo376/startup/except_vect_332_ROM.S    2004-04-21 18:01:35.000000000 +0200
-@@ -0,0 +1,293 @@
-+/*
-+ *  $Id: except_vect_332_ROM.S,v 1.3 2004/04/21 16:01:35 ralf Exp $
-+ */
-+
-+/* Exception Vector definitions follow */
-+
-+      /* !!! Warning !!! This table is not tested, and
-+         the user must make sure it is complete. */
-+
-+      /* If we use TRAP #15 for reboot, note that group 0 and 1 exceptions
-+         will have priority. */
-+
-+      /* This is the "magic word" that CPU32bug uses to indicate that
-+         there is a bootable image here. */
-+      .long   0xBEEFBEEF
-+
-+      /* Vector 0:    RESET:  Initial SSP */
-+      .long   _RamEnd
-+      /* Vector 1:    RESET:  Initial PC */
-+      .long   start
-+
-+      /* default action for undefined vectors is to re-boot */
-+
-+      /* Note group 0 and 1 exception (like trace) have priority
-+         over other exceptions (like trap #15) that may call this. */
-+
-+      /* Vectors 2-255 */
-+      .long reboot   /* exception vector:   2 */
-+      .long reboot   /* exception vector:   3 */
-+      .long reboot   /* exception vector:   4 */
-+      .long reboot   /* exception vector:   5 */
-+      .long reboot   /* exception vector:   6 */
-+      .long reboot   /* exception vector:   7 */
-+      .long reboot   /* exception vector:   8 */
-+      .long reboot   /* exception vector:   9 */
-+      .long reboot   /* exception vector:  10 */
-+      .long reboot   /* exception vector:  11 */
-+      .long reboot   /* exception vector:  12 */
-+      .long reboot   /* exception vector:  13 */
-+      .long reboot   /* exception vector:  14 */
-+      .long reboot   /* exception vector:  15 */
-+      .long reboot   /* exception vector:  16 */
-+      .long reboot   /* exception vector:  17 */
-+      .long reboot   /* exception vector:  18 */
-+      .long reboot   /* exception vector:  19 */
-+      .long reboot   /* exception vector:  20 */
-+      .long reboot   /* exception vector:  21 */
-+      .long reboot   /* exception vector:  22 */
-+      .long reboot   /* exception vector:  23 */
-+      .long reboot   /* exception vector:  24 */
-+      .long reboot   /* exception vector:  25 */
-+      .long reboot   /* exception vector:  26 */
-+      .long reboot   /* exception vector:  27 */
-+      .long reboot   /* exception vector:  28 */
-+      .long reboot   /* exception vector:  29 */
-+      .long reboot   /* exception vector:  30 */
-+      .long reboot   /* exception vector:  31 */
-+      .long reboot   /* exception vector:  32 */
-+      .long reboot   /* exception vector:  33 */
-+      .long reboot   /* exception vector:  34 */
-+      .long reboot   /* exception vector:  35 */
-+      .long reboot   /* exception vector:  36 */
-+      .long reboot   /* exception vector:  37 */
-+      .long reboot   /* exception vector:  38 */
-+      .long reboot   /* exception vector:  39 */
-+      .long reboot   /* exception vector:  40 */
-+      .long reboot   /* exception vector:  41 */
-+      .long reboot   /* exception vector:  42 */
-+      .long reboot   /* exception vector:  43 */
-+      .long reboot   /* exception vector:  44 */
-+      .long reboot   /* exception vector:  45 */
-+      .long reboot   /* exception vector:  46 */
-+      .long _reboot  /* the reboot trap:   47 */
-+      .long reboot   /* exception vector:  48 */
-+      .long reboot   /* exception vector:  49 */
-+      .long reboot   /* exception vector:  50 */
-+      .long reboot   /* exception vector:  51 */
-+      .long reboot   /* exception vector:  52 */
-+      .long reboot   /* exception vector:  53 */
-+      .long reboot   /* exception vector:  54 */
-+      .long reboot   /* exception vector:  55 */
-+      .long reboot   /* exception vector:  56 */
-+      .long reboot   /* exception vector:  57 */
-+      .long reboot   /* exception vector:  58 */
-+      .long reboot   /* exception vector:  59 */
-+      .long reboot   /* exception vector:  60 */
-+      .long reboot   /* exception vector:  61 */
-+      .long reboot   /* exception vector:  62 */
-+      .long reboot   /* exception vector:  63 */
-+      .long reboot   /* exception vector:  64 */
-+      .long reboot   /* exception vector:  65 */
-+      .long reboot   /* exception vector:  66 */
-+      .long reboot   /* exception vector:  67 */
-+      .long reboot   /* exception vector:  68 */
-+      .long reboot   /* exception vector:  69 */
-+      .long reboot   /* exception vector:  70 */
-+      .long reboot   /* exception vector:  71 */
-+      .long reboot   /* exception vector:  72 */
-+      .long reboot   /* exception vector:  73 */
-+      .long reboot   /* exception vector:  74 */
-+      .long reboot   /* exception vector:  75 */
-+      .long reboot   /* exception vector:  76 */
-+      .long reboot   /* exception vector:  77 */
-+      .long reboot   /* exception vector:  78 */
-+      .long reboot   /* exception vector:  79 */
-+      .long reboot   /* exception vector:  80 */
-+      .long reboot   /* exception vector:  81 */
-+      .long reboot   /* exception vector:  82 */
-+      .long reboot   /* exception vector:  83 */
-+      .long reboot   /* exception vector:  84 */
-+      .long reboot   /* exception vector:  85 */
-+      .long reboot   /* exception vector:  86 */
-+      .long reboot   /* exception vector:  87 */
-+      .long reboot   /* exception vector:  88 */
-+      .long reboot   /* exception vector:  89 */
-+      .long reboot   /* exception vector:  90 */
-+      .long reboot   /* exception vector:  91 */
-+      .long reboot   /* exception vector:  92 */
-+      .long reboot   /* exception vector:  93 */
-+      .long reboot   /* exception vector:  94 */
-+      .long reboot   /* exception vector:  95 */
-+      .long reboot   /* exception vector:  96 */
-+      .long reboot   /* exception vector:  97 */
-+      .long reboot   /* exception vector:  98 */
-+      .long reboot   /* exception vector:  99 */
-+      .long reboot   /* exception vector: 100 */
-+      .long reboot   /* exception vector: 101 */
-+      .long reboot   /* exception vector: 102 */
-+      .long reboot   /* exception vector: 103 */
-+      .long reboot   /* exception vector: 104 */
-+      .long reboot   /* exception vector: 105 */
-+      .long reboot   /* exception vector: 106 */
-+      .long reboot   /* exception vector: 107 */
-+      .long reboot   /* exception vector: 108 */
-+      .long reboot   /* exception vector: 109 */
-+      .long reboot   /* exception vector: 110 */
-+      .long reboot   /* exception vector: 111 */
-+      .long reboot   /* exception vector: 112 */
-+      .long reboot   /* exception vector: 113 */
-+      .long reboot   /* exception vector: 114 */
-+      .long reboot   /* exception vector: 115 */
-+      .long reboot   /* exception vector: 116 */
-+      .long reboot   /* exception vector: 117 */
-+      .long reboot   /* exception vector: 118 */
-+      .long reboot   /* exception vector: 119 */
-+      .long reboot   /* exception vector: 120 */
-+      .long reboot   /* exception vector: 121 */
-+      .long reboot   /* exception vector: 122 */
-+      .long reboot   /* exception vector: 123 */
-+      .long reboot   /* exception vector: 124 */
-+      .long reboot   /* exception vector: 125 */
-+      .long reboot   /* exception vector: 126 */
-+      .long reboot   /* exception vector: 127 */
-+      .long reboot   /* exception vector: 128 */
-+      .long reboot   /* exception vector: 129 */
-+      .long reboot   /* exception vector: 130 */
-+      .long reboot   /* exception vector: 131 */
-+      .long reboot   /* exception vector: 132 */
-+      .long reboot   /* exception vector: 133 */
-+      .long reboot   /* exception vector: 134 */
-+      .long reboot   /* exception vector: 135 */
-+      .long reboot   /* exception vector: 136 */
-+      .long reboot   /* exception vector: 137 */
-+      .long reboot   /* exception vector: 138 */
-+      .long reboot   /* exception vector: 139 */
-+      .long reboot   /* exception vector: 140 */
-+      .long reboot   /* exception vector: 141 */
-+      .long reboot   /* exception vector: 142 */
-+      .long reboot   /* exception vector: 143 */
-+      .long reboot   /* exception vector: 144 */
-+      .long reboot   /* exception vector: 145 */
-+      .long reboot   /* exception vector: 146 */
-+      .long reboot   /* exception vector: 147 */
-+      .long reboot   /* exception vector: 148 */
-+      .long reboot   /* exception vector: 149 */
-+      .long reboot   /* exception vector: 150 */
-+      .long reboot   /* exception vector: 151 */
-+      .long reboot   /* exception vector: 152 */
-+      .long reboot   /* exception vector: 153 */
-+      .long reboot   /* exception vector: 154 */
-+      .long reboot   /* exception vector: 155 */
-+      .long reboot   /* exception vector: 156 */
-+      .long reboot   /* exception vector: 157 */
-+      .long reboot   /* exception vector: 158 */
-+      .long reboot   /* exception vector: 159 */
-+      .long reboot   /* exception vector: 160 */
-+      .long reboot   /* exception vector: 161 */
-+      .long reboot   /* exception vector: 162 */
-+      .long reboot   /* exception vector: 163 */
-+      .long reboot   /* exception vector: 164 */
-+      .long reboot   /* exception vector: 165 */
-+      .long reboot   /* exception vector: 166 */
-+      .long reboot   /* exception vector: 167 */
-+      .long reboot   /* exception vector: 168 */
-+      .long reboot   /* exception vector: 169 */
-+      .long reboot   /* exception vector: 170 */
-+      .long reboot   /* exception vector: 171 */
-+      .long reboot   /* exception vector: 172 */
-+      .long reboot   /* exception vector: 173 */
-+      .long reboot   /* exception vector: 174 */
-+      .long reboot   /* exception vector: 175 */
-+      .long reboot   /* exception vector: 176 */
-+      .long reboot   /* exception vector: 177 */
-+      .long reboot   /* exception vector: 178 */
-+      .long reboot   /* exception vector: 179 */
-+      .long reboot   /* exception vector: 180 */
-+      .long reboot   /* exception vector: 181 */
-+      .long reboot   /* exception vector: 182 */
-+      .long reboot   /* exception vector: 183 */
-+      .long reboot   /* exception vector: 184 */
-+      .long reboot   /* exception vector: 185 */
-+      .long reboot   /* exception vector: 186 */
-+      .long reboot   /* exception vector: 187 */
-+      .long reboot   /* exception vector: 188 */
-+      .long reboot   /* exception vector: 189 */
-+      .long reboot   /* exception vector: 190 */
-+      .long reboot   /* exception vector: 191 */
-+      .long reboot   /* exception vector: 192 */
-+      .long reboot   /* exception vector: 193 */
-+      .long reboot   /* exception vector: 194 */
-+      .long reboot   /* exception vector: 195 */
-+      .long reboot   /* exception vector: 196 */
-+      .long reboot   /* exception vector: 197 */
-+      .long reboot   /* exception vector: 198 */
-+      .long reboot   /* exception vector: 199 */
-+      .long reboot   /* exception vector: 200 */
-+      .long reboot   /* exception vector: 201 */
-+      .long reboot   /* exception vector: 202 */
-+      .long reboot   /* exception vector: 203 */
-+      .long reboot   /* exception vector: 204 */
-+      .long reboot   /* exception vector: 205 */
-+      .long reboot   /* exception vector: 206 */
-+      .long reboot   /* exception vector: 207 */
-+      .long reboot   /* exception vector: 208 */
-+      .long reboot   /* exception vector: 209 */
-+      .long reboot   /* exception vector: 210 */
-+      .long reboot   /* exception vector: 211 */
-+      .long reboot   /* exception vector: 212 */
-+      .long reboot   /* exception vector: 213 */
-+      .long reboot   /* exception vector: 214 */
-+      .long reboot   /* exception vector: 215 */
-+      .long reboot   /* exception vector: 216 */
-+      .long reboot   /* exception vector: 217 */
-+      .long reboot   /* exception vector: 218 */
-+      .long reboot   /* exception vector: 219 */
-+      .long reboot   /* exception vector: 220 */
-+      .long reboot   /* exception vector: 221 */
-+      .long reboot   /* exception vector: 222 */
-+      .long reboot   /* exception vector: 223 */
-+      .long reboot   /* exception vector: 224 */
-+      .long reboot   /* exception vector: 225 */
-+      .long reboot   /* exception vector: 226 */
-+      .long reboot   /* exception vector: 227 */
-+      .long reboot   /* exception vector: 228 */
-+      .long reboot   /* exception vector: 229 */
-+      .long reboot   /* exception vector: 230 */
-+      .long reboot   /* exception vector: 231 */
-+      .long reboot   /* exception vector: 232 */
-+      .long reboot   /* exception vector: 233 */
-+      .long reboot   /* exception vector: 234 */
-+      .long reboot   /* exception vector: 235 */
-+      .long reboot   /* exception vector: 236 */
-+      .long reboot   /* exception vector: 237 */
-+      .long reboot   /* exception vector: 238 */
-+      .long reboot   /* exception vector: 239 */
-+      .long reboot   /* exception vector: 240 */
-+      .long reboot   /* exception vector: 241 */
-+      .long reboot   /* exception vector: 242 */
-+      .long reboot   /* exception vector: 243 */
-+      .long reboot   /* exception vector: 244 */
-+      .long reboot   /* exception vector: 245 */
-+      .long reboot   /* exception vector: 246 */
-+      .long reboot   /* exception vector: 247 */
-+      .long reboot   /* exception vector: 248 */
-+      .long reboot   /* exception vector: 249 */
-+      .long reboot   /* exception vector: 250 */
-+      .long reboot   /* exception vector: 251 */
-+      .long reboot   /* exception vector: 252 */
-+      .long reboot   /* exception vector: 253 */
-+      .long reboot   /* exception vector: 254 */
-+      .long reboot   /* exception vector: 255 */
-+
-+_reboot:
-+      move    #0x2700,%sr     /* mask interrupts */
-+      movea.l (0x0).w,%a7     /* load stack */
-+      movea.l (0x4).w,%a0     /* jmp to location of reset vector */
-+      jmp     (%a0)
-+
-+reboot:
-+      trap    #15             /* use trap exception to enter supervisor
-+                                 state. Trace mode ( and other group 0
-+                                 and 1 exceptions) *could* screw this up if
-+                                 not vectored to reboot or did not return. */
-Index: rtems/c/src/lib/libbsp/m68k/mo376/console/console.c
-===================================================================
---- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ rtems/c/src/lib/libbsp/m68k/mo376/console/console.c        2008-05-12 20:43:28.000000000 +0200
-@@ -0,0 +1,171 @@
-+/*
-+ *  This file contains the generic console driver shell used
-+ *  by all console drivers using libchip.
-+ *
-+ *  This driver uses the termios pseudo driver.
-+ *
-+ *  COPYRIGHT (c) 1989-1997.
-+ *  On-Line Applications Research Corporation (OAR).
-+ *
-+ *  The license and distribution terms for this file may be
-+ *  found in the file LICENSE in this distribution or at
-+ *  http://www.rtems.com/license/LICENSE.
-+ *
-+ *  $Id: console.c,v 1.9 2008/05/12 18:43:28 joel Exp $
-+ */
-+
-+#include <bsp.h>
-+#include <rtems/libio.h>
-+#include <termios.h>
-+#include "sci.h"
-+
-+/*PAGE
-+ *
-+ *  console_open
-+ *
-+ *  open a port as a termios console.
-+ */
-+
-+rtems_device_driver console_open(
-+  rtems_device_major_number major,
-+  rtems_device_minor_number minor,
-+  void                    * arg
-+)
-+{
-+    rtems_status_code status;
-+
-+    /* the console is opened three times at startup */
-+    /* for standard input, output, and error */
-+
-+    /* Get correct callback structure for the device */
-+
-+    /* argument of FALSE gives us interrupt driven serial io */
-+    /* argument of TRUE  gives us polling   based  serial io */
-+
-+    /* SCI internal uart */
-+
-+    status = rtems_termios_open( major, minor, arg, SciGetTermiosHandlers( TRUE ) );
-+
-+    return status;
-+}
-+
-+/*PAGE
-+ *
-+ *  console_close
-+ *
-+ *  This routine closes a port that has been opened as console.
-+ */
-+
-+rtems_device_driver console_close(
-+  rtems_device_major_number major,
-+  rtems_device_minor_number minor,
-+  void                    * arg
-+)
-+{
-+  return rtems_termios_close (arg);
-+}
-+
-+/*PAGE
-+ *
-+ *  console_read
-+ *
-+ *  This routine uses the termios driver to read a character.
-+ */
-+
-+rtems_device_driver console_read(
-+  rtems_device_major_number major,
-+  rtems_device_minor_number minor,
-+  void                    * arg
-+)
-+{
-+  return rtems_termios_read (arg);
-+}
-+
-+/*PAGE
-+ *
-+ *  console_write
-+ *
-+ *  this routine uses the termios driver to write a character.
-+ */
-+
-+rtems_device_driver console_write(
-+  rtems_device_major_number major,
-+  rtems_device_minor_number minor,
-+  void                    * arg
-+)
-+{
-+  return rtems_termios_write (arg);
-+}
-+
-+/*PAGE
-+ *
-+ *  console_control
-+ *
-+ *  this routine uses the termios driver to process io
-+ */
-+
-+rtems_device_driver console_control(
-+  rtems_device_major_number major,
-+  rtems_device_minor_number minor,
-+  void                    * arg
-+)
-+{
-+  return rtems_termios_ioctl (arg);
-+}
-+
-+/*PAGE
-+ *
-+ *  console_initialize
-+ *
-+ *  Routine called to initialize the console device driver.
-+ */
-+
-+rtems_device_driver console_initialize(
-+  rtems_device_major_number  major,
-+  rtems_device_minor_number  minor_arg,
-+  void                      *arg
-+)
-+{
-+  rtems_status_code          status;
-+
-+  /*
-+   * initialize the termio interface.
-+   */
-+  rtems_termios_initialize();
-+
-+  /*
-+   * register the SCI device name for termios
-+   * do this over in the sci driver init routine?
-+   */
-+
-+  status = rtems_io_register_name( "/dev/sci", major, 0 );
-+
-+  if (status != RTEMS_SUCCESSFUL)
-+  {
-+    rtems_fatal_error_occurred(status);
-+  }
-+
-+  /*
-+   * Link the uart device to the console device
-+   */
-+
-+#if 1
-+  status = rtems_io_register_name( "/dev/console", major, 0 );
-+
-+  if (status != RTEMS_SUCCESSFUL)
-+  {
-+    rtems_fatal_error_occurred(status);
-+  }
-+#else
-+  if ( link( "/dev/sci", "/dev/console") < 0 )
-+  {
-+    rtems_fatal_error_occurred( RTEMS_IO_ERROR );
-+  }
-+#endif
-+
-+  /*
-+   * Console Initialize Succesful
-+   */
-+
-+  return RTEMS_SUCCESSFUL;
-+}
-Index: rtems/c/src/lib/libbsp/m68k/mo376/start/start.S
-===================================================================
---- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ rtems/c/src/lib/libbsp/m68k/mo376/start/start.S    2009-11-29 01:11:56.463558538 +0100
-@@ -0,0 +1,150 @@
-+/*
-+ *  $Id
-+ */
-+
-+#include "mrm332.h"
-+#include <rtems/asm.h>
-+#include <rtems/m68k/sim.h>
-+
-+BEGIN_CODE
-+
-+  /* Put the header necessary for the modified CPU32bug to automatically
-+     start up rtems: */
-+#if 0
-+.long 0xbeefbeef ;
-+#endif
-+.long 0 ;
-+.long start ;
-+
-+.global start
-+      start:
-+
-+      oriw   #0x0700,sr
-+      movel  #end, d0
-+      addl   #_StackSize,d0
-+      movel  d0,sp
-+      movel  d0,a6
-+
-+  /* include in ram_init.S */
-+  /*
-+   * Initalize the SIM module.
-+   * The stack pointer is not usable until the RAM chip select lines
-+   * are configured. The following code must remain inline.
-+   */
-+
-+  /* Module Configuration Register */
-+  /*    see section(s) 3.1.3-3.1.6 of the SIM Reference Manual */
-+      lea     SIMCR, a0
-+      movew   #FRZSW,d0
-+      oriw    #SAM(0,8,SHEN),d0
-+      oriw    #(MM*SIM_MM),d0
-+      oriw    #SAM(SIM_IARB,0,IARB),d0
-+      movew   d0, a0@
-+
-+      jsr     start_c /* Jump to the C startup code */
-+
-+END_CODE
-+
-+#if 0
-+
-+  /* Synthesizer Control Register */
-+  /*    see section(s) 4.8 */
-+  /* end include in ram_init.S */
-+  *SYNCR = (unsigned short int)
-+    ( SAM(MRM_W,15,VCO) | SAM(0x0,14,PRESCALE) | SAM(MRM_Y,8,COUNTER) );
-+  while (! (*SYNCR & SLOCK)); /* protect from clock overshoot */
-+  /* include in ram_init.S */
-+  *SYNCR = (unsigned short int)
-+    ( SAM(MRM_W,15,VCO) | SAM(MRM_X,14,PRESCALE) | SAM(MRM_Y,8,COUNTER) );
-+
-+  /* System Protection Control Register */
-+  /*    !!! can only write to once after reset !!! */
-+  /*    see section 3.8.4 of the SIM Reference Manual */
-+  *SYPCR = (unsigned char)( HME | BME );
-+
-+  /* Periodic Interrupr Control Register */
-+  /*    see section 3.8.2 of the SIM Reference Manual */
-+  *PICR = (unsigned short int)
-+    ( SAM(0,8,PIRQL) | SAM(MRM_PIV,0,PIV) );
-+  /*     ^^^ zero disables interrupt, don't enable here or ram_init will
-+       be wrong. It's enabled below. */
-+
-+  /* Periodic Interrupt Timer Register */
-+  /*    see section 3.8.3 of the SIM Reference Manual */
-+  *PITR = (unsigned short int)( SAM(0x09,0,PITM) );
-+  /*    1.098mS interrupt, assuming 32.768 KHz input clock */
-+
-+  /* Port C Data */
-+  /*    load values before enabled */
-+  *PORTC = (unsigned char) 0x0;
-+
-+  /* Port E and F Data Register */
-+  /*    see section 9 of the SIM Reference Manual */
-+  *PORTE0 = (unsigned char) 0;
-+  *PORTF0 = (unsigned char) 0;
-+
-+  /* Port E and F Data Direction Register */
-+  /*    see section 9 of the SIM Reference Manual */
-+  *DDRE = (unsigned char) 0xff;
-+  *DDRF = (unsigned char) 0xfd;
-+
-+  /* Port E and F Pin Assignment Register */
-+  /*    see section 9 of the SIM Reference Manual */
-+  *PEPAR = (unsigned char) 0;
-+  *PFPAR = (unsigned char) 0;
-+
-+  /* end of SIM initalization code */
-+  /* end include in ram_init.S */
-+
-+  /*
-+   * Initialize RAM by copying the .data section out of ROM (if
-+   * needed) and "zero-ing" the .bss section.
-+   */
-+  {
-+    register char *src = _etext;
-+    register char *dst = _copy_start;
-+
-+    if (_copy_data_from_rom)
-+      /* ROM has data at end of text; copy it. */
-+      while (dst < _edata)
-+      *dst++ = *src++;
-+
-+    /* Zero bss */
-+    for (dst = _clear_start; dst< end; dst++)
-+      {
-+      *dst = 0;
-+      }
-+  }
-+
-+  /*
-+   * Initialize vector table.
-+   */
-+  {
-+    m68k_isr_entry *monitors_vector_table;
-+
-+    m68k_get_vbr(monitors_vector_table);
-+
-+    M68Kvec[  4 ] = monitors_vector_table[  4 ];   /* breakpoints vector */
-+    M68Kvec[  9 ] = monitors_vector_table[  9 ];   /* trace vector */
-+    M68Kvec[ 31 ] = monitors_vector_table[ 31 ];   /* level 7 interrupt */
-+    M68Kvec[ 47 ] = monitors_vector_table[ 47 ];   /* system call vector */
-+    M68Kvec[ 66 ] = monitors_vector_table[ 66 ];   /* user defined */
-+
-+    m68k_set_vbr(&M68Kvec);
-+  }
-+
-+  /*
-+   * Initalize the board.
-+   */
-+  Spurious_Initialize();
-+  console_init();
-+
-+  /*
-+   * Execute main with arguments argc and agrv.
-+   */
-+  boot_card(1,__argv);
-+  reboot();
-+
-+}
-+
-+#endif
-Index: rtems/c/src/lib/libbsp/m68k/mo376/misc/dotests
-===================================================================
---- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ rtems/c/src/lib/libbsp/m68k/mo376/misc/dotests     2009-11-29 01:11:56.463558538 +0100
-@@ -0,0 +1,15 @@
-+#! /bin/bash
-+#
-+#  $Id: dotests,v 1.1 2001/05/25 16:28:46 joel Exp $
-+#
-+
-+mkdir MyTests
-+find -name MyTests -prune -or -name "*.nxe" -exec cp {} MyTests \;
-+
-+stty 1:0:80001cb2:0:3:1c:7f:15:4:5:1:0:11:13:1a:0:12:f:17:16:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0 </dev/ttyS1
-+/bin/cp /dev/ttyS1 screen &
-+cpJob=$!
-+
-+( cd MyTests; for f in *nxe; do m68k-elf-gdb ${f} </dev/null; done )
-+
-+kill -9 $cpJob
-Index: rtems/c/src/lib/libbsp/m68k/mo376/include/bsp.h
-===================================================================
---- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ rtems/c/src/lib/libbsp/m68k/mo376/include/bsp.h    2007-12-11 16:49:20.000000000 +0100
-@@ -0,0 +1,131 @@
-+/*  bsp.h
-+ *
-+ *  This include file contains all mrm board IO definitions.
-+ *
-+ *  COPYRIGHT (c) 1989-1999.
-+ *  On-Line Applications Research Corporation (OAR).
-+ *
-+ *  The license and distribution terms for this file may be
-+ *  found in the file LICENSE in this distribution or at
-+ *  http://www.rtems.com/license/LICENSE.
-+ *
-+ *  $Id: bsp.h,v 1.17 2007/12/11 15:49:20 joel Exp $
-+ */
-+
-+#ifndef _BSP_H
-+#define _BSP_H
-+
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-+
-+#include <bspopts.h>
-+
-+#include <rtems.h>
-+#include <rtems/bspIo.h>
-+#include <rtems/clockdrv.h>
-+#include <rtems/console.h>
-+#include <rtems/iosupp.h>
-+#include <mrm332.h>
-+#include <rtems/m68k/sim.h>
-+#include <rtems/m68k/qsm.h>
-+
-+/*
-+ *  confdefs.h overrides for this BSP:
-+ *   - number of termios serial ports (defaults to 1)
-+ *   - Interrupt stack space is not minimum if defined.
-+ */
-+
-+#define CONSOLE_SCI
-+/* #define CONFIGURE_NUMBER_OF_TERMIOS_PORTS 2 */
-+
-+/*
-+ *  Simple spin delay in microsecond units for device drivers.
-+ *  This is very dependent on the clock speed of the target.
-+ */
-+
-+#define rtems_bsp_delay( microseconds ) \
-+  { register uint32_t         _delay=(microseconds); \
-+    register uint32_t         _tmp=123; \
-+    asm volatile( "0: \
-+                     nbcd      %0 ; \
-+                     nbcd      %0 ; \
-+                     dbf       %1,0b" \
-+                  : "=d" (_tmp), "=d" (_delay) \
-+                  : "0"  (_tmp), "1"  (_delay) ); \
-+  }
-+
-+/* externals */
-+
-+extern char _etext[];
-+extern char _copy_start[];
-+extern char _edata[];
-+extern char _clear_start[];
-+extern char end[];
-+extern char _copy_data_from_rom[];
-+
-+/* constants */
-+
-+#ifdef __START_C__
-+#define STACK_SIZE "#0x800"
-+#else
-+#define STACK_SIZE 0x800
-+#endif
-+
-+/* macros */
-+
-+#define RAW_PUTS(str) \
-+  { register char *ptr = str; \
-+    while (*ptr) SCI_output_char(*ptr++); \
-+  }
-+
-+#define RAW_PUTI(n) { \
-+    register int i, j; \
-+    \
-+    RAW_PUTS("0x"); \
-+    for (i=28;i>=0;i -= 4) { \
-+      j = (n>>i) & 0xf; \
-+      SCI_output_char( (j>9 ? j-10+'a' : j+'0') ); \
-+    } \
-+  }
-+
-+/* miscellaneous stuff assumed to exist */
-+
-+extern m68k_isr_entry M68Kvec[];   /* vector table address */
-+
-+extern int stack_size;
-+extern int stack_start;
-+
-+/*
-+ *  Device Driver Table Entries
-+ */
-+
-+/*
-+ * NOTE: Use the standard Console driver entry
-+ */
-+
-+/*
-+ * NOTE: Use the standard Clock driver entry
-+ */
-+
-+/* functions */
-+
-+void bsp_cleanup( void );
-+
-+m68k_isr_entry set_vector(
-+  rtems_isr_entry     handler,
-+  rtems_vector_number vector,
-+  int                 type
-+);
-+
-+void Spurious_Initialize(void);
-+
-+void _UART_flush(void);
-+
-+void outbyte(char);
-+
-+#ifdef __cplusplus
-+}
-+#endif
-+
-+#endif
-Index: rtems/c/src/lib/libbsp/m68k/mo376/misc/interr.c
-===================================================================
---- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ rtems/c/src/lib/libbsp/m68k/mo376/misc/interr.c    2008-09-06 19:09:08.000000000 +0200
-@@ -0,0 +1,99 @@
-+/*
-+ *  Internal Error Handler
-+ *
-+ *  COPYRIGHT (c) 1989-1999.
-+ *  On-Line Applications Research Corporation (OAR).
-+ *
-+ *  The license and distribution terms for this file may be
-+ *  found in the file LICENSE in this distribution or at
-+ *  http://www.rtems.com/license/LICENSE.
-+ *
-+ *  $Id: interr.c,v 1.5 2008/09/06 17:09:08 ralf Exp $
-+ */
-+
-+#include <rtems/system.h>
-+#include <rtems/score/interr.h>
-+#include <rtems/score/sysstate.h>
-+#include <rtems/score/userext.h>
-+
-+/*PAGE
-+ *
-+ *  _Internal_error_Occurred
-+ *
-+ *  This routine will invoke the fatal error handler supplied by the user
-+ *  followed by the the default one provided by the executive.  The default
-+ *  error handler assumes no hardware is present to help inform the user
-+ *  of the problem.  Halt stores the error code in a known register,
-+ *  disables interrupts, and halts the CPU.  If the CPU does not have a
-+ *  halt instruction, it will loop to itself.
-+ *
-+ *  Input parameters:
-+ *    the_source  - what subsystem the error originated in
-+ *    is_internal - if the error was internally generated
-+ *    the_error   - fatal error status code
-+ *
-+ *  Output parameters:
-+ *    As much information as possible is stored in a CPU dependent fashion.
-+ *    See the CPU dependent code for more information.
-+ *
-+ *  NOTE: The the_error is not necessarily a directive status code.
-+ */
-+
-+/*
-+ * Ugly hack.... _CPU_Fatal_halt() disonnects the bdm. Without this
-+ * change, the_error is only known only to the cpu :).
-+ *
-+ * From "bsp.h" which is not yet available in the arch tree during
-+ * this phase of install. jsg
-+ */
-+void outbyte(char);
-+void bsp_cleanup( void );
-+
-+#define RAW_PUTS(str) \
-+  { register char *ptr = str; \
-+    while (*ptr) outbyte(*ptr++); \
-+  }
-+
-+#define RAW_PUTI(n) { \
-+    register int i, j; \
-+    \
-+    RAW_PUTS("0x"); \
-+    for (i=28;i>=0;i -= 4) { \
-+      j = (n>>i) & 0xf; \
-+      outbyte( (j>9 ? j-10+'a' : j+'0') ); \
-+    } \
-+  }
-+
-+void volatile _Internal_error_Occurred(
-+  Internal_errors_Source  the_source,
-+  bool                    is_internal,
-+  uint32_t                the_error
-+)
-+{
-+
-+  _Internal_errors_What_happened.the_source  = the_source;
-+  _Internal_errors_What_happened.is_internal = is_internal;
-+  _Internal_errors_What_happened.the_error   = the_error;
-+
-+  _User_extensions_Fatal( the_source, is_internal, the_error );
-+
-+  _System_state_Set( SYSTEM_STATE_FAILED );
-+
-+  /* try to print error message to outbyte */
-+  RAW_PUTS("\r\nRTEMS: A fatal error has occured.\r\n");
-+  RAW_PUTS("RTEMS:    fatal error ");
-+  RAW_PUTI( the_error );
-+  RAW_PUTS(" (");
-+  outbyte( (char)((the_error>>24) & 0xff) );
-+  outbyte( (char)((the_error>>16) & 0xff) );
-+  outbyte( (char)((the_error>>8) & 0xff) );
-+  outbyte( (char)(the_error & 0xff) );
-+  RAW_PUTS(").\r\n");
-+
-+  /* configure peripherals for a safe exit */
-+  bsp_cleanup();
-+
-+  _CPU_Fatal_halt( the_error );
-+
-+  /* will not return from this routine */
-+}
-Index: rtems/c/src/lib/libbsp/m68k/mo376/ChangeLog
-===================================================================
---- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ rtems/c/src/lib/libbsp/m68k/mo376/ChangeLog        2008-12-08 06:15:06.000000000 +0100
-@@ -0,0 +1,567 @@
-+2008-12-08    Ralf Corsépius <ralf.corsepius@rtems.org>
-+
-+      * bsp_specs: Backport from CVS-HEAD.
-+
-+2008-09-30    Joel Sherrill <joel.sherrill@oarcorp.com>
-+
-+      * timer/timer.c: Eliminate uses of old benchmark timer names.
-+
-+2008-09-29    Ralf Corsépius <ralf.corsepius@rtems.org>
-+
-+      * Makefile.am: Remove noinst_PROGRAMS (Unused).
-+
-+2008-09-06    Ralf Corsépius <ralf.corsepius@rtems.org>
-+
-+      * misc/interr.c: Convert to "bool".
-+
-+2008-09-05    Joel Sherrill <joel.sherrill@OARcorp.com>
-+
-+      * clock/ckinit.c: The Shared Memory Driver no longer requires the
-+      special IOCTL in Clock_control. This was a hack which has existed
-+      since before the Classic API Timer Manager was implemented. All
-+      implementations of and references to Clock_control were removed.
-+
-+2008-09-05    Ralf Corsépius <ralf.corsepius@rtems.org>
-+
-+      * timer/timer.c: Convert to "bool".
-+
-+2008-08-31    Joel Sherrill <joel.sherrill@oarcorp.com>
-+
-+      * timer/timer.c: Eliminate empty function from every benchmark timer
-+      driver. Fix spelling.
-+
-+2008-08-31    Joel Sherrill <joel.sherrill@oarcorp.com>
-+
-+      * timer/timer.c: Rename timer driver methods to follow RTEMS
-+      programming conventions.
-+
-+2008-08-19    Ralf Corsépius <ralf.corsepius@rtems.org>
-+
-+      * console/sci.c, startup/bspstart.c, startup/start_c.c,
-+      timer/timer.c: Add missing prototypes.
-+
-+2008-06-02    Joel Sherrill <joel.sherrill@oarcorp.com>
-+
-+      * misc/interr.c: Convention calls for leading underscore on private
-+      RTEMS variables.
-+
-+2008-05-14    Joel Sherrill <joel.sherrill@OARcorp.com>
-+
-+      * Makefile.am: Rework to avoid .rel files.
-+
-+2008-05-12    Joel Sherrill <joel.sherrill@OARcorp.com>
-+
-+      * console/console.c, startup/bspstart.c: Refactored and renamed
-+      initialization routines to rtems_initialize_data_structures,
-+      rtems_initialize_before_drivers, rtems_initialize_device_drivers, and
-+      rtems_initialize_start_multitasking. This opened the sequence up so
-+      that bootcard() could provide a more robust and flexible framework
-+      which is easier to explain and understand. This also lays the
-+      groundwork for sharing the division of available memory between the
-+      RTEMS workspace and heap and the C library initialization across all
-+      BSPs.
-+
-+2008-03-03    Joel Sherrill <joel.sherrill@OARcorp.com>
-+
-+      * startup/linkcmds, startup/linkcmds_ROM: Add wildcard to
-+      gcc_except_table section so programs compiled with gcc 4.3.x can
-+      link.
-+
-+2007-12-11    Joel Sherrill <joel.sherrill@OARcorp.com>
-+
-+      * clock/ckinit.c, include/bsp.h, startup/bspstart.c: Eliminate copies
-+      of the Configuration Table. Use the RTEMS provided accessor macros to
-+      obtain configuration fields.
-+
-+2007-12-04    Joel Sherrill <joel.sherrill@OARcorp.com>
-+
-+      * include/bsp.h, startup/bspstart.c: Move interrupt_stack_size field
-+      from CPU Table to Configuration Table. Eliminate CPU Table from all
-+      ports. Delete references to CPU Table in all forms.
-+
-+2007-12-03    Joel Sherrill <joel.sherrill@OARcorp.com>
-+
-+      * startup/bspstart.c: Moved most of the remaining CPU Table fields to
-+      the Configuration Table. This included pretasking_hook,
-+      predriver_hook, postdriver_hook, idle_task, do_zero_of_workspace,
-+      extra_mpci_receive_server_stack, stack_allocate_hook, and
-+      stack_free_hook. As a side-effect of this effort some multiprocessing
-+      code was made conditional and some style clean up occurred.
-+
-+2007-11-26    Joel Sherrill <joel.sherrill@oarcorp.com>
-+
-+      * startup/bspstart.c: Eliminate the interrupt_vector_table field in the
-+      m68k CPU Table since it is never read.
-+
-+2007-05-03    Joel Sherrill <joel@OARcorp.com>
-+
-+      * startup/linkcmds: Handle .data.* sections
-+
-+2007-04-12    Ralf Corsépius <ralf.corsepius@rtems.org>
-+
-+      * bsp_specs: Remove qrtems_debug.
-+
-+2007-03-13    Joel Sherrill <joel@OARcorp.com>
-+
-+      * include/bsp.h: Remove redundant prototypes.
-+
-+2006-12-02    Ralf Corsépius <ralf.corsepius@rtems.org>
-+
-+      * configure.ac: New BUG-REPORT address.
-+
-+2006-11-15    Joel Sherrill <joel@OARcorp.com>
-+
-+      * Makefile.am: Merge c_rtems_main() into boot_card(). This eliminated a
-+      file and simplified initialization.
-+
-+2006-10-17    Ralf Corsépius <ralf.corsepius@rtems.org>
-+
-+      * Makefile.am: Remove superfluous -DASM.
-+
-+2006-10-17    Ralf Corsépius <ralf.corsepius@rtems.org>
-+
-+      * configure.ac: Require autoconf-2.60. Require automake-1.10.
-+
-+2006-09-11    Joel Sherrill <joel@OARcorp.com>
-+
-+      * console/console.c, console/sci.c, console/sci.h, spurious/spinit.c,
-+      startup/bspclean.c, startup/start_c.c: Convert C++ style comments to
-+      C style.
-+
-+2006-02-08    Joel Sherrill <joel@OARcorp.com>
-+
-+      * startup/linkcmds, startup/linkcmds_ROM: Add sections required by
-+      newer gcc versions.
-+
-+2006-01-11    Ralf Corsepius <ralf.corsepius@rtems.org>
-+
-+      * Makefile.am: Add preinstall.am.
-+
-+2005-05-26    Ralf Corsepius <ralf.corsepius@rtems.org>
-+
-+      * include/bsp.h: New header guard.
-+
-+2005-01-07    Ralf Corsepius <ralf.corsepius@rtems.org>
-+
-+      * Makefile.am: Eliminate CFLAGS_OPTIMIZE_V.
-+
-+2005-01-05    Ralf Corsepius <ralf.corsepius@rtems.org>
-+
-+      * console/sci.c: Remove CVS Log.
-+
-+2005-01-04    Joel Sherrill <joel@OARcorp.com>
-+
-+      * console/sci.c: Remove warnings.
-+
-+2005-01-02    Ralf Corsepius <ralf.corsepius@rtems.org>
-+
-+      * Makefile.am: Remove build-variant support.
-+
-+2004-11-25    Joel Sherrill <joel@OARcorp.com>
-+
-+      * startup/linkcmds, startup/linkcmds_ROM: Add new bss sections .bss.*
-+      and .gnu.linkonce.b*.
-+
-+2004-09-24    Ralf Corsepius <ralf_corsepius@rtems.org>
-+
-+      * configure.ac: Require automake > 1.9.
-+
-+2004-04-23    Ralf Corsepius <ralf_corsepius@rtems.org>
-+
-+      PR 610/bsps
-+      * Makefile.am: Add include/tm27.h, Cosmetics.
-+      * include/tm27.h: Final cosmetics.
-+
-+2004-04-22    Ralf Corsepius <ralf_corsepius@rtems.org>
-+
-+      * include/bsp.h: Split out tmtest27 support.
-+      * include/tm27.h: New.
-+
-+2004-04-21    Ralf Corsepius <ralf_corsepius@rtems.org>
-+
-+      PR 613/bsps
-+      * include/bsp.h: Remove MAX_LONG_TEST_DURATION.
-+
-+2004-04-21    Ralf Corsepius <ralf_corsepius@rtems.org>
-+
-+      PR 614/bsps
-+      * include/bsp.h: Remove MAX_SHORT_TEST_DURATION (Unused).
-+
-+2004-04-03    Ralf Corsepiu <ralf_corsepiu@rtems.org>
-+
-+      * c/src/lib/libbsp/m68k/mrm332/include/bsp.h,
-+      c/src/lib/libbsp/m68k/mrm332/start/start.S,
-+      c/src/lib/libbsp/m68k/mrm332/startup/start_c.c: Include
-+      <rtems/m68k/sim.h> instead of <sim.h>.
-+      * c/src/lib/libbsp/m68k/mrm332/include/bsp.h: Include
-+      <rtems/m68k/qsm.h> instead of <qsm.h>.
-+
-+2004-04-02    Ralf Corsepius <ralf_corsepius@rtems.org>
-+
-+      * start/start.S: Include <rtems/asm.h> instead of <asm.h>.
-+
-+2004-04-01    Ralf Corsepius <ralf_corsepius@rtems.org>
-+
-+      * include/bsp.h: Include <rtems/clockdrv.h> instead of <clockdrv.h>.
-+      * include/bsp.h: Include <rtems/console.h> instead of <console.h>.
-+      * include/bsp.h: Include <rtems/iosupp.h> instead of <iosupp.h>.
-+
-+2004-03-31    Ralf Corsepius <ralf_corsepius@rtems.org>
-+
-+      * clock/ckinit.c, console/sci.c, console/sci.h, include/bsp.h,
-+      misc/interr.c, startup/bspstart.c, timer/timer.c: Convert to using
-+      c99 fixed size types.
-+
-+2004-02-19    Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-+
-+      * Makefile.am: Reflect changes to bsp.am. 
-+      Preinstall dist_project_lib*.
-+
-+2004-02-14    Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-+
-+      * Makefile.am: Reflect changes to bsp.am.
-+
-+2004-02-12    Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-+
-+      * Makefile.am: Use CPPASCOMPILE instead of CCASCOMPILE.
-+
-+2004-02-06    Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-+
-+      * Makefile.am: Pickup files from ../../m68k/shared instead of
-+      ../shared. Reformat.
-+
-+2004-01-28    Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-+
-+      * configure.ac: Add nostdinc to AUTOMAKE_OPTIONS.
-+
-+2004-01-28    Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-+
-+      * Makefile.am: Don't include subdirs.am.
-+
-+2004-01-28    Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-+
-+      * Makefile.am: Fix typo.
-+
-+2004-01-28    Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-+
-+      * Makefile.am: Merge-in clock/Makefile.am, console/Makefile.am,
-+      spurious/Makefile.am, startup/Makefile.am, timer/Makefile.am,
-+      wrapup/Makefile.am.
-+      Use automake compilation rules.
-+      * clock/Makefile.am, console/Makefile.am, spurious/Makefile.am,
-+      startup/Makefile.am, timer/Makefile.am, wrapup/Makefile.am:
-+      Remove.
-+      * configure.ac: Reflect changes above.
-+
-+2004-01-21    Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-+
-+      * Makefile.am: Add PREINSTALL_DIRS.
-+      * wrapup/Makefile.am: Reflect changes to libcpu.
-+
-+2004-01-20    Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-+
-+      * wrapup/Makefile.am: Reflect changes to libcpu.
-+
-+2004-01-14    Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-+
-+      * Makefile.am: Re-add dirstamps to PRE/TMPINSTALL_FILES.
-+      Add PRE/TMPINSTALL_FILES to CLEANFILES.
-+      * startup/Makefile.am: Ditto.
-+
-+2004-01-07    Joel Sherrill <joel@OARcorp.com>
-+
-+      * times, console/sci.c: Remove efi68k and efi332 references as they are
-+      no longer in the tree.
-+
-+2004-01-07    Joel Sherrill <joel@OARcorp.com>
-+
-+      * timer/timer.c: Remove efi68k and efi332 references as they are no
-+      longer in the tree.
-+
-+2004-01-07    Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-+
-+      * start/Makefile.am: Remove.
-+      * Makefile.am: Merge-in start/Makefile.am.
-+      * configure.ac: Reflect changes above.
-+
-+2004-01-05    Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-+
-+      * wrapup/Makefile.am: Eliminate $(LIB). 
-+      Use noinst_DATA to trigger building libbsp.a.
-+
-+2003-12-13    Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-+
-+      * start/Makefile.am: s,${PROJECT_RELEASE}/lib,$(PROJECT_LIB),g.
-+      * startup/Makefile.am: s,${PROJECT_RELEASE}/lib,$(PROJECT_LIB),g.
-+
-+2003-12-12    Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-+
-+      * start/Makefile.am: Use mkdir_p. Remove dirs from PRE/TMPINSTALL_FILES.
-+      * startup/Makefile.am: Use mkdir_p. Remove dirs from PRE/TMPINSTALL_FILES.
-+
-+2003-12-12    Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-+
-+      * configure.ac: Require automake >= 1.8, autoconf >= 2.59.
-+
-+2003-12-10    Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-+
-+      * start/Makefile.am: Misc cleanups and fixes.
-+      * startup/Makefile.am: Misc cleanups and fixes.
-+      * wrapup/Makefile.am: Misc cleanups and fixes.
-+
-+2003-12-03    Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-+
-+      * Makefile.am: Add preinstallation dirstamp support.
-+      * clock/Makefile.am: Cosmetics.
-+      * console/Makefile.am: Cosmetics.
-+      * spurious/Makefile.am: Cosmetics.
-+      * startup/Makefile.am: Cosmetics.
-+      * timer/Makefile.am: Cosmetics.
-+      * wrapup/Makefile.am: Cosmetics.
-+
-+2003-12-02    Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-+
-+      * clock/Makefile.am: Remove all-local: $(ARCH).
-+      * console/Makefile.am: Remove all-local: $(ARCH).
-+      * spurious/Makefile.am: Remove all-local: $(ARCH).
-+      * start/Makefile.am: Remove all-local: $(ARCH).
-+      * startup/Makefile.am: Remove all-local: $(ARCH).
-+      * timer/Makefile.am: Remove all-local: $(ARCH).
-+      * wrapup/Makefile.am: Remove all-local: $(ARCH).
-+
-+2003-09-29    Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-+
-+      * Makefile.am: Merge-in include/Makefile.am.
-+      Reflect changes to bsp.am.
-+      * include/Makefile.am: Remove.
-+      * configure.ac: Reflect changes above.
-+
-+2003-09-19    Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-+
-+      * bsp_specs: Remove *lib:.
-+
-+2003-09-15    Joel Sherrill <joel@OARcorp.com>
-+
-+      PR 483/bsps
-+      * startup/bspstart.c, startup/start_c.c: Spurious interrupt handlers
-+      cannot be installed until RTEMS has initialized the vector table.
-+
-+2003-09-04    Joel Sherrill <joel@OARcorp.com>
-+
-+      * clock/ckinit.c, console/console.c, include/bsp.h, misc/interr.c,
-+      spurious/spinit.c, startup/bspclean.c, startup/bspstart.c,
-+      timer/timer.c: URL for license changed.
-+
-+2003-08-20    Joel Sherrill <joel@OARcorp.com>
-+
-+      * console/console.c: Correct copyright statements.
-+
-+2003-08-18    Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-+
-+      * Makefile.am: Reflect having moved aclocal/.
-+
-+2003-08-16    Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-+
-+      * Makefile.am: Reflect having moved automake/.
-+      * clock/Makefile.am: Reflect having moved automake/.
-+      * console/Makefile.am: Reflect having moved automake/.
-+      * include/Makefile.am: Reflect having moved automake/.
-+      * spurious/Makefile.am: Reflect having moved automake/.
-+      * start/Makefile.am: Reflect having moved automake/.
-+      * startup/Makefile.am: Reflect having moved automake/.
-+      * timer/Makefile.am: Reflect having moved automake/.
-+      * wrapup/Makefile.am: Reflect having moved automake/.
-+
-+2003-08-11    Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-+
-+      PR 452/bsps
-+      * startup/Makefile.am: Remove USE_INIT_FINI.
-+
-+2003-08-11    Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-+
-+      * configure.ac: Use rtems-bugs@rtems.com as bug report email address.
-+
-+2003-08-06    Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-+
-+      PR 445/bsps
-+      * bsp_specs: Remove -D__embedded__ -Asystem(embedded) from cpp.
-+      Remove cpp, old_cpp (now unused).
-+
-+2003-03-06    Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-+
-+      * configure.ac: Remove AC_CONFIG_AUX_DIR.
-+
-+2003-02-11    Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-+
-+      * configure.ac: AM_INIT_AUTOMAKE([1.7.2]).
-+
-+2003-02-11    Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-+
-+      * configure.ac: AC_PREREQ(2.57).
-+
-+2003-01-20    Duane Gustavus <duane@unt.edu>
-+
-+      * console/sci.c, include/mrm332.h, startup/linkcmds,
-+      startup/linkcmds_ROM: Various updates to make this run properly
-+      from ROM.
-+
-+2002-12-20    Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-+
-+      * clock/Makefile.am: Don't include @RTEMS_BSP@.cfg.
-+      * console/Makefile.am: Don't include @RTEMS_BSP@.cfg.
-+      * spurious/Makefile.am: Don't include @RTEMS_BSP@.cfg.
-+      * start/Makefile.am: Don't include @RTEMS_BSP@.cfg.
-+      * startup/Makefile.am: Don't include @RTEMS_BSP@.cfg.
-+      * timer/Makefile.am: Don't include @RTEMS_BSP@.cfg.
-+
-+2002-12-12    Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-+
-+      * start/Makefile.am: Use install-data-local to install startfile.
-+
-+2002-12-10    Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-+
-+      * wrapup/Makefile.am: Don't include @RTEMS_BSP@.cfg.
-+
-+2002-11-04    Joel Sherrill <joel@OARcorp.com>
-+
-+      * console/sci.c, spurious/spinit.c: Removed warnings.
-+
-+2002-10-21    Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-+
-+      * .cvsignore: Reformat.
-+      Add autom4te*cache.
-+      Remove autom4te.cache.
-+
-+2002-09-08    Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-+
-+      * Makefile.am: ACLOCAL_AMFLAGS = -I ../../../../../../aclocal.
-+
-+2002-08-21    Joel Sherrill <joel@OARcorp.com>
-+
-+      * wrapup/Makefile.am: PR217 required that the idle task be moved to
-+      libcpu so it could be more acutely aware of the CPU model.  This
-+      file was modified to pick up the idle task from there.
-+
-+2002-08-21    Joel Sherrill <joel@OARcorp.com>
-+
-+      * bsp_specs: Added support for -nostdlibs.
-+
-+2002-08-11    Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-+
-+      * clock/Makefile.am: Use .$(OBJEXT) instead of .o.
-+      * console/Makefile.am: Use .$(OBJEXT) instead of .o.
-+      * spurious/Makefile.am: Use .$(OBJEXT) instead of .o.
-+      * start/Makefile.am: Use .$(OBJEXT) instead of .o.
-+      * startup/Makefile.am: Use .$(OBJEXT) instead of .o.
-+      * timer/Makefile.am: Use .$(OBJEXT) instead of .o.
-+      * wrapup/Makefile.am: Use .$(OBJEXT) instead of .o.
-+
-+2002-08-05    Joel Sherrill <joel@OARcorp.com>
-+
-+      * Per PR260 eliminate use of make-target-options.  This impacted
-+      RTEMS allowing a distinction between the CPU32 and CPU32+ in the
-+      SuperCore and required that the m68k optimized memcpy be moved
-+      to libcpu.
-+      * wrapup/Makefile.am: Pick up memcpy.o from libcpu.
-+
-+2002-07-21    Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-+
-+      * start/Makefile.am: Eliminate PGM.
-+      Add bsplib_DATA = $(PROJECT_RELEASE)/lib/start$(LIB_VARIANT).o.
-+
-+2002-07-19    Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-+
-+      * startup/Makefile.am: Add bsplib_DATA = linkcmds linkcmds_ROM.
-+
-+2002-07-04    Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-+
-+      * wrapup/Makefile.am: Eliminate TMPINSTALL_FILES.
-+      Remove $(OBJS) from all-local.
-+
-+2002-06-29    Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-+
-+      * wrapup/Makefile.am: Remove preinstallation of libbsp.a,
-+
-+2001-05-09    Joel Sherrill <joel@OARcorp.com>
-+
-+      * startup/linkcmds: In support of gcc 3.1, added one of more
-+      of the sections .jcr, .rodata*, .data.*, .gnu.linkonce.s2.*,
-+      .gnu.linkonce.sb2.*, and .gnu.linkonce.s.*.  Spacing corrections
-+      and direction of segments to memory regions may also have been
-+      addressed.  This was a sweep across all BSPs.
-+ 
-+2002-03-27    Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-+
-+      * configure.ac:
-+      AC_INIT(package,_RTEMS_VERSION,_RTEMS_BUGS).
-+      AM_INIT_AUTOMAKE([no-define foreign 1.6]).
-+      * clock/Makefile.am: Remove AUTOMAKE_OPTIONS.
-+      * Makefile.am: Remove AUTOMAKE_OPTIONS.
-+      * console/Makefile.am: Remove AUTOMAKE_OPTIONS.
-+      * include/Makefile.am: Remove AUTOMAKE_OPTIONS.
-+      * spurious/Makefile.am: Remove AUTOMAKE_OPTIONS.
-+      * start/Makefile.am: Remove AUTOMAKE_OPTIONS.
-+      * startup/Makefile.am: Remove AUTOMAKE_OPTIONS.
-+      * timer/Makefile.am: Remove AUTOMAKE_OPTIONS.
-+      * wrapup/Makefile.am: Remove AUTOMAKE_OPTIONS.
-+
-+2002-02-28    Mike Panetta <ahuitzot@mindspring.com>
-+
-+      * console/sci.c, console/sci.h, 
-+      console/console.c: Added new SCI driver.
-+      * start/start.c: Removed file.
-+      * start/start.S: New file, the asm portion of the updated start code.
-+      * start/configure.am: Added start.S, removed start.c
-+      * startup/start_c.c: New file, the C portion of the updated start code.         Contains most of the code that was in the old start.c. 
-+      * startup/configure.am: Added start_c.c to C_FILES.
-+      * include/bsp.h: Added include <rtems/bspIo.h>
-+
-+2001-11-30    Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-+
-+      * configure.ac: Introduce RTEMS_BSP_CONFIGURE.
-+
-+2001-10-11    Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-+
-+      * .cvsignore: Add autom4te.cache for autoconf > 2.52.
-+      * configure.in: Remove.
-+      * configure.ac: New file, generated from configure.in by autoupdate.
-+
-+2001-09-27    Joel Sherrill <joel@OARcorp.com>
-+
-+      * include/bsp.h: Renamed delay() to rtems_bsp_delay().
-+
-+2001-09-27    Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-+
-+      * include/Makefile.am: Use 'TMPINSTALL_FILES ='.
-+
-+2001-05-26    Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-+
-+      * configure.in: Add bspopts.h.
-+      * include/.cvsignore: Add bspopts.h*, stamp-h*.
-+      * include/Makefile.am: Use *_HEADERS instead of *H_FILES.
-+      * include/bsp.h: Include bspopts.h.
-+
-+2001-05-25    Joel Sherrill <joel@OARcorp.com>
-+
-+      * clock/Makefile.am, console/Makefile.am, spurious/Makefile.am,
-+      start/Makefile.am, startup/Makefile.am, timer/Makefile.am,
-+      wrapup/Makefile.am: Modified to include compile.am.
-+      * startup/bspstart.c: Removed include of <libcsupport.h>
-+
-+2000-05-25    Matt Cross <profesor@gweep.net>
-+
-+      * New MRM332 BSP for the Mini RoboMind board based
-+      on the 68332 microcontroller designed and build by Mark
-+      Castelluccio.  For details on the MRM see http://www.robominds.com.
-+      * .cvsignore, ChangeLog Makefile.am, README, bsp_specs,
-+      clock/.cvsignore, clock/Makefile.am, clock/ckinit.c, configure.in,
-+      console/.cvsignore, console/Makefile.am, console/console.c,
-+      include/.cvsignore, include/Makefile.am, include/bsp.h,
-+      include/mrm332.h, misc/dotests, misc/gdbinit68, misc/interr.c,
-+      spurious/.cvsignore, spurious/Makefile.am, spurious/spinit.c,
-+      start/.cvsignore, start/Makefile.am, start/start.c, startup/.cvsignore,
-+      startup/Makefile.am, startup/bspclean.c, startup/bspstart.c,
-+      startup/except_vect_332_ROM.S, startup/linkcmds, startup/linkcmds_ROM,
-+      timer/.cvsignore, timer/Makefile.am, timer/timer.c, times,
-+      wrapup/.cvsignore, wrapup/Makefile.am: Initial files.
-+
-Index: rtems/c/src/lib/libbsp/m68k/mo376/startup/bspclean.c
-===================================================================
---- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ rtems/c/src/lib/libbsp/m68k/mo376/startup/bspclean.c       2006-09-11 23:43:56.000000000 +0200
-@@ -0,0 +1,27 @@
-+/*  bsp_cleanup()
-+ *
-+ *  This routine cleans up in the sense that it places the board
-+ *  in a safe state and flushes the I/O buffers before exiting.
-+ *
-+ *  INPUT:  NONE
-+ *
-+ *  OUTPUT: NONE
-+ *
-+ *  COPYRIGHT (c) 1989-1999.
-+ *  On-Line Applications Research Corporation (OAR).
-+ *
-+ *  The license and distribution terms for this file may be
-+ *  found in the file LICENSE in this distribution or at
-+ *  http://www.rtems.com/license/LICENSE.
-+ *
-+ *  $Id: bspclean.c,v 1.5 2006/09/11 21:43:56 joel Exp $
-+ */
-+
-+#include <bsp.h>
-+
-+void bsp_cleanup(void)
-+{
-+    /* interrupt driven stdio must be flushed */
-+    _CPU_ISR_Set_level( 7 );
-+    /*_UART_flush(); */
-+}
-Index: rtems/c/src/lib/libbsp/m68k/mo376/timer/timer.c
-===================================================================
---- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ rtems/c/src/lib/libbsp/m68k/mo376/timer/timer.c    2008-09-30 18:28:07.000000000 +0200
-@@ -0,0 +1,61 @@
-+/*
-+ *  COPYRIGHT (c) 1989-1999.
-+ *  On-Line Applications Research Corporation (OAR).
-+ *
-+ *  The license and distribution terms for this file may be
-+ *  found in the file LICENSE in this distribution or at
-+ *  http://www.rtems.com/license/LICENSE.
-+ *
-+ *  $Id: timer.c,v 1.10.2.1 2008/09/30 16:28:07 joel Exp $
-+ */
-+
-+#include <bsp.h>
-+
-+bool benchmark_timer_find_average_overhead;
-+
-+extern rtems_isr Clock_isr(void);
-+
-+void benchmark_timer_initialize( void )
-+{
-+}
-+
-+/*
-+ *  The following controls the behavior of benchmark_timer_read().
-+ *
-+ *  FIND_AVG_OVERHEAD *  instructs the routine to return the "raw" count.
-+ *
-+ *  AVG_OVEREHAD is the overhead for starting and stopping the timer.  It
-+ *  is usually deducted from the number returned.
-+ *
-+ *  LEAST_VALID is the lowest number this routine should trust.  Numbers
-+ *  below this are "noise" and zero is returned.
-+ */
-+
-+#define AVG_OVERHEAD      0  /* It typically takes X.X microseconds */
-+                             /* (Y countdowns) to start/stop the timer. */
-+                             /* This value is in microseconds. */
-+#define LEAST_VALID       1  /* Don't trust a clicks value lower than this */
-+
-+/*
-+ * Return timer value in 1/2-microsecond units
-+ */
-+int benchmark_timer_read( void )
-+{
-+  uint32_t         total;
-+  total = 0;
-+
-+  if ( benchmark_timer_find_average_overhead == true )
-+    return total;          /* in XXX microsecond units */
-+
-+  if ( total < LEAST_VALID )
-+    return 0;            /* below timer resolution */
-+
-+  return (total - AVG_OVERHEAD);
-+}
-+
-+void benchmark_timer_disable_subtracting_average_overhead(
-+  bool find_flag
-+)
-+{
-+  benchmark_timer_find_average_overhead = find_flag;
-+}
-Index: rtems/c/src/lib/libbsp/m68k/mo376/clock/ckinit.c
-===================================================================
---- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ rtems/c/src/lib/libbsp/m68k/mo376/clock/ckinit.c   2008-09-06 00:05:15.000000000 +0200
-@@ -0,0 +1,96 @@
-+/*  Clock_init()
-+ *
-+ *  This routine initailizes the periodic interrupt timer on
-+ *  the Motorola 68332.
-+ *
-+ *  Input parameters:  NONE
-+ *
-+ *  Output parameters:  NONE
-+ *
-+ *  COPYRIGHT (c) 1989-1999.
-+ *  On-Line Applications Research Corporation (OAR).
-+ *
-+ *  The license and distribution terms for this file may be
-+ *  found in the file LICENSE in this distribution or at
-+ *  http://www.rtems.com/license/LICENSE.
-+ *
-+ *  $Id: ckinit.c,v 1.7 2008/09/05 22:05:15 joel Exp $
-+ */
-+
-+#include <stdlib.h>
-+#include <bsp.h>
-+#include <rtems/libio.h>
-+#include <mrm332.h>
-+
-+#define CLOCK_VECTOR   MRM_PIV
-+
-+uint32_t         Clock_isrs;        /* ISRs until next tick */
-+volatile uint32_t         Clock_driver_ticks;
-+                                    /* ticks since initialization */
-+rtems_isr_entry  Old_ticker;
-+
-+void Clock_exit( void );
-+
-+/*
-+ * These are set by clock driver during its init
-+ */
-+
-+rtems_device_major_number rtems_clock_major = ~0;
-+rtems_device_minor_number rtems_clock_minor;
-+
-+rtems_isr Clock_isr(rtems_vector_number vector)
-+{
-+  Clock_driver_ticks += 1;
-+
-+  if ( Clock_isrs == 1 ) {
-+    rtems_clock_tick();
-+    Clock_isrs = rtems_configuration_get_microseconds_per_tick() / 1000;
-+  }
-+  else
-+    Clock_isrs -= 1;
-+}
-+
-+void Install_clock(
-+  rtems_isr_entry clock_isr
-+)
-+{
-+  Clock_driver_ticks = 0;
-+  Clock_isrs = rtems_configuration_get_microseconds_per_tick() / 1000;
-+
-+  Old_ticker = (rtems_isr_entry) set_vector( clock_isr, CLOCK_VECTOR, 1 );
-+
-+  /* enable 1mS interrupts */
-+  *PITR = (unsigned short int)( SAM(0x09,0,PITM) );/* load counter */
-+  *PICR = (unsigned short int)                     /* enable interrupt */
-+    ( SAM(ISRL_PIT,8,PIRQL) | SAM(CLOCK_VECTOR,0,PIV) );
-+
-+  atexit( Clock_exit );
-+}
-+
-+void Clock_exit( void )
-+{
-+  /* shutdown the periodic interrupt */
-+  *PICR = (unsigned short int)
-+    ( SAM(0,8,PIRQL) | SAM(CLOCK_VECTOR,0,PIV) );
-+  /*     ^^ zero disables interrupt */
-+
-+  /* do not restore old vector */
-+}
-+
-+rtems_device_driver Clock_initialize(
-+  rtems_device_major_number major,
-+  rtems_device_minor_number minor,
-+  void *pargp
-+)
-+{
-+  Install_clock( Clock_isr );
-+
-+  /*
-+   * make major/minor avail to others such as shared memory driver
-+   */
-+
-+  rtems_clock_major = major;
-+  rtems_clock_minor = minor;
-+
-+  return RTEMS_SUCCESSFUL;
-+}
-Index: rtems/c/src/lib/libbsp/m68k/mo376/misc/gdbinit68
-===================================================================
---- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ rtems/c/src/lib/libbsp/m68k/mo376/misc/gdbinit68   2009-11-29 01:11:56.471556761 +0100
-@@ -0,0 +1,16 @@
-+#
-+#  $Id: gdbinit68,v 1.1 2001/05/25 16:28:46 joel Exp $
-+#
-+echo Setting up the environment for mrm debuging.\n
-+
-+target bdm /dev/bdmcpu320
-+bdm_setdelay 1000
-+bdm_autoreset on
-+set remotecache off
-+bdm_timetocomeup 0
-+bdm_init
-+bdm_reset
-+set $sfc=5
-+set $dfc=5
-+r
-+q
-Index: rtems/c/src/lib/libbsp/m68k/mo376/configure.ac
-===================================================================
---- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ rtems/c/src/lib/libbsp/m68k/mo376/configure.ac     2006-12-02 06:55:13.000000000 +0100
-@@ -0,0 +1,20 @@
-+## Process this file with autoconf to produce a configure script.
-+## 
-+## $Id: configure.ac,v 1.16 2006/12/02 05:55:13 ralf Exp $
-+
-+AC_PREREQ(2.60)
-+AC_INIT([rtems-c-src-lib-libbsp-m68k-mrm332],[_RTEMS_VERSION],[http://www.rtems.org/bugzilla])
-+AC_CONFIG_SRCDIR([bsp_specs])
-+RTEMS_TOP(../../../../../..)
-+
-+RTEMS_CANONICAL_TARGET_CPU
-+AM_INIT_AUTOMAKE([no-define nostdinc foreign 1.10])
-+RTEMS_BSP_CONFIGURE
-+
-+RTEMS_PROG_CC_FOR_TARGET
-+RTEMS_CANONICALIZE_TOOLS
-+RTEMS_PROG_CCAS
-+
-+# Explicitly list all Makefiles here
-+AC_CONFIG_FILES([Makefile])
-+AC_OUTPUT
-Index: rtems/c/src/lib/libbsp/m68k/mo376/README
-===================================================================
---- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ rtems/c/src/lib/libbsp/m68k/mo376/README   2009-11-29 01:11:56.471556761 +0100
-@@ -0,0 +1,24 @@
-+#
-+#  $Id: README,v 1.1 2001/05/25 16:28:46 joel Exp $
-+#
-+
-+Description: mrm332
-+============
-+CPU: MC68332 @16 or 25MHz
-+RAM: 32k or 512k
-+ROM: 512k flash
-+
-+   The Mini RoboMind is a small board based on the 68332 microcontroller
-+designed and build by Mark Castelluccio.  For details, see:
-+
-+        http://www.robominds.com
-+
-+   This BSP was ported from the efi332 BSP by Matt Cross (profesor@gweep.net),
-+the efi332 BSP was written by John S Gwynne.
-+
-+TODO:
-+=====
-+- integrate the interrupt driven stdin/stdout into RTEMS to (a) reduce
-+  the interrupt priority and (2) to prevent it from blocking.
-+- add a timer driver for the tmtest set.
-+
-Index: rtems/c/src/lib/libbsp/m68k/mo376/Makefile.am
-===================================================================
---- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ rtems/c/src/lib/libbsp/m68k/mo376/Makefile.am      2008-09-29 03:47:41.000000000 +0200
-@@ -0,0 +1,50 @@
-+##
-+## $Id: Makefile.am,v 1.27.2.1 2008/09/29 01:47:41 ralf Exp $
-+##
-+
-+ACLOCAL_AMFLAGS = -I ../../../../aclocal
-+
-+include $(top_srcdir)/../../../../automake/compile.am
-+include $(top_srcdir)/../../bsp.am
-+
-+dist_project_lib_DATA = bsp_specs
-+
-+include_HEADERS = include/bsp.h
-+include_HEADERS += include/tm27.h
-+
-+nodist_include_HEADERS = include/bspopts.h
-+DISTCLEANFILES = include/bspopts.h
-+
-+include_HEADERS += include/mrm332.h
-+nodist_include_HEADERS += ../../shared/include/coverhd.h
-+
-+EXTRA_DIST = times
-+
-+EXTRA_DIST += start/start.S
-+start.$(OBJEXT): start/start.S
-+      $(CPPASCOMPILE) -o $@ -c $<
-+
-+project_lib_DATA = start.$(OBJEXT)
-+
-+dist_project_lib_DATA += startup/linkcmds startup/linkcmds_ROM
-+
-+startup_SOURCES = startup/start_c.c ../../shared/bsplibc.c \
-+    ../../shared/bsppost.c startup/bspstart.c startup/bspclean.c \
-+    ../../shared/bootcard.c ../../m68k/shared/m68kpretaskinghook.c \
-+    ../../shared/sbrk.c ../../m68k/shared/setvec.c \
-+    ../../shared/gnatinstallhandler.c startup/except_vect_332_ROM.S
-+clock_SOURCES = clock/ckinit.c
-+console_SOURCES = console/console.c console/sci.c console/sci.h
-+spurious_SOURCES = spurious/spinit.c
-+timer_SOURCES = timer/timer.c
-+
-+noinst_LIBRARIES = libbsp.a
-+libbsp_a_SOURCES = $(startup_SOURCES) $(clock_SOURCES) $(console_SOURCES) \
-+    $(spurious_SOURCES) $(timer_SOURCES)
-+
-+libbsp_a_LIBADD = \
-+    ../../../libcpu/@RTEMS_CPU@/shared/cache.rel \
-+    ../../../libcpu/@RTEMS_CPU@/shared/misc.rel
-+
-+include $(srcdir)/preinstall.am
-+include $(top_srcdir)/../../../../automake/local.am
-Index: rtems/c/src/lib/libbsp/m68k/mo376/console/sci.c
-===================================================================
---- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ rtems/c/src/lib/libbsp/m68k/mo376/console/sci.c    2008-08-19 12:23:15.000000000 +0200
-@@ -0,0 +1,1596 @@
-+/*****************************************************************************
-+* File:     sci.c
-+*
-+* Desc:     This file contains the console IO routines for the SCI port.
-+*           There are two interfaces in this module. One is for the rtems
-+*           termios/console code and the other is a device driver interface.
-+*           This module works together with the termio module which is
-+*           sometimes referred to as the "line disciplines" which implements
-+*           terminal i/o processing like tabs, backspaces, and newlines.
-+*           The rtems printf uses interrupt io and the rtems printk routine
-+*           uses polled io which is better for debugging.
-+*
-+* Index:    Documentation
-+*           Section A  - Include Files
-+*           Section B  - Manifest Constants
-+*           Section C  - External Data
-+*           Section D  - External Functions
-+*           Section E  - Local Functions
-+*           Section F  - Local Variables
-+*           Section G  - A circular data buffer for rcv chars
-+*           Section H  - RTEMS termios callbacks for the interrupt api
-+*           Section I  - RTEMS termios callbacks for the polled api
-+
-+*           Section 0  - Miscellaneous routines
-+*           Section 1  - Routines to manipulate the circular buffer
-+*           Section 2  - Interrupt based entry points for the termios module
-+*           Section 3  - Polling based entry points for the termios module
-+*           Section 4  - Device driver public api entry points
-+*           Section 5  - Hardware level routines
-+*           Section 6  - Testing and debugging code
-+*
-+* Refer:    Motorola QSM Reference Manual - Chapter 5 - SCI sub-module
-+*
-+* Note:     See bsp.h,confdefs.h,system.h for installing drivers into RTEMS.
-+*
-+* $Id: sci.c,v 1.12 2008/08/19 10:23:15 ralf Exp $
-+*
-+*****************************************************************************/
-+\f
-+/*****************************************************************************
-+  Overview of serial port console terminal input/output
-+*****************************************************************************/
-+
-+/*
-+   +-----------+                               +---------+
-+   |    app    |                               |   app   |
-+   +-----------+                               +---------+
-+         |                                          |
-+         | (printf,scanf,etc.)                      |
-+         v                                          |
-+   +-----------+                                    |
-+   |    libc   |                                    |
-+   +-----------+                                    |
-+         |                                          |
-+         |                                          |
-+         |     (open,close,read,write,ioctl)        |
-+   ======|==========================================|========================
-+         | /dev/console                             | /dev/sci
-+         | (stdin,stdout,stderr)                    |
-+   ======|==========================================|========================
-+         |                                          |
-+         |                                          |
-+         v                                          v
-+   +-----------+         +-----------+         +---------+
-+   |  console  |  <--->  |  termios  |  <--->  |   sci   |
-+   |  driver   |         |  module   |         |  driver |
-+   +-----------+         +-----------+         +---------+
-+                                                    |
-+                                                    |
-+                                                    v
-+                                               +---------+
-+                                               |         |
-+                                               |  uart   |
-+                                               |         |
-+                                               +---------+
-+*/
-+\f
-+
-+/*****************************************************************************
-+  Section A - Include Files
-+*****************************************************************************/
-+
-+#include <rtems.h>
-+#include <bsp.h>
-+#include <rtems/bspIo.h>
-+#include <stdio.h>
-+#include <rtems/libio.h>
-+#include <libchip/serial.h>
-+#include <libchip/sersupp.h>
-+#include "sci.h"
-+/*#include "../misc/include/cpu332.h" */
-+\f
-+
-+/*****************************************************************************
-+  Section B - Manifest Constants
-+*****************************************************************************/
-+
-+#define SCI_MINOR       0                   /* minor device number */
-+
-+/* IMPORTANT - if the device driver api is opened, it means the sci is being
-+ * used for direct hardware access, so other users (like termios) get ignored
-+ */
-+#define DRIVER_CLOSED   0                   /* the device driver api is closed */
-+#define DRIVER_OPENED   1                   /* the device driver api is opened */
-+
-+/* system clock definitions, i dont have documentation on this... */
-+
-+#if 0 /* Not needed, this is provided in mrm332.h */
-+#define XTAL            32768.0    /* crystal frequency in Hz */
-+#define NUMB_W          0          /* system clock parameters */
-+#define NUMB_X          1
-+#define NUMB_Y          0x38       /* for 14.942 Mhz */
-+#define NUMB_Y          0x3F       /* for 16.777 Mhz */
-+
-+#define SYS_CLOCK       (XTAL * 4.0 * (NUMB_Y+1) * (1 << (2 * NUMB_W + NUMB_X)))
-+
-+#endif
-+\f
-+
-+/*****************************************************************************
-+  Section C - External Data
-+*****************************************************************************/
-+
-+\f
-+
-+/*****************************************************************************
-+  Section D - External Functions
-+*****************************************************************************/
-+
-+\f
-+
-+/*****************************************************************************
-+  Section E - Local Functions
-+*****************************************************************************/
-+
-+void SCI_output_char(char c);
-+
-+/*rtems_isr SciIsr( rtems_vector_number vector );   interrupt handler */
-+
-+const rtems_termios_callbacks * SciGetTermiosHandlers( int32_t   polled );
-+
-+rtems_device_driver SciInitialize(                     /* device driver api */
-+    rtems_device_major_number, rtems_device_minor_number, void *);
-+rtems_device_driver SciOpen(                           /* device driver api */
-+    rtems_device_major_number, rtems_device_minor_number, void *);
-+rtems_device_driver SciClose(                          /* device driver api */
-+    rtems_device_major_number, rtems_device_minor_number, void *);
-+rtems_device_driver SciRead(                           /* device driver api */
-+    rtems_device_major_number, rtems_device_minor_number, void *);
-+rtems_device_driver SciWrite(                          /* device driver api */
-+    rtems_device_major_number, rtems_device_minor_number, void *);
-+rtems_device_driver SciControl(                        /* device driver api */
-+    rtems_device_major_number, rtems_device_minor_number, void *);
-+rtems_device_driver SciRead (
-+    rtems_device_major_number, rtems_device_minor_number, void *);
-+
-+int   SciInterruptOpen(int, int, void *);               /* termios api */
-+int   SciInterruptClose(int, int, void *);              /* termios api */
-+int   SciInterruptWrite(int, const char *, int);        /* termios api */
-+
-+int   SciSetAttributes(int, const struct termios*);     /* termios api */
-+int   SciPolledOpen(int, int, void *);                  /* termios api */
-+int   SciPolledClose(int, int, void *);                 /* termios api */
-+int   SciPolledRead(int);                               /* termios api */
-+int   SciPolledWrite(int, const char *, int);           /* termios api */
-+
-+static void SciSetBaud(uint32_t   rate);                /* hardware routine */
-+static void SciSetDataBits(uint16_t   bits);            /* hardware routine */
-+static void SciSetParity(uint16_t   parity);            /* hardware routine */
-+
-+static void inline SciDisableAllInterrupts( void );     /* hardware routine */
-+static void inline SciDisableTransmitInterrupts( void );/* hardware routine */
-+static void inline SciDisableReceiveInterrupts( void ); /* hardware routine */
-+
-+static void inline SciEnableTransmitInterrupts( void ); /* hardware routine */
-+static void inline SciEnableReceiveInterrupts( void );  /* hardware routine */
-+
-+static void inline SciDisableReceiver( void );          /* hardware routine */
-+static void inline SciDisableTransmitter( void );       /* hardware routine */
-+
-+static void inline SciEnableReceiver( void );           /* hardware routine */
-+static void inline SciEnableTransmitter( void );        /* hardware routine */
-+
-+void SciWriteCharWait  ( uint8_t );                     /* hardware routine */
-+void SciWriteCharNoWait( uint8_t );                     /* hardware routine */
-+
-+uint8_t   inline SciCharAvailable( void );              /* hardware routine */
-+
-+uint8_t   inline SciReadCharWait( void );               /* hardware routine */
-+uint8_t   inline SciReadCharNoWait( void );             /* hardware routine */
-+
-+void SciSendBreak( void );                              /* test routine */
-+
-+static int8_t   SciRcvBufGetChar(void);                 /* circular rcv buf */
-+static void    SciRcvBufPutChar( uint8_t);              /* circular rcv buf */
-+#if 0
-+static void    SciRcvBufFlush( void );                  /* unused routine */
-+#endif
-+
-+void SciUnitTest(void);                                 /* test routine */
-+void SciPrintStats(void);                               /* test routine */
-+\f
-+
-+/*****************************************************************************
-+  Section F - Local Variables
-+*****************************************************************************/
-+
-+static struct rtems_termios_tty *SciTermioTty;
-+
-+static uint8_t   SciInited = 0;             /* has the driver been inited */
-+
-+static uint8_t   SciOpened;                 /* has the driver been opened */
-+
-+static uint8_t   SciMajor;                  /* major device number */
-+
-+static uint16_t   SciBaud;                  /* current value in baud register */
-+
-+static uint32_t   SciBytesIn  = 0;          /* bytes received */
-+static uint32_t   SciBytesOut = 0;          /* bytes transmitted */
-+
-+static uint32_t   SciErrorsParity  = 0;     /* error counter */
-+static uint32_t   SciErrorsNoise   = 0;     /* error counter */
-+static uint32_t   SciErrorsFraming = 0;     /* error counter */
-+static uint32_t   SciErrorsOverrun = 0;     /* error counter */
-+
-+#if defined(CONSOLE_SCI)
-+
-+/* this is what rtems printk uses to do polling based output */
-+
-+BSP_output_char_function_type      BSP_output_char = SCI_output_char;
-+BSP_polling_getchar_function_type  BSP_poll_char   = NULL;
-+
-+#endif
-+
-+/* cvs id string so you can use the unix ident command on the object */
-+
-+#ifdef ID_STRINGS
-+static const char SciIdent[]="$Id: sci.c,v 1.12 2008/08/19 10:23:15 ralf Exp $";
-+#endif
-+\f
-+
-+/*****************************************************************************
-+  Section G - A circular buffer for rcv chars when the driver interface is used.
-+*****************************************************************************/
-+
-+/* it is trivial to wrap your buffer pointers when size is a power of two */
-+
-+#define SCI_RCV_BUF_SIZE        256         /* must be a power of 2 !!! */
-+
-+/* if someone opens the sci device using the device driver interface,
-+ * then the receive data interrupt handler will put characters in this buffer
-+ * instead of sending them up to the termios module for the console
-+ */
-+static uint8_t   SciRcvBuffer[SCI_RCV_BUF_SIZE];
-+
-+static uint8_t   SciRcvBufPutIndex = 0; /* array index to put in next char */
-+
-+static uint8_t   SciRcvBufGetIndex = 0; /* array index to take out next char */
-+
-+static uint16_t  SciRcvBufCount = 0;   /* how many bytes are in the buffer */
-+
-+\f
-+
-+/*****************************************************************************
-+  Section H - RTEMS termios callbacks for the interrupt version of the driver
-+*****************************************************************************/
-+
-+static const rtems_termios_callbacks SciInterruptCallbacks =
-+{
-+    SciInterruptOpen,                       /* first open */
-+    SciInterruptClose,                      /* last close */
-+    NULL,                                   /* polled read (not required) */
-+    SciInterruptWrite,                      /* write */
-+    SciSetAttributes,                       /* set attributes */
-+    NULL,                                   /* stop remote xmit */
-+    NULL,                                   /* start remote xmit */
-+    TRUE                                    /* output uses interrupts */
-+};
-+
-+/*****************************************************************************
-+  Section I - RTEMS termios callbacks for the polled version of the driver
-+*****************************************************************************/
-+
-+static const rtems_termios_callbacks SciPolledCallbacks =
-+{
-+    SciPolledOpen,                          /* first open */
-+    SciPolledClose,                         /* last close */
-+    SciPolledRead,                          /* polled read */
-+    SciPolledWrite,                         /* write */
-+    SciSetAttributes,                       /* set attributes */
-+    NULL,                                   /* stop remote xmit */
-+    NULL,                                   /* start remote xmit */
-+    FALSE                                   /* output uses interrupts */
-+};
-+\f
-+
-+/*
-+ *                              SECTION 0
-+ *                        MISCELLANEOUS ROUTINES
-+ */
-+
-+/****************************************************************************
-+ * Func:     SCI_output_char
-+ * Desc:     used by rtems printk function to send a char to the uart
-+ * Inputs:   the character to transmit
-+ * Outputs:  none
-+ * Errors:   none
-+ * Scope:    public
-+ ****************************************************************************/
-+
-+void SCI_output_char(char c)
-+{
-+/*  ( minor device number, pointer to the character, length ) */
-+
-+    SciPolledWrite( SCI_MINOR, &c, 1);
-+
-+    return;
-+}
-+\f
-+
-+/****************************************************************************
-+* Func:     SciGetTermiosHandlers
-+* Desc:     returns a pointer to the table of serial io functions
-+*           this is called from console_open with polled set to false
-+* Inputs:   flag indicating whether we want polled or interrupt driven io
-+* Outputs:  pointer to function table
-+* Errors:   none
-+* Scope:    public
-+****************************************************************************/
-+
-+const rtems_termios_callbacks * SciGetTermiosHandlers( int32_t   polled )
-+{
-+    if ( polled )
-+    {
-+        return &SciPolledCallbacks;             /* polling based */
-+    }
-+    else
-+    {
-+        return &SciInterruptCallbacks;          /* interrupt driven */
-+    }
-+}
-+\f
-+
-+/****************************************************************************
-+* Func:     SciIsr
-+* Desc:     interrupt handler for serial communications interface
-+* Inputs:   vector number - unused
-+* Outputs:  none
-+* Errors:   none
-+* Scope:    public API
-+****************************************************************************/
-+
-+rtems_isr SciIsr( rtems_vector_number vector )
-+{
-+    uint8_t   ch;
-+
-+    if ( (*SCSR) & SCI_ERROR_PARITY  )   SciErrorsParity  ++;
-+    if ( (*SCSR) & SCI_ERROR_FRAMING )   SciErrorsFraming ++;
-+    if ( (*SCSR) & SCI_ERROR_NOISE   )   SciErrorsNoise   ++;
-+    if ( (*SCSR) & SCI_ERROR_OVERRUN )   SciErrorsOverrun ++;
-+
-+    /* see if it was a transmit interrupt */
-+
-+    if ( (*SCSR) & SCI_XMTR_AVAILABLE )         /* data reg empty, xmt complete */
-+    {
-+        SciDisableTransmitInterrupts();
-+
-+        /* tell termios module that the charcter was sent */
-+        /* he will call us later to transmit more if there are any */
-+
-+        if (rtems_termios_dequeue_characters( SciTermioTty, 1 ))
-+        {
-+            /* there are more bytes to transmit so enable TX interrupt */
-+
-+            SciEnableTransmitInterrupts();
-+        }
-+    }
-+
-+    /* see if it was a receive interrupt */
-+    /* on the sci uart we just get one character per interrupt */
-+
-+    while (  SciCharAvailable() )               /* char in data register? */
-+    {
-+        ch = SciReadCharNoWait();               /* get the char from the uart */
-+
-+        /* IMPORTANT!!! */
-+        /* either send it to the termios module or keep it locally */
-+
-+        if ( SciOpened == DRIVER_OPENED )       /* the driver is open */
-+        {
-+            SciRcvBufPutChar(ch);               /* keep it locally */
-+        }
-+        else                                    /* put in termios buffer */
-+        {
-+            char c = (char) ch;
-+            rtems_termios_enqueue_raw_characters( SciTermioTty, &c, 1 );
-+        }
-+
-+        *SCSR &= SCI_CLEAR_RX_INT;              /* clear the interrupt */
-+    }
-+}
-+\f
-+
-+/*
-+ *                              SECTION 1
-+ *                ROUTINES TO MANIPULATE THE CIRCULAR BUFFER
-+ */
-+
-+/****************************************************************************
-+* Func:     SciRcvBufGetChar
-+* Desc:     read a character from the circular buffer
-+*           make sure there is data before you call this!
-+* Inputs:   none
-+* Outputs:  the character or -1
-+* Errors:   none
-+* Scope:    private
-+****************************************************************************/
-+
-+static int8_t   SciRcvBufGetChar(void)
-+{
-+    rtems_interrupt_level level;
-+    uint8_t   ch;
-+
-+    if ( SciRcvBufCount == 0 )
-+    {
-+        rtems_fatal_error_occurred(0xDEAD);     /* check the count first! */
-+    }
-+
-+    rtems_interrupt_disable( level );           /* disable interrupts */
-+
-+    ch = SciRcvBuffer[SciRcvBufGetIndex];       /* get next byte */
-+
-+    SciRcvBufGetIndex++;                        /* bump the index */
-+
-+    SciRcvBufGetIndex &= SCI_RCV_BUF_SIZE - 1;  /* and wrap it */
-+
-+    SciRcvBufCount--;                           /* decrement counter */
-+
-+    rtems_interrupt_enable( level );            /* restore interrupts */
-+
-+    return ch;                                  /* return the char */
-+}
-+\f
-+
-+/****************************************************************************
-+* Func:     SciRcvBufPutChar
-+* Desc:     put a character into the rcv data circular buffer
-+* Inputs:   the character
-+* Outputs:  none
-+* Errors:   none
-+* Scope:    private
-+****************************************************************************/
-+
-+static void SciRcvBufPutChar( uint8_t   ch )
-+{
-+    rtems_interrupt_level level;
-+
-+    if ( SciRcvBufCount == SCI_RCV_BUF_SIZE )   /* is there room? */
-+    {
-+        return;                                 /* no, throw it away */
-+    }
-+
-+    rtems_interrupt_disable( level );           /* disable interrupts */
-+
-+    SciRcvBuffer[SciRcvBufPutIndex] = ch;       /* put it in the buf */
-+
-+    SciRcvBufPutIndex++;                        /* bump the index */
-+
-+    SciRcvBufPutIndex &= SCI_RCV_BUF_SIZE - 1;  /* and wrap it */
-+
-+    SciRcvBufCount++;                           /* increment counter */
-+
-+    rtems_interrupt_enable( level );            /* restore interrupts */
-+
-+    return;                                     /* return */
-+}
-+\f
-+
-+/****************************************************************************
-+* Func:     SciRcvBufFlush
-+* Desc:     completely reset and clear the rcv buffer
-+* Inputs:   none
-+* Outputs:  none
-+* Errors:   none
-+* Scope:    private
-+****************************************************************************/
-+
-+#if 0                                           /* prevents compiler warning */
-+static void SciRcvBufFlush( void )
-+{
-+    rtems_interrupt_level level;
-+
-+    rtems_interrupt_disable( level );           /* disable interrupts */
-+
-+    memset( SciRcvBuffer, 0, sizeof(SciRcvBuffer) );
-+
-+    SciRcvBufPutIndex = 0;                      /* clear */
-+
-+    SciRcvBufGetIndex = 0;                      /* clear */
-+
-+    SciRcvBufCount = 0;                         /* clear */
-+
-+    rtems_interrupt_enable( level );            /* restore interrupts */
-+
-+    return;                                     /* return */
-+}
-+#endif
-+\f
-+
-+/*
-+ *
-+ *                              SECTION 2
-+ *            INTERRUPT BASED ENTRY POINTS FOR THE TERMIOS MODULE
-+ */
-+
-+/****************************************************************************
-+* Func:     SciInterruptOpen
-+* Desc:     open routine for the interrupt based device driver
-+*           Default state is 9600 baud, 8 bits, No parity, and 1 stop bit. ??
-+**CHANGED** Default baud rate is now 19200, 8N1
-+*           called from rtems_termios_open which is called from console_open
-+* Inputs:   major - device number
-+*           minor - device number
-+*           args - points to terminal info
-+* Outputs:  success/fail
-+* Errors:   none
-+* Scope:    public API
-+****************************************************************************/
-+
-+int   SciInterruptOpen(
-+    int    major,
-+    int    minor,
-+    void  *arg
-+)
-+{
-+    rtems_libio_open_close_args_t * args = arg;
-+    rtems_isr_entry old_vector;
-+
-+    if ( minor != SCI_MINOR )                   /* check minor device num */
-+    {
-+        return -1;
-+    }
-+
-+    if ( !args )                                /* must have args */
-+    {
-+        return -1;
-+    }
-+
-+    SciTermioTty = args->iop->data1;            /* save address of struct */
-+
-+    SciDisableAllInterrupts();                  /* turn off sci interrupts */
-+
-+    /* THIS IS ACTUALLY A BAD THING - SETTING LINE PARAMETERS HERE */
-+    /* IT SHOULD BE DONE THROUGH TCSETATTR() WHEN THE CONSOLE IS OPENED!!! */
-+
-+/*  SciSetBaud(115200);                         set the baud rate */
-+/*  SciSetBaud( 57600);                         set the baud rate */
-+/*  SciSetBaud( 38400);                         set the baud rate */
-+    SciSetBaud( 19200);                      /* set the baud rate */
-+/*  SciSetBaud(  9600);                         set the baud rate */
-+
-+    SciSetParity(SCI_PARITY_NONE);              /* set parity to none */
-+
-+    SciSetDataBits(SCI_8_DATA_BITS);            /* set data bits to 8 */
-+
-+    /* Install our interrupt handler into RTEMS, where does 66 come from? */
-+
-+    rtems_interrupt_catch( SciIsr, 66, &old_vector );
-+
-+    *QIVR  = 66;
-+    *QIVR &= 0xf8;
-+    *QILR |= 0x06 & 0x07;
-+
-+    SciEnableTransmitter();                     /* enable the transmitter */
-+
-+    SciEnableReceiver();                        /* enable the receiver */
-+
-+    SciEnableReceiveInterrupts();               /* enable rcv interrupts */
-+
-+    return RTEMS_SUCCESSFUL;
-+}
-+\f
-+
-+/****************************************************************************
-+* Func:     SciInterruptClose
-+* Desc:     close routine called by the termios module
-+* Inputs:   major - device number
-+*           minor - device number
-+*           args - unused
-+* Outputs:  success/fail
-+* Errors:   none
-+* Scope:    public - termio entry point
-+****************************************************************************/
-+
-+int   SciInterruptClose(
-+    int    major,
-+    int    minor,
-+    void  *arg
-+)
-+{
-+    SciDisableAllInterrupts();
-+
-+    return RTEMS_SUCCESSFUL;
-+}
-+\f
-+
-+/****************************************************************************
-+* Func:     SciInterruptWrite
-+* Desc:     writes data to the uart using transmit interrupts
-+* Inputs:   minor - device number
-+*           buf - points to the data
-+*           len - number of bytes to send
-+* Outputs:  success/fail
-+* Errors:   none
-+* Scope:    public API
-+****************************************************************************/
-+
-+int   SciInterruptWrite(
-+    int         minor,
-+    const char *buf,
-+    int         len
-+)
-+{
-+    /* We are using interrupt driven output so termios only sends us */
-+    /* one character at a time. The sci does not have a fifo. */
-+
-+    if ( !len )                                 /* no data? */
-+    {
-+        return 0;                               /* return error */
-+    }
-+
-+    if ( minor != SCI_MINOR )                   /* check the minor dev num */
-+    {
-+        return 0;                               /* return error */
-+    }
-+
-+    if ( SciOpened == DRIVER_OPENED )           /* is the driver api open? */
-+    {
-+        return 1;                               /* yep, throw this away */
-+    }
-+
-+    SciWriteCharNoWait(*buf);                   /* try to send a char */
-+
-+    *SCSR &= SCI_CLEAR_TDRE;                    /* clear tx data reg empty flag */
-+
-+    SciEnableTransmitInterrupts();              /* enable the tx interrupt */
-+
-+    return 1;                                   /* return success */
-+}
-+\f
-+
-+/****************************************************************************
-+* Func:     SciSetAttributes
-+* Desc:     setup the uart based on the termios modules requests
-+* Inputs:   minor - device number
-+*           t - pointer to the termios info struct
-+* Outputs:  none
-+* Errors:   none
-+* Scope:    public API
-+****************************************************************************/
-+
-+int   SciSetAttributes(
-+    int                   minor,
-+    const struct termios *t
-+)
-+{
-+    uint32_t    baud_requested;
-+    uint32_t    sci_rate = 0;
-+    uint16_t    sci_parity = 0;
-+    uint16_t    sci_databits = 0;
-+
-+    if ( minor != SCI_MINOR )                   /* check the minor dev num */
-+    {
-+        return -1;                              /* return error */
-+    }
-+
-+    /* if you look closely you will see this is the only thing we use */
-+    /* set the baud rate */
-+
-+    baud_requested = t->c_cflag & CBAUD;        /* baud rate */
-+
-+    if (!baud_requested)
-+    {
-+/*        baud_requested = B9600;                   default to 9600 baud */
-+        baud_requested = B19200;                 /* default to 19200 baud */
-+    }
-+
-+    sci_rate = termios_baud_to_number( baud_requested );
-+
-+    /* parity error detection */
-+
-+    if (t->c_cflag & PARENB)                    /* enable parity detection? */
-+    {
-+        if (t->c_cflag & PARODD)
-+        {
-+            sci_parity = SCI_PARITY_ODD;        /* select odd parity */
-+        }
-+        else
-+        {
-+            sci_parity = SCI_PARITY_EVEN;       /* select even parity */
-+        }
-+    }
-+    else
-+    {
-+        sci_parity = SCI_PARITY_NONE;           /* no parity, most common */
-+    }
-+
-+    /*  set the number of data bits, 8 is most common */
-+
-+    if (t->c_cflag & CSIZE)                     /* was it specified? */
-+    {
-+        switch (t->c_cflag & CSIZE)
-+        {
-+            case CS8:   sci_databits = SCI_8_DATA_BITS;   break;
-+            default :   sci_databits = SCI_9_DATA_BITS;   break;
-+        }
-+    }
-+    else
-+    {
-+        sci_databits = SCI_8_DATA_BITS;         /* default to 8 data bits */
-+    }
-+
-+    /*  the number of stop bits; always 1 for SCI */
-+
-+    if (t->c_cflag & CSTOPB)
-+    {
-+        /* do nothing */
-+    }
-+
-+    /* setup the hardware with these serial port parameters */
-+
-+    SciSetBaud(sci_rate);                       /* set the baud rate */
-+    SciSetParity(sci_parity);                   /* set the parity type */
-+    SciSetDataBits(sci_databits);               /* set the data bits */
-+
-+    return RTEMS_SUCCESSFUL;
-+}
-+\f
-+
-+/*
-+ *
-+ *                              SECTION 3
-+ *            POLLING BASED ENTRY POINTS FOR THE TERMIOS MODULE
-+ */
-+
-+/****************************************************************************
-+* Func:     SciPolledOpen
-+* Desc:     open routine for the polled i/o version of the driver
-+*           called from rtems_termios_open which is called from console_open
-+* Inputs:   major - device number
-+*           minor - device number
-+*           args - points to terminal info struct
-+* Outputs:  success/fail
-+* Errors:   none
-+* Scope:    public - termios entry point
-+****************************************************************************/
-+
-+int   SciPolledOpen(
-+    int   major,
-+    int   minor,
-+    void *arg
-+)
-+{
-+    rtems_libio_open_close_args_t * args = arg;
-+
-+    if ( minor != SCI_MINOR )                   /* check minor device num */
-+    {
-+        return -1;
-+    }
-+
-+    if ( !args )                                /* must have args */
-+    {
-+        return -1;
-+    }
-+
-+    SciTermioTty = args->iop->data1;            /* Store tty pointer */
-+
-+    SciDisableAllInterrupts();                  /* don't generate interrupts */
-+
-+    /* THIS IS ACTUALLY A BAD THING - SETTING LINE PARAMETERS HERE */
-+    /* IT SHOULD BE DONE THROUGH TCSETATTR() WHEN THE CONSOLE IS OPENED!!! */
-+
-+/*  SciSetBaud(115200);                            set the baud rate */
-+/*  SciSetBaud( 57600);                            set the baud rate */
-+/*  SciSetBaud( 38400);                            set the baud rate */
-+  SciSetBaud( 19200);                         /* set the baud rate */
-+/*  SciSetBaud(  9600);                            set the baud rate */
-+
-+    SciSetParity(SCI_PARITY_NONE);              /* set no parity */
-+
-+    SciSetDataBits(SCI_8_DATA_BITS);            /* set 8 data bits */
-+
-+    SciEnableTransmitter();                     /* enable the xmitter */
-+
-+    SciEnableReceiver();                        /* enable the rcvr */
-+
-+    return RTEMS_SUCCESSFUL;
-+}
-+\f
-+
-+/****************************************************************************
-+* Func:     SciPolledClose
-+* Desc:     close routine for the device driver, same for both
-+* Inputs:   major - device number
-+*           minor - device number
-+*           args - unused
-+* Outputs:  success/fail
-+* Errors:   none
-+* Scope:    public termios API
-+****************************************************************************/
-+
-+int   SciPolledClose(
-+    int    major,
-+    int    minor,
-+    void  *arg
-+)
-+{
-+    SciDisableAllInterrupts();
-+
-+    return RTEMS_SUCCESSFUL;
-+}
-+\f
-+
-+/****************************************************************************
-+* Func:     SciPolledRead
-+* Desc:     polling based read routine for the uart
-+* Inputs:   minor - device number
-+* Outputs:  error or the character read
-+* Errors:   none
-+* Scope:    public API
-+****************************************************************************/
-+
-+int   SciPolledRead(
-+    int   minor
-+)
-+{
-+    if ( minor != SCI_MINOR )               /* check the type-punned dev num */
-+    {
-+        return -1;                          /* return error */
-+    }
-+
-+    if ( SciCharAvailable() )               /* if a char is available */
-+    {
-+        return SciReadCharNoWait();         /* read the rx data register */
-+    }
-+
-+    return -1;                              /* return error */
-+}
-+\f
-+
-+/****************************************************************************
-+* Func:     SciPolledWrite
-+* Desc:     writes out characters in polled mode, waiting for the uart
-+*           check in console_open, but we only seem to use interrupt mode
-+* Inputs:   minor - device number
-+*           buf - points to the data
-+*           len - how many bytes
-+* Outputs:  error or number of bytes written
-+* Errors:   none
-+* Scope:    public termios API
-+****************************************************************************/
-+
-+int   SciPolledWrite(
-+    int         minor,
-+    const char *buf,
-+    int         len
-+)
-+{
-+    int32_t   written = 0;
-+
-+    if ( minor != SCI_MINOR )                   /* check minor device num */
-+    {
-+        return -1;
-+    }
-+
-+    if ( SciOpened == DRIVER_OPENED )           /* is the driver api open? */
-+    {
-+        return -1;                              /* toss the data */
-+    }
-+
-+    /* send each byte in the string out the port */
-+
-+    while ( written < len )
-+    {
-+        SciWriteCharWait(*buf++);               /* send a byte */
-+
-+        written++;                              /* increment counter */
-+    }
-+
-+    return written;                             /* return count */
-+}
-+\f
-+
-+/*
-+ *
-+ *                              SECTION 4
-+ *                 DEVICE DRIVER PUBLIC API ENTRY POINTS
-+ */
-+
-+/****************************************************************************
-+* Func:     SciInit
-+* Desc:     Initialize the lasers device driver and hardware
-+* Inputs:   major - the major device number which is assigned by rtems
-+*           minor - the minor device number which is undefined at this point
-+*           arg - ?????
-+* Outputs:  RTEMS_SUCCESSFUL
-+* Errors:   None.
-+* Scope:    public API
-+****************************************************************************/
-+
-+rtems_device_driver SciInitialize (
-+    rtems_device_major_number major,
-+    rtems_device_minor_number minor,
-+    void * arg
-+)
-+{
-+/*     rtems_status_code status; */
-+
-+/*printk("%s\r\n", __FUNCTION__); */
-+
-+    /* register the SCI device name for termios console i/o
-+     * this is done over in console.c which doesn't seem exactly right
-+     * but there were problems doing it here...
-+     */
-+
-+/*  status = rtems_io_register_name( "/dev/sci", major, 0 ); */
-+
-+/*  if (status != RTEMS_SUCCESSFUL) */
-+/*      rtems_fatal_error_occurred(status); */
-+
-+    SciMajor = major;                           /* save the rtems major number */
-+
-+    SciOpened = DRIVER_CLOSED;                  /* initial state is closed */
-+
-+    /* if you have an interrupt handler, install it here */
-+
-+    SciInited = 1;                              /* set the inited flag */
-+
-+    return RTEMS_SUCCESSFUL;
-+}
-+\f
-+
-+/****************************************************************************
-+* Func:     SciOpen
-+* Desc:     device driver open routine
-+*           you must open a device before you can anything else
-+*           only one process can have the device opened at a time
-+*           you could look at the task id to restrict access if you want
-+* Inputs:   major - the major device number assigned by rtems
-+*           minor - the minor device number assigned by us
-+*           arg - ?????
-+* Outputs:  see below
-+* Errors:   none
-+* Scope:    public API
-+****************************************************************************/
-+
-+rtems_device_driver SciOpen (
-+    rtems_device_major_number major,
-+    rtems_device_minor_number minor,
-+    void * arg
-+)
-+{
-+/*printk("%s major=%d minor=%d\r\n", __FUNCTION__,major,minor); */
-+
-+    if (SciInited == 0)                         /* must be initialized first! */
-+    {
-+        return RTEMS_NOT_CONFIGURED;
-+    }
-+
-+    if (minor != SCI_MINOR)
-+    {
-+        return RTEMS_INVALID_NAME;              /* verify minor number */
-+    }
-+
-+    if (SciOpened == DRIVER_OPENED)
-+    {
-+        return RTEMS_RESOURCE_IN_USE;           /* already opened! */
-+    }
-+
-+    SciOpened = DRIVER_OPENED;                  /* set the opened flag */
-+
-+    return RTEMS_SUCCESSFUL;
-+}
-+\f
-+
-+/****************************************************************************
-+* Func:     SciClose
-+* Desc:     device driver close routine
-+*           the device must be opened before you can close it
-+*           the device must be closed before someone (else) can open it
-+* Inputs:   major - the major device number
-+*           minor - the minor device number
-+*           arg - ?????
-+* Outputs:  see below
-+* Errors:   none
-+* Scope:    public API
-+****************************************************************************/
-+
-+rtems_device_driver SciClose (
-+    rtems_device_major_number major,
-+    rtems_device_minor_number minor,
-+    void * arg
-+)
-+{
-+/*printk("%s major=%d minor=%d\r\n", __FUNCTION__,major,minor); */
-+
-+    if (minor != SCI_MINOR)
-+    {
-+        return RTEMS_INVALID_NAME;              /* check the minor number */
-+    }
-+
-+    if (SciOpened != DRIVER_OPENED)
-+    {
-+        return RTEMS_INCORRECT_STATE;           /* must be opened first */
-+    }
-+
-+    SciOpened = DRIVER_CLOSED;                  /* set the flag */
-+
-+    return RTEMS_SUCCESSFUL;
-+}
-+\f
-+
-+/****************************************************************************
-+* Func:     SciRead
-+* Desc:     device driver read routine
-+*           this function is not meaningful for the laser devices
-+* Inputs:   major - the major device number
-+*           minor - the minor device number
-+*           arg - read/write arguments
-+* Outputs:  see below
-+* Errors:   none
-+* Scope:    public API
-+****************************************************************************/
-+
-+rtems_device_driver SciRead (
-+    rtems_device_major_number major,
-+    rtems_device_minor_number minor,
-+    void *arg
-+)
-+{
-+    rtems_libio_rw_args_t *rw_args;             /* ptr to argument struct */
-+    char      *buffer;
-+    uint16_t   length;
-+
-+    rw_args = (rtems_libio_rw_args_t *) arg;    /* arguments to read() */
-+
-+    if (minor != SCI_MINOR)
-+    {
-+        return RTEMS_INVALID_NAME;              /* check the minor number */
-+    }
-+
-+    if (SciOpened == DRIVER_CLOSED)
-+    {
-+        return RTEMS_INCORRECT_STATE;           /* must be opened first */
-+    }
-+
-+    buffer = rw_args->buffer;                   /* points to user's buffer */
-+
-+    length = rw_args->count;                    /* how many bytes they want */
-+
-+/*  *buffer = SciReadCharWait();                   wait for a character */
-+
-+    /* if there isn't a character available, wait until one shows up */
-+    /* or the timeout period expires, which ever happens first */
-+
-+    if ( SciRcvBufCount == 0 )                  /* no chars */
-+    {
-+        /* wait for someone to wake me up... */
-+        /*rtems_task_wake_after(SciReadTimeout); */
-+    }
-+
-+    if ( SciRcvBufCount )                       /* any characters locally? */
-+    {
-+        *buffer = SciRcvBufGetChar();           /* get the character */
-+
-+        rw_args->bytes_moved = 1;               /* how many we actually read */
-+    }
-+
-+    return RTEMS_SUCCESSFUL;
-+}
-+\f
-+
-+/****************************************************************************
-+* Func:     SciWrite
-+* Desc:     device driver write routine
-+*           this function is not meaningful for the laser devices
-+* Inputs:   major - the major device number
-+*           minor - the minor device number
-+*           arg - read/write arguments
-+* Outputs:  see below
-+* Errors:   non3
-+* Scope:    public API
-+****************************************************************************/
-+
-+rtems_device_driver SciWrite (
-+    rtems_device_major_number major,
-+    rtems_device_minor_number minor,
-+    void * arg
-+)
-+{
-+    rtems_libio_rw_args_t *rw_args;             /* ptr to argument struct */
-+    uint8_t   *buffer;
-+    uint16_t   length;
-+
-+    rw_args = (rtems_libio_rw_args_t *) arg;
-+
-+    if (minor != SCI_MINOR)
-+    {
-+        return RTEMS_INVALID_NAME;              /* check the minor number */
-+    }
-+
-+    if (SciOpened == DRIVER_CLOSED)
-+    {
-+        return RTEMS_INCORRECT_STATE;           /* must be opened first */
-+    }
-+
-+    buffer = (uint8_t*)rw_args->buffer;       /* points to data */
-+
-+    length = rw_args->count;                    /* how many bytes */
-+
-+    while (length--)
-+    {
-+        SciWriteCharWait(*buffer++);            /* send the bytes out */
-+    }
-+
-+    rw_args->bytes_moved = rw_args->count;      /* how many we wrote */
-+
-+    return RTEMS_SUCCESSFUL;
-+}
-+\f
-+
-+/****************************************************************************
-+* Func:     SciControl
-+* Desc:     device driver control routine
-+*           see below for an example of how to use the ioctl interface
-+* Inputs:   major - the major device number
-+*           minor - the minor device number
-+*           arg - io control args
-+* Outputs:  see below
-+* Errors:   none
-+* Scope:    public API
-+****************************************************************************/
-+
-+rtems_device_driver SciControl (
-+    rtems_device_major_number major,
-+    rtems_device_minor_number minor,
-+    void * arg
-+)
-+{
-+    rtems_libio_ioctl_args_t *args = arg;       /* rtems arg struct */
-+    uint16_t   command;                         /* the cmd to execute */
-+    uint16_t   unused;                          /* maybe later */
-+    uint16_t   *ptr;                            /* ptr to user data */
-+
-+/*printk("%s major=%d minor=%d\r\n", __FUNCTION__,major,minor); */
-+
-+    /* do some sanity checking */
-+
-+    if (minor != SCI_MINOR)
-+    {
-+        return RTEMS_INVALID_NAME;              /* check the minor number */
-+    }
-+
-+    if (SciOpened == DRIVER_CLOSED)
-+    {
-+        return RTEMS_INCORRECT_STATE;           /* must be open first */
-+    }
-+
-+    if (args == 0)
-+    {
-+        return RTEMS_INVALID_ADDRESS;           /* must have args */
-+    }
-+
-+    args->ioctl_return = -1;                    /* assume an error */
-+
-+    command = args->command;                    /* get the command */
-+    ptr     = args->buffer;                     /* this is an address */
-+    unused  = *ptr;                             /* brightness */
-+
-+    if (command == SCI_SEND_BREAK)              /* process the command */
-+    {
-+        SciSendBreak();                         /* send break char */
-+    }
-+
-+    args->ioctl_return = 0;                     /* return status */
-+
-+    return RTEMS_SUCCESSFUL;
-+}
-+\f
-+
-+/*
-+ *
-+ *                              SECTION 5
-+ *                       HARDWARE LEVEL ROUTINES
-+ */
-+
-+/****************************************************************************
-+* Func:     SciSetBaud
-+* Desc:     setup the uart based on the termios modules requests
-+* Inputs:   baud rate
-+* Outputs:  none
-+* Errors:   none
-+* Scope:    private
-+****************************************************************************/
-+
-+static void SciSetBaud(uint32_t   rate)
-+{
-+    uint16_t   value;
-+    uint16_t   save_sccr1;
-+
-+/* when you open the console you need to set the termio struct baud rate */
-+/* it has a default value of 9600, when someone calls tcsetattr it reverts! */
-+
-+    SciBaud = rate;                             /* save the rate */
-+
-+    /* calculate the register value as a float and convert to an int */
-+    /* set baud rate - you must define the system clock constant */
-+    /* see mrm332.h for an example */
-+
-+    value = ( (uint16_t) ( SYS_CLOCK / rate / 32.0 + 0.5 ) & 0x1fff );
-+
-+    save_sccr1 = *SCCR1;                        /* save register */
-+
-+    /* also turns off the xmtr and rcvr */
-+
-+    *SCCR1 &= SCI_DISABLE_INT_ALL;              /* disable interrupts */
-+
-+    *SCCR0 = value;                             /* write the register */
-+
-+    *SCCR1 = save_sccr1;                        /* restore register */
-+
-+    return;
-+}
-+\f
-+
-+/****************************************************************************
-+* Func:     SciSetParity
-+* Desc:     setup the uart based on the termios modules requests
-+* Inputs:   parity
-+* Outputs:  none
-+* Errors:   none
-+* Scope:    private
-+****************************************************************************/
-+
-+static void SciSetParity(uint16_t   parity)
-+{
-+    uint16_t   value;
-+
-+    value = *SCCR1;                             /* get the register */
-+
-+    if (parity == SCI_PARITY_ODD)
-+    {
-+        value |= SCI_PARITY_ENABLE;             /* parity enabled */
-+        value |= SCI_PARITY_ODD;                /* parity odd */
-+    }
-+
-+    else if (parity == SCI_PARITY_EVEN)
-+    {
-+        value |= SCI_PARITY_ENABLE;             /* parity enabled */
-+        value &= ~SCI_PARITY_ODD;               /* parity even */
-+    }
-+
-+    else if (parity == SCI_PARITY_NONE)
-+    {
-+        value &= ~SCI_PARITY_ENABLE;            /* disabled, most common */
-+    }
-+
-+    /* else no changes */
-+
-+    *SCCR1 = value;                             /* write the register */
-+
-+    return;
-+}
-+\f
-+
-+/****************************************************************************
-+* Func:     SciSetDataBits
-+* Desc:     setup the uart based on the termios modules requests
-+* Inputs:   data bits
-+* Outputs:  none
-+* Errors:   none
-+* Scope:    private
-+****************************************************************************/
-+
-+static void SciSetDataBits(uint16_t   bits)
-+{
-+    uint16_t   value;
-+
-+    value = *SCCR1;                             /* get the register */
-+
-+    /* note - the parity setting affects the number of data bits */
-+
-+    if (bits == SCI_9_DATA_BITS)
-+    {
-+        value |= SCI_9_DATA_BITS;               /* 9 data bits */
-+    }
-+
-+    else if (bits == SCI_8_DATA_BITS)
-+    {
-+        value &= SCI_8_DATA_BITS;               /* 8 data bits */
-+    }
-+
-+    /* else no changes */
-+
-+    *SCCR1 = value;                             /* write the register */
-+
-+    return;
-+}
-+\f
-+
-+/****************************************************************************
-+* Func:     SciDisableAllInterrupts
-+* Func:     SciEnableTransmitInterrupts
-+* Func:     SciEnableReceiveInterrupts
-+* Desc:     handles generation of interrupts by the sci module
-+* Inputs:   none
-+* Outputs:  none
-+* Errors:   none
-+* Scope:    private
-+****************************************************************************/
-+
-+static void inline SciDisableAllInterrupts( void )
-+{
-+    /* this also turns off the xmtr and rcvr */
-+
-+    *SCCR1 &= SCI_DISABLE_INT_ALL;
-+}
-+
-+static void inline SciEnableReceiveInterrupts( void )
-+{
-+    *SCCR1 |= SCI_ENABLE_INT_RX;
-+}
-+
-+static void inline SciDisableReceiveInterrupts( void )
-+{
-+    *SCCR1 &= SCI_DISABLE_INT_RX;
-+}
-+
-+static void inline SciEnableTransmitInterrupts( void )
-+{
-+    *SCCR1 |= SCI_ENABLE_INT_TX;
-+}
-+
-+static void inline SciDisableTransmitInterrupts( void )
-+{
-+    *SCCR1 &= SCI_DISABLE_INT_TX;
-+}
-+\f
-+
-+/****************************************************************************
-+* Func:     SciEnableTransmitter, SciDisableTransmitter
-+* Func:     SciEnableReceiver,    SciDisableReceiver
-+* Desc:     turns the transmitter and receiver on and off
-+* Inputs:   none
-+* Outputs:  none
-+* Errors:   none
-+* Scope:    private
-+****************************************************************************/
-+
-+static void inline SciEnableTransmitter( void )
-+{
-+    *SCCR1 |= SCI_ENABLE_XMTR;
-+}
-+
-+static void inline SciDisableTransmitter( void )
-+{
-+    *SCCR1 &= SCI_DISABLE_XMTR;
-+}
-+
-+static void inline SciEnableReceiver( void )
-+{
-+    *SCCR1 |= SCI_ENABLE_RCVR;
-+}
-+
-+static void inline SciDisableReceiver( void )
-+{
-+    *SCCR1 &= SCI_DISABLE_RCVR;
-+}
-+\f
-+
-+/****************************************************************************
-+* Func:     SciWriteCharWait
-+* Desc:     wait for room in the fifo and then put a char in
-+* Inputs:   a byte to send
-+* Outputs:  none
-+* Errors:   none
-+* Scope:    public
-+****************************************************************************/
-+
-+void SciWriteCharWait(uint8_t   c)
-+{
-+    /* poll the fifo, waiting for room for another character */
-+
-+    while ( ( *SCSR & SCI_XMTR_AVAILABLE ) == 0 )
-+    {
-+        /* Either we are writing to the fifo faster than
-+         * the uart can clock bytes out onto the cable,
-+         * or we are in flow control (actually no, we
-+         * are ignoring flow control from the other end).
-+         * In the first case, higher baud rates will help.
-+         */
-+      /* relinquish processor while waiting */
-+      rtems_task_wake_after(RTEMS_YIELD_PROCESSOR);
-+    }
-+
-+    *SCDR = c;                                  /* send the charcter */
-+
-+    SciBytesOut++;                              /* increment the counter */
-+
-+    return;
-+}
-+
-+/****************************************************************************
-+* Func:     SciWriteCharNoWait
-+* Desc:     if no room in the fifo throw the char on the floor
-+* Inputs:   a byte to send
-+* Outputs:  none
-+* Errors:   none
-+* Scope:    public
-+****************************************************************************/
-+
-+void SciWriteCharNoWait(uint8_t   c)
-+{
-+    if ( ( *SCSR & SCI_XMTR_AVAILABLE ) == 0 )
-+    {
-+        return;                                 /* no room, throw it away */
-+    }
-+
-+    *SCDR = c;                                  /* put the char in the fifo */
-+
-+    SciBytesOut++;                              /* increment the counter */
-+
-+    return;
-+}
-+\f
-+
-+/****************************************************************************
-+* Func:     SciReadCharWait
-+* Desc:     read a character, waiting for one to show up, if need be
-+* Inputs:   none
-+* Outputs:  a character
-+* Errors:   none
-+* Scope:    public
-+****************************************************************************/
-+
-+uint8_t   inline SciReadCharWait( void )
-+{
-+    uint8_t   ch;
-+
-+    while ( SciCharAvailable() == 0 )           /* anything there? */
-+    {
-+      /* relinquish processor while waiting */
-+      rtems_task_wake_after(RTEMS_YIELD_PROCESSOR);
-+    }
-+
-+    /* if you have rcv ints enabled, then the isr will probably */
-+    /* get the character before you will unless you turn off ints */
-+    /* ie polling and ints don't mix that well */
-+
-+    ch = *SCDR;                                 /* get the charcter */
-+
-+    SciBytesIn++;                               /* increment the counter */
-+
-+    return ch;                                  /* return the char */
-+}
-+
-+/****************************************************************************
-+* Func:     SciReadCharNoWait
-+* Desc:     try to get a char but dont wait for one
-+* Inputs:   none
-+* Outputs:  a character or -1 if none
-+* Errors:   none
-+* Scope:    public
-+****************************************************************************/
-+
-+uint8_t   inline SciReadCharNoWait( void )
-+{
-+    uint8_t   ch;
-+
-+    if ( SciCharAvailable() == 0 )              /* anything there? */
-+        return -1;
-+
-+    ch = *SCDR;                                 /* get the character */
-+
-+    SciBytesIn++;                               /* increment the count */
-+
-+    return ch;                                  /* return the char */
-+}
-+\f
-+
-+/****************************************************************************
-+* Func:     SciCharAvailable
-+* Desc:     is there a receive character in the data register
-+* Inputs:   none
-+* Outputs:  false if no char available, else true
-+* Errors:   none
-+* Scope:    public
-+****************************************************************************/
-+
-+uint8_t   inline SciCharAvailable( void )
-+{
-+    return ( *SCSR & SCI_RCVR_READY );          /* char in data register? */
-+}
-+\f
-+
-+/****************************************************************************
-+* Func:     SciSendBreak
-+* Desc:     send 1 or tow breaks (all zero bits)
-+* Inputs:   none
-+* Outputs:  none
-+* Errors:   none
-+* Scope:    public
-+****************************************************************************/
-+
-+void SciSendBreak( void )
-+{
-+    /* From the Motorola QSM reference manual - */
-+
-+    /* "if SBK is toggled by writing it first to a one and then immediately */
-+    /* to a zero (in less than one serial frame interval), the transmitter */
-+    /* sends only one or two break frames before reverting to mark (idle) */
-+    /* or before commencing to send more data" */
-+
-+    *SCCR1 |=  SCI_SEND_BREAK;                  /* set the bit */
-+
-+    *SCCR1 &= ~SCI_SEND_BREAK;                  /* clear the bit */
-+
-+    return;
-+}
-+\f
-+
-+/*
-+ *
-+ *                             SECTION 6
-+ *                             TEST CODE
-+ */
-+
-+/****************************************************************************
-+* Func:     SciUnitTest
-+* Desc:     test the device driver
-+* Inputs:   nothing
-+* Outputs:  nothing
-+* Scope:    public
-+****************************************************************************/
-+
-+#if 0
-+#define O_RDWR LIBIO_FLAGS_READ_WRITE           /* dont like this but... */
-+
-+void SciUnitTest()
-+{
-+    uint8_t   byte;                             /* a character */
-+    uint16_t   fd;                              /* file descriptor for device */
-+    uint16_t   result;                          /* result of ioctl */
-+
-+    fd = open("/dev/sci",O_RDWR);               /* open the device */
-+
-+printk("SCI open fd=%d\r\n",fd);
-+
-+    result = write(fd, "abcd\r\n", 6);          /* send a string */
-+
-+printk("SCI write result=%d\r\n",result);
-+
-+    result = read(fd, &byte, 1);                /* read a byte */
-+
-+printk("SCI read result=%d,byte=%x\r\n",result,byte);
-+
-+    return;
-+}
-+#endif
-+\f
-+
-+/****************************************************************************
-+* Func:     SciPrintStats
-+* Desc:     print out some driver information
-+* Inputs:   nothing
-+* Outputs:  nothing
-+* Scope:    public
-+****************************************************************************/
-+
-+void SciPrintStats ( void )
-+{
-+    printk("\r\n");
-+
-+    printk( "SYS_CLOCK is %2.6f Mhz\r\n\n", SYS_CLOCK / 1000000.0 );
-+
-+    printk( "Current baud rate is %d bps or %d cps\r\n\n", SciBaud, SciBaud / 10 );
-+
-+    printk( "SCI Uart chars in       %8d\r\n", SciBytesIn       );
-+    printk( "SCI Uart chars out      %8d\r\n", SciBytesOut      );
-+    printk( "SCI Uart framing errors %8d\r\n", SciErrorsFraming );
-+    printk( "SCI Uart parity  errors %8d\r\n", SciErrorsParity  );
-+    printk( "SCI Uart overrun errors %8d\r\n", SciErrorsOverrun );
-+    printk( "SCI Uart noise   errors %8d\r\n", SciErrorsNoise   );
-+
-+    return;
-+}
-Index: rtems/c/src/lib/libbsp/m68k/mo376/startup/bspstart.c
-===================================================================
---- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ rtems/c/src/lib/libbsp/m68k/mo376/startup/bspstart.c       2008-08-19 12:23:15.000000000 +0200
-@@ -0,0 +1,59 @@
-+/*
-+ *  This routine starts the application.  It includes application,
-+ *  board, and monitor specific initialization and configuration.
-+ *  The generic CPU dependent initialization has been performed
-+ *  before this routine is invoked.
-+ *
-+ *  COPYRIGHT (c) 1989-1999.
-+ *  On-Line Applications Research Corporation (OAR).
-+ *
-+ *  The license and distribution terms for this file may be
-+ *  found in the file LICENSE in this distribution or at
-+ *  http://www.rtems.com/license/LICENSE.
-+ *
-+ *  $Id: bspstart.c,v 1.13 2008/08/19 10:23:15 ralf Exp $
-+ */
-+
-+#include <bsp.h>
-+#include <rtems/libio.h>
-+
-+#include <string.h>
-+
-+/*
-+ *  Use the shared implementations of the following routines
-+ */
-+
-+void bsp_libc_init( void *, uint32_t, int );
-+void bsp_pretasking_hook(void);               /* m68k version */
-+
-+/*
-+ *  Call Spurious_Initialize in bsp_predriver_hook because
-+ *  bsp_predriver_hook is call after the _ISR_Vector_Table allocation
-+ */
-+
-+void bsp_predriver_hook(void)
-+{
-+  extern void Spurious_Initialize(void);
-+  Spurious_Initialize();
-+}
-+
-+/*
-+ *  bsp_start
-+ *
-+ *  This routine does the bulk of the system initialization.
-+ */
-+
-+void bsp_start( void )
-+{
-+  void           *vbr;
-+  extern void    *_WorkspaceBase;
-+  extern void    *_RamSize;
-+  extern unsigned long _M68k_Ramsize;
-+
-+  /* RAM size set in linker script */
-+  _M68k_Ramsize = (unsigned long)&_RamSize;
-+
-+  m68k_get_vbr( vbr );
-+
-+  Configuration.work_space_start = (void *) &_WorkspaceBase;
-+}
-Index: rtems/c/src/lib/libbsp/m68k/mo376/startup/start_c.c
-===================================================================
---- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ rtems/c/src/lib/libbsp/m68k/mo376/startup/start_c.c        2008-08-19 12:23:15.000000000 +0200
-@@ -0,0 +1,125 @@
-+/*
-+ *  $Id
-+ */
-+
-+#include <mrm332.h>
-+#include <rtems/m68k/sim.h>
-+#define __START_C__
-+#include "bsp.h"
-+
-+m68k_isr_entry M68Kvec[256];
-+m68k_isr_entry vectors[256];
-+char * const __argv[]= {"main", ""};
-+
-+void  boot_card(int argc, char * const argv[]);
-+
-+/*
-+ *  This prototype really should have the noreturn attribute but
-+ *  that causes a warning. Not sure how to fix that.
-+ */
-+/* void dumby_start ()  __attribute__ ((noreturn)); */
-+void start_c(void);
-+
-+void start_c(void) {
-+
-+  /* Synthesizer Control Register */
-+  /*    see section(s) 4.8 */
-+  /* end include in ram_init.S */
-+  *SYNCR = (unsigned short int)
-+    ( SAM(MRM_W,15,VCO) | SAM(0x0,14,PRESCALE) | SAM(MRM_Y,8,COUNTER) );
-+  while (! (*SYNCR & SLOCK)); /* protect from clock overshoot */
-+  /* include in ram_init.S */
-+  *SYNCR = (unsigned short int)
-+    ( SAM(MRM_W,15,VCO) | SAM(MRM_X,14,PRESCALE) | SAM(MRM_Y,8,COUNTER) );
-+
-+  /* System Protection Control Register */
-+  /*    !!! can only write to once after reset !!! */
-+  /*    see section 3.8.4 of the SIM Reference Manual */
-+  *SYPCR = (unsigned char)( HME | BME );
-+
-+  /* Periodic Interrupr Control Register */
-+  /*    see section 3.8.2 of the SIM Reference Manual */
-+  *PICR = (unsigned short int)
-+    ( SAM(0,8,PIRQL) | SAM(MRM_PIV,0,PIV) );
-+  /*     ^^^ zero disables interrupt, don't enable here or ram_init will
-+       be wrong. It's enabled below. */
-+
-+  /* Periodic Interrupt Timer Register */
-+  /*    see section 3.8.3 of the SIM Reference Manual */
-+  *PITR = (unsigned short int)( SAM(0x09,0,PITM) );
-+  /*    1.098mS interrupt, assuming 32.768 KHz input clock */
-+
-+  /* Port C Data */
-+  /*    load values before enabled */
-+  *PORTC = (unsigned char) 0x0;
-+
-+  /* Port E and F Data Register */
-+  /*    see section 9 of the SIM Reference Manual */
-+  *PORTE0 = (unsigned char) 0;
-+  *PORTF0 = (unsigned char) 0;
-+
-+  /* Port E and F Data Direction Register */
-+  /*    see section 9 of the SIM Reference Manual */
-+  *DDRE = (unsigned char) 0xff;
-+  *DDRF = (unsigned char) 0xfd;
-+
-+  /* Port E and F Pin Assignment Register */
-+  /*    see section 9 of the SIM Reference Manual */
-+  *PEPAR = (unsigned char) 0;
-+  *PFPAR = (unsigned char) 0;
-+
-+  /* end of SIM initalization code */
-+  /* end include in ram_init.S */
-+
-+  /*
-+   * Initialize RAM by copying the .data section out of ROM (if
-+   * needed) and "zero-ing" the .bss section.
-+   */
-+  {
-+    register char *src = _etext;
-+    register char *dst = _copy_start;
-+
-+    if (_copy_data_from_rom)
-+      /* ROM has data at end of text; copy it. */
-+      while (dst < _edata)
-+      *dst++ = *src++;
-+
-+    /* Zero bss */
-+    for (dst = _clear_start; dst< end; dst++)
-+      {
-+      *dst = 0;
-+      }
-+  }
-+
-+  /*
-+   * Initialize vector table.
-+   */
-+  {
-+    m68k_isr_entry *monitors_vector_table;
-+
-+    m68k_get_vbr(monitors_vector_table);
-+
-+    M68Kvec[  4 ] = monitors_vector_table[  4 ];   /* breakpoints vector */
-+    M68Kvec[  9 ] = monitors_vector_table[  9 ];   /* trace vector */
-+    M68Kvec[ 31 ] = monitors_vector_table[ 31 ];   /* level 7 interrupt */
-+    M68Kvec[ 47 ] = monitors_vector_table[ 47 ];   /* system call vector */
-+    M68Kvec[ 66 ] = monitors_vector_table[ 66 ];   /* user defined */
-+
-+    m68k_set_vbr(&M68Kvec);
-+  }
-+
-+  /*
-+   * Initalize the board.
-+   */
-+
-+  /* Spurious should be called in the predriver hook */
-+  /* Spurious_Initialize(); */
-+  /*console_init(); */
-+
-+  /*
-+   * Execute main with arguments argc and agrv.
-+   */
-+  boot_card(1,__argv);
-+  reboot();
-+
-+}
-Index: rtems/c/src/lib/libbsp/m68k/mo376/include/tm27.h
-===================================================================
---- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ rtems/c/src/lib/libbsp/m68k/mo376/include/tm27.h   2009-11-29 01:11:56.475557339 +0100
-@@ -0,0 +1,34 @@
-+/*
-+ *  tm27.h
-+ *
-+ *  The license and distribution terms for this file may be
-+ *  found in the file LICENSE in this distribution or at
-+ *  http://www.rtems.com/license/LICENSE.
-+ *
-+ *  $Id: tm27.h,v 1.2 2004/04/23 04:47:36 ralf Exp $
-+ */
-+
-+#ifndef _RTEMS_TMTEST27
-+#error "This is an RTEMS internal file you must not include directly."
-+#endif
-+
-+#ifndef __tm27_h
-+#define __tm27_h
-+
-+/*
-+ *  Define the interrupt mechanism for Time Test 27
-+ */
-+
-+/* XXX - JRS - I want to compile the tmtests */
-+
-+#define MUST_WAIT_FOR_INTERRUPT 1
-+
-+#define Install_tm27_vector( handler ) /* empty */
-+
-+#define Cause_tm27_intr() /* empty */
-+
-+#define Clear_tm27_intr() /* empty */
-+
-+#define Lower_tm27_intr() /* empty */
-+
-+#endif
-Index: rtems/c/src/lib/libbsp/m68k/mo376/times
-===================================================================
---- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ rtems/c/src/lib/libbsp/m68k/mo376/times    2009-11-29 01:11:56.479557220 +0100
-@@ -0,0 +1,195 @@
-+#
-+#  Timing Test Suite Results for the MRM332 BSP
-+#
-+#  $Id: times,v 1.2 2004/01/07 21:13:50 joel Exp $
-+#
-+
-+NOTE:  This BSP is user submitted and no information is currently available. 
-+
-+TBD: MATT - update this with real times!
-+
-+Board:                MRM332 
-+CPU:                  68332
-+Clock Speed:          20 Mhz
-+Memory Configuration: SRAM, DRAM, cache, etc
-+Wait States:          
-+
-+Times Reported in:    cycles, microseconds, etc
-+Timer Source:         Count Down Timer, on-CPU cycle counter, etc
-+
-+Column A:             unused
-+Column B:             unused
-+
-+#                          DESCRIPTION                                 A    B
-+== =================================================================  ==== ====
-+ 1 rtems_semaphore_create                                               20
-+   rtems_semaphore_delete                                               21
-+   rtems_semaphore_obtain: available                                    15
-+   rtems_semaphore_obtain: not available -- NO_WAIT                     15
-+   rtems_semaphore_release: no waiting tasks                            16
-+
-+ 2 rtems_semaphore_obtain: not available -- caller blocks               62
-+
-+ 3 rtems_semaphore_release: task readied -- preempts caller             55
-+
-+ 4 rtems_task_restart: blocked task -- preempts caller                  77
-+   rtems_task_restart: ready task -- preempts caller                    70
-+   rtems_semaphore_release: task readied -- returns to caller           25
-+   rtems_task_create                                                    57
-+   rtems_task_start                                                     31
-+   rtems_task_restart: suspended task -- returns to caller              36
-+   rtems_task_delete: suspended task                                    47
-+   rtems_task_restart: ready task -- returns to caller                  37
-+   rtems_task_restart: blocked task -- returns to caller                46
-+   rtems_task_delete: blocked task                                      50
-+
-+ 5 rtems_task_suspend: calling task                                     51
-+   rtems_task_resume: task readied -- preempts caller                   49
-+
-+ 6 rtems_task_restart: calling task                                     59
-+   rtems_task_suspend: returns to caller                                18
-+   rtems_task_resume: task readied -- returns to caller                 19
-+   rtems_task_delete: ready task                                        50
-+
-+ 7 rtems_task_restart: suspended task -- preempts caller                70
-+
-+ 8 rtems_task_set_priority: obtain current priority                     12
-+   rtems_task_set_priority: returns to caller                           27
-+   rtems_task_mode: obtain current mode                                  5
-+   rtems_task_mode: no reschedule                                        5
-+   rtems_task_mode: reschedule -- returns to caller                      8
-+   rtems_task_mode: reschedule -- preempts caller                       39
-+   rtems_task_set_note                                                  13
-+   rtems_task_get_note                                                  13
-+   rtems_clock_set                                                      33
-+   rtems_clock_get                                                       3
-+
-+ 9 rtems_message_queue_create                                          110
-+   rtems_message_queue_send: no waiting tasks                           37
-+   rtems_message_queue_urgent: no waiting tasks                         37
-+   rtems_message_queue_receive: available                               31
-+   rtems_message_queue_flush: no messages flushed                       12
-+   rtems_message_queue_flush: messages flushed                          16
-+   rtems_message_queue_delete                                           26
-+
-+10 rtems_message_queue_receive: not available -- NO_WAIT                15
-+   rtems_message_queue_receive: not available -- caller blocks          62
-+
-+11 rtems_message_queue_send: task readied -- preempts caller            72
-+
-+12 rtems_message_queue_send: task readied -- returns to caller          39
-+
-+13 rtems_message_queue_urgent: task readied -- preempts caller          72
-+
-+14 rtems_message_queue_urgent: task readied -- returns to caller        39
-+
-+15 rtems_event_receive: obtain current events                            1
-+   rtems_event_receive: not available -- NO_WAIT                        12
-+   rtems_event_receive: not available -- caller blocks                  56
-+   rtems_event_send: no task readied                                    12
-+   rtems_event_receive: available                                       12
-+   rtems_event_send: task readied -- returns to caller                  24
-+
-+16 rtems_event_send: task readied -- preempts caller                    55
-+
-+17 rtems_task_set_priority: preempts caller                             62
-+
-+18 rtems_task_delete: calling task                                      83
-+
-+19 rtems_signal_catch                                                    9
-+   rtems_signal_send: returns to caller                                 15
-+   rtems_signal_send: signal to self                                    18
-+   exit ASR overhead: returns to calling task                           22
-+   exit ASR overhead: returns to preempting task                        49
-+
-+20 rtems_partition_create                                               35
-+   rtems_region_create                                                  23
-+   rtems_partition_get_buffer: available                                15
-+   rtems_partition_get_buffer: not available                            13
-+   rtems_partition_return_buffer                                        18
-+   rtems_partition_delete                                               16
-+   rtems_region_get_segment: available                                  22
-+   rtems_region_get_segment: not available -- NO_WAIT                   21
-+   rtems_region_return_segment: no waiting tasks                        19
-+   rtems_region_get_segment: not available -- caller blocks             64
-+   rtems_region_return_segment: task readied -- preempts caller         74
-+   rtems_region_return_segment: task readied -- returns to caller       44
-+   rtems_region_delete                                                  16
-+   rtems_io_initialize                                                   2
-+   rtems_io_open                                                         1
-+   rtems_io_close                                                        1
-+   rtems_io_read                                                         1
-+   rtems_io_write                                                        1
-+   rtems_io_control                                                      1
-+
-+21 rtems_task_ident                                                    149
-+   rtems_message_queue_ident                                           145
-+   rtems_semaphore_ident                                               156
-+   rtems_partition_ident                                               145
-+   rtems_region_ident                                                  148
-+   rtems_port_ident                                                    145
-+   rtems_timer_ident                                                   145
-+   rtems_rate_monotonic_ident                                          145
-+
-+22 rtems_message_queue_broadcast: task readied -- returns to caller     42
-+   rtems_message_queue_broadcast: no waiting tasks                      17
-+   rtems_message_queue_broadcast: task readied -- preempts caller       78
-+
-+23 rtems_timer_create                                                   14
-+   rtems_timer_fire_after: inactive                                     22
-+   rtems_timer_fire_after: active                                       24
-+   rtems_timer_cancel: active                                           15
-+   rtems_timer_cancel: inactive                                         13
-+   rtems_timer_reset: inactive                                          21
-+   rtems_timer_reset: active                                            23
-+   rtems_timer_fire_when: inactive                                      34
-+   rtems_timer_fire_when: active                                        34
-+   rtems_timer_delete: active                                           19
-+   rtems_timer_delete: inactive                                         17
-+   rtems_task_wake_when                                                 69
-+
-+24 rtems_task_wake_after: yield -- returns to caller                     9
-+   rtems_task_wake_after: yields -- preempts caller                     45
-+
-+25 rtems_clock_tick                                                      4
-+
-+26 _ISR_Disable                                                          0
-+   _ISR_Flash                                                            1
-+   _ISR_Enable                                                           1
-+   _Thread_Disable_dispatch                                              0
-+   _Thread_Enable_dispatch                                               7
-+   _Thread_Set_state                                                    11
-+   _Thread_Disptach (NO FP)                                             31
-+   context switch: no floating point contexts                           21
-+   context switch: self                                                 10
-+   context switch: to another task                                      10
-+   context switch: restore 1st FP task                                  25
-+   fp context switch: save idle, restore idle                           31
-+   fp context switch: save idle, restore initialized                    19
-+   fp context switch: save initialized, restore initialized             20
-+   _Thread_Resume                                                        7
-+   _Thread_Unblock                                                       7
-+   _Thread_Ready                                                         9
-+   _Thread_Get                                                           4
-+   _Semaphore_Get                                                        2
-+   _Thread_Get: invalid id                                               0
-+
-+27 interrupt entry overhead: returns to interrupted task                 6
-+   interrupt exit overhead: returns to interrupted task                  6
-+   interrupt entry overhead: returns to nested interrupt                 6
-+   interrupt exit overhead: returns to nested interrupt                  5
-+   interrupt entry overhead: returns to preempting task                  7
-+   interrupt exit overhead: returns to preempting task                  36
-+
-+28 rtems_port_create                                                    16
-+   rtems_port_external_to_internal                                      11
-+   rtems_port_internal_to_external                                      11
-+   rtems_port_delete                                                    16
-+
-+29 rtems_rate_monotonic_create                                          15
-+   rtems_rate_monotonic_period: initiate period -- returns to caller    21
-+   rtems_rate_monotonic_period: obtain status                           13
-+   rtems_rate_monotonic_cancel                                          16
-+   rtems_rate_monotonic_delete: inactive                                18
-+   rtems_rate_monotonic_delete: active                                  20
-+   rtems_rate_monotonic_period: conclude periods -- caller blocks       53
-Index: rtems/c/src/lib/libbsp/m68k/mo376/include/mrm332.h
-===================================================================
---- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ rtems/c/src/lib/libbsp/m68k/mo376/include/mrm332.h 2009-11-29 01:11:56.479557220 +0100
-@@ -0,0 +1,70 @@
-+/*  mrm332.h
-+ *
-+ *  $Id: mrm332.h,v 1.5 2004/04/21 16:01:35 ralf Exp $
-+ */
-+
-+#ifndef _MRM332_H_
-+#define _MRM332_H_
-+
-+/* SIM_MM (SIM Module Mapping) determines the location of the control
-+   register block. When MM=0, register addresses range fom 0x7ff000 to
-+   0x7FFFFF. When MM=1, register addresses range from 0xfff000 to
-+   0xffffff. */
-+#define SIM_MM 1
-+
-+/* Interrupt related definitions */
-+#define SIM_IARB 15
-+#define QSM_IARB 10
-+
-+#define MRM_PIV 64
-+#define ISRL_PIT 4            /* zero disables PIT */
-+
-+#define EFI_QIVR 66           /* 66=>SCI and 67=>QSPI interrupt */
-+#define ISRL_QSPI 0
-+
-+#define EFI_SPINT 24          /* spurious interrupt */
-+#define EFI_INT1 25           /* CTS interrupt */
-+#define ISRL_SCI 6
-+
-+/* System Clock definitions */
-+#define XTAL 32768.0          /* crystal frequency in Hz */
-+
-+#if 0
-+/* Default MRM clock rate (8.388688 MHz) set by CPU32: */
-+#define MRM_W 0                       /* system clock parameters */
-+#define MRM_X 0
-+#define MRM_Y 0x3f
-+#endif
-+
-+#if 1
-+/* 16.77722 MHz: */
-+#define MRM_W 1                       /* system clock parameters */
-+#define MRM_X 1
-+#define MRM_Y 0x0f
-+#endif
-+
-+#if 0
-+/* 25.16582 MHz: */
-+#define MRM_W 1                       /* system clock parameters */
-+#define MRM_X 1
-+#define MRM_Y 0x17
-+#endif
-+
-+#define SYS_CLOCK (XTAL*4.0*(MRM_Y+1)*(1 << (2*MRM_W+MRM_X)))
-+#define SCI_BAUD 19200                /* RS232 Baud Rate */
-+
-+/* macros/functions */
-+
-+#ifndef ASM
-+
-+/*
-+ *  This prototype really should have the noreturn attribute but
-+ *  that causes a warning. Not sure how to fix that.
-+ */
-+/*   static void reboot(void) __attribute__ ((noreturn)); */
-+static void reboot(void);
-+__inline__ static void reboot() {asm("trap #15; .word 0x0063");}
-+
-+#endif /* ASM */
-+
-+#endif /* _MRM_H_ */
-Index: rtems/c/src/lib/libbsp/m68k/mo376/include/bspopts.h.in
-===================================================================
---- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ rtems/c/src/lib/libbsp/m68k/mo376/include/bspopts.h.in     2009-11-29 01:11:56.479557220 +0100
-@@ -0,0 +1,16 @@
-+/* include/bspopts.h.in.  Generated from configure.ac by autoheader.  */
-+
-+/* Define to the address where bug reports for this package should be sent. */
-+#undef PACKAGE_BUGREPORT
-+
-+/* Define to the full name of this package. */
-+#undef PACKAGE_NAME
-+
-+/* Define to the full name and version of this package. */
-+#undef PACKAGE_STRING
-+
-+/* Define to the one symbol short name of this package. */
-+#undef PACKAGE_TARNAME
-+
-+/* Define to the version of this package. */
-+#undef PACKAGE_VERSION
-Index: rtems/c/src/lib/libbsp/m68k/mo376/spurious/spinit.c
-===================================================================
---- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ rtems/c/src/lib/libbsp/m68k/mo376/spurious/spinit.c        2009-11-29 01:11:56.479557220 +0100
-@@ -0,0 +1,105 @@
-+/*  Spurious_driver
-+ *
-+ *  This routine installs spurious interrupt handlers for the mrm.
-+ *
-+ *  Input parameters:  NONE
-+ *
-+ *  Output parameters:  NONE
-+ *
-+ *  COPYRIGHT (c) 1989, 1990, 1991, 1992, 1993.
-+ *  On-Line Applications Research Corporation (OAR).
-+ *
-+ *  The license and distribution terms for this file may be
-+ *  found in the file LICENSE in this distribution or at
-+ *  http://www.rtems.com/license/LICENSE.
-+ *
-+ *  $Id: spinit.c,v 1.6 2006/09/11 21:43:55 joel Exp $
-+ */
-+
-+#include <bsp.h>
-+#include <stdio.h>
-+
-+const char * const _Spurious_Error_[] = {"Reset","Bus Error","Address Error",
-+   "Illegal Instruction","Zero Division","CHK, CHK2 Instruction",
-+   "TRAPcc, TRAPV Instruction","Privilege Violation","Trace",
-+   "Line 1010 Emulation","Line 1111 Emulation","Hardware Breakpoint",
-+   "Coprocessor Protocal Violation",
-+   "Format Error ans Uninitialized Interrupt","Unassigned",
-+   "Spurious Interrupt","AVec1","AVec2","AVec3","AVec4","AVec5","AVec6",
-+   "AVec7","Trap Instruction","Debug","Reboot","Reserved Coprocessor",
-+   "Reserved Unassigned","User Defined"};
-+
-+rtems_isr Spurious_Isr(
-+  rtems_vector_number vector
-+)
-+{
-+  /*int sp = 0; */
-+#if 0
-+  const char * const VectDescrip[] = {
-+    _Spurious_Error_[0],   _Spurious_Error_[0],  _Spurious_Error_[1],
-+    _Spurious_Error_[2],   _Spurious_Error_[3],  _Spurious_Error_[4],
-+    _Spurious_Error_[5],   _Spurious_Error_[6],  _Spurious_Error_[7],
-+    _Spurious_Error_[8],   _Spurious_Error_[9], _Spurious_Error_[10],
-+    _Spurious_Error_[11], _Spurious_Error_[12], _Spurious_Error_[13],
-+    _Spurious_Error_[13], _Spurious_Error_[14], _Spurious_Error_[14],
-+    _Spurious_Error_[14], _Spurious_Error_[14], _Spurious_Error_[14],
-+    _Spurious_Error_[14], _Spurious_Error_[14], _Spurious_Error_[14],
-+    _Spurious_Error_[15], _Spurious_Error_[16], _Spurious_Error_[17],
-+    _Spurious_Error_[18], _Spurious_Error_[19], _Spurious_Error_[20],
-+    _Spurious_Error_[21], _Spurious_Error_[22], _Spurious_Error_[23],
-+    _Spurious_Error_[24], _Spurious_Error_[23], _Spurious_Error_[23],
-+    _Spurious_Error_[23], _Spurious_Error_[23], _Spurious_Error_[23],
-+    _Spurious_Error_[23], _Spurious_Error_[23], _Spurious_Error_[23],
-+    _Spurious_Error_[23], _Spurious_Error_[23], _Spurious_Error_[23],
-+    _Spurious_Error_[23], _Spurious_Error_[23], _Spurious_Error_[25],
-+    _Spurious_Error_[26], _Spurious_Error_[26], _Spurious_Error_[26],
-+    _Spurious_Error_[26], _Spurious_Error_[26], _Spurious_Error_[26],
-+    _Spurious_Error_[26], _Spurious_Error_[26], _Spurious_Error_[26],
-+    _Spurious_Error_[26], _Spurious_Error_[26], _Spurious_Error_[27],
-+    _Spurious_Error_[27], _Spurious_Error_[27], _Spurious_Error_[27],
-+    _Spurious_Error_[27], _Spurious_Error_[28]};
-+#endif
-+
-+  /*asm volatile ( "movea.l   %%sp,%0 " : "=a" (sp) : "0" (sp) ); */
-+
-+  _CPU_ISR_Set_level( 7 );
-+  /*_UART_flush(); */
-+#if 0
-+  RAW_PUTS("\n\rRTEMS: Spurious interrupt: ");
-+  RAW_PUTS((char *)VectDescrip[( (vector>64) ? 64 : vector )]);
-+  RAW_PUTS("\n\rRTEMS:    Vector: ");
-+  RAW_PUTI(vector);
-+  RAW_PUTS(" sp: ");
-+  RAW_PUTI(sp);
-+  RAW_PUTS("\n\r");
-+#endif
-+  bsp_cleanup();
-+
-+  /* BDM SIGEMT */
-+  asm("  .word  0x4afa");
-+
-+  for(;;);
-+}
-+
-+void Spurious_Initialize(void)
-+{
-+  rtems_vector_number vector;
-+
-+  for ( vector = 0x0 ; vector <= 0xFF ; vector++ )
-+    {
-+      switch (vector)
-+      {
-+      case 4:
-+      case 9:
-+      case 31:
-+      case 47:
-+      case 66:
-+        /* These vectors used by CPU32bug - don't overwrite them. */
-+        break;
-+
-+      default:
-+        (void) set_vector( Spurious_Isr, vector, 1 );
-+        break;
-+      }
-+    }
-+}
-Index: rtems/c/src/lib/libbsp/m68k/mo376/startup/linkcmds
-===================================================================
---- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ rtems/c/src/lib/libbsp/m68k/mo376/startup/linkcmds 2008-03-04 00:06:30.000000000 +0100
-@@ -0,0 +1,164 @@
-+/*  linkcmds
-+ *
-+ *  $Id: linkcmds,v 1.8 2008/03/03 23:06:30 joel Exp $
-+ */
-+
-+OUTPUT_ARCH(m68k)
-+__DYNAMIC  =  0;
-+
-+/*
-+ * The memory map looks like this:
-+ * +--------------------+ <- low memory
-+ * | .text              |
-+ * |        etext       |
-+ * |        ctor list   | the ctor and dtor lists are for
-+ * |        dtor list   | C++ support
-+ * |        _endtext    |
-+ * +--------------------+
-+ * | .data              | initialized data goes here
-+ * |        _sdata      |
-+ * |        _edata      |
-+ * +--------------------+
-+ * | .bss               |
-+ * |        _clear_start| start of bss, cleared by crt0
-+ * |        _end        | start of heap, used by sbrk()
-+ * +--------------------+
-+ * |    heap space      |
-+ * |        _ENDHEAP    |
-+ * |    stack space     | 
-+ * |        __stack     | top of stack
-+ * +--------------------+ <- high memory
-+ */
-+
-+/*
-+ * Declare some sizes.
-+ */
-+_RamBase = DEFINED(_RamBase) ? _RamBase : 0x10000;
-+_RamSize = DEFINED(_RamSize) ? _RamSize : 0x70000;
-+_RamEnd = _RamBase + _RamSize;
-+_HeapSize = DEFINED(_HeapSize) ? _HeapSize : 0x10000;
-+_StackSize = DEFINED(_StackSize) ? _StackSize : 0x2000;
-+
-+MEMORY
-+{
-+  ram     : ORIGIN = 0x10000, LENGTH = 0x70000
-+}
-+
-+_copy_data_from_rom = 0;
-+
-+/*
-+ * stick everything in ram (of course)
-+ */
-+SECTIONS
-+{
-+      ram : {
-+              . = .;
-+      } >ram
-+
-+        /*
-+         * Text, data and bss segments
-+         */
-+        .text : {
-+                *(.text*)
-+
-+              /*
-+               * C++ constructors/destructors
-+               */
-+              *(.gnu.linkonce.t.*)
-+
-+              /*
-+               * Initialization and finalization code.
-+               *
-+               * Various files can provide initialization and finalization
-+               * functions.  crtbegin.o and crtend.o are two instances. The
-+               * body of these functions are in .init and .fini sections. We
-+               * accumulate the bodies here, and prepend function prologues
-+               * from crti.o and function epilogues from crtn.o. crti.o must
-+               * be linked first; crtn.o must be linked last.  Because these
-+               * are wildcards, it doesn't matter if the user does not
-+               * actually link against crti.o and crtn.o; the linker won't
-+               * look for a file to match a wildcard.  The wildcard also
-+               * means that it doesn't matter which directory crti.o and
-+               * crtn.o are in. 
-+               */
-+              PROVIDE (_init = .);
-+              *crti.o(.init)
-+              *(.init)
-+              *crtn.o(.init)
-+              PROVIDE (_fini = .);
-+              *crti.o(.fini)
-+              *(.fini)
-+              *crtn.o(.fini)
-+
-+              /*
-+               * Special FreeBSD sysctl sections.
-+               */
-+              . = ALIGN (16);
-+              __start_set_sysctl_set = .;
-+              *(set_sysctl_*);
-+              __stop_set_sysctl_set = ABSOLUTE(.);
-+              *(set_domain_*);
-+              *(set_pseudo_*);
-+
-+              /*
-+               * C++ constructors/destructors
-+               *
-+               * gcc uses crtbegin.o to find the start of the constructors
-+               * and destructors so we make sure it is first.  Because this
-+               * is a wildcard, it doesn't matter if the user does not
-+               * actually link against crtbegin.o; the linker won't look for
-+               * a file to match a wildcard.  The wildcard also means that
-+               * it doesn't matter which directory crtbegin.o is in. The
-+               * constructor and destructor list are terminated in
-+               * crtend.o.  The same comments apply to it.
-+               */
-+              . = ALIGN (16);
-+              *crtbegin.o(.ctors)
-+              *(.ctors)
-+              *crtend.o(.ctors)
-+              *crtbegin.o(.dtors)
-+              *(.dtors)
-+              *crtend.o(.dtors)
-+
-+              /*
-+               * Exception frame info
-+               */
-+              . = ALIGN (16);
-+              *(.eh_frame)
-+
-+              /*
-+               * Read-only data
-+               */
-+              . = ALIGN (16);
-+              _rodata_start = .;
-+              *(.rodata*)
-+              *(.gnu.linkonce.r*)
-+
-+                 . = ALIGN (16);
-+                PROVIDE (_etext = .);
-+        } >ram
-+        .data : {
-+                PROVIDE (_copy_start = .);
-+                *(.data*)
-+              *(.gnu.linkonce.d*)
-+              *(.gcc_except_table*)
-+              *(.jcr)
-+                . = ALIGN (16);
-+                PROVIDE (_edata = .);
-+                PROVIDE (_copy_end = .);
-+        } >ram
-+        .bss : {
-+                _clear_start = .;
-+                *(.dynbss)
-+                *(.bss* .gnu.linkonce.b.*)
-+                *(COMMON)
-+                . = ALIGN (16);
-+                PROVIDE (end = .);
-+                . += _StackSize;
-+                . = ALIGN (16);
-+                _stack_init = .;
-+                _clear_end = .;
-+
-+                _WorkspaceBase = .;
-+        } >ram
-+}
-Index: rtems/c/src/lib/libbsp/m68k/mo376/bsp_specs
-===================================================================
---- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ rtems/c/src/lib/libbsp/m68k/mo376/bsp_specs        2008-12-08 06:15:06.000000000 +0100
-@@ -0,0 +1,13 @@
-+%rename endfile old_endfile
-+%rename startfile old_startfile
-+%rename link old_link
-+
-+*startfile:
-+%{!qrtems: %(old_startfile)} \
-+%{!nostdlib: %{qrtems: start.o%s crti.o%s crtbegin.o%s -e start}}
-+
-+*link:
-+%{!qrtems: %(old_link)} %{qrtems: -dc -dp -N}
-+
-+*endfile:
-+%{!qrtems: %(old_endfile)} %{qrtems: crtend.o%s crtn.o%s}
-Index: rtems/c/src/lib/libbsp/m68k/mo376/preinstall.am
-===================================================================
---- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ rtems/c/src/lib/libbsp/m68k/mo376/preinstall.am    2009-11-29 01:11:56.483556820 +0100
-@@ -0,0 +1,66 @@
-+## Automatically generated by ampolish3 - Do not edit
-+
-+if AMPOLISH3
-+$(srcdir)/preinstall.am: Makefile.am
-+      $(AMPOLISH3) $(srcdir)/Makefile.am > $(srcdir)/preinstall.am
-+endif
-+
-+PREINSTALL_DIRS =
-+DISTCLEANFILES += $(PREINSTALL_DIRS)
-+
-+all-local: $(TMPINSTALL_FILES)
-+
-+TMPINSTALL_FILES =
-+CLEANFILES = $(TMPINSTALL_FILES)
-+
-+all-am: $(PREINSTALL_FILES)
-+
-+PREINSTALL_FILES =
-+CLEANFILES += $(PREINSTALL_FILES)
-+
-+$(PROJECT_LIB)/$(dirstamp):
-+      @$(MKDIR_P) $(PROJECT_LIB)
-+      @: > $(PROJECT_LIB)/$(dirstamp)
-+PREINSTALL_DIRS += $(PROJECT_LIB)/$(dirstamp)
-+
-+$(PROJECT_INCLUDE)/$(dirstamp):
-+      @$(MKDIR_P) $(PROJECT_INCLUDE)
-+      @: > $(PROJECT_INCLUDE)/$(dirstamp)
-+PREINSTALL_DIRS += $(PROJECT_INCLUDE)/$(dirstamp)
-+
-+$(PROJECT_LIB)/bsp_specs: bsp_specs $(PROJECT_LIB)/$(dirstamp)
-+      $(INSTALL_DATA) $< $(PROJECT_LIB)/bsp_specs
-+PREINSTALL_FILES += $(PROJECT_LIB)/bsp_specs
-+
-+$(PROJECT_INCLUDE)/bsp.h: include/bsp.h $(PROJECT_INCLUDE)/$(dirstamp)
-+      $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp.h
-+PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp.h
-+
-+$(PROJECT_INCLUDE)/tm27.h: include/tm27.h $(PROJECT_INCLUDE)/$(dirstamp)
-+      $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/tm27.h
-+PREINSTALL_FILES += $(PROJECT_INCLUDE)/tm27.h
-+
-+$(PROJECT_INCLUDE)/bspopts.h: include/bspopts.h $(PROJECT_INCLUDE)/$(dirstamp)
-+      $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bspopts.h
-+PREINSTALL_FILES += $(PROJECT_INCLUDE)/bspopts.h
-+
-+$(PROJECT_INCLUDE)/mrm332.h: include/mrm332.h $(PROJECT_INCLUDE)/$(dirstamp)
-+      $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/mrm332.h
-+PREINSTALL_FILES += $(PROJECT_INCLUDE)/mrm332.h
-+
-+$(PROJECT_INCLUDE)/coverhd.h: ../../shared/include/coverhd.h $(PROJECT_INCLUDE)/$(dirstamp)
-+      $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/coverhd.h
-+PREINSTALL_FILES += $(PROJECT_INCLUDE)/coverhd.h
-+
-+$(PROJECT_LIB)/start.$(OBJEXT): start.$(OBJEXT) $(PROJECT_LIB)/$(dirstamp)
-+      $(INSTALL_DATA) $< $(PROJECT_LIB)/start.$(OBJEXT)
-+TMPINSTALL_FILES += $(PROJECT_LIB)/start.$(OBJEXT)
-+
-+$(PROJECT_LIB)/linkcmds: startup/linkcmds $(PROJECT_LIB)/$(dirstamp)
-+      $(INSTALL_DATA) $< $(PROJECT_LIB)/linkcmds
-+PREINSTALL_FILES += $(PROJECT_LIB)/linkcmds
-+
-+$(PROJECT_LIB)/linkcmds_ROM: startup/linkcmds_ROM $(PROJECT_LIB)/$(dirstamp)
-+      $(INSTALL_DATA) $< $(PROJECT_LIB)/linkcmds_ROM
-+PREINSTALL_FILES += $(PROJECT_LIB)/linkcmds_ROM
-+
diff --git a/rtems-patches/current/rtems-clone-ss555-to-ec555.patch b/rtems-patches/current/rtems-clone-ss555-to-ec555.patch
deleted file mode 100644 (file)
index 55e5c56..0000000
+++ /dev/null
@@ -1,2862 +0,0 @@
----
- c/src/lib/libbsp/powerpc/ec555/ChangeLog          |  225 ++++++++++++
- c/src/lib/libbsp/powerpc/ec555/Makefile.am        |   50 ++
- c/src/lib/libbsp/powerpc/ec555/README             |  262 ++++++++++++++
- c/src/lib/libbsp/powerpc/ec555/bsp_specs          |   13 
- c/src/lib/libbsp/powerpc/ec555/clock/p_clock.c    |   69 +++
- c/src/lib/libbsp/powerpc/ec555/configure.ac       |   52 ++
- c/src/lib/libbsp/powerpc/ec555/console/console.c  |  368 +++++++++++++++++++
- c/src/lib/libbsp/powerpc/ec555/include/bsp.h      |  112 +++++
- c/src/lib/libbsp/powerpc/ec555/include/coverhd.h  |  116 ++++++
- c/src/lib/libbsp/powerpc/ec555/include/tm27.h     |   54 ++
- c/src/lib/libbsp/powerpc/ec555/irq/irq.h          |   55 ++
- c/src/lib/libbsp/powerpc/ec555/preinstall.am      |   58 +++
- c/src/lib/libbsp/powerpc/ec555/startup/bspstart.c |  177 +++++++++
- c/src/lib/libbsp/powerpc/ec555/startup/iss555.c   |  148 +++++++
- c/src/lib/libbsp/powerpc/ec555/startup/linkcmds   |  319 +++++++++++++++++
- c/src/lib/libbsp/powerpc/ec555/startup/start.S    |  411 ++++++++++++++++++++++
- c/src/lib/libbsp/powerpc/ec555/startup/tm27supp.c |   29 +
- c/src/lib/libbsp/powerpc/ec555/times              |  189 ++++++++++
- make/custom/ec555.cfg                             |   38 ++
- 19 files changed, 2745 insertions(+)
-
-Index: rtems-4.9.3/c/src/lib/libbsp/powerpc/ec555/ChangeLog
-===================================================================
---- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ rtems-4.9.3/c/src/lib/libbsp/powerpc/ec555/ChangeLog       2008-12-08 06:15:50.000000000 +0100
-@@ -0,0 +1,225 @@
-+2008-12-08    Ralf Corsépius <ralf.corsepius@rtems.org>
-+
-+      * bsp_specs: Backport from CVS-HEAD.
-+
-+2008-09-29    Ralf Corsépius <ralf.corsepius@rtems.org>
-+
-+      * Makefile.am: Remove noinst_PROGRAMS (Unused).
-+
-+2008-05-15    Joel Sherrill <joel.sherrill@OARcorp.com>
-+
-+      * startup/bspstart.c: Add capability for bootcard.c BSP Initialization
-+      Framework to ask the BSP where it has memory for the RTEMS Workspace
-+      and C Program Heap. These collectively are referred to as work area.
-+      If the BSP supports this, then it does not have to include code to
-+      split the available memory between the two areas. This reduces the
-+      amount of code in the BSP specific bspstart.c file. Additionally, the
-+      shared framework can initialize the C Library, call
-+      rtems_debug_enable(), and dirty the work area memory. Until most/all
-+      BSPs support this new capability, if the BSP supports this, it should
-+      call RTEMS_BSP_BOOTCARD_HANDLES_RAM_ALLOCATION from its configure.ac.
-+      When the transition is complete, this autoconf macro can be removed.
-+
-+2008-05-14    Joel Sherrill <joel.sherrill@OARcorp.com>
-+
-+      * Makefile.am: Rework to avoid .rel files.
-+
-+2008-05-12    Joel Sherrill <joel.sherrill@OARcorp.com>
-+
-+      * startup/bspstart.c: Refactored and renamed initialization routines to
-+      rtems_initialize_data_structures, rtems_initialize_before_drivers,
-+      rtems_initialize_device_drivers, and
-+      rtems_initialize_start_multitasking. This opened the sequence up so
-+      that bootcard() could provide a more robust and flexible framework
-+      which is easier to explain and understand. This also lays the
-+      groundwork for sharing the division of available memory between the
-+      RTEMS workspace and heap and the C library initialization across all
-+      BSPs.
-+
-+2008-04-23    Joel Sherrill <joel.sherrill@OARcorp.com>
-+
-+      * startup/bspstart.c: Remove all references to
-+      console_reserve_resources and termios_reserve_resources.
-+
-+2008-03-03    Joel Sherrill <joel.sherrill@OARcorp.com>
-+
-+      * startup/linkcmds: Add wildcard to gcc_except_table section so
-+      programs compiled with gcc 4.3.x can link.
-+
-+2008-01-18    David Erickson <David.Erickson@drdc-rddc.gc.ca>
-+
-+      * startup/bspstart.c: Add semicolon.
-+
-+2008-01-11    Joel Sherrill <joel.sherrill@OARcorp.com>
-+
-+      * startup/bspstart.c: Add bsp_timer_least_valid and
-+      bsp_timer_average_overhead so tmtests link.
-+
-+2007-12-11    Joel Sherrill <joel.sherrill@OARcorp.com>
-+
-+      * include/bsp.h, startup/bspstart.c: Eliminate copies of the
-+      Configuration Table. Use the RTEMS provided accessor macros to obtain
-+      configuration fields.
-+
-+2007-12-04    Joel Sherrill <joel.sherrill@OARcorp.com>
-+
-+      * startup/bspstart.c: Move interrupt_stack_size field from CPU Table to
-+      Configuration Table. Eliminate CPU Table from all ports. Delete
-+      references to CPU Table in all forms.
-+
-+2007-12-03    Joel Sherrill <joel.sherrill@OARcorp.com>
-+
-+      * Makefile.am, startup/bspstart.c: Moved most of the remaining CPU
-+      Table fields to the Configuration Table. This included
-+      pretasking_hook, predriver_hook, postdriver_hook, idle_task,
-+      do_zero_of_workspace, extra_mpci_receive_server_stack,
-+      stack_allocate_hook, and stack_free_hook. As a side-effect of this
-+      effort some multiprocessing code was made conditional and some style
-+      clean up occurred.
-+
-+2007-11-28    Joel Sherrill <joel.sherrill@OARcorp.com>
-+
-+      * startup/bspstart.c: Eliminate PowerPC specific elements from the CPU
-+      Table. They have been replaced with variables named bsp_XXX as
-+      needed.
-+
-+2007-04-12    Ralf Corsépius <ralf.corsepius@rtems.org>
-+
-+      * bsp_specs: Remove qrtems_debug.
-+
-+2007-04-06    Ralf Corsépius <ralf.corsepius@rtems.org>
-+
-+      * bsp_specs: Remove lib (Now expected to exist in GCC).
-+
-+2006-12-02    Ralf Corsépius <ralf.corsepius@rtems.org>
-+
-+      * configure.ac: New BUG-REPORT address.
-+
-+2006-11-15    Joel Sherrill <joel@OARcorp.com>
-+
-+      * Makefile.am: Merge c_rtems_main() into boot_card(). This eliminated a
-+      file and simplified initialization.
-+
-+2006-10-17    Ralf Corsépius <ralf.corsepius@rtems.org>
-+
-+      * configure.ac: Require autoconf-2.60. Require automake-1.10.
-+
-+2006-03-08    Joel Sherrill <joel@OARcorp.com>
-+
-+      * startup/linkcmds: Add .gnu.linkonce.b.* section.
-+
-+2006-02-08    Joel Sherrill <joel@OARcorp.com>
-+
-+      * startup/linkcmds: Add sections required by newer gcc versions.
-+
-+2006-01-11    Ralf Corsepius <ralf.corsepius@rtems.org>
-+
-+      * configure.ac: Remove explicit ampolish3 support (now in
-+      RTEMS_BSP_CONFIGURE).
-+
-+2006-01-10    Ralf Corsepius <ralf.corsepius@rtems.org>
-+
-+      * configure.ac: Add ampolish3 support.
-+      * Makefile.am: Add preinstall.am.
-+
-+2006-01-09    Ralf Corsepius <ralf.corsepius@rtems.org>
-+
-+      * Makefile.am: Don't include subdirs.am.
-+
-+2005-05-26    Ralf Corsepius <ralf.corsepius@rtems.org>
-+
-+      * include/bsp.h: New header guard.
-+
-+2005-05-10    Ralf Corsepius <ralf.corsepius@rtems.org>
-+
-+      * console/console.c: Eliminate unsigned8.
-+
-+2005-04-26    Joel Sherrill <joel@OARcorp.com>
-+
-+      * startup/bspstart.c: Eliminate warnings.
-+
-+2005-04-25      Jennifer Averett <jennifer.averett@oarcorp.com>
-+
-+        PR 779/bsp
-+        * clock/p_clock.c: Add parameter to powerpc exception handler routines
-+
-+2005-02-17    Ralf Corsepius <ralf.corsepius@rtems.org>
-+
-+      * startup/bspstart.c: include <rtems/powerpc/powerpc.h>.
-+      Use PPC_MINIMUM_STACK_FRAME_SIZE instead of
-+      CPU_MINIMUM_STACK_FRAME_SIZE.
-+
-+2005-02-16    Ralf Corsepius <ralf.corsepius@rtems.org>
-+
-+      * configure.ac: Remove argument from RTEMS_PPC_EXCEPTIONS.
-+
-+2005-02-11    Ralf Corsepius <ralf.corsepius@rtems.org>
-+
-+      * Makefile.am: Merge-in wrapup/Makefile.am.
-+      * wrapup/Makefile.am: Remove.
-+      * configure.ac: Reflect changes above.
-+
-+2005-01-07    Ralf Corsepius <ralf.corsepius@rtems.org>
-+
-+      * Makefile.am: Eliminate CFLAGS_OPTIMIZE_V.
-+
-+2005-01-02    Ralf Corsepius <ralf.corsepius@rtems.org>
-+
-+      * Makefile.am, wrapup/Makefile.am: Remove build-variant support.
-+
-+2004-10-20    Ralf Corsepius <ralf_corsepius@rtems.org>
-+
-+      * console/console.c, include/bsp.h, startup/bspstart.c,
-+      startup/iss555.c: Use POSIX fixed size types.
-+
-+2004-09-24    Ralf Corsepius <ralf_corsepius@rtems.org>
-+
-+      * configure.ac: Require automake > 1.9.
-+
-+2004-04-23    Ralf Corsepius <ralf_corsepius@rtems.org>
-+
-+      PR 610/bsps
-+      * Makefile.am: Add include/tm27.h, Cosmetics.
-+      * include/tm27.h: Final cosmetics.
-+
-+2004-04-22    Ralf Corsepius <ralf_corsepius@rtems.org>
-+
-+      * include/bsp.h: Split out tmtest27 support.
-+      * include/tm27.h: New.
-+
-+2004-04-21    Joel Sherrill <joel@OARcorp.com>
-+
-+      PR 611/bsps
-+      * Makefile.am, include/bsp.h, wrapup/Makefile.am: Follow conventions
-+      for tm27 and do not add another macro definition.
-+      * startup/tm27supp.c: New file.
-+
-+2004-04-21    Joel Sherrill <joel@OARcorp.com>
-+
-+      PR 611/bsps
-+      * Makefile.am, include/bsp.h, wrapup/Makefile.am: Follow conventions
-+      for tm27 and do not add another macro definition.
-+      * startup/tm27supp.c: New file.
-+
-+2004-04-21    Ralf Corsepius <ralf_corsepius@rtems.org>
-+
-+      PR 613/bsps
-+      * include/bsp.h: Remove MAX_LONG_TEST_DURATION.
-+
-+2004-04-21    Ralf Corsepius <ralf_corsepius@rtems.org>
-+
-+      PR 614/bsps
-+      * include/bsp.h: Remove MAX_SHORT_TEST_DURATION (Unused).
-+
-+2004-04-13    Ralf Corsepius <ralf_corsepius@rtems.org>
-+
-+      * include/bsp.h, startup/start.S: Reflect new locations of cpukit headers.
-+
-+2004-04-12    David Querbach <querbach@realtime.bc.ca>
-+
-+      * .cvsignore, ChangeLog, Makefile.am, README, bsp_specs, configure.ac,
-+      times, clock/p_clock.c, console/console.c, include/.cvsignore,
-+      include/bsp.h, include/coverhd.h, irq/irq.h, startup/bspstart.c,
-+      startup/iss555.c, startup/linkcmds, startup/start.S,
-+      wrapup/.cvsignore, wrapup/Makefile.am: New files.
-+
-Index: rtems-4.9.3/c/src/lib/libbsp/powerpc/ec555/Makefile.am
-===================================================================
---- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ rtems-4.9.3/c/src/lib/libbsp/powerpc/ec555/Makefile.am     2008-09-29 03:47:53.000000000 +0200
-@@ -0,0 +1,50 @@
-+##
-+## $Id: Makefile.am,v 1.13.2.1 2008/09/29 01:47:53 ralf Exp $
-+##
-+
-+ACLOCAL_AMFLAGS = -I ../../../../aclocal
-+
-+include $(top_srcdir)/../../../../automake/compile.am
-+include $(top_srcdir)/../../bsp.am
-+
-+dist_project_lib_DATA = bsp_specs
-+
-+include_HEADERS = include/bsp.h
-+include_HEADERS += include/tm27.h
-+
-+nodist_include_HEADERS = include/bspopts.h
-+DISTCLEANFILES = include/bspopts.h
-+
-+include_bspdir = $(includedir)/bsp
-+
-+include_HEADERS += include/coverhd.h
-+include_bsp_HEADERS = irq/irq.h
-+
-+EXTRA_DIST = times
-+
-+dist_project_lib_DATA += startup/linkcmds
-+
-+pclock_SOURCES = clock/p_clock.c
-+console_SOURCES = console/console.c
-+startup_SOURCES = ../../shared/bspclean.c ../../shared/bsplibc.c \
-+    ../../shared/bsppost.c ../../shared/bsppredriverhook.c \
-+    startup/bspstart.c ../../shared/bootcard.c startup/iss555.c \
-+    ../../shared/sbrk.c ../../shared/gnatinstallhandler.c startup/start.S
-+tm27supp_SOURCES = startup/tm27supp.c
-+
-+noinst_LIBRARIES = libbsp.a
-+libbsp_a_SOURCES = $(pclock_SOURCES) $(console_SOURCES) $(startup_SOURCES) \
-+    $(tm27supp_SOURCES)
-+
-+libbsp_a_LIBADD = \
-+    ../../../libcpu/@RTEMS_CPU@/shared/cpuIdent.rel \
-+    ../../../libcpu/@RTEMS_CPU@/@exceptions@/rtems-cpu.rel \
-+    ../../../libcpu/@RTEMS_CPU@/mpc5xx/clock.rel \
-+    ../../../libcpu/@RTEMS_CPU@/mpc5xx/console-generic.rel \
-+    ../../../libcpu/@RTEMS_CPU@/mpc5xx/exceptions.rel \
-+    ../../../libcpu/@RTEMS_CPU@/mpc5xx/irq.rel \
-+    ../../../libcpu/@RTEMS_CPU@/mpc5xx/timer.rel \
-+    ../../../libcpu/@RTEMS_CPU@/mpc5xx/vectors.rel
-+
-+include $(srcdir)/preinstall.am
-+include $(top_srcdir)/../../../../automake/local.am
-Index: rtems-4.9.3/c/src/lib/libbsp/powerpc/ec555/README
-===================================================================
---- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ rtems-4.9.3/c/src/lib/libbsp/powerpc/ec555/README  2009-11-29 01:38:37.608590025 +0100
-@@ -0,0 +1,262 @@
-+#
-+#  $Id: README,v 1.1 2004/04/12 21:52:13 joel Exp $
-+#
-+
-+This is a README file for the Intec SS555 of RTEMS 4.6.0
-+
-+The SS555 port was sponsored by Defence Research and Development 
-+Canada - Suffield, and is Copyright (C) 2004, Real-Time Systems Inc.
-+
-+Please send any comments, improvements, or bug reports to:
-+
-+David Querbach
-+querbach@realtime.bc.ca
-+
-+
-+Summary
-+-------
-+
-+BSP NAME:           ss555
-+BOARD:              Intec Automation Inc. SS555
-+BUS:                None 
-+CPU FAMILY:         PowerPC
-+CPU:                PowerPC MPC555
-+COPROCESSORS:       Built-in Motorola TPU
-+MODE:               32 bit mode
-+
-+DEBUG MONITOR:      None
-+
-+PERIPHERALS
-+===========
-+TIMERS:             PIT / Timebase
-+  RESOLUTION:       1 microsecond (4 MHz crystal / 4)
-+SERIAL PORTS:       2 SCI
-+REAL-TIME CLOCK:    On-chip.
-+DMA:                None.
-+VIDEO:              None.
-+SCSI:               None.
-+NETWORKING:         None.
-+                 
-+
-+DRIVER INFORMATION
-+==================
-+CLOCK DRIVER:       yes
-+CONSOLE DRIVER:     yes
-+SHMSUPP:            N/A
-+TIMER DRIVER:       yes
-+NETWORK DRIVER:           no
-+
-+NOTES
-+=====
-+On-chip resources:
-+      SCI1            serial port
-+      SCI2            serial port (console)
-+      PIT             clock
-+      TB              timing test support
-+      DEC
-+      SWT             watchdog timer -- enable in startup/iss555.c
-+      *CS0            external 512k 2-1-1-1 Burst SRAM
-+      *CS1
-+      *CS2
-+      *CS3            CPLD
-+      IRQ0
-+      IRQ1
-+      IRQ2            
-+      IRQ3            
-+      IRQ4            
-+      IRQ5    
-+      IRQ6
-+      IRQ7
-+      IRQ_LVL0        
-+      IRQ_LVL1
-+      IRQ_LVL2
-+      IRQ_LVL3
-+      IRQ_LVL4
-+      IRQ_LVL5        SCI
-+      IRQ_LVL6        PIT
-+      IRQ_LVL7
-+      
-+
-+Board description
-+-----------------
-+Clock rate:     40 MHz development/embeddable board
-+Bus width:      32-bit on-board RAM, 16-bit off-board I/O
-+FLASH:                512k on-chip
-+RAM:            512k 2-1-1-1 burst SRAM
-+
-+
-+Installation
-+------------
-+
-+The ss555 port uses the Intec SS555's external RAM in two different ways,
-+depending on whether or not it is built for debugging by giving the
-+VARIANT=DEBUG switch to make:
-+
-+      make VARIANT=DEBUG all
-+
-+1.  In the debugging case, the linker script concanttenates the .text,
-+.data, and .bss sections starting at location zero, so they all can be
-+loaded into the external RAM for debugging.  We assume that the debugger
-+disables the internal Flash ROM and enables the external RAM before loading
-+the code into the external RAM.
-+
-+2.  In the normal (non-debugging) case, the linker script still places the
-+.text section near zero, but places the start of the .data and .bss sections
-+at the start location of the MPC555's internal RAM.  The system startup code
-+then configures the external RAM just after the internal RAM in memory,
-+forming one large block from the two RAM devices.
-+
-+
-+Console driver
-+---------------
-+
-+This BSP includes an termios-capable asynchronous serial line driver that
-+supports SCI1 and SCI2. The RTEMS console is selected at configuration time
-+with the CONSOLE_MINOR variable (see .../ss555/configure.ac).  We default to
-+SCI2 for the console, since SCI1 has some extra features which may be
-+desired for application use.
-+
-+The BSP console supports three different modes of operation:
-+
-+  1. polled I/O done with termios support,
-+  2. polled I/O done without termios support,
-+  3. interrupt-driven I/O with termios support.
-+     
-+The mode of operation of the serial driver is determined at configure time in
-+part by the value of the UARTS_IO_MODE variable (see .../ss555/configure.ac).
-+
-+  0 - polled I/O.
-+  1 - interrupt-driven I/O.
-+  
-+Also, set the value of UARTS_USE_TERMIOS to select whether termios should be
-+used to perform buffering and input/output processing. Without termios
-+support, input processing is limited to the substitution of LF for a
-+received CR, and output processing is limited to the transmission of a CR
-+following the transmission of a LF. The choices for UARTS_USE_TERMIOS are:
-+
-+  0 - do not use termios
-+  1 - use termios
-+
-+In most real-time applications, the driver should be configured to use
-+termios and interrupt-driven I/O. Special requirements may dictate otherwise.
-+
-+Polled I/O must be used when running the timing tests. It must also be used
-+to run some other tests and some samples, such as the cdtest. Some tests
-+change the interrupt mask and will hang interrupt-driven I/O indefinitely.
-+Others, such as cdtest, perform console output from the static constructors
-+before the console is opened, causing the test to hang. Still other tests
-+produce output that is supposed to be in some specific order. For these
-+tests, termios should not be used, as termios buffers output and the
-+transmission of the buffers occur at somewhat unpredictable times.
-+
-+The real solution is to fix the tests so that they work with interrupt-driven
-+I/O and termios.
-+
-+
-+printk() and debug output
-+-----------------------
-+
-+The implementation of printk() in RTEMS is mostly independent of most system
-+services. The printk() function can therefore be used to print messages to a
-+debug console, particularly when debugging startup code or device drivers,
-+i.e. code that runs before the console driver is opened or that runs with
-+interrupts disabled.
-+
-+Support is provided to send printk output to either port. Specify the
-+desired port at configure time by setting the value of PRINTK_MINOR to one
-+of SCI1_MINOR or SCI2_MINOR.
-+
-+printk() always uses polled I/O, and never uses termios.
-+
-+If the printk() port is opened by RTEMS, then UARTS_IO_MODE must be set for
-+polled I/O, otherwise the I/O functions will be in conflict.  Using printk()
-+before the port is initialized is, of course, not possible.  This
-+initialization occurs in console_initialize(), which is called by
-+rtems_initialize_executive_early().
-+
-+
-+Watchdog Timer
-+--------------
-+
-+The MPC555 watchdog timer can be enabled at configuration time by defining
-+the WATCHDOG_TIMEOUT variable.  This variable sets the watchdog timeout
-+period in steps of
-+
-+        2048          2048
-+      ---------  =  ---------  =  51.2 usec
-+       Fsystem       40 MHz
-+
-+or about 1/20 msec.  When WATCHDOG_TIMEOUT is left undefined, the watchdog
-+timer is disabled.
-+
-+
-+Miscellaneous
-+-------------
-+
-+Most code came from the mbx8xx port, except for the floating-point handling
-+which came from the mpc8260ads.
-+
-+
-+Host System
-+-----------
-+
-+The port was developed on an x86 box running Debian 3.0.  The toolchain was
-+built from the sources at rtems.org, except for the autotools which came
-+from the Debian distribution.
-+
-+
-+Test Configuration
-+------------------
-+
-+Board:                Intec SS555 v1.1
-+CPU:                  Motorola MPC555LFMZP40, mask 1K83H
-+Clock Speed:          Crystal 4.0 MHz, CPU 40.0 MHz
-+RAM:                  512K bytes of 2-1-1-1 Burst SRAM
-+Times Reported in:    Microseconds
-+Timer Source:         Timebase clock
-+GCC Flags:            -O4 -fno-keep-inline-functions -mcpu=(821/860) 
-+Console:              Operates in polled mode on SMC2. No I/O through EPPC-Bug.    
-+
-+
-+Test Results
-+------------
-+
-+Single processor tests:  
-+  All tests passed, except that:
-+    - sp09 aborts due to memory shortage
-+    - sp20 needs to be run with output buffering enabled (see
-+      buffer_test_io.h)
-+
-+Multi-processor tests:  
-+  Not applicable.
-+
-+Library tests:
-+  All tests passed.  Note that the termios test only works if the system is
-+  rebuilt with termios enabled.                         
-+
-+Posix tests:
-+  All tests passed, except that:
-+    - the message queue test failed with "errno (91 - File or path name too
-+      long)"
-+
-+Timing tests:
-+  Due to memory limitations, many of the tests will not run unless you set
-+  OPERATION_COUNT=20 at configuration time.
-+
-+  To run tm27 (the interrupt latency timer test), short CN5-48 to CN5-50 on
-+  the SS555 board.
-+
-+  All tests run cleanly, except for tm26, which gives a "PANIC 12" after it
-+  exits.  This doesn't seem to cause a problem otherwise.
-+
-+  See the times file for the results of the timing tests.
-+
-+Network tests:  
-+  Not applicable.
-+
-+Sample programs:
-+  These run correctly, except that:
-+    - The "minimum" sample is not designed to run properly on any system.
-+    - The loopback, fileio, unilimited, and pppd tests fail due to memory
-+      limitations.
-+    - The paranoia program dies on a floating-point assist exception.
-Index: rtems-4.9.3/c/src/lib/libbsp/powerpc/ec555/bsp_specs
-===================================================================
---- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ rtems-4.9.3/c/src/lib/libbsp/powerpc/ec555/bsp_specs       2008-12-08 06:15:50.000000000 +0100
-@@ -0,0 +1,13 @@
-+%rename endfile old_endfile
-+%rename startfile old_startfile
-+%rename link old_link
-+
-+*startfile:
-+%{!qrtems: %(old_startfile)} \
-+%{!nostdlib: %{qrtems: ecrti%O%s -u __vectors -N -u start -e start}}
-+
-+*endfile:
-+%{!qrtems: %(old_endfile)} %{qrtems: ecrtn%O%s}
-+
-+*link:
-+%{!qrtems: %(old_link)} %{qrtems: -dc -dp}
-Index: rtems-4.9.3/c/src/lib/libbsp/powerpc/ec555/clock/p_clock.c
-===================================================================
---- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ rtems-4.9.3/c/src/lib/libbsp/powerpc/ec555/clock/p_clock.c 2009-11-29 01:38:37.612589905 +0100
-@@ -0,0 +1,69 @@
-+/*
-+ *  Clock Tick interrupt conexion code.
-+ *
-+ *  COPYRIGHT (c) 1989-1997.
-+ *  On-Line Applications Research Corporation (OAR).
-+ *
-+ *  The license and distribution terms for this file may in
-+ *  the file LICENSE in this distribution or at
-+ *  http://www.rtems.com/license/LICENSE.
-+ *
-+ *  SS555 port sponsored by Defence Research and Development Canada - Suffield
-+ *  Copyright (C) 2004, Real-Time Systems Inc. (querbach@realtime.bc.ca)
-+ *
-+ *  Derived from c/src/lib/libbsp/powerpc/mbx8xx/clock/p_clock.c:
-+ *
-+ *  Modified to support the MPC750.
-+ *  Modifications Copyright (c) 1999 Eric Valette valette@crf.canon.fr
-+ *
-+ *  $Id: p_clock.c,v 1.3 2005/04/25 14:46:37 jennifer Exp $
-+ */
-+
-+#include <bsp.h>
-+#include <bsp/irq.h>
-+#include <rtems/bspIo.h>
-+
-+extern void clockOn(void*);
-+extern void clockOff (void*);
-+extern int clockIsOn(void*);
-+extern void Clock_isr(void *);
-+
-+static rtems_irq_connect_data clockIrqData = {
-+  CPU_PERIODIC_TIMER,
-+  (rtems_irq_hdl)Clock_isr,
-+  NULL,
-+  (rtems_irq_enable)clockOn,
-+  (rtems_irq_disable)clockOff,
-+  (rtems_irq_is_enabled)clockIsOn
-+};
-+
-+int BSP_disconnect_clock_handler (void)
-+{
-+  if (!BSP_get_current_rtems_irq_handler(&clockIrqData)) {
-+     printk("Unable to stop system clock\n");
-+    rtems_fatal_error_occurred(1);
-+  }
-+  return BSP_remove_rtems_irq_handler (&clockIrqData);
-+}
-+
-+int BSP_connect_clock_handler (rtems_irq_hdl hdl)
-+{
-+  if (!BSP_get_current_rtems_irq_handler(&clockIrqData)) {
-+     printk("Unable to get system clock handler\n");
-+    rtems_fatal_error_occurred(1);
-+  }
-+  if (!BSP_remove_rtems_irq_handler (&clockIrqData)) {
-+   printk("Unable to remove current system clock handler\n");
-+    rtems_fatal_error_occurred(1);
-+  }
-+  /*
-+   * Reinit structure
-+   */
-+  clockIrqData.name = CPU_PERIODIC_TIMER;
-+  clockIrqData.hdl = (rtems_irq_hdl) hdl;
-+  clockIrqData.on = (rtems_irq_enable)clockOn;
-+  clockIrqData.off = (rtems_irq_enable)clockOff;
-+  clockIrqData.isOn = (rtems_irq_is_enabled)clockIsOn;
-+
-+  return BSP_install_rtems_irq_handler (&clockIrqData);
-+}
-Index: rtems-4.9.3/c/src/lib/libbsp/powerpc/ec555/configure.ac
-===================================================================
---- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ rtems-4.9.3/c/src/lib/libbsp/powerpc/ec555/configure.ac    2006-12-02 06:59:47.000000000 +0100
-@@ -0,0 +1,52 @@
-+## Process this file with autoconf to produce a configure script.
-+## 
-+## $Id: configure.ac,v 1.9 2006/12/02 05:59:47 ralf Exp $
-+
-+AC_PREREQ(2.60)
-+AC_INIT([rtems-c-src-lib-libbsp-powerpc-mbx5xx],[_RTEMS_VERSION],[http://www.rtems.org/bugzilla])
-+AC_CONFIG_SRCDIR([bsp_specs])
-+RTEMS_TOP(../../../../../..)
-+
-+RTEMS_CANONICAL_TARGET_CPU
-+AM_INIT_AUTOMAKE([no-define nostdinc foreign 1.10])
-+RTEMS_BSP_CONFIGURE
-+
-+RTEMS_PROG_CC_FOR_TARGET([-ansi -fasm])
-+RTEMS_CANONICALIZE_TOOLS
-+RTEMS_PROG_CCAS
-+
-+RTEMS_CHECK_NETWORKING
-+AM_CONDITIONAL(HAS_NETWORKING,test "$HAS_NETWORKING" = "yes")
-+
-+RTEMS_BSPOPTS_SET([WATCHDOG_TIMEOUT],[*],[0xFFFF])
-+RTEMS_BSPOPTS_HELP([WATCHDOG_TIMEOUT], 
-+[Define to the desired timeout (in steps of 1/20 msec) to enable the
-+ watchdog.  Default is to disable the watchdog entirely.])
-+
-+RTEMS_BSPOPTS_SET([UARTS_USE_TERMIOS],[*],[0])
-+RTEMS_BSPOPTS_HELP([UARTS_USE_TERMIOS],
-+[Define to 1 if you want termios support for every port.
-+ Termios support is independent of the choice of UART I/O mode.])
-+
-+RTEMS_BSPOPTS_SET([CONSOLE_MINOR],[*],[SCI2_MINOR])
-+RTEMS_BSPOPTS_HELP([CONSOLE_MINOR],
-+[Must be defined to be one of SCI1_MINOR or SCI2_MINOR.  Determines which
-+ device will be registered as /dev/console.])
-+
-+RTEMS_BSPOPTS_SET([UARTS_IO_MODE],[*],[0])
-+RTEMS_BSPOPTS_HELP([UARTS_IO_MODE],
-+[Define to 1 if you want interrupt-driven I/O for the SCI ports.])
-+
-+RTEMS_BSPOPTS_SET([PRINTK_MINOR],[*],[SCI2_MINOR])
-+RTEMS_BSPOPTS_HELP([PRINTK_MINOR],
-+[Must be defined to be one of SCI1_MINOR or SCI2_MINOR.  Determines which
-+ device is used for output by printk().  The printk port always uses polled
-+ I/O.  Don't open the printk port from RTEMS unless also using polled I/O
-+ for the SCI ports.])
-+
-+# Explicitly list a Makefile here 
-+AC_CONFIG_FILES([Makefile])
-+
-+RTEMS_PPC_EXCEPTIONS
-+
-+AC_OUTPUT
-Index: rtems-4.9.3/c/src/lib/libbsp/powerpc/ec555/console/console.c
-===================================================================
---- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ rtems-4.9.3/c/src/lib/libbsp/powerpc/ec555/console/console.c       2009-11-29 01:38:37.612589905 +0100
-@@ -0,0 +1,368 @@
-+/*
-+ *  console.c
-+ *
-+ *  This file contains the Intec SS555 termios serial I/O package.
-+ *
-+ *  The SCI channels are assigned as follows
-+ *
-+ *   Channel     Device      Minor
-+ *    SCI1      /dev/tty0      0
-+ *    SCI2      /dev/tty1      1
-+ *
-+ *  All ports support termios. The use of termios is recommended for real-time
-+ *  applications. Termios provides buffering and input processing. When not
-+ *  using termios, processing is limited to the substitution of LF for CR on
-+ *  input, and the output of a CR following the output of a LF character.
-+ *  Note that the terminal should not send CR/LF pairs when the return key
-+ *  is pressed, and that output lines are terminated with LF/CR, not CR/LF
-+ *  (although that would be easy to change).
-+ *
-+ *  I/O may be interrupt-driven (recommended for real-time applications) or
-+ *  polled.
-+ *
-+ *  LIMITATIONS:
-+ *
-+ *  It is not possible to use different I/O modes on the different ports. The
-+ *  exception is with printk. The printk port can use a different mode from
-+ *  the other ports. If this is done, it is important not to open the printk
-+ *  port from an RTEMS application.
-+ *
-+ *  Currently, the I/O modes are determined at build time. It would be much
-+ *  better to have the mode selected at boot time based on parameters in
-+ *  NVRAM.
-+ *
-+ *  Interrupt-driven I/O requires termios.
-+ *
-+ *  TESTS:
-+ *
-+ *  TO RUN THE TESTS, USE POLLED I/O WITHOUT TERMIOS SUPPORT. Some tests
-+ *  play with the interrupt masks and turn off I/O. Those tests will hang
-+ *  when interrupt-driven I/O is used. Other tests, such as cdtest, do I/O
-+ *  from the static constructors before the console is open. This test
-+ *  will not work with interrupt-driven I/O. Because of the buffering
-+ *  performed in termios, test output may not be in sequence.The tests
-+ *  should all be fixed to work with interrupt-driven I/O and to
-+ *  produce output in the expected sequence. Obviously, the termios test
-+ *  requires termios support in the driver.
-+ *
-+ *  Set CONSOLE_MINOR to the appropriate device minor number in the
-+ *  config file. This allows the RTEMS application console to be different
-+ *  from the GDB port.
-+ *
-+ *  This driver handles both available serial ports: it distinguishes
-+ *  the sub-devices using minor device numbers. It is not possible to have
-+ *  other protocols running on the other ports when this driver is used as
-+ *  currently written.
-+ *
-+ *
-+ *  SS555 port sponsored by Defence Research and Development Canada - Suffield
-+ *  Copyright (C) 2004, Real-Time Systems Inc. (querbach@realtime.bc.ca)
-+ *
-+ *  Derived from c/src/lib/libbsp/powerpc/mbx8xx/console/console.c:
-+ *
-+ *  Based on code (alloc860.c in eth_comm port) by
-+ *  Jay Monkman (jmonkman@frasca.com),
-+ *  Copyright (C) 1998 by Frasca International, Inc.
-+ *
-+ *  Modifications by Darlene Stewart <Darlene.Stewart@iit.nrc.ca>
-+ *  and Charles-Antoine Gauthier <charles.gauthier@iit.nrc.ca>.
-+ *  Copyright (c) 2000, National Research Council of Canada
-+ *
-+ */
-+#include <stdarg.h>
-+#include <stdio.h>
-+#include <bsp.h>                /* Must be before libio.h */
-+#include <rtems/bspIo.h>
-+#include <rtems/libio.h>
-+#include <termios.h>
-+
-+static void _BSP_output_char( char c );
-+static rtems_status_code do_poll_read( rtems_device_major_number major, rtems_device_minor_number minor, void * arg);
-+static rtems_status_code do_poll_write( rtems_device_major_number major, rtems_device_minor_number minor, void * arg);
-+
-+static void _BSP_null_char( char c ) {return;}
-+
-+BSP_output_char_function_type BSP_output_char = _BSP_null_char;
-+
-+/*
-+ *  do_poll_read
-+ *
-+ *  Input characters through polled I/O. Returns as soon as a character has
-+ *  been received. Otherwise, if we wait for the number of requested
-+ *  characters, we could be here forever!
-+ *
-+ *  CR is converted to LF on input. The terminal should not send a CR/LF pair
-+ *  when the return or enter key is pressed.
-+ *
-+ *  Input parameters:
-+ *    major - ignored. Should be the major number for this driver.
-+ *    minor - selected channel.
-+ *    arg->buffer - where to put the received characters.
-+ *    arg->count  - number of characters to receive before returning--Ignored.
-+ *
-+ *  Output parameters:
-+ *    arg->bytes_moved - the number of characters read. Always 1.
-+ *
-+ *  Return value: RTEMS_SUCCESSFUL
-+ *
-+ *  CANNOT BE COMBINED WITH INTERRUPT DRIVEN I/O!
-+ */
-+static rtems_status_code do_poll_read(
-+  rtems_device_major_number major,
-+  rtems_device_minor_number minor,
-+  void                    * arg
-+)
-+{
-+  rtems_libio_rw_args_t *rw_args = arg;
-+  int c;
-+
-+  while( (c = m5xx_uart_pollRead(minor)) == -1 );
-+  rw_args->buffer[0] = (uint8_t)c;
-+  if( rw_args->buffer[0] == '\r' )
-+      rw_args->buffer[0] = '\n';
-+  rw_args->bytes_moved = 1;
-+
-+  return RTEMS_SUCCESSFUL;
-+}
-+
-+/*
-+ *  do_poll_write
-+ *
-+ *  Output characters through polled I/O. Returns only once every character has
-+ *  been sent.
-+ *
-+ *  CR is transmitted AFTER a LF on output.
-+ *
-+ *  Input parameters:
-+ *    major - ignored. Should be the major number for this driver.
-+ *    minor - selected channel
-+ *    arg->buffer - where to get the characters to transmit.
-+ *    arg->count  - the number of characters to transmit before returning.
-+ *
-+ *  Output parameters:
-+ *    arg->bytes_moved - the number of characters read
-+ *
-+ *  Return value: RTEMS_SUCCESSFUL
-+ *
-+ *  CANNOT BE COMBINED WITH INTERRUPT DRIVEN I/O!
-+ */
-+static rtems_status_code do_poll_write(
-+  rtems_device_major_number major,
-+  rtems_device_minor_number minor,
-+  void                    * arg
-+)
-+{
-+  rtems_libio_rw_args_t *rw_args = arg;
-+  uint32_t i;
-+  char cr ='\r';
-+
-+  for( i = 0; i < rw_args->count; i++ ) {
-+    m5xx_uart_pollWrite(minor, &(rw_args->buffer[i]), 1);
-+    if ( rw_args->buffer[i] == '\n' )
-+      m5xx_uart_pollWrite(minor, &cr, 1);
-+  }
-+  rw_args->bytes_moved = i;
-+
-+  return RTEMS_SUCCESSFUL;
-+}
-+
-+/*
-+ *  Print functions prototyped in bspIo.h
-+ */
-+
-+static void _BSP_output_char( char c )
-+{
-+  char cr = '\r';
-+
-+  /*
-+   *  Can't rely on console_initialize having been called before this
-+   *  function is used, so it may fail.
-+   */
-+
-+  m5xx_uart_pollWrite( PRINTK_MINOR, &c, 1 );
-+  if( c == '\n' )
-+    m5xx_uart_pollWrite( PRINTK_MINOR, &cr, 1 );
-+}
-+
-+/*
-+ ***************
-+ * BOILERPLATE *
-+ ***************
-+ *
-+ *  All these functions are prototyped in rtems/c/src/lib/include/console.h.
-+ */
-+
-+/*
-+ * Initialize and register the device
-+ */
-+rtems_device_driver console_initialize(
-+  rtems_device_major_number major,
-+  rtems_device_minor_number minor,
-+  void *arg
-+)
-+{
-+  rtems_status_code status;
-+
-+  /*
-+   * Set up TERMIOS if needed
-+   */
-+  #if UARTS_USE_TERMIOS == 1
-+    rtems_termios_initialize ();
-+  #endif /* UARTS_USE_TERMIOS */
-+
-+  /*
-+   * Do device-specific initialization
-+   */
-+  BSP_output_char = _BSP_output_char;
-+
-+  m5xx_uart_initialize(SCI1_MINOR);
-+  status = rtems_io_register_name ("/dev/tty0", major, SCI1_MINOR);
-+  if (status != RTEMS_SUCCESSFUL)
-+    rtems_fatal_error_occurred (status);
-+
-+  m5xx_uart_initialize(SCI2_MINOR);
-+  status = rtems_io_register_name ("/dev/tty1", major, SCI2_MINOR);
-+  if (status != RTEMS_SUCCESSFUL)
-+    rtems_fatal_error_occurred (status);
-+
-+  /* Now register the RTEMS console */
-+  status = rtems_io_register_name ("/dev/console", major, CONSOLE_MINOR);
-+  if (status != RTEMS_SUCCESSFUL)
-+    rtems_fatal_error_occurred (status);
-+
-+  return RTEMS_SUCCESSFUL;
-+}
-+
-+/*
-+ * Open the device
-+ */
-+rtems_device_driver console_open(
-+  rtems_device_major_number major,
-+  rtems_device_minor_number minor,
-+  void *arg
-+)
-+{
-+  rtems_status_code sc;
-+
-+  if ( minor > NUM_PORTS - 1 )
-+    return RTEMS_INVALID_NUMBER;
-+
-+  #if (UARTS_USE_TERMIOS == 1)
-+  {
-+    #if (UARTS_IO_MODE == 1)    /* RTEMS interrupt-driven I/O with termios */
-+
-+      static const rtems_termios_callbacks callbacks = {
-+        m5xx_uart_firstOpen,