Index: Makefile.in
===================================================================
--- Makefile.in	(revision 13f09e64e56cb2bda93cbcdd3c71afc361a6ab6d)
+++ Makefile.in	(revision 91333c27bdc98ea872c97ec41be98fab5de4e442)
@@ -41,6 +41,8 @@
 RTEMS_HOST = @RTEMS_HOST@
 PROJECT_ROOT = @PROJECT_ROOT@
+RTEMS_USE_OWN_PDIR = @RTEMS_USE_OWN_PDIR@
 RTEMS_HAS_POSIX_API = @RTEMS_HAS_POSIX_API@
 RTEMS_HAS_KA9Q = @RTEMS_HAS_KA9Q@
+RTEMS_HAS_CPLUSPLUS = @RTEMS_HAS_CPLUSPLUS@
 RTEMS_USE_MACROS = @RTEMS_USE_MACROS@
 RTEMS_USE_GCC272 = @RTEMS_USE_GCC272@
@@ -86,6 +88,8 @@
             \"PROJECT_HOME=$(PROJECT_ROOT)/$$bsp\" \
             \"PROJECT_ROOT=$(PROJECT_ROOT)\" \
+            \"RTEMS_USE_OWN_PDIR=$(RTEMS_USE_OWN_PDIR)\" \
             \"RTEMS_HAS_POSIX_API=$(RTEMS_HAS_POSIX_API)\" \
             \"RTEMS_HAS_KA9Q=$(RTEMS_HAS_KA9Q)\" \
+            \"RTEMS_HAS_CPLUSPLUS=$(RTEMS_HAS_CPLUSPLUS)\" \
             \"RTEMS_USE_MACROS=$(RTEMS_USE_MACROS)\" \
             \"RTEMS_USE_GCC272=$(RTEMS_USE_GCC272)\" \
Index: README.configure
===================================================================
--- README.configure	(revision 13f09e64e56cb2bda93cbcdd3c71afc361a6ab6d)
+++ README.configure	(revision 91333c27bdc98ea872c97ec41be98fab5de4e442)
@@ -21,4 +21,5 @@
 	--disable-tests
 	--disable-ka9q
+        --enable-cpp
         --enable-gcc28
         --enable-libcdir=<DIRECTORY>
@@ -30,4 +31,8 @@
 By default, the RTEMS port of the KA9Q TCP/IP stack is build for targets
 that support it.  It can be disabled with the --disable-ka9q option.
+
+By default, the RTEMS support of C++ is disabled.  It can be enabled
+with the --enable-cpp option. If the rtems++ C++ library is installed
+it will also be build.
 
 By default, the RTEMS test suites are configured.  The --disable-tests
Index: c/Makefile.in
===================================================================
--- c/Makefile.in	(revision 13f09e64e56cb2bda93cbcdd3c71afc361a6ab6d)
+++ c/Makefile.in	(revision 91333c27bdc98ea872c97ec41be98fab5de4e442)
@@ -32,4 +32,8 @@
 LIBKA9Q = $(LIBKA9Q_$(HAS_KA9Q)_V)
 
+# We only make the rtems++ install point if it is enabled.
+LIBRTEMSCPLUSPLUS_yes_V = include/rtems++
+LIBRTEMSCPLUSPLUS = $(LIBRTEMSCPLUSPLUS_$(HAS_CPLUSPLUS)_V)
+
 # directories to be created in install point
 CREATE_DIRS = 	include include/sys \
@@ -37,4 +41,5 @@
                 include/netinet include/libc include/libc/sys \
                 $(LIBKA9Q) \
+                $(LIBRTEMSCPLUSPLUS) \
 		lib bin samples \
                 tests tests/screens tests/screens/sptests \
@@ -94,3 +99,2 @@
 
 env:    $(SRCS) dirs
