summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2000-08-01 20:01:14 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2000-08-01 20:01:14 +0000
commitb812f841553be30baab45f08b3f6fda692b5166b (patch)
treeb3dc6aeca3a4ced907f1c0262f9a714b44d3baab
parentLook at both hardware and software FP settings. (diff)
downloadrtems-b812f841553be30baab45f08b3f6fda692b5166b.tar.bz2
Added sim68000 BSP for the BSVC simulator. This BSP includes the
alias simcpu32 that supports the CPU32 simulator in BSVC. At this point, it is still under development.
-rw-r--r--aclocal/bsp-alias.m41
-rw-r--r--aclocal/check-bsps.m41
-rw-r--r--c/ACKNOWLEDGEMENTS6
-rw-r--r--c/TESTED2
-rw-r--r--c/src/lib/libbsp/m68k/shared/bspspuriousinit.c46
-rw-r--r--c/src/lib/libbsp/m68k/shared/m68000spurious.c76
-rw-r--r--c/src/lib/libbsp/m68k/sim68000/.cvsignore13
-rw-r--r--c/src/lib/libbsp/m68k/sim68000/Makefile.am18
-rw-r--r--c/src/lib/libbsp/m68k/sim68000/README10
-rw-r--r--c/src/lib/libbsp/m68k/sim68000/bsp_specs23
-rw-r--r--c/src/lib/libbsp/m68k/sim68000/clock/.cvsignore2
-rw-r--r--c/src/lib/libbsp/m68k/sim68000/clock/Makefile.am35
-rw-r--r--c/src/lib/libbsp/m68k/sim68000/clock/clockdrv.c23
-rw-r--r--c/src/lib/libbsp/m68k/sim68000/configure.in31
-rw-r--r--c/src/lib/libbsp/m68k/sim68000/console/.cvsignore2
-rw-r--r--c/src/lib/libbsp/m68k/sim68000/console/Makefile.am37
-rw-r--r--c/src/lib/libbsp/m68k/sim68000/console/conscfg.c74
-rw-r--r--c/src/lib/libbsp/m68k/sim68000/include/.cvsignore2
-rw-r--r--c/src/lib/libbsp/m68k/sim68000/include/Makefile.am25
-rw-r--r--c/src/lib/libbsp/m68k/sim68000/include/bsp.h106
-rw-r--r--c/src/lib/libbsp/m68k/sim68000/sim68000.setup7
-rw-r--r--c/src/lib/libbsp/m68k/sim68000/start/.cvsignore2
-rw-r--r--c/src/lib/libbsp/m68k/sim68000/start/Makefile.am32
-rw-r--r--c/src/lib/libbsp/m68k/sim68000/start/start.S416
-rw-r--r--c/src/lib/libbsp/m68k/sim68000/startup/.cvsignore2
-rw-r--r--c/src/lib/libbsp/m68k/sim68000/startup/Makefile.am40
-rw-r--r--c/src/lib/libbsp/m68k/sim68000/startup/bspstart.c85
-rw-r--r--c/src/lib/libbsp/m68k/sim68000/startup/linkcmds129
-rw-r--r--c/src/lib/libbsp/m68k/sim68000/startup/spurious_assistant.c29
-rw-r--r--c/src/lib/libbsp/m68k/sim68000/wrapup/.cvsignore2
-rw-r--r--c/src/lib/libbsp/m68k/sim68000/wrapup/Makefile.am33
-rw-r--r--make/custom/sim68000.cfg62
-rw-r--r--make/custom/simcpu32.cfg16
33 files changed, 1386 insertions, 2 deletions
diff --git a/aclocal/bsp-alias.m4 b/aclocal/bsp-alias.m4
index 4f872e175e..3ffde3915a 100644
--- a/aclocal/bsp-alias.m4
+++ b/aclocal/bsp-alias.m4
@@ -7,6 +7,7 @@ dnl Internal subroutine to RTEMS_BSP_ALIAS
AC_DEFUN(_RTEMS_BSP_ALIAS,
[# account for "aliased" bsps which share source code
case $1 in
+ simcpu32) $2=sim68000 ;; # BSVC CPU32 variant
c3xsim) $2=c4xsim ;; # TI C3x Simulator in gdb
mcp750) $2=motorola_powerpc ;; # Motorola PPC board variant
mvme2307) $2=motorola_powerpc ;; # Motorola PPC board variant
diff --git a/aclocal/check-bsps.m4 b/aclocal/check-bsps.m4
index a331c5773e..37e2354fe9 100644
--- a/aclocal/check-bsps.m4
+++ b/aclocal/check-bsps.m4
@@ -27,6 +27,7 @@ AC_MSG_CHECKING([for bsps])
mbx8xx) rtems_bsp="$rtems_bsp mbx821_001 mbx860_002";;
motorola_powerpc) rtems_bsp="$rtems_bsp mvme2307 mcp750";;
pc386) rtems_bsp="$rtems_bsp pc386 pc486 pc586 pc686";;
+ sim68000) rtems_bsp="$rtems_bsp simcpu32";;
*) $1="[$]$1 $file";;
esac;
done
diff --git a/c/ACKNOWLEDGEMENTS b/c/ACKNOWLEDGEMENTS
index a459083443..294cb75d45 100644
--- a/c/ACKNOWLEDGEMENTS
+++ b/c/ACKNOWLEDGEMENTS
@@ -168,8 +168,10 @@ The following persons/organizations have made contributions:
+ Mark Bronson <mark@ramix.com> of RAMIX for submitting i960RP
support and the rxgen960 board support package.
-+ Joel Sherrill <joel@OARcorp.com> for the i960sim BSP that works
- with the i960 instruction set simulator in gdb.
++ Joel Sherrill <joel@OARcorp.com> for the BSPs that work with
+ numerous simulators including psim, i960sim, c4xsim, h8sim, armulator,
+ sim68000, and simcpu32. Most of these BSPs work with instruction
+ set simulators in gdb.
+ Darlene Stewart <Darlene.Stewart@nrc.ca> and Charles Gauthier
<Charles.Gauthier@nrc.ca> of the Institute for Information Technology
diff --git a/c/TESTED b/c/TESTED
index 716ef80799..088a620a70 100644
--- a/c/TESTED
+++ b/c/TESTED
@@ -32,6 +32,8 @@ RedHat Linux 5.1 as the host environment:
i960 i960ha no BSP (note 9)
i960 i960rp rxgen960 (note 1)
m68k mfc5200 no BSP (note 9)
+ m68k m68000 sim68000 (BSVC) (note 5 -- under development)
+ m68k cpu32 simcpu32 (BSVC) (note 5 -- under development)
m68k m68000 efi68k (note 1)
m68k m68020 Motorola MVME136 (note 1, 6)
m68k m68030 Motorola MVME147 (note 1)
diff --git a/c/src/lib/libbsp/m68k/shared/bspspuriousinit.c b/c/src/lib/libbsp/m68k/shared/bspspuriousinit.c
new file mode 100644
index 0000000000..d894fe4fc6
--- /dev/null
+++ b/c/src/lib/libbsp/m68k/shared/bspspuriousinit.c
@@ -0,0 +1,46 @@
+/*
+ * CXX Spurious Trap Handler Install Routine
+ *
+ * This is just enough of a trap handler to let us know what
+ * the likely source of the trap was.
+ *
+ * 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.OARcorp.com/rtems/license.html.
+ *
+ * $Id$
+ */
+
+#include <bsp.h>
+#include <bspIo.h>
+
+/*
+ * bsp_spurious_initialize
+ *
+ * Install the spurious handler for most vectors.
+ */
+
+rtems_isr bsp_spurious_handler(
+ rtems_vector_number vector/*,
+ CPU_Interrupt_frame *isf */
+);
+
+void bsp_spurious_initialize()
+{
+ rtems_unsigned32 vector;
+
+ for ( vector=0 ; vector<255 ; vector++ ) {
+
+ /*
+ * Skip any vectors that might be generally used for traps.
+ *
+ * XXX
+ */
+
+ set_vector( bsp_spurious_handler, vector, 1 );
+ }
+
+}
diff --git a/c/src/lib/libbsp/m68k/shared/m68000spurious.c b/c/src/lib/libbsp/m68k/shared/m68000spurious.c
new file mode 100644
index 0000000000..efa5b886ef
--- /dev/null
+++ b/c/src/lib/libbsp/m68k/shared/m68000spurious.c
@@ -0,0 +1,76 @@
+/*
+ * C3X Spurious Trap Handler
+ *
+ * This is just enough of a trap handler to let us know what
+ * the likely source of the trap was.
+ *
+ * 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.OARcorp.com/rtems/license.html.
+ *
+ * $Id$
+ */
+
+#include <bsp.h>
+#include <bspIo.h>
+
+/*
+ * bsp_spurious_handler
+ *
+ * Print a message on the debug console and then die
+ */
+
+void bsp_spurious_handler_assistant(
+ rtems_vector_number /*,
+ CPU_Interrupt_frame * */
+);
+
+rtems_isr bsp_spurious_handler(
+ rtems_vector_number vector /*,
+ CPU_Interrupt_frame *isf */
+)
+{
+ char *s;
+
+ printk( "Unexpected interrupt (0x%x)\n", vector );
+/*
+ printk( "It looks like we got the interrupt at 0x%x\n", isf->interrupted );
+*/
+
+ /*
+ * Can we print a name?
+ */
+
+ s = 0;
+#if 0
+ if ( vector <= 0x1f ) {
+ switch ( vector ) {
+ case 1: s = "INT0"; break;
+ case 2: s = "INT1"; break;
+ case 3: s = "INT2"; break;
+ case 4: s = "INT3"; break;
+ case 5: s = "XINT0"; break;
+ case 6: s = "RINT0"; break;
+ case 7: s = "XINT1"; break;
+ case 8: s = "RINT1"; break;
+ case 9: s = "TINT0"; break;
+ case 0x0a: s = "TINT1"; break;
+ case 0x0b: s = "DINT0"; break;
+ case 0x0c: s = "DINT1"; break;
+ default: s = "Reserved"; break;
+ }
+ printk( "Looks like it was an %s\n", s );
+ } else {
+ printk( "Looks like it was a TRAP%d\n", vector - 0x20 );
+ }
+#endif
+
+ /*
+ * Now call the BSP specific routine
+ */
+
+ bsp_spurious_handler_assistant( vector/* , 0 */ );
+}
diff --git a/c/src/lib/libbsp/m68k/sim68000/.cvsignore b/c/src/lib/libbsp/m68k/sim68000/.cvsignore
new file mode 100644
index 0000000000..525275c115
--- /dev/null
+++ b/c/src/lib/libbsp/m68k/sim68000/.cvsignore
@@ -0,0 +1,13 @@
+Makefile
+Makefile.in
+aclocal.m4
+config.cache
+config.guess
+config.log
+config.status
+config.sub
+configure
+depcomp
+install-sh
+missing
+mkinstalldirs
diff --git a/c/src/lib/libbsp/m68k/sim68000/Makefile.am b/c/src/lib/libbsp/m68k/sim68000/Makefile.am
new file mode 100644
index 0000000000..90008b9311
--- /dev/null
+++ b/c/src/lib/libbsp/m68k/sim68000/Makefile.am
@@ -0,0 +1,18 @@
+##
+## $Id$
+##
+
+AUTOMAKE_OPTIONS = foreign 1.4
+ACLOCAL_AMFLAGS = -I $(RTEMS_TOPdir)/aclocal
+
+# wrapup is the one that actually builds and installs the library
+# from the individual .rel files built in other directories
+#SUBDIRS = include start startup clock console timer wrapup
+SUBDIRS = include start startup clock console wrapup
+
+include $(top_srcdir)/../../bsp.am
+
+EXTRA_DIST = bsp_specs times
+
+include $(top_srcdir)/../../../../../../automake/subdirs.am
+include $(top_srcdir)/../../../../../../automake/local.am
diff --git a/c/src/lib/libbsp/m68k/sim68000/README b/c/src/lib/libbsp/m68k/sim68000/README
new file mode 100644
index 0000000000..6509e7a1b9
--- /dev/null
+++ b/c/src/lib/libbsp/m68k/sim68000/README
@@ -0,0 +1,10 @@
+#
+# $Id$
+#
+
+BSP for the BSVC 68000 simulator. This is definitely under construction.
+The initialization/setup script for BSVC is the part that likely needs
+work.
+
+--joel
+1 August 2000
diff --git a/c/src/lib/libbsp/m68k/sim68000/bsp_specs b/c/src/lib/libbsp/m68k/sim68000/bsp_specs
new file mode 100644
index 0000000000..eecf37c5a0
--- /dev/null
+++ b/c/src/lib/libbsp/m68k/sim68000/bsp_specs
@@ -0,0 +1,23 @@
+%rename cpp old_cpp
+%rename lib old_lib
+%rename endfile old_endfile
+%rename startfile old_startfile
+%rename link old_link
+
+*cpp:
+%(old_cpp) %{qrtems: -D__embedded__} -Asystem(embedded)
+
+*lib:
+%{!qrtems: %(old_lib)} %{qrtems: --start-group \
+%{!qrtems_debug: -lrtemsall} %{qrtems_debug: -lrtemsall_g} \
+-lc -lgcc --end-group \
+%{!qnolinkcmds: -T linkcmds%s}}
+
+*startfile:
+%{!qrtems: %(old_startfile)} %{qrtems: \
+%{!qrtems_debug: start.o%s} \
+%{qrtems_debug: start_g.o%s}}
+
+*link:
+%(old_link) %{!qrtems: %(old_link)} %{qrtems: -dc -dp -N -e _start}
+
diff --git a/c/src/lib/libbsp/m68k/sim68000/clock/.cvsignore b/c/src/lib/libbsp/m68k/sim68000/clock/.cvsignore
new file mode 100644
index 0000000000..282522db03
--- /dev/null
+++ b/c/src/lib/libbsp/m68k/sim68000/clock/.cvsignore
@@ -0,0 +1,2 @@
+Makefile
+Makefile.in
diff --git a/c/src/lib/libbsp/m68k/sim68000/clock/Makefile.am b/c/src/lib/libbsp/m68k/sim68000/clock/Makefile.am
new file mode 100644
index 0000000000..23a7a9cff4
--- /dev/null
+++ b/c/src/lib/libbsp/m68k/sim68000/clock/Makefile.am
@@ -0,0 +1,35 @@
+##
+## $Id$
+##
+
+AUTOMAKE_OPTIONS = foreign 1.4
+
+VPATH = @srcdir@:@srcdir@/../../../shared
+
+PGM = $(ARCH)/clock.rel
+
+C_FILES = clockdrv.c
+C_O_FILES = $(C_FILES:%.c=$(ARCH)/%.o)
+
+OBJS = $(C_O_FILES)
+
+include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
+include $(top_srcdir)/../../../../../../automake/lib.am
+
+#
+# (OPTIONAL) Add local stuff here using +=
+#
+
+$(PGM): $(OBJS)
+ $(make-rel)
+
+# the .rel file built here will be put into libbsp.a by ../wrapup/Makefile
+
+all-local: $(ARCH) $(OBJS) $(PGM)
+
+.PRECIOUS: $(PGM)
+
+# XXX add the other variant files here
+EXTRA_DIST = clockdrv.c
+
+include $(top_srcdir)/../../../../../../automake/local.am
diff --git a/c/src/lib/libbsp/m68k/sim68000/clock/clockdrv.c b/c/src/lib/libbsp/m68k/sim68000/clock/clockdrv.c
new file mode 100644
index 0000000000..1de0ef766b
--- /dev/null
+++ b/c/src/lib/libbsp/m68k/sim68000/clock/clockdrv.c
@@ -0,0 +1,23 @@
+/*
+ * Instantiate the clock driver shell.
+ *
+ * $Id$
+ */
+
+#include <bsp.h>
+
+#define CLOCK_VECTOR 0
+
+#define Clock_driver_support_install_isr( _new, _old ) \
+ do { _old = (rtems_isr_entry) set_vector( _new, CLOCK_VECTOR, 1 ); } while(0)
+
+
+#define Clock_driver_support_initialize_hardware() \
+ } while (0);
+
+#define Clock_driver_support_at_tick() \
+ Clock_driver_support_initialize_hardware()
+
+#define Clock_driver_support_shutdown_hardware()
+
+#include "../../../shared/clockdrv_shell.c"
diff --git a/c/src/lib/libbsp/m68k/sim68000/configure.in b/c/src/lib/libbsp/m68k/sim68000/configure.in
new file mode 100644
index 0000000000..3dd72fa303
--- /dev/null
+++ b/c/src/lib/libbsp/m68k/sim68000/configure.in
@@ -0,0 +1,31 @@
+dnl Process this file with autoconf to produce a configure script.
+dnl
+dnl $Id$
+
+AC_PREREQ(2.13)
+AC_INIT(bsp_specs)
+RTEMS_TOP(../../../../../..)
+AC_CONFIG_AUX_DIR(../../../../../..)
+
+RTEMS_CANONICAL_TARGET_CPU
+AM_INIT_AUTOMAKE(rtems-c-src-lib-libbsp-m68k-sim68000,$RTEMS_VERSION,no)
+AM_MAINTAINER_MODE
+
+RTEMS_PROG_CC_FOR_TARGET
+RTEMS_CANONICALIZE_TOOLS
+
+RTEMS_ENV_RTEMSBSP
+RTEMS_CHECK_CUSTOM_BSP(RTEMS_BSP)
+RTEMS_CHECK_BSP_CACHE(RTEMS_BSP)
+RTEMS_CANONICAL_HOST
+RTEMS_PROJECT_ROOT
+
+# Explicitly list all Makefiles here
+AC_OUTPUT(
+Makefile
+clock/Makefile
+console/Makefile
+include/Makefile
+start/Makefile
+startup/Makefile
+wrapup/Makefile)
diff --git a/c/src/lib/libbsp/m68k/sim68000/console/.cvsignore b/c/src/lib/libbsp/m68k/sim68000/console/.cvsignore
new file mode 100644
index 0000000000..282522db03
--- /dev/null
+++ b/c/src/lib/libbsp/m68k/sim68000/console/.cvsignore
@@ -0,0 +1,2 @@
+Makefile
+Makefile.in
diff --git a/c/src/lib/libbsp/m68k/sim68000/console/Makefile.am b/c/src/lib/libbsp/m68k/sim68000/console/Makefile.am
new file mode 100644
index 0000000000..2ee7fd276e
--- /dev/null
+++ b/c/src/lib/libbsp/m68k/sim68000/console/Makefile.am
@@ -0,0 +1,37 @@
+##
+## $Id$
+##
+
+AUTOMAKE_OPTIONS = foreign 1.4
+
+VPATH = @srcdir@:@srcdir@/../../../shared
+
+PGM = $(ARCH)/console.rel
+
+C_FILES = conscfg.c console.c
+C_O_FILES = $(C_FILES:%.c=$(ARCH)/%.o)
+
+S_FILES =
+S_O_FILES = $(S_FILES:%.S=$(ARCH)/%.o)
+
+OBJS = $(C_O_FILES) $(S_O_FILES)
+
+include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
+include $(top_srcdir)/../../../../../../automake/lib.am
+
+#
+# (OPTIONAL) Add local stuff here using +=
+#
+
+$(PGM): $(OBJS)
+ $(make-rel)
+
+# the .rel file built here will be put into libbsp.a by ../wrapup/Makefile
+
+all-local: $(ARCH) $(OBJS) $(PGM)
+
+.PRECIOUS: $(PGM)
+
+EXTRA_DIST = conscfg.c
+
+include $(top_srcdir)/../../../../../../automake/local.am
diff --git a/c/src/lib/libbsp/m68k/sim68000/console/conscfg.c b/c/src/lib/libbsp/m68k/sim68000/console/conscfg.c
new file mode 100644
index 0000000000..0817233834
--- /dev/null
+++ b/c/src/lib/libbsp/m68k/sim68000/console/conscfg.c
@@ -0,0 +1,74 @@
+/*
+ * This file contains the TTY driver table.
+ *
+ * COPYRIGHT (c) 1989-2000.
+ * 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.OARcorp.com/rtems/license.html.
+ *
+ * $Id$
+ */
+
+#include <bsp.h>
+
+#include <libchip/serial.h>
+#include <libchip/mc68681.h>
+
+/*
+ * Fix these for the simulator
+ */
+
+#define MC68681_PORT_CONFIG MC68681_XBRG_IGNORED
+#define MC68681_PROBE libchip_serial_default_probe
+#define MC68681_VECTOR 0
+#define MC68681_BASE_ADDRESS 0x71001
+#define MC68681_BASE_ADDRESS 0x71007
+
+/*
+ * Based on BSP configuration information decide whether to do polling IO
+ * or interrupt driven IO.
+ */
+
+#if (CONSOLE_USE_INTERRUPTS)
+#define MC68681_FUNCTIONS &mc68681_fns
+#else
+#define MC68681_FUNCTIONS &mc68681_fns_polled
+#endif
+
+
+
+console_tbl Console_Port_Tbl[] = {
+ {
+ "/dev/com0", /* sDeviceName */
+ SERIAL_MC68681, /* deviceType */
+ MC68681_FUNCTIONS, /* pDeviceFns */
+ NULL, /* deviceProbe */
+ NULL, /* pDeviceFlow */
+ 16, /* ulMargin */
+ 8, /* ulHysteresis */
+ (void *)9600, /* baud rate */ /* pDeviceParams */
+ MC68681_BASE_ADDRESS, /* ulCtrlPort1 */
+ MC68681_BASE_ADDRESS, /* ulCtrlPort2 */
+ MC68681_DATA_ADDRESS, /* ulDataPort */
+ mc68681_get_register_2, /* getRegister */
+ mc68681_set_register_2, /* setRegister */
+ NULL, /* unused */ /* getData */
+ NULL, /* unused */ /* setData */
+ mc68681_baud_rate_table, /* ulClock */
+ MC68681_VECTOR /* ulIntVector */
+ }
+};
+
+/*
+ * Declare some information used by the console driver
+ */
+
+#define NUM_CONSOLE_PORTS (sizeof(Console_Port_Tbl)/sizeof(console_tbl))
+
+unsigned long Console_Port_Count = NUM_CONSOLE_PORTS;
+
+console_data Console_Port_Data[NUM_CONSOLE_PORTS];
+
+rtems_device_minor_number Console_Port_Minor;
diff --git a/c/src/lib/libbsp/m68k/sim68000/include/.cvsignore b/c/src/lib/libbsp/m68k/sim68000/include/.cvsignore
new file mode 100644
index 0000000000..282522db03
--- /dev/null
+++ b/c/src/lib/libbsp/m68k/sim68000/include/.cvsignore
@@ -0,0 +1,2 @@
+Makefile
+Makefile.in
diff --git a/c/src/lib/libbsp/m68k/sim68000/include/Makefile.am b/c/src/lib/libbsp/m68k/sim68000/include/Makefile.am
new file mode 100644
index 0000000000..1d6c3074ec
--- /dev/null
+++ b/c/src/lib/libbsp/m68k/sim68000/include/Makefile.am
@@ -0,0 +1,25 @@
+##
+## $Id$
+##
+
+AUTOMAKE_OPTIONS = foreign 1.4
+
+H_FILES = bsp.h ../../../shared/include/coverhd.h
+
+$(PROJECT_INCLUDE):
+ $(mkinstalldirs) $@
+
+$(PROJECT_INCLUDE)/bsp.h: bsp.h
+ $(INSTALL_DATA) $< $@
+
+$(PROJECT_INCLUDE)/coverhd.h: ../../../shared/include/coverhd.h
+ $(INSTALL_DATA) $< $@
+
+TMPINSTALL_FILES += $(PROJECT_INCLUDE) $(PROJECT_INCLUDE)/bsp.h \
+ $(PROJECT_INCLUDE)/coverhd.h
+
+all-local: $(TMPINSTALL_FILES)
+
+EXTRA_DIST = bsp.h
+
+include $(top_srcdir)/../../../../../../automake/local.am
diff --git a/c/src/lib/libbsp/m68k/sim68000/include/bsp.h b/c/src/lib/libbsp/m68k/sim68000/include/bsp.h
new file mode 100644
index 0000000000..818579e1c1
--- /dev/null
+++ b/c/src/lib/libbsp/m68k/sim68000/include/bsp.h
@@ -0,0 +1,106 @@
+/* bsp.h
+ *
+ * This include file contains some definitions specific to the
+ * BSVC simulator BSP.
+ *
+ * COPYRIGHT (c) 1989-2000.
+ * 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.OARcorp.com/rtems/license.html.
+ *
+ * $Id$
+ */
+
+#ifndef __BSVC_SIM
+#define __BSVC_SIM
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <rtems.h>
+#include <iosupp.h>
+#include <console.h>
+#include <clockdrv.h>
+
+/*
+ * Define some hardware constants here
+ */
+
+/*
+ * Define the time limits for RTEMS Test Suite test durations.
+ * Long test and short test duration limits are provided. These
+ * values are in seconds and need to be converted to ticks for the
+ * application.
+ *
+ */
+
+#define MAX_LONG_TEST_DURATION 300 /* 5 minutes = 300 seconds */
+#define MAX_SHORT_TEST_DURATION 3 /* 3 seconds */
+
+/*
+ * Define the interrupt mechanism for Time Test 27
+ *
+ * NOTE: Following are not defined for the BSVC Simulator YET.
+ *
+ */
+
+#define MUST_WAIT_FOR_INTERRUPT 0
+
+#define Install_tm27_vector( handler ) /* set_vector( (handler), 6, 1 ) */
+
+#define Cause_tm27_intr()
+
+#define Clear_tm27_intr()
+
+#define Lower_tm27_intr()
+
+/*
+ * Simple spin delay in microsecond units for device drivers.
+ * This is very dependent on the clock speed of the target.
+ */
+
+#define delay( microseconds ) \
+ { register rtems_unsigned32 _delay=(microseconds); \
+ register rtems_unsigned32 _tmp = 0; /* initialized to avoid warning */ \
+ asm volatile( "0: \
+ remo 3,31,%0 ; \
+ cmpo 0,%0 ; \
+ subo 1,%1,%1 ; \
+ cmpobne.t 0,%1,0b " \
+ : "=d" (_tmp), "=d" (_delay) \
+ : "0" (_tmp), "1" (_delay) ); \
+ }
+
+/* Constants */
+
+/* miscellaneous stuff assumed to exist */
+
+extern rtems_configuration_table BSP_Configuration;
+
+/*
+ * 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, rtems_vector_number, int );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+/* end of include file */
diff --git a/c/src/lib/libbsp/m68k/sim68000/sim68000.setup b/c/src/lib/libbsp/m68k/sim68000/sim68000.setup
new file mode 100644
index 0000000000..e95c9a695a
--- /dev/null
+++ b/c/src/lib/libbsp/m68k/sim68000/sim68000.setup
@@ -0,0 +1,7 @@
+BSVC Simulator Setup File
+
+UI_VERSION {2.0}
+SIMULATOR {sim68000}
+COMMAND {AttachDevice 0 RAM {BaseAddress = 0 Size = 40000}}
+COMMAND {AttachDevice 0 RAM {BaseAddress = 40000 Size = 20000}}
+COMMAND {AttachDevice 0 M68681 {BaseAddress = 71001 OffsetToFirstRegister = 0 OffsetBetweenRegisters = 2 InterruptLevel = 4 PortAStandardInputOutputFlag = 0 PortBStandardInputOutputFlag = 0 PortACommand = xterm -T "M68681 Port A" -132 -fn fixed -e /usr3/tmp/bsvc-2.1/bin/xtermpipe PortBCommand = }}
diff --git a/c/src/lib/libbsp/m68k/sim68000/start/.cvsignore b/c/src/lib/libbsp/m68k/sim68000/start/.cvsignore
new file mode 100644
index 0000000000..282522db03
--- /dev/null
+++ b/c/src/lib/libbsp/m68k/sim68000/start/.cvsignore
@@ -0,0 +1,2 @@
+Makefile
+Makefile.in
diff --git a/c/src/lib/libbsp/m68k/sim68000/start/Makefile.am b/c/src/lib/libbsp/m68k/sim68000/start/Makefile.am
new file mode 100644
index 0000000000..e5a9f26a27
--- /dev/null
+++ b/c/src/lib/libbsp/m68k/sim68000/start/Makefile.am
@@ -0,0 +1,32 @@
+##
+## $Id$
+##
+
+AUTOMAKE_OPTIONS = foreign 1.4
+
+PGM = $(ARCH)/start.o
+
+S_FILES = start.S
+S_O_FILES = $(S_FILES:%.S=$(ARCH)/%.o)
+
+OBJS = $(S_O_FILES)
+
+include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
+include $(top_srcdir)/../../../../../../automake/lib.am
+
+#
+# (OPTIONAL) Add local stuff here using +=
+#
+
+$(PROJECT_RELEASE)/lib/start$(LIB_VARIANT).o: $(PGM)
+ $(INSTALL_DATA) $< $@
+
+TMPINSTALL_FILES += $(PROJECT_RELEASE)/lib/start$(LIB_VARIANT).o
+
+all-local: $(ARCH) $(OBJS) $(PGM) $(TMPINSTALL_FILES)
+
+.PRECIOUS: $(PGM)
+
+EXTRA_DIST = start.S
+
+include $(top_srcdir)/../../../../../../automake/local.am
diff --git a/c/src/lib/libbsp/m68k/sim68000/start/start.S b/c/src/lib/libbsp/m68k/sim68000/start/start.S
new file mode 100644
index 0000000000..6f1acdfe00
--- /dev/null
+++ b/c/src/lib/libbsp/m68k/sim68000/start/start.S
@@ -0,0 +1,416 @@
+/*
+ * $Id$
+ *
+ * Re-written the gen68302 start-up code.
+ *
+ * Uses gas syntax only, removed the OAR asm.h.
+ *
+ * Supplies a complete vector table in ROM.
+ *
+ * Manages all vectors with seperate handlers to trap unhandled
+ * execptions.
+ *
+ * Uses the target specific header file to get the runtime
+ * configuration
+ *
+ * COPYRIGHT (c) 1996
+ * Objective Design Systems Pty Ltd (ODS)
+ *
+ * COPYRIGHT (c) 1989, 1990, 1991, 1992, 1993, 1994.
+ * On-Line Applications Research Corporation (OAR).
+ * All rights assigned to U.S. Government, 1994.
+ *
+ * This material may be reproduced by or for the U.S. Government pursuant
+ * to the copyright license under the clause at DFARS 252.227-7013. This
+ * notice must appear in all copies of this file and its derivatives.
+ *
+ */
+
+#define STACK_AT_RESET 0x0
+
+|
+| Boot boot code in a special section, ld postions
+|
+| Initial stack pointer is in the dual ported RAM
+|
+ .sect .text
+
+ .global _start | program entry
+ .global M68Kvec | Vector Table
+
+_start: | standard name for program entry
+M68Kvec: | standard location for vectors
+
+|
+| Make relative, can have the code positioned any where
+|
+
+V___ISSP: .long STACK_AT_RESET
+V____IPC: .long start - V___ISSP
+
+|
+| Create the rest of the vector table to point to the unhandled expection
+| handler
+|
+| Lots of macros, how-ever it creates a simple ROM vector table
+|
+
+#define MAKE_EXCEPTION_VECTOR(n) V___##n: .long (_CPU_ISR_jump_table + (n * 10))
+
+MAKE_EXCEPTION_VECTOR(2)
+MAKE_EXCEPTION_VECTOR(3)
+MAKE_EXCEPTION_VECTOR(4)
+MAKE_EXCEPTION_VECTOR(5)
+MAKE_EXCEPTION_VECTOR(6)
+MAKE_EXCEPTION_VECTOR(7)
+MAKE_EXCEPTION_VECTOR(8)
+MAKE_EXCEPTION_VECTOR(9)
+
+MAKE_EXCEPTION_VECTOR(10)
+MAKE_EXCEPTION_VECTOR(11)
+MAKE_EXCEPTION_VECTOR(12)
+MAKE_EXCEPTION_VECTOR(13)
+MAKE_EXCEPTION_VECTOR(14)
+MAKE_EXCEPTION_VECTOR(15)
+MAKE_EXCEPTION_VECTOR(16)
+MAKE_EXCEPTION_VECTOR(17)
+MAKE_EXCEPTION_VECTOR(18)
+MAKE_EXCEPTION_VECTOR(19)
+
+MAKE_EXCEPTION_VECTOR(20)
+MAKE_EXCEPTION_VECTOR(21)
+MAKE_EXCEPTION_VECTOR(22)
+MAKE_EXCEPTION_VECTOR(23)
+MAKE_EXCEPTION_VECTOR(24)
+MAKE_EXCEPTION_VECTOR(25)
+MAKE_EXCEPTION_VECTOR(26)
+MAKE_EXCEPTION_VECTOR(27)
+MAKE_EXCEPTION_VECTOR(28)
+MAKE_EXCEPTION_VECTOR(29)
+
+MAKE_EXCEPTION_VECTOR(30)
+MAKE_EXCEPTION_VECTOR(31)
+MAKE_EXCEPTION_VECTOR(32)
+MAKE_EXCEPTION_VECTOR(33)
+MAKE_EXCEPTION_VECTOR(34)
+MAKE_EXCEPTION_VECTOR(35)
+MAKE_EXCEPTION_VECTOR(36)
+MAKE_EXCEPTION_VECTOR(37)
+MAKE_EXCEPTION_VECTOR(38)
+MAKE_EXCEPTION_VECTOR(39)
+
+MAKE_EXCEPTION_VECTOR(40)
+MAKE_EXCEPTION_VECTOR(41)
+MAKE_EXCEPTION_VECTOR(42)
+MAKE_EXCEPTION_VECTOR(43)
+MAKE_EXCEPTION_VECTOR(44)
+MAKE_EXCEPTION_VECTOR(45)
+MAKE_EXCEPTION_VECTOR(46)
+MAKE_EXCEPTION_VECTOR(47)
+MAKE_EXCEPTION_VECTOR(48)
+MAKE_EXCEPTION_VECTOR(49)
+
+MAKE_EXCEPTION_VECTOR(50)
+MAKE_EXCEPTION_VECTOR(51)
+MAKE_EXCEPTION_VECTOR(52)
+MAKE_EXCEPTION_VECTOR(53)
+MAKE_EXCEPTION_VECTOR(54)
+MAKE_EXCEPTION_VECTOR(55)
+MAKE_EXCEPTION_VECTOR(56)
+MAKE_EXCEPTION_VECTOR(57)
+MAKE_EXCEPTION_VECTOR(58)
+MAKE_EXCEPTION_VECTOR(59)
+
+MAKE_EXCEPTION_VECTOR(60)
+MAKE_EXCEPTION_VECTOR(61)
+MAKE_EXCEPTION_VECTOR(62)
+MAKE_EXCEPTION_VECTOR(63)
+MAKE_EXCEPTION_VECTOR(64)
+MAKE_EXCEPTION_VECTOR(65)
+MAKE_EXCEPTION_VECTOR(66)
+MAKE_EXCEPTION_VECTOR(67)
+MAKE_EXCEPTION_VECTOR(68)
+MAKE_EXCEPTION_VECTOR(69)
+
+MAKE_EXCEPTION_VECTOR(70)
+MAKE_EXCEPTION_VECTOR(71)
+MAKE_EXCEPTION_VECTOR(72)
+MAKE_EXCEPTION_VECTOR(73)
+MAKE_EXCEPTION_VECTOR(74)
+MAKE_EXCEPTION_VECTOR(75)
+MAKE_EXCEPTION_VECTOR(76)
+MAKE_EXCEPTION_VECTOR(77)
+MAKE_EXCEPTION_VECTOR(78)
+MAKE_EXCEPTION_VECTOR(79)
+
+MAKE_EXCEPTION_VECTOR(80)
+MAKE_EXCEPTION_VECTOR(81)
+MAKE_EXCEPTION_VECTOR(82)
+MAKE_EXCEPTION_VECTOR(83)
+MAKE_EXCEPTION_VECTOR(84)
+MAKE_EXCEPTION_VECTOR(85)
+MAKE_EXCEPTION_VECTOR(86)
+MAKE_EXCEPTION_VECTOR(87)
+MAKE_EXCEPTION_VECTOR(88)
+MAKE_EXCEPTION_VECTOR(89)
+
+MAKE_EXCEPTION_VECTOR(90)
+MAKE_EXCEPTION_VECTOR(91)
+MAKE_EXCEPTION_VECTOR(92)
+MAKE_EXCEPTION_VECTOR(93)
+MAKE_EXCEPTION_VECTOR(94)
+MAKE_EXCEPTION_VECTOR(95)
+MAKE_EXCEPTION_VECTOR(96)
+MAKE_EXCEPTION_VECTOR(97)
+MAKE_EXCEPTION_VECTOR(98)
+MAKE_EXCEPTION_VECTOR(99)
+
+MAKE_EXCEPTION_VECTOR(100)
+MAKE_EXCEPTION_VECTOR(101)
+MAKE_EXCEPTION_VECTOR(102)
+MAKE_EXCEPTION_VECTOR(103)
+MAKE_EXCEPTION_VECTOR(104)
+MAKE_EXCEPTION_VECTOR(105)
+MAKE_EXCEPTION_VECTOR(106)
+MAKE_EXCEPTION_VECTOR(107)
+MAKE_EXCEPTION_VECTOR(108)
+MAKE_EXCEPTION_VECTOR(109)
+
+MAKE_EXCEPTION_VECTOR(110)
+MAKE_EXCEPTION_VECTOR(111)
+MAKE_EXCEPTION_VECTOR(112)
+MAKE_EXCEPTION_VECTOR(113)
+MAKE_EXCEPTION_VECTOR(114)
+MAKE_EXCEPTION_VECTOR(115)
+MAKE_EXCEPTION_VECTOR(116)
+MAKE_EXCEPTION_VECTOR(117)
+MAKE_EXCEPTION_VECTOR(118)
+MAKE_EXCEPTION_VECTOR(119)
+
+MAKE_EXCEPTION_VECTOR(120)
+MAKE_EXCEPTION_VECTOR(121)
+MAKE_EXCEPTION_VECTOR(122)
+MAKE_EXCEPTION_VECTOR(123)
+MAKE_EXCEPTION_VECTOR(124)
+MAKE_EXCEPTION_VECTOR(125)
+MAKE_EXCEPTION_VECTOR(126)
+MAKE_EXCEPTION_VECTOR(127)
+MAKE_EXCEPTION_VECTOR(128)
+MAKE_EXCEPTION_VECTOR(129)
+
+MAKE_EXCEPTION_VECTOR(130)
+MAKE_EXCEPTION_VECTOR(131)
+MAKE_EXCEPTION_VECTOR(132)
+MAKE_EXCEPTION_VECTOR(133)
+MAKE_EXCEPTION_VECTOR(134)
+MAKE_EXCEPTION_VECTOR(135)
+MAKE_EXCEPTION_VECTOR(136)
+MAKE_EXCEPTION_VECTOR(137)
+MAKE_EXCEPTION_VECTOR(138)
+MAKE_EXCEPTION_VECTOR(139)
+
+MAKE_EXCEPTION_VECTOR(140)
+MAKE_EXCEPTION_VECTOR(141)
+MAKE_EXCEPTION_VECTOR(142)
+MAKE_EXCEPTION_VECTOR(143)
+MAKE_EXCEPTION_VECTOR(144)
+MAKE_EXCEPTION_VECTOR(145)
+MAKE_EXCEPTION_VECTOR(146)
+MAKE_EXCEPTION_VECTOR(147)
+MAKE_EXCEPTION_VECTOR(148)
+MAKE_EXCEPTION_VECTOR(149)
+
+MAKE_EXCEPTION_VECTOR(150)
+MAKE_EXCEPTION_VECTOR(151)
+MAKE_EXCEPTION_VECTOR(152)
+MAKE_EXCEPTION_VECTOR(153)
+MAKE_EXCEPTION_VECTOR(154)
+MAKE_EXCEPTION_VECTOR(155)
+MAKE_EXCEPTION_VECTOR(156)
+MAKE_EXCEPTION_VECTOR(157)
+MAKE_EXCEPTION_VECTOR(158)
+MAKE_EXCEPTION_VECTOR(159)
+
+MAKE_EXCEPTION_VECTOR(160)
+MAKE_EXCEPTION_VECTOR(161)
+MAKE_EXCEPTION_VECTOR(162)
+MAKE_EXCEPTION_VECTOR(163)
+MAKE_EXCEPTION_VECTOR(164)
+MAKE_EXCEPTION_VECTOR(165)
+MAKE_EXCEPTION_VECTOR(166)
+MAKE_EXCEPTION_VECTOR(167)
+MAKE_EXCEPTION_VECTOR(168)
+MAKE_EXCEPTION_VECTOR(169)
+
+MAKE_EXCEPTION_VECTOR(170)
+MAKE_EXCEPTION_VECTOR(171)
+MAKE_EXCEPTION_VECTOR(172)
+MAKE_EXCEPTION_VECTOR(173)
+MAKE_EXCEPTION_VECTOR(174)
+MAKE_EXCEPTION_VECTOR(175)
+MAKE_EXCEPTION_VECTOR(176)
+MAKE_EXCEPTION_VECTOR(177)
+MAKE_EXCEPTION_VECTOR(178)
+MAKE_EXCEPTION_VECTOR(179)
+
+MAKE_EXCEPTION_VECTOR(180)
+MAKE_EXCEPTION_VECTOR(181)
+MAKE_EXCEPTION_VECTOR(182)
+MAKE_EXCEPTION_VECTOR(183)
+MAKE_EXCEPTION_VECTOR(184)
+MAKE_EXCEPTION_VECTOR(185)
+MAKE_EXCEPTION_VECTOR(186)
+MAKE_EXCEPTION_VECTOR(187)
+MAKE_EXCEPTION_VECTOR(188)
+MAKE_EXCEPTION_VECTOR(189)
+
+MAKE_EXCEPTION_VECTOR(190)
+MAKE_EXCEPTION_VECTOR(191)
+MAKE_EXCEPTION_VECTOR(192)
+MAKE_EXCEPTION_VECTOR(193)
+MAKE_EXCEPTION_VECTOR(194)
+MAKE_EXCEPTION_VECTOR(195)
+MAKE_EXCEPTION_VECTOR(196)
+MAKE_EXCEPTION_VECTOR(197)
+MAKE_EXCEPTION_VECTOR(198)
+MAKE_EXCEPTION_VECTOR(199)
+
+MAKE_EXCEPTION_VECTOR(200)
+MAKE_EXCEPTION_VECTOR(201)
+MAKE_EXCEPTION_VECTOR(202)
+MAKE_EXCEPTION_VECTOR(203)
+MAKE_EXCEPTION_VECTOR(204)
+MAKE_EXCEPTION_VECTOR(205)
+MAKE_EXCEPTION_VECTOR(206)
+MAKE_EXCEPTION_VECTOR(207)
+MAKE_EXCEPTION_VECTOR(208)
+MAKE_EXCEPTION_VECTOR(209)
+
+MAKE_EXCEPTION_VECTOR(210)
+MAKE_EXCEPTION_VECTOR(211)
+MAKE_EXCEPTION_VECTOR(212)
+MAKE_EXCEPTION_VECTOR(213)
+MAKE_EXCEPTION_VECTOR(214)
+MAKE_EXCEPTION_VECTOR(215)
+MAKE_EXCEPTION_VECTOR(216)
+MAKE_EXCEPTION_VECTOR(217)
+MAKE_EXCEPTION_VECTOR(218)
+MAKE_EXCEPTION_VECTOR(219)
+
+MAKE_EXCEPTION_VECTOR(220)
+MAKE_EXCEPTION_VECTOR(221)
+MAKE_EXCEPTION_VECTOR(222)
+MAKE_EXCEPTION_VECTOR(223)
+MAKE_EXCEPTION_VECTOR(224)
+MAKE_EXCEPTION_VECTOR(225)
+MAKE_EXCEPTION_VECTOR(226)
+MAKE_EXCEPTION_VECTOR(227)
+MAKE_EXCEPTION_VECTOR(228)
+MAKE_EXCEPTION_VECTOR(229)
+
+MAKE_EXCEPTION_VECTOR(230)
+MAKE_EXCEPTION_VECTOR(231)
+MAKE_EXCEPTION_VECTOR(232)
+MAKE_EXCEPTION_VECTOR(233)
+MAKE_EXCEPTION_VECTOR(234)
+MAKE_EXCEPTION_VECTOR(235)
+MAKE_EXCEPTION_VECTOR(236)
+MAKE_EXCEPTION_VECTOR(237)
+MAKE_EXCEPTION_VECTOR(238)
+MAKE_EXCEPTION_VECTOR(239)
+
+MAKE_EXCEPTION_VECTOR(240)
+MAKE_EXCEPTION_VECTOR(241)
+MAKE_EXCEPTION_VECTOR(242)
+MAKE_EXCEPTION_VECTOR(243)
+MAKE_EXCEPTION_VECTOR(244)
+MAKE_EXCEPTION_VECTOR(245)
+MAKE_EXCEPTION_VECTOR(246)
+MAKE_EXCEPTION_VECTOR(247)
+MAKE_EXCEPTION_VECTOR(248)
+MAKE_EXCEPTION_VECTOR(249)
+
+MAKE_EXCEPTION_VECTOR(250)
+MAKE_EXCEPTION_VECTOR(251)
+MAKE_EXCEPTION_VECTOR(252)
+MAKE_EXCEPTION_VECTOR(253)
+MAKE_EXCEPTION_VECTOR(254)
+MAKE_EXCEPTION_VECTOR(255)
+
+|
+| Start
+|
+| Entered from a hardware reset.
+|
+
+ .global start | Default entry point for GNU
+start:
+
+ |
+ | Copy initialized data area from ROM to RAM
+ |
+
+copy_data:
+ moveal #_etext,%a0 | find the end of .text
+ moveal #_copy_start,%a1 | find the beginning of .data
+ moveal #_edata,%a2 | find the end of .data
+
+copy_data_loop:
+
+ movel %a0@+,%a1@+ | copy the data
+ cmpal %a2,%a1
+ jlt copy_data_loop | loop until edata reached
+
+ |
+ | zero out uninitialized data area
+ |
+
+zerobss:
+ moveal #_clear_end,%a0 | find end of .bss
+ moveal #_clear_start,%a1 | find beginning of .bss
+ moveq #0,%d0
+
+zerobss_loop:
+
+ movel %d0,%a1@+ | to zero out uninitialized
+ cmpal %a0,%a1
+ jlt zerobss_loop | loop until _end reached
+
+ movel #_stack_init,%d0 | load stack top
+
+ movw #0x3700,%sr | SUPV MODE,INTERRUPTS OFF!!!
+ movel %d0,%a7 | set master stack pointer
+ movel %d0,%a6 | set base pointer
+
+ pea env | push environp
+ pea arg | push argv
+ movel #0,%a7@- | push argc
+ jsr boot_card
+ | if this returns, what do we do???
+
+ .global bsp_exitted
+bsp_exitted:
+ jmp bsp_exitted
+
+
+|
+| Initialised data
+|
+
+ .sect .data
+
+|
+| Uninitialised data
+|
+
+ .sect .bss
+
+env: .long 0
+arg: .long 0
+
+ .global environ
+ .align 2
+
+environ:
+ .long env
+
diff --git a/c/src/lib/libbsp/m68k/sim68000/startup/.cvsignore b/c/src/lib/libbsp/m68k/sim68000/startup/.cvsignore
new file mode 100644
index 0000000000..282522db03
--- /dev/null
+++ b/c/src/lib/libbsp/m68k/sim68000/startup/.cvsignore
@@ -0,0 +1,2 @@
+Makefile
+Makefile.in
diff --git a/c/src/lib/libbsp/m68k/sim68000/startup/Makefile.am b/c/src/lib/libbsp/m68k/sim68000/startup/Makefile.am
new file mode 100644
index 0000000000..7215533447
--- /dev/null
+++ b/c/src/lib/libbsp/m68k/sim68000/startup/Makefile.am
@@ -0,0 +1,40 @@
+##
+## $Id$
+##
+
+AUTOMAKE_OPTIONS = foreign 1.4
+
+VPATH = @srcdir@:@srcdir@/../../shared:@srcdir@/../../../shared
+
+PGM = $(ARCH)/startup.rel
+
+C_FILES = bspclean.c bsplibc.c bsppost.c bspstart.c bootcard.c \
+ m68kpretaskinghook.c main.c sbrk.c setvec.c gnatinstallhandler.c \
+ bspspuriousinit.c m68000spurious.c spurious_assistant.c
+C_O_FILES = $(C_FILES:%.c=$(ARCH)/%.o)
+
+OBJS = $(C_O_FILES)
+
+include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
+include $(top_srcdir)/../../../../../../automake/lib.am
+
+#
+# (OPTIONAL) Add local stuff here using +=
+#
+
+$(PGM): $(OBJS)
+ $(make-rel)
+
+$(PROJECT_RELEASE)/lib/linkcmds: linkcmds
+ $(INSTALL_DATA) $< $@
+
+# the .rel file built here will be put into libbsp.a by ../wrapup/Makefile
+TMPINSTALL_FILES += $(PROJECT_RELEASE)/lib/linkcmds
+
+all-local: $(ARCH) $(OBJS) $(PGM) $(TMPINSTALL_FILES)
+
+.PRECIOUS: $(PGM)
+
+EXTRA_DIST = bspclean.c bspstart.c exit.c linkcmds setvec.c
+
+include $(top_srcdir)/../../../../../../automake/local.am
diff --git a/c/src/lib/libbsp/m68k/sim68000/startup/bspstart.c b/c/src/lib/libbsp/m68k/sim68000/startup/bspstart.c
new file mode 100644
index 0000000000..60c417496c
--- /dev/null
+++ b/c/src/lib/libbsp/m68k/sim68000/startup/bspstart.c
@@ -0,0 +1,85 @@
+/*
+ * 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.OARcorp.com/rtems/license.html.
+ *
+ * $Id$
+ */
+
+#include <bsp.h>
+#include <rtems/libio.h>
+
+#include <libcsupport.h>
+
+#include <string.h>
+
+/*
+ * The original table from the application and our copy of it with
+ * some changes.
+ */
+
+extern rtems_configuration_table Configuration;
+
+rtems_configuration_table BSP_Configuration;
+
+rtems_cpu_table Cpu_table;
+
+char *rtems_progname;
+
+/*
+ * Use the shared implementations of the following routines
+ */
+
+void bsp_postdriver_hook(void);
+void bsp_libc_init( void *, unsigned32, int );
+void bsp_pretasking_hook(void); /* m68k version */
+
+void bsp_predriver_hook(void)
+{
+ void bsp_spurious_initialize();
+ bsp_spurious_initialize();
+}
+/*
+ * bsp_start
+ *
+ * This routine does the bulk of the system initialization.
+ */
+
+void bsp_start( void )
+{
+ unsigned8 dummy;
+ extern void * _WorkspaceBase;
+ extern void *_RamSize;
+ extern unsigned long _M68k_Ramsize;
+
+ _M68k_Ramsize = (unsigned long)&_RamSize; /* RAM size set in linker script */
+
+ /*
+ * Clear interrupt sources.
+ */
+
+ Cpu_table.pretasking_hook = bsp_pretasking_hook; /* init libc, etc. */
+ Cpu_table.predriver_hook = bsp_predriver_hook;
+ Cpu_table.postdriver_hook = bsp_postdriver_hook;
+
+/* XXX address shutdown
+ if ( BSP_Configuration.work_space_size >(128*1024) )
+ _sys_exit( 1 );
+*/
+
+ BSP_Configuration.work_space_start = (void *) &_WorkspaceBase;
+}
+
+#include <bspIo.h>
+
+int debug_putc( char c ) { write( 2, &c, 1 ); return 0; }
+BSP_output_char_function_type BSP_output_char = debug_putc;
+BSP_polling_getchar_function_type BSP_poll_char = NULL;
diff --git a/c/src/lib/libbsp/m68k/sim68000/startup/linkcmds b/c/src/lib/libbsp/m68k/sim68000/startup/linkcmds
new file mode 100644
index 0000000000..82f44ba523
--- /dev/null
+++ b/c/src/lib/libbsp/m68k/sim68000/startup/linkcmds
@@ -0,0 +1,129 @@
+/*
+ * $Id$
+ *
+ * MC68302 Linker command file
+ *
+ */
+
+/*
+ * Declare some sizes.
+ */
+_RomBase = DEFINED(_RomBase) ? _RomBase : 0x0;
+_RomSize = DEFINED(_RomSize) ? _RomSize : 256K;
+_RamBase = DEFINED(_RamBase) ? _RamBase : 0x40000;
+_RamSize = DEFINED(_RamSize) ? _RamSize : 128K;
+_HeapSize = DEFINED(_HeapSize) ? _HeapSize : 32K;
+_StackSize = DEFINED(_StackSize) ? _StackSize : 0x1000;
+
+/*
+ * Declare on-board memory.
+ */
+MEMORY {
+ eprom : ORIGIN = 0x00000000, LENGTH = 256K
+ ram : ORIGIN = 0x00040000, LENGTH = 128K
+}
+SECTIONS
+{
+ ram : {
+ . = .;
+ } >ram
+
+ /*
+ * Text, data and bss segments
+ */
+ .text 0x0 : {
+ *(.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)
+
+ /*
+ * 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 = .);
+ }
+ .data 0x40000 : AT (ADDR(.text) + SIZEOF (.text)) {
+ PROVIDE (_copy_start = .);
+ *(.data)
+ *(.gnu.linkonce.d*)
+ *(.gcc_except_table)
+ . = ALIGN (16);
+ PROVIDE (_edata = .);
+ PROVIDE (_copy_end = .);
+ }
+ .bss ADDR(.data) + SIZEOF(.data) : {
+ _clear_start = .;
+ *(.bss)
+ *(COMMON)
+ . = ALIGN (16);
+ PROVIDE (end = .);
+
+ . += _StackSize;
+ . = ALIGN (16);
+ _stack_init = .;
+ _clear_end = .;
+
+ _WorkspaceBase = .;
+ }
+}
+
+_VBR = 0xFFFFFFFF; /* indicates VBR table is in ROM */
+
diff --git a/c/src/lib/libbsp/m68k/sim68000/startup/spurious_assistant.c b/c/src/lib/libbsp/m68k/sim68000/startup/spurious_assistant.c
new file mode 100644
index 0000000000..eef49b7fa0
--- /dev/null
+++ b/c/src/lib/libbsp/m68k/sim68000/startup/spurious_assistant.c
@@ -0,0 +1,29 @@
+/*
+ * Spurious Trap Handler Assistant
+ *
+ * COPYRIGHT (c) 1989-2000.
+ * 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.OARcorp.com/rtems/license.html.
+ *
+ * $Id$
+ */
+
+#include <bsp.h>
+#include <bspIo.h>
+
+/*
+ * bsp_spurious_handler_assistant
+ *
+ * We can't recover so just return to gdb.
+ */
+
+void bsp_spurious_handler_assistant(
+ rtems_vector_number vector/* ,
+ CPU_Interrupt_frame *isf */
+)
+{
+ /* XXX do something here */
+}
diff --git a/c/src/lib/libbsp/m68k/sim68000/wrapup/.cvsignore b/c/src/lib/libbsp/m68k/sim68000/wrapup/.cvsignore
new file mode 100644
index 0000000000..282522db03
--- /dev/null
+++ b/c/src/lib/libbsp/m68k/sim68000/wrapup/.cvsignore
@@ -0,0 +1,2 @@
+Makefile
+Makefile.in
diff --git a/c/src/lib/libbsp/m68k/sim68000/wrapup/Makefile.am b/c/src/lib/libbsp/m68k/sim68000/wrapup/Makefile.am
new file mode 100644
index 0000000000..ae52204fdb
--- /dev/null
+++ b/c/src/lib/libbsp/m68k/sim68000/wrapup/Makefile.am
@@ -0,0 +1,33 @@
+##
+## $Id$
+##
+
+AUTOMAKE_OPTIONS = foreign 1.4
+
+BSP_FILES = startup clock console timer
+
+include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
+include $(top_srcdir)/../../../../../../automake/lib.am
+
+# bummer; have to use $foreach since % pattern subst rules only replace 1x
+OBJS = $(foreach piece, $(BSP_FILES), $(wildcard ../$(piece)/$(ARCH)/*.o)) \
+ $(wildcard ../../../../libcpu/$(RTEMS_CPU)/$(RTEMS_CPU_MODEL)/$(ARCH)/*.o) \
+ $(foreach piece, $(GENERIC_FILES), ../../../$(piece)/$(ARCH)/$(piece).rel)
+
+LIB = $(ARCH)/libbsp.a
+
+#
+# (OPTIONAL) Add local stuff here using +=
+#
+
+$(LIB): ${OBJS}
+ $(make-library)
+
+$(PROJECT_RELEASE)/lib/libbsp$(LIB_VARIANT).a: $(LIB)
+ $(INSTALL_DATA) $< $@
+
+TMPINSTALL_FILES += $(PROJECT_RELEASE)/lib/libbsp$(LIB_VARIANT).a
+
+all-local: ${ARCH} $(TMPINSTALL_FILES)
+
+include $(top_srcdir)/../../../../../../automake/local.am
diff --git a/make/custom/sim68000.cfg b/make/custom/sim68000.cfg
new file mode 100644
index 0000000000..12bac70be4
--- /dev/null
+++ b/make/custom/sim68000.cfg
@@ -0,0 +1,62 @@
+#
+# Config file for a BSVC m68k simulator
+#
+# $Id$
+#
+
+include $(RTEMS_ROOT)/make/custom/default.cfg
+
+RTEMS_CPU=m68k
+RTEMS_CPU_MODEL=m68000
+ifeq ($(RTEMS_BSVC_MODEL),sim68000)
+RTEMS_CPU_MODEL=m68000
+CPU_CFLAGS = -m68000
+else
+ifeq ($(RTEMS_BSVC_MODEL),simcpu32)
+RTEMS_CPU_MODEL=cpu32
+CPU_CFLAGS = -mcpu32
+else
+RTEMS_CPU_MODEL=$(RTEMS_CPU_MODEL)_is_not_known
+endif # sim68000
+endif # simcpu32
+
+# This is the actual bsp directory used during the build process.
+RTEMS_BSP_FAMILY=sim68000
+
+#
+# This contains the compiler options necessary to select the CPU model
+# and (hopefully) optimize for it.
+#
+CPU_DEFINES =
+
+# optimize flag: typically -0, could use -O4 or -fast
+# -O4 is ok for RTEMS
+CFLAGS_OPTIMIZE_V=-O4 -fomit-frame-pointer
+
+# debugging please
+CFLAGS_DEBUG_V =
+
+# This section makes the target dependent options file.
+define make-target-options
+ @echo "#undef $(RTEMS_BSVC_MODEL)" >>$@
+ @echo "#define $(RTEMS_BSVC_MODEL)" >>$@
+endef
+
+# The following are definitions of make-exe which will work using ld as
+# is currently required. It is expected that as of gcc 2.8, the end user
+# will be able to override parts of the compilers specs and link using gcc.
+
+ifeq ($(RTEMS_USE_GCC272),yes)
+define make-exe
+ @echo GCC 2.7.2 and older are not supported
+endef
+else
+define make-exe
+ $(LINK.c) $(AM_CFLAGS) $(AM_LDFLAGS) \
+ -o $(basename $@).nxe $(LINK_OBJS) $(LINK_LIBS)
+ $(OBJCOPY) -O ieee $(basename $@).nxe $(basename $@).exe
+ $(NM) -g -n $@ > $(basename $@).num
+ $(SIZE) $@
+endef
+endif
+# Miscellaneous additions go here
diff --git a/make/custom/simcpu32.cfg b/make/custom/simcpu32.cfg
new file mode 100644
index 0000000000..f439972eb1
--- /dev/null
+++ b/make/custom/simcpu32.cfg
@@ -0,0 +1,16 @@
+#
+# Configuration file for a simcpu32 in BSCV
+#
+# $Id$
+#
+
+#
+# All BSVC configurations share the same base file, only the cpu model
+# differs.
+#
+
+RTEMS_MVME162_MODEL=mvme162lx
+RTEMS_BSVC_MODEL=simcpu
+
+include $(RTEMS_ROOT)/make/custom/sim68000.cfg
+