-
Index: c/src/exec/score/cpu/m68k/m68302.h
===================================================================
--- c/src/exec/score/cpu/m68k/m68302.h	(revision 13f09e64e56cb2bda93cbcdd3c71afc361a6ab6d)
+++ c/src/exec/score/cpu/m68k/m68302.h	(revision 91333c27bdc98ea872c97ec41be98fab5de4e442)
@@ -69,6 +69,6 @@
 #define RBIT_SCR_HWDEN		0x00000800
 #define RBIT_SCR_HWDCN2		0x00000400
-#define RBIT_SCR_HWDCN1		0x00000200
-#define RBIT_SCR_HWDCN0		0x00000100
+#define RBIT_SCR_HWDCN1		0x00000200  /* 512 clocks */
+#define RBIT_SCR_HWDCN0		0x00000100  /* 128 clocks */
 
 #define RBIT_SCR_LPREC		0x00000080
@@ -540,4 +540,5 @@
     rtems_unsigned16	res6;
     rtems_unsigned16	res7;
+
     rtems_unsigned16	br0;		/* Base Register   (CS0) */
     rtems_unsigned16	or0;		/* Option Register (CS0) */
@@ -598,4 +599,56 @@
 } m302_dualPortRAM_t;
 
+/* some useful defines the some of the registers above */
+  
+
+/* ----
+   MC68302 Chip Select Registers
+      p3-46 2nd Edition
+
+ */
+#define BR_ENABLED     1
+#define BR_DISABLED    0
+#define BR_FC_NULL     0
+#define BR_READ_ONLY   0
+#define BR_READ_WRITE  2
+#define OR_DTACK_0     0x0000
+#define OR_DTACK_1     0x2000
+#define OR_DTACK_2     0x4000
+#define OR_DTACK_3     0x6000
+#define OR_DTACK_4     0x8000
+#define OR_DTACK_5     0xA000
+#define OR_DTACK_6     0xC000
+#define OR_DTACK_EXT   0xE000
+#define OR_SIZE_64K    0x1FE0
+#define OR_SIZE_128K   0x1FC0
+#define OR_SIZE_256K   0x1F80
+#define OR_SIZE_512K   0x1F00
+#define OR_SIZE_1M     0x1E00
+#define OR_SIZE_2M     0x1C00
+#define OR_MASK_RW     0x0000
+#define OR_NO_MASK_RW  0x0002
+#define OR_MASK_FC     0x0000
+#define OR_NO_MASK_FC  0x0001
+
+#define MAKE_BR(base_address, enable, rw, fc) \
+    ((base_address >> 11) | fc | rw | enable)
+
+#define MAKE_OR(bsize, DtAck, RW_Mask, FC_Mask) \
+    (DtAck | ((~(bsize - 1) & 0x00FFFFFF) >> 11) | FC_Mask | RW_Mask)
+
+#define __REG_CAT(r, n) r ## n
+#define WRITE_BR(csel, base_address, enable, rw, fc) \
+          __REG_CAT(m302.reg.br, csel) = MAKE_BR(base_address, enable, rw, fc)
+#define WRITE_OR(csel, bsize, DtAck, RW_Mask, FC_Mask) \
+          __REG_CAT(m302.reg.or, csel) = MAKE_OR(bsize, DtAck, RW_Mask, FC_Mask)
+
+/* ----
+   MC68302 Watchdog Timer Enable Bit
+
+ */
+#define WATCHDOG_ENABLE    (1)
+#define WATCHDOG_TRIGGER() (m302.reg.wrr = 0x10 | WATCHDOG_ENABLE, m302.reg.wcn = 0)
+#define WATCHDOG_TOGGLE()  (m302.reg.wcn = WATCHDOG_TIMEOUT_PERIOD)
+#define DISABLE_WATCHDOG() (m302.reg.wrr = 0)
 
 /*
Index: c/src/lib/Makefile.in
===================================================================
--- c/src/lib/Makefile.in	(revision 13f09e64e56cb2bda93cbcdd3c71afc361a6ab6d)
+++ c/src/lib/Makefile.in	(revision 91333c27bdc98ea872c97ec41be98fab5de4e442)
@@ -11,7 +11,11 @@
 include $(PROJECT_ROOT)/make/directory.cfg
 
+# We only build the rtems++ library if HAS_CPLUSPLUS was defined
+LIBRTEMSCPLUSPLUS_yes_V = librtems++
+LIBRTEMSCPLUSPLUS = $(LIBRTEMSCPLUSPLUS_$(HAS_CPLUSPLUS)_V)
+
 # General Hardware API library 
 LIBHWAPI=$(wildcard libhwapi)
 
 SUB_DIRS=start include libmisc libc libcpu libbsp \
-         $(LIBHWAPI) wrapup
+         $(LIBKA9Q) $(LIBHWAPI) $(LIBRTEMSCPLUSPLUS) wrapup
Index: c/src/lib/include/Makefile.in
===================================================================
--- c/src/lib/include/Makefile.in	(revision 13f09e64e56cb2bda93cbcdd3c71afc361a6ab6d)
+++ c/src/lib/include/Makefile.in	(revision 91333c27bdc98ea872c97ec41be98fab5de4e442)
@@ -19,4 +19,8 @@
 KA9Q_H_FILES=$(KA9Q_H_PIECES:%=$(srcdir)/ka9q/%.h)
 
+RTEMSCPLUSPLUS_H_PIECES= rtemsEvent rtemsInterrupt rtemsMessageQueue \
+  rtemsSemaphore rtemsStatusCode rtemsTask rtemsTaskMode rtemsTimer
+RTEMSCPLUSPLUS_H_FILES=$(RTEMSCPLUSPLUS_H_PIECES:%=$(srcdir)/rtems++/%.h)
+
 SYS_H_FILES=
 
@@ -35,2 +39,5 @@
 	$(INSTALL) -m 444 $(KA9Q_H_FILES) ${PROJECT_RELEASE}/include/ka9q
 endif
+ifeq ($(HAS_CPLUSPLUS),yes)
+	$(INSTALL) -m 444 $(RTEMSCPLUSPLUS_H_FILES) ${PROJECT_RELEASE}/include/rtems++
+endif
Index: c/src/tests/libtests/Makefile.in
===================================================================
--- c/src/tests/libtests/Makefile.in	(revision 13f09e64e56cb2bda93cbcdd3c71afc361a6ab6d)
+++ c/src/tests/libtests/Makefile.in	(revision 91333c27bdc98ea872c97ec41be98fab5de4e442)
@@ -11,3 +11,7 @@
 include $(PROJECT_ROOT)/make/directory.cfg
 
-SUB_DIRS=cpuuse rtmonuse malloctest stackchk
+# We only build the tests for the rtems++ library if HAS_CPLUSPLUS was defined
+LIBRTEMSCPLUSPLUS_yes_V = rtems++
+LIBRTEMSCPLUSPLUS = $(LIBRTEMSCPLUSPLUS_$(HAS_CPLUSPLUS)_V)
+
+SUB_DIRS=cpuuse rtmonuse malloctest stackchk $(LIBRTEMSCPLUSPLUS)
Index: c/src/tests/samples/cdtest/Makefile.in
===================================================================
--- c/src/tests/samples/cdtest/Makefile.in	(revision 13f09e64e56cb2bda93cbcdd3c71afc361a6ab6d)
+++ c/src/tests/samples/cdtest/Makefile.in	(revision 91333c27bdc98ea872c97ec41be98fab5de4e442)
@@ -42,5 +42,5 @@
 
 DEFINES  +=
-CPPFLAGS +=
+CPPFLAGS += -I$(LIBCC_INCLUDE)
 CFLAGS   +=
 
Index: c/src/tests/samples/cdtest/main.cc
===================================================================
--- c/src/tests/samples/cdtest/main.cc	(revision 13f09e64e56cb2bda93cbcdd3c71afc361a6ab6d)
+++ c/src/tests/samples/cdtest/main.cc	(revision 91333c27bdc98ea872c97ec41be98fab5de4e442)
@@ -22,5 +22,7 @@
 #include <rtems.h>
 #include <stdio.h>
+#ifdef RTEMS_TEST_IO_STREAM
 #include <iostream.h>
+#endif
 
 extern "C" {
@@ -109,5 +111,9 @@
     B bleak;
 
+#ifdef RTEMS_TEST_IO_STREAM
     cout << "Testing a C++ I/O stream" << endl;
+#else
+    printf("IO Stream not tested\n");
+#endif
 
     bar = blech;
Index: configure
===================================================================
--- configure	(revision 13f09e64e56cb2bda93cbcdd3c71afc361a6ab6d)
+++ configure	(revision 91333c27bdc98ea872c97ec41be98fab5de4e442)
@@ -14,4 +14,7 @@
 ac_help="$ac_help
   --with-cross-host=HOST      host (cygnus)"
+ac_help="$ac_help
+\
+  --enable-gmake-print-directory    enable GNU Make's print directory"
 ac_help="$ac_help
 \
@@ -23,4 +26,7 @@
 \
   --disable-rtems-inlines 	    disable RTEMS inline functions (use macros)"
+ac_help="$ac_help
+\
++   --enable-cpp                           enable C++ support, and build the rtems++ library"
 ac_help="$ac_help
 \
@@ -668,4 +674,12 @@
 c/src/lib/libbsp/m68k/mvme162/tools/Makefile \
 c/src/lib/libbsp/m68k/mvme162/wrapup/Makefile \
+c/src/lib/libbsp/m68k/ods68302/Makefile \
+c/src/lib/libbsp/m68k/ods68302/clock/Makefile \
+c/src/lib/libbsp/m68k/ods68302/console/Makefile \
+c/src/lib/libbsp/m68k/ods68302/include/Makefile \
+c/src/lib/libbsp/m68k/ods68302/start302/Makefile \
+c/src/lib/libbsp/m68k/ods68302/startup/Makefile \
+c/src/lib/libbsp/m68k/ods68302/timer/Makefile \
+c/src/lib/libbsp/m68k/ods68302/wrapup/Makefile \
 c/src/lib/libcpu/m68k/Makefile \
 c/src/lib/libcpu/m68k/m68040/Makefile \
@@ -772,4 +786,6 @@
 
 ka9q_mk="c/src/lib/libka9q/Makefile"
+
+rtemscpp_mk="c/src/lib/librtems++/Makefile"
 
 hwapi_mk="\
@@ -820,4 +836,5 @@
 c/src/tests/libtests/rtmonuse/Makefile \
 c/src/tests/libtests/stackchk/Makefile \
+c/src/tests/libtests/rtems++/Makefile \
 c/src/tests/mptests/Makefile \
 c/src/tests/mptests/mp01/Makefile \
@@ -961,5 +978,5 @@
 
 echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
-echo "configure:964: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo "configure:981: checking whether ${MAKE-make} sets \${MAKE}" >&5
 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then
@@ -1034,5 +1051,5 @@
 
 echo $ac_n "checking host system type""... $ac_c" 1>&6
-echo "configure:1037: checking host system type" >&5
+echo "configure:1054: checking host system type" >&5
 
 host_alias=$host
@@ -1055,5 +1072,5 @@
 
 echo $ac_n "checking target system type""... $ac_c" 1>&6
-echo "configure:1058: checking target system type" >&5
+echo "configure:1075: checking target system type" >&5
 
 target_alias=$target
@@ -1073,5 +1090,5 @@
 
 echo $ac_n "checking build system type""... $ac_c" 1>&6
-echo "configure:1076: checking build system type" >&5
+echo "configure:1093: checking build system type" >&5
 
 build_alias=$build
@@ -1100,4 +1117,18 @@
   \
 host=$withval
+fi
+
+
+# Check whether --enable-gmake-print-directory or --disable-gmake-print-directory was given.
+if test "${enable_gmake_print_directory+set}" = set; then
+  enableval="$enable_gmake_print_directory"
+  \
+case "${enableval}" in
+  yes) RTEMS_USE_OWN_PDIR=yes ;;
+  no) RTEMS_USE_OWN_PDIR=no ;;
+  *)  { echo "configure: error: bad value ${enableval} for gmake-print-directory option" 1>&2; exit 1; } ;;
+esac
+else
+  RTEMS_USE_OWN_PDIR=yes
 fi
 
@@ -1144,4 +1175,15 @@
 fi
 
+
++ # Check whether --enable-cpp or --disable-cpp was given.
+if test "${enable_cpp+set}" = set; then
+  enableval="$enable_cpp"
+  \
+  yes
+fi
+ RTEMS_HAS_CPLUSPLUS=yes ;;
+  no) RTEMS_HAS_CPLUSPLUS=no ;;
+  *)  { echo "configure: error: bad value ${enableval} for enable-cpp option" 1>&2; exit 1; } ;;
+esac],RTEMS_HAS_CPLUSPLUS=no)
 
 # Check whether --enable-gcc28 or --disable-gcc28 was given.
@@ -1205,5 +1247,5 @@
   m68k-rtems*)
 	rtems_bsp="dmv152 efi332 efi68k gen68302 gen68360 gen68360_040 idp \
-                   mvme136 mvme147 mvme147s mvme162 mvme162lx"
+                   mvme136 mvme147 mvme147s mvme162 mvme162lx ods68302"
        	makefiles=$m68k_mk
 	;;
@@ -1264,5 +1306,5 @@
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1267: checking for $ac_word" >&5
+echo "configure:1309: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_AWK'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -1293,5 +1335,5 @@
 
 echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
-echo "configure:1296: checking whether ln -s works" >&5
+echo "configure:1338: checking whether ln -s works" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -1320,5 +1362,5 @@
 
 # For now always generate the KA9Q TCP/IP Makefiles
-makefiles="$makefiles $ka9q_mk"
+makefiles="$makefiles $ka9q_mk $rtemscpp_mk"
 
 # Check whether --enable-tests or --disable-tests was given.
@@ -1348,4 +1390,6 @@
 RTEMS_BSP=$enableval
 fi
+
+
 
 
@@ -1585,7 +1629,9 @@
 s%@RTEMS_LIBC_DIR@%$RTEMS_LIBC_DIR%g
 s%@RTEMS_ROOT@%$RTEMS_ROOT%g
+s%@RTEMS_USE_OWN_PDIR@%$RTEMS_USE_OWN_PDIR%g
 s%@RTEMS_HAS_POSIX_API@%$RTEMS_HAS_POSIX_API%g
 s%@RTEMS_HAS_KA9Q@%$RTEMS_HAS_KA9Q%g
 s%@RTEMS_USE_MACROS@%$RTEMS_USE_MACROS%g
+s%@RTEMS_HAS_CPLUSPLUS@%$RTEMS_HAS_CPLUSPLUS%g
 s%@RTEMS_USE_GCC272@%$RTEMS_USE_GCC272%g
 s%@PROJECT_ROOT@%$PROJECT_ROOT%g
Index: configure.in
===================================================================
--- configure.in	(revision 13f09e64e56cb2bda93cbcdd3c71afc361a6ab6d)
+++ configure.in	(revision 91333c27bdc98ea872c97ec41be98fab5de4e442)
@@ -125,4 +125,12 @@
 c/src/lib/libbsp/m68k/mvme162/tools/Makefile \
 c/src/lib/libbsp/m68k/mvme162/wrapup/Makefile \
+c/src/lib/libbsp/m68k/ods68302/Makefile \
+c/src/lib/libbsp/m68k/ods68302/clock/Makefile \
+c/src/lib/libbsp/m68k/ods68302/console/Makefile \
+c/src/lib/libbsp/m68k/ods68302/include/Makefile \
+c/src/lib/libbsp/m68k/ods68302/start302/Makefile \
+c/src/lib/libbsp/m68k/ods68302/startup/Makefile \
+c/src/lib/libbsp/m68k/ods68302/timer/Makefile \
+c/src/lib/libbsp/m68k/ods68302/wrapup/Makefile \
 c/src/lib/libcpu/m68k/Makefile \
 c/src/lib/libcpu/m68k/m68040/Makefile \
@@ -229,4 +237,6 @@
 
 ka9q_mk="c/src/lib/libka9q/Makefile"
+
+rtemscpp_mk="c/src/lib/librtems++/Makefile"
 
 hwapi_mk="\
@@ -277,4 +287,5 @@
 c/src/tests/libtests/rtmonuse/Makefile \
 c/src/tests/libtests/stackchk/Makefile \
+c/src/tests/libtests/rtems++/Makefile \
 c/src/tests/mptests/Makefile \
 c/src/tests/mptests/mp01/Makefile \
@@ -423,4 +434,12 @@
 host=$withval)
 
+AC_ARG_ENABLE(gmake-print-directory, \
+[  --enable-gmake-print-directory    enable GNU Make's print directory], \
+[case "${enableval}" in
+  yes) RTEMS_USE_OWN_PDIR=yes ;;
+  no) RTEMS_USE_OWN_PDIR=no ;;
+  *)  AC_MSG_ERROR(bad value ${enableval} for gmake-print-directory option) ;;
+esac],[RTEMS_USE_OWN_PDIR=yes])
+
 AC_ARG_ENABLE(posix, \
 [  --disable-posix 	     	    disable posix interface], \
@@ -447,4 +466,11 @@
 esac],[RTEMS_USE_MACROS=no])
 
++ AC_ARG_ENABLE(cpp, \
++ [  --enable-cpp                           enable C++ support, and build the rtems++ library], \
+  yes) RTEMS_HAS_CPLUSPLUS=yes ;;
+  no) RTEMS_HAS_CPLUSPLUS=no ;;
+  *)  AC_MSG_ERROR(bad value ${enableval} for enable-cpp option) ;;
+esac],[RTEMS_HAS_CPLUSPLUS=no])
+
 AC_ARG_ENABLE(gcc28, \
 [  --enable-gcc28		    enable use of gcc 2.8.x features], \
@@ -497,5 +523,5 @@
   m68k-rtems*)
 	rtems_bsp="dmv152 efi332 efi68k gen68302 gen68360 gen68360_040 idp \
-                   mvme136 mvme147 mvme147s mvme162 mvme162lx"
+                   mvme136 mvme147 mvme147s mvme162 mvme162lx ods68302"
        	makefiles=$m68k_mk
 	;;
@@ -562,5 +588,5 @@
 
 # For now always generate the KA9Q TCP/IP Makefiles
-makefiles="$makefiles $ka9q_mk"
+makefiles="$makefiles $ka9q_mk $rtemscpp_mk"
 
 AC_ARG_ENABLE(tests, \
@@ -580,7 +606,9 @@
 AC_SUBST(RTEMS_LIBC_DIR)
 AC_SUBST(RTEMS_ROOT)
+AC_SUBST(RTEMS_USE_OWN_PDIR)
 AC_SUBST(RTEMS_HAS_POSIX_API)
 AC_SUBST(RTEMS_HAS_KA9Q)
 AC_SUBST(RTEMS_USE_MACROS)
+AC_SUBST(RTEMS_HAS_CPLUSPLUS)
 AC_SUBST(RTEMS_USE_GCC272)
 AC_SUBST(RTEMS_LIBC_DIR)
Index: cpukit/score/cpu/m68k/m68302.h
===================================================================
--- cpukit/score/cpu/m68k/m68302.h	(revision 13f09e64e56cb2bda93cbcdd3c71afc361a6ab6d)
+++ cpukit/score/cpu/m68k/m68302.h	(revision 91333c27bdc98ea872c97ec41be98fab5de4e442)
@@ -69,6 +69,6 @@
 #define RBIT_SCR_HWDEN		0x00000800
 #define RBIT_SCR_HWDCN2		0x00000400
-#define RBIT_SCR_HWDCN1		0x00000200
-#define RBIT_SCR_HWDCN0		0x00000100
+#define RBIT_SCR_HWDCN1		0x00000200  /* 512 clocks */
+#define RBIT_SCR_HWDCN0		0x00000100  /* 128 clocks */
 
 #define RBIT_SCR_LPREC		0x00000080
@@ -540,4 +540,5 @@
     rtems_unsigned16	res6;
     rtems_unsigned16	res7;
+
     rtems_unsigned16	br0;		/* Base Register   (CS0) */
     rtems_unsigned16	or0;		/* Option Register (CS0) */
@@ -598,4 +599,56 @@
 } m302_dualPortRAM_t;
 
+/* some useful defines the some of the registers above */
+  
+
+/* ----
+   MC68302 Chip Select Registers
+      p3-46 2nd Edition
+
+ */
+#define BR_ENABLED     1
+#define BR_DISABLED    0
+#define BR_FC_NULL     0
+#define BR_READ_ONLY   0
+#define BR_READ_WRITE  2
+#define OR_DTACK_0     0x0000
+#define OR_DTACK_1     0x2000
+#define OR_DTACK_2     0x4000
+#define OR_DTACK_3     0x6000
+#define OR_DTACK_4     0x8000
+#define OR_DTACK_5     0xA000
+#define OR_DTACK_6     0xC000
+#define OR_DTACK_EXT   0xE000
+#define OR_SIZE_64K    0x1FE0
+#define OR_SIZE_128K   0x1FC0
+#define OR_SIZE_256K   0x1F80
+#define OR_SIZE_512K   0x1F00
+#define OR_SIZE_1M     0x1E00
+#define OR_SIZE_2M     0x1C00
+#define OR_MASK_RW     0x0000
+#define OR_NO_MASK_RW  0x0002
+#define OR_MASK_FC     0x0000
+#define OR_NO_MASK_FC  0x0001
+
+#define MAKE_BR(base_address, enable, rw, fc) \
+    ((base_address >> 11) | fc | rw | enable)
+
+#define MAKE_OR(bsize, DtAck, RW_Mask, FC_Mask) \
+    (DtAck | ((~(bsize - 1) & 0x00FFFFFF) >> 11) | FC_Mask | RW_Mask)
+
+#define __REG_CAT(r, n) r ## n
+#define WRITE_BR(csel, base_address, enable, rw, fc) \
+          __REG_CAT(m302.reg.br, csel) = MAKE_BR(base_address, enable, rw, fc)
+#define WRITE_OR(csel, bsize, DtAck, RW_Mask, FC_Mask) \
+          __REG_CAT(m302.reg.or, csel) = MAKE_OR(bsize, DtAck, RW_Mask, FC_Mask)
+
+/* ----
+   MC68302 Watchdog Timer Enable Bit
+
+ */
+#define WATCHDOG_ENABLE    (1)
+#define WATCHDOG_TRIGGER() (m302.reg.wrr = 0x10 | WATCHDOG_ENABLE, m302.reg.wcn = 0)
+#define WATCHDOG_TOGGLE()  (m302.reg.wcn = WATCHDOG_TIMEOUT_PERIOD)
+#define DISABLE_WATCHDOG() (m302.reg.wrr = 0)
 
 /*
Index: cpukit/score/cpu/m68k/rtems/m68k/m68302.h
===================================================================
--- cpukit/score/cpu/m68k/rtems/m68k/m68302.h	(revision 13f09e64e56cb2bda93cbcdd3c71afc361a6ab6d)
+++ cpukit/score/cpu/m68k/rtems/m68k/m68302.h	(revision 91333c27bdc98ea872c97ec41be98fab5de4e442)
@@ -69,6 +69,6 @@
 #define RBIT_SCR_HWDEN		0x00000800
 #define RBIT_SCR_HWDCN2		0x00000400
-#define RBIT_SCR_HWDCN1		0x00000200
-#define RBIT_SCR_HWDCN0		0x00000100
+#define RBIT_SCR_HWDCN1		0x00000200  /* 512 clocks */
+#define RBIT_SCR_HWDCN0		0x00000100  /* 128 clocks */
 
 #define RBIT_SCR_LPREC		0x00000080
@@ -540,4 +540,5 @@
     rtems_unsigned16	res6;
     rtems_unsigned16	res7;
+
     rtems_unsigned16	br0;		/* Base Register   (CS0) */
     rtems_unsigned16	or0;		/* Option Register (CS0) */
@@ -598,4 +599,56 @@
 } m302_dualPortRAM_t;
 
+/* some useful defines the some of the registers above */
+  
+
+/* ----
+   MC68302 Chip Select Registers
+      p3-46 2nd Edition
+
+ */
+#define BR_ENABLED     1
+#define BR_DISABLED    0
+#define BR_FC_NULL     0
+#define BR_READ_ONLY   0
+#define BR_READ_WRITE  2
+#define OR_DTACK_0     0x0000
+#define OR_DTACK_1     0x2000
+#define OR_DTACK_2     0x4000
+#define OR_DTACK_3     0x6000
+#define OR_DTACK_4     0x8000
+#define OR_DTACK_5     0xA000
+#define OR_DTACK_6     0xC000
+#define OR_DTACK_EXT   0xE000
+#define OR_SIZE_64K    0x1FE0
+#define OR_SIZE_128K   0x1FC0
+#define OR_SIZE_256K   0x1F80
+#define OR_SIZE_512K   0x1F00
+#define OR_SIZE_1M     0x1E00
+#define OR_SIZE_2M     0x1C00
+#define OR_MASK_RW     0x0000
+#define OR_NO_MASK_RW  0x0002
+#define OR_MASK_FC     0x0000
+#define OR_NO_MASK_FC  0x0001
+
+#define MAKE_BR(base_address, enable, rw, fc) \
+    ((base_address >> 11) | fc | rw | enable)
+
+#define MAKE_OR(bsize, DtAck, RW_Mask, FC_Mask) \
+    (DtAck | ((~(bsize - 1) & 0x00FFFFFF) >> 11) | FC_Mask | RW_Mask)
+
+#define __REG_CAT(r, n) r ## n
+#define WRITE_BR(csel, base_address, enable, rw, fc) \
+          __REG_CAT(m302.reg.br, csel) = MAKE_BR(base_address, enable, rw, fc)
+#define WRITE_OR(csel, bsize, DtAck, RW_Mask, FC_Mask) \
+          __REG_CAT(m302.reg.or, csel) = MAKE_OR(bsize, DtAck, RW_Mask, FC_Mask)
+
+/* ----
+   MC68302 Watchdog Timer Enable Bit
+
+ */
+#define WATCHDOG_ENABLE    (1)
+#define WATCHDOG_TRIGGER() (m302.reg.wrr = 0x10 | WATCHDOG_ENABLE, m302.reg.wcn = 0)
+#define WATCHDOG_TOGGLE()  (m302.reg.wcn = WATCHDOG_TIMEOUT_PERIOD)
+#define DISABLE_WATCHDOG() (m302.reg.wrr = 0)
 
 /*
Index: testsuites/samples/cdtest/main.cc
===================================================================
--- testsuites/samples/cdtest/main.cc	(revision 13f09e64e56cb2bda93cbcdd3c71afc361a6ab6d)
+++ testsuites/samples/cdtest/main.cc	(revision 91333c27bdc98ea872c97ec41be98fab5de4e442)
@@ -22,5 +22,7 @@
 #include <rtems.h>
 #include <stdio.h>
+#ifdef RTEMS_TEST_IO_STREAM
 #include <iostream.h>
+#endif
 
 extern "C" {
@@ -109,5 +111,9 @@
     B bleak;
 
+#ifdef RTEMS_TEST_IO_STREAM
     cout << "Testing a C++ I/O stream" << endl;
+#else
+    printf("IO Stream not tested\n");
+#endif
 
     bar = blech;
