summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/powerpc/eth_comm
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2004-11-23 22:20:44 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2004-11-23 22:20:44 +0000
commit279eb2c2e06a9803021d8fd752f0de575796f1ae (patch)
treebda5bb60ea9027918675ee9fbaa4a3bb7035215f /c/src/lib/libbsp/powerpc/eth_comm
parentAdd PR617 as fixed by conversion to new exceptions. (diff)
downloadrtems-279eb2c2e06a9803021d8fd752f0de575796f1ae.tar.bz2
2004-11-23 Joel Sherrill <joel@OARcorp.com>
* eth_comm/.cvsignore, eth_comm/ChangeLog, eth_comm/Makefile.am, eth_comm/README, eth_comm/bsp_specs, eth_comm/configure.ac, eth_comm/times, eth_comm/canbus/canbus.c, eth_comm/clock/p_clock.c, eth_comm/console/console.c, eth_comm/include/.cvsignore, eth_comm/include/8xx_immap.h, eth_comm/include/bsp.h, eth_comm/include/canbus.h, eth_comm/include/commproc.h, eth_comm/include/coverhd.h, eth_comm/include/info.h, eth_comm/include/tm27.h, eth_comm/irq/irq.c, eth_comm/irq/irq.h, eth_comm/irq/irq_asm.S, eth_comm/irq/irq_init.c, eth_comm/network/README, eth_comm/network/network.c, eth_comm/start/start.S, eth_comm/startup/bspstart.c, eth_comm/startup/cpuinit.c, eth_comm/startup/linkcmds, eth_comm/startup/mmutlbtab.c, eth_comm/vectors/vectors.S, eth_comm/vectors/vectors.h, eth_comm/vectors/vectors_init.c, eth_comm/wrapup/.cvsignore, eth_comm/wrapup/Makefile.am: Removed.
Diffstat (limited to 'c/src/lib/libbsp/powerpc/eth_comm')
-rw-r--r--c/src/lib/libbsp/powerpc/eth_comm/.cvsignore14
-rw-r--r--c/src/lib/libbsp/powerpc/eth_comm/ChangeLog505
-rw-r--r--c/src/lib/libbsp/powerpc/eth_comm/Makefile.am227
-rw-r--r--c/src/lib/libbsp/powerpc/eth_comm/README289
-rw-r--r--c/src/lib/libbsp/powerpc/eth_comm/bsp_specs15
-rw-r--r--c/src/lib/libbsp/powerpc/eth_comm/canbus/canbus.c468
-rw-r--r--c/src/lib/libbsp/powerpc/eth_comm/clock/p_clock.c70
-rw-r--r--c/src/lib/libbsp/powerpc/eth_comm/configure.ac46
-rw-r--r--c/src/lib/libbsp/powerpc/eth_comm/console/console.c239
-rw-r--r--c/src/lib/libbsp/powerpc/eth_comm/include/.cvsignore4
-rw-r--r--c/src/lib/libbsp/powerpc/eth_comm/include/8xx_immap.h455
-rw-r--r--c/src/lib/libbsp/powerpc/eth_comm/include/bsp.h107
-rw-r--r--c/src/lib/libbsp/powerpc/eth_comm/include/canbus.h170
-rw-r--r--c/src/lib/libbsp/powerpc/eth_comm/include/commproc.h529
-rw-r--r--c/src/lib/libbsp/powerpc/eth_comm/include/coverhd.h114
-rw-r--r--c/src/lib/libbsp/powerpc/eth_comm/include/info.h90
-rw-r--r--c/src/lib/libbsp/powerpc/eth_comm/include/tm27.h32
-rw-r--r--c/src/lib/libbsp/powerpc/eth_comm/irq/irq.c502
-rw-r--r--c/src/lib/libbsp/powerpc/eth_comm/irq/irq.h335
-rw-r--r--c/src/lib/libbsp/powerpc/eth_comm/irq/irq_asm.S351
-rw-r--r--c/src/lib/libbsp/powerpc/eth_comm/irq/irq_init.c160
-rw-r--r--c/src/lib/libbsp/powerpc/eth_comm/network/README294
-rw-r--r--c/src/lib/libbsp/powerpc/eth_comm/network/network.c1622
-rw-r--r--c/src/lib/libbsp/powerpc/eth_comm/start/start.S153
-rw-r--r--c/src/lib/libbsp/powerpc/eth_comm/startup/bspstart.c215
-rw-r--r--c/src/lib/libbsp/powerpc/eth_comm/startup/cpuinit.c44
-rw-r--r--c/src/lib/libbsp/powerpc/eth_comm/startup/linkcmds207
-rw-r--r--c/src/lib/libbsp/powerpc/eth_comm/startup/mmutlbtab.c45
-rw-r--r--c/src/lib/libbsp/powerpc/eth_comm/times195
-rw-r--r--c/src/lib/libbsp/powerpc/eth_comm/vectors/vectors.S139
-rw-r--r--c/src/lib/libbsp/powerpc/eth_comm/vectors/vectors.h143
-rw-r--r--c/src/lib/libbsp/powerpc/eth_comm/vectors/vectors_init.c136
-rw-r--r--c/src/lib/libbsp/powerpc/eth_comm/wrapup/.cvsignore2
-rw-r--r--c/src/lib/libbsp/powerpc/eth_comm/wrapup/Makefile.am35
34 files changed, 0 insertions, 7952 deletions
diff --git a/c/src/lib/libbsp/powerpc/eth_comm/.cvsignore b/c/src/lib/libbsp/powerpc/eth_comm/.cvsignore
deleted file mode 100644
index bfdfd995be..0000000000
--- a/c/src/lib/libbsp/powerpc/eth_comm/.cvsignore
+++ /dev/null
@@ -1,14 +0,0 @@
-aclocal.m4
-autom4te*.cache
-config.cache
-config.guess
-config.log
-config.status
-config.sub
-configure
-depcomp
-install-sh
-Makefile
-Makefile.in
-missing
-mkinstalldirs
diff --git a/c/src/lib/libbsp/powerpc/eth_comm/ChangeLog b/c/src/lib/libbsp/powerpc/eth_comm/ChangeLog
deleted file mode 100644
index 2445a8354f..0000000000
--- a/c/src/lib/libbsp/powerpc/eth_comm/ChangeLog
+++ /dev/null
@@ -1,505 +0,0 @@
-2004-09-24 Ralf Corsepius <ralf_corsepius@rtems.org>
-
- * configure.ac: Require automake > 1.9.
-
-2004-07-25 Joel Sherrill <joel@OARcorp.com>
-
- * network/network.c: Add include of <sys/errno.h>.
-
-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-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>
-
- * irq/irq_asm.S: Include <rtems/asm.h> instead of <asm.h>.
- * vectors/vectors.S: Include <rtems/asm.h> instead of <asm.h>.
- * include/bsp.h: Include <rtems/clockdrv.h> instead of <clockdrv.h>.
- * include/bsp.h: Include <rtems/console.h> instead of <console.h>.
-
-2004-03-31 Ralf Corsepius <ralf_corsepius@rtems.org>
-
- * include/bsp.h, include/canbus.h, include/info.h,
- network/network.c, startup/bspstart.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>
-
- * wrapup/Makefile.am: Convert to automake-building rules.
-
-2004-01-30 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-
- * Makefile.am: Merge-in canbus/Makefile.am, clock/Makefile.am,
- console/Makefile.am, irq/Makefile.am, network/Makefile.am,
- startup/Makefile.am, vectors/Makefile.am. Use automake compilation rules.
- * canbus/Makefile.am, clock/Makefile.am, console/Makefile.am,
- irq/Makefile.am, network/Makefile.am, startup/Makefile.am,
- vectors/Makefile.am: Remove.
- * configure.ac: Reflect changes above.
-
-2004-01-30 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-
- * Makefile.am: Merge-in start/Makefile.am.
- * start/Makefile.am: Remove.
- * configure.ac: Reflect changes above.
-
-2004-01-30 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-
- * wrapup/Makefile.am: Reflect changes to
- ../support/*exception_processing/*.
-
-2004-01-28 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-
- * configure.ac: Add nostdinc to AUTOMAKE_OPTIONS.
- Add RTEMS_PROG_CCAS.
-
-2004-01-21 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-
- * Makefile.am: Add PREINSTALL_DIRS.
- * irq/Makefile.am: Add PREINSTALL_DIRS.
- * vectors/Makefile.am: Add PREINSTALL_DIRS.
- * 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.
- * irq/Makefile.am: Ditto.
- * start/Makefile.am: Ditto.
- * startup/Makefile.am: Ditto.
- * vectors/Makefile.am: Ditto.
-
-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-22 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-
- * canbus/Makefile.am: Eliminate VPATH.
- * clock/Makefile.am: Eliminate VPATH.
- * console/Makefile.am: Eliminate VPATH.
- * irq/Makefile.am: Eliminate VPATH.
- * network/Makefile.am: Eliminate VPATH.
- * startup/Makefile.am: Eliminate VPATH.
-
-2003-12-19 Joel Sherrill <joel@OARcorp.com>
-
- PR 545/bsps
- * startup/setvec.c: Removed.
-
-2003-12-15 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-
- * startup/linkcmds: Remove SEARCH_DIR.
-
-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>
-
- * Makefile.am: Use mkdir_p. Remove dirs from PRE/TMPINSTALL_FILES.
- * irq/Makefile.am: Use mkdir_p. Remove dirs from PRE/TMPINSTALL_FILES.
- * start/Makefile.am: Use mkdir_p. Remove dirs from PRE/TMPINSTALL_FILES.
- * startup/Makefile.am: Use mkdir_p. Remove dirs from PRE/TMPINSTALL_FILES.
- * vectors/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-09 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.
- * canbus/Makefile.am: Cosmetics.
- * clock/Makefile.am: Cosmetics.
- * console/Makefile.am: Cosmetics.
- * irq/Makefile.am: Add preinstallation dirstamp support.
- * network/Makefile.am: Cosmetics.
- * startup/Makefile.am: Cosmetics.
- * vectors/Makefile.am: Add preinstallation dirstamp support.
- * wrapup/Makefile.am: Cosmetics.
-
-2003-12-02 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-
- * canbus/Makefile.am: Remove all-local: $(ARCH).
- * clock/Makefile.am: Remove all-local: $(ARCH).
- * console/Makefile.am: Remove all-local: $(ARCH).
- * irq/Makefile.am: Remove all-local: $(ARCH).
- * network/Makefile.am: Remove all-local: $(ARCH).
- * start/Makefile.am: Remove all-local: $(ARCH).
- * startup/Makefile.am: Remove all-local: $(ARCH).
- * vectors/Makefile.am: Remove all-local: $(ARCH).
- * wrapup/Makefile.am: Remove all-local: $(ARCH).
-
-2003-10-22 Joel Sherrill <joel@OARcorp.com>
-
- PR 510/bsps
- * irq/irq.h: Add extern C wrapper.
-
-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-04 Joel Sherrill <joel@OARcorp.com>
-
- * canbus/canbus.c, clock/p_clock.c, include/bsp.h, include/canbus.h,
- include/coverhd.h, irq/irq.c, irq/irq.h, irq/irq_asm.S,
- irq/irq_init.c, startup/bspstart.c, startup/mmutlbtab.c,
- startup/setvec.c, vectors/vectors.h, vectors/vectors_init.c: URL for
- license changed.
-
-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/.
- * canbus/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/.
- * irq/Makefile.am: Reflect having moved automake/.
- * network/Makefile.am: Reflect having moved automake/.
- * start/Makefile.am: Reflect having moved automake/.
- * startup/Makefile.am: Reflect having moved automake/.
- * vectors/Makefile.am: Reflect having moved automake/.
- * wrapup/Makefile.am: Reflect having moved automake/.
-
-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-07-18 Till Straumann <strauman@slac.stanford.edu>
-
- PR 288/rtems
- * irq/irq_asm.S, startup/bspstart.c: _ISR_Nest_level is now properly
- maintained.
-
-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 Joel Sherrill <joel@OARcorp.com>
-
- * startup/linkcmds*: Add FreeBSD sysctl() sections.
-
-2002-12-17 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-
- * canbus/Makefile.am: Don't include @RTEMS_BSP@.cfg.
- * clock/Makefile.am: Don't include @RTEMS_BSP@.cfg.
- * console/Makefile.am: Don't include @RTEMS_BSP@.cfg.
- * irq/Makefile.am: Don't include @RTEMS_BSP@.cfg.
- Remove SORDID_HACK. Eliminate *_O_FILES.
- * network/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.
- * vectors/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>
-
- * network/network.c: Removed warnings.
-
-2002-11-04 Joel Sherrill <joel@OARcorp.com>
-
- * network/network.c: Removed warnings.
-
-2002-11-01 Joel Sherrill <joel@OARcorp.com>
-
- * canbus/canbus.c, clock/p_clock.c, console/console.c,
- network/network.c, startup/bspstart.c: Removed warnings.
-
-2002-10-21 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-
- * .cvsignore: Reformat.
- Add autom4te*cache.
- Remove autom4te.cache.
-
-2002-08-21 Joel Sherrill <joel@OARcorp.com>
-
- * bsp_specs: Added support for -nostdlibs.
-
-2002-08-11 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-
- * canbus/Makefile.am: Use .$(OBJEXT) instead of .o.
- * clock/Makefile.am: Use .$(OBJEXT) instead of .o.
- * console/Makefile.am: Use .$(OBJEXT) instead of .o.
- * irq/Makefile.am: Use .$(OBJEXT) instead of .o.
- * network/Makefile.am: Use .$(OBJEXT) instead of .o.
- * start/Makefile.am: Use .$(OBJEXT) instead of .o.
- * startup/Makefile.am: Use .$(OBJEXT) instead of .o.
- * vectors/Makefile.am: Use .$(OBJEXT) instead of .o.
- * wrapup/Makefile.am: Use .$(OBJEXT) instead of .o.
-
-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-20 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-
- * startup/Makefile.am: Add bsplib_DATA = linkcmds.
-
-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-04-18 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-
- * irq/irq.c: Reflect changed to <rtems/score/cpu.h>.
- * irq/irq_asm.S: Ditto.
- * vectors/vectors.S: Ditto.
- * vectors/vectors_init.c: Include <rtems/bspIo.h>.
-
-2002-04-16 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-
- * irq/irq.c: Define loopCounter iff DISPATCH_HANDLER_STAT is set.
- * startup/bspstart.c: include <bsp/irq.h>, <libcpu/cpuIdent.h>,
- <rtems/bspIo.h>
-
-2002-04-06 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-
- * configure.ac: Add BSPOPTS_*(DISPATCH_HANDLER_STAT).
-
-2001-04-08 Joel Sherrill <joel@OARcorp.com>
-
- * startup/linkcmds: Per PR170, PR171, and PR172 add .eh_frame
-
-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]).
- * canbus/Makefile.am: Remove AUTOMAKE_OPTIONS.
- * Makefile.am: Remove AUTOMAKE_OPTIONS.
- * clock/Makefile.am: Remove AUTOMAKE_OPTIONS.
- * console/Makefile.am: Remove AUTOMAKE_OPTIONS.
- * include/Makefile.am: Remove AUTOMAKE_OPTIONS.
- * irq/Makefile.am: Remove AUTOMAKE_OPTIONS.
- * network/Makefile.am: Remove AUTOMAKE_OPTIONS.
- * start/Makefile.am: Remove AUTOMAKE_OPTIONS.
- * startup/Makefile.am: Remove AUTOMAKE_OPTIONS.
- * vectors/Makefile.am: Remove AUTOMAKE_OPTIONS.
- * wrapup/Makefile.am: Remove AUTOMAKE_OPTIONS.
-
-2002-01-03 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-
- * console/console.c: Include rtems/bspIo.h instead of bspIo.h.
-
-2001-12-04 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-
- * configure.ac: Remove RTEMS_ENABLE_NETWORKING.
-
-2001-12-04 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-
- * configure.ac: Remove RTEMS_ENABLE_NETWORKING.
-
-2001-11-30 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-
- * configure.ac: Introduce RTEMS_BSP_CONFIGURE.
-
-2001-11-15 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-
- * Makefile.am: Add @exceptions@ to SUBDIRS.
- * configure.ac: Add RTEMS_BSPOPTS_*(UARTS_IO_MODE),
- RTEMS_PPC_EXCEPTIONS([new]).
- * include/Makefile.am: Convert PREINSTALL_FILES to
- TMPINSTALL_FILES, include force-preinstall.am.
- * irq/Makefile.am: remove irq.h from EXTRA_DIST.
- * wrapup/Makefile.am: Apply @exceptions@.
-
-2001-10-29 Joel Sherrill <joel@OARcorp.com>
-
- * include/bsp.h: Modify Install_tm27_vector() so this BSP will link tm27.
- * startup/linkcmds: Fix definition of .init and .fini sections so this
- BSP will properly link with new __USE_INIT_FINI__ support.
-
-2001-10-25 Joel Sherrill <joel@OARcorp.com>
-
- * startup/linkcmds: Added _init and _fini.
-
-2001-10-23 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-
- * vectors/Makefile.am: Remove bogus VPATH.
-
-2001-10-12 Joel Sherrill <joel@OARcorp.com>
-
- * clock/p_clock.c: Fixed typo.
-
-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 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-
- * include/Makefile.am: Use 'PREINSTALL_FILES ='.
- * irq/Makefile.am: Use 'PREINSTALL_FILES ='.
- * vectors/Makefile.am: Use 'PREINSTALL_FILES ='.
-
-2001-08-31 Eric Valette <valette@crf.canon.fr>
-
- * network/network.c: Fix to account for return value when
- installing interrupts handler.
-
-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.
- * vectors/Makefile.am: Ditto.
- * include/bsp.h: Include bspopts.h.
-
-2001-05-10 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-
- * configure.in: Use RTEMS_PROG_CC_FOR_TARGET([-ansi -fasm]).
-
-2001-04-20 Eric Valette <valette@crf.canon.fr>
-
- * include/bsp.h: Added include of <bsp/vectors.h>
- * vectors/vectors.h: Corrected typos.
-
-2001-04-11 Eric Valette <valette@crf.canon.fr>
-
- * clock/.cvsignore, clock/Makefile.am, clock/p_clock.c,
- include/8xx_immap.h, include/commproc.h, irq/.cvsignore,
- irq/Makefile.am, irq/irq.c, irq/irq.h, irq/irq_asm.S,
- irq/irq_init.c, vectors/.cvsignore, vectors/Makefile.am,
- vectors/vectors.S, vectors/vectors.h,
- vectors/vectors_init.c: New file.
- * Switch the eth_comm BSP to use the "new exception processing model."
-
-2001-04-11 Eric Valette <valette@crf.canon.fr>
-
- * Makefile.am, configure.in, console/console.c,
- include/Makefile.am, include/bsp.h, network/network.c,
- startup/Makefile.am, startup/bspstart.c, startup/linkcmds,
- wrapup/Makefile.am: Switch the eth_comm BSP to use the
- "new exception processing model."
-
-2000-11-09 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-
- * Makefile.am: Use ... instead of RTEMS_TOPdir in ACLOCAL_AMFLAGS.
-
-2000-11-02 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-
- * Makefile.am: Switch to ACLOCAL_AMFLAGS = -I $(RTEMS_TOPdir)/aclocal.
-
-2000-11-01 Joel Sherrill <joel@OARcorp.com>
-
- * startup/bspstart.c: assoc.h, error.h, libio_.h, libio.h, and
- libcsupport.h moved from libc to lib/include/rtems and
- now must be referenced as <rtems/XXX.h>. Header file order
- was cleaned up while doing this.
- Also removed obsolete references to STACK_CHECKER_ON.
-
-2000-10-27 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-
- * Makefile.am: ACLOCAL_AMFLAGS= -I $(RTEMS_TOPdir)/macros.
- Switch to GNU canonicalization.
-
-2000-10-20 Joel Sherrill <joel@OARcorp.com>
-
- * console/console.c: Add mbx8xx_console_get_configuration() which
- returns either nvram configuration or a static equivalent.
-
-2000-09-29 Charles-Antoine Gauthier <charles.gauthier@nrc.ca>
-
- * startup/linkcmds: Added lines so DWARF debug information
- would be available. Otherwise gdb complains that the offsets
- for the debug info are incorrect and doesn't load the files.
-
-2000-09-04 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-
- * canbus/Makefile.am, console/Makefile.am, network/Makefile.am,
- start/Makefile.am, startup/Makefile.am, wrapup/Makefile.am: Include
- compile.am
-
-2000-08-10 Joel Sherrill <joel@OARcorp.com>
-
- * ChangeLog: New file.
diff --git a/c/src/lib/libbsp/powerpc/eth_comm/Makefile.am b/c/src/lib/libbsp/powerpc/eth_comm/Makefile.am
deleted file mode 100644
index 1bc252fca5..0000000000
--- a/c/src/lib/libbsp/powerpc/eth_comm/Makefile.am
+++ /dev/null
@@ -1,227 +0,0 @@
-##
-## $Id$
-##
-
-ACLOCAL_AMFLAGS = -I ../../../../aclocal
-
-# wrapup is the one that actually builds and installs the library
-# from the individual .rel files built in other directories
-SUBDIRS = . @exceptions@ wrapup
-
-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
-
-EXTRA_PROGRAMS =
-CLEANFILES =
-noinst_DATA =
-
-include_bspdir = $(includedir)/bsp
-
-include_HEADERS += include/coverhd.h include/canbus.h include/info.h
-include_bsp_HEADERS = include/commproc.h include/8xx_immap.h
-
-EXTRA_DIST = start/start.S
-start$(LIB_VARIANT).$(OBJEXT): start/start.S
- $(CPPASCOMPILE) -DASM -o $@ -c $<
-project_lib_DATA = start$(LIB_VARIANT).$(OBJEXT)
-
-dist_project_lib_DATA += startup/linkcmds
-
-EXTRA_PROGRAMS += startup.rel
-CLEANFILES += startup.rel
-startup_rel_SOURCES = startup/bspstart.c startup/cpuinit.c \
- startup/mmutlbtab.c ../../shared/bootcard.c ../../shared/bsplibc.c \
- ../../shared/bsppost.c ../../shared/main.c ../../shared/sbrk.c \
- ../../shared/bspclean.c ../../shared/gnatinstallhandler.c
-startup_rel_CPPFLAGS = $(AM_CPPFLAGS) $(CFLAGS_OPTIMIZE_V)
-startup_rel_LDFLAGS = $(RTEMS_RELLDFLAGS)
-
-EXTRA_PROGRAMS += startup_g.rel
-CLEANFILES += startup_g.rel
-startup_g_rel_SOURCES = $(startup_rel_SOURCES)
-startup_g_rel_CPPFLAGS = $(AM_CPPFLAGS) $(CFLAGS_DEBUG_V)
-startup_g_rel_LDFLAGS = $(RTEMS_RELLDFLAGS)
-
-noinst_DATA += startup$(LIB_VARIANT).rel
-
-EXTRA_PROGRAMS += canbus.rel
-CLEANFILES += canbus.rel
-canbus_rel_SOURCES = canbus/canbus.c
-canbus_rel_CPPFLAGS = $(AM_CPPFLAGS) $(CFLAGS_OPTIMIZE_V)
-canbus_rel_LDFLAGS = $(RTEMS_RELLDFLAGS)
-
-EXTRA_PROGRAMS += canbus_g.rel
-CLEANFILES += canbus_g.rel
-canbus_g_rel_SOURCES = $(canbus_rel_SOURCES)
-canbus_g_rel_CPPFLAGS = $(AM_CPPFLAGS) $(CFLAGS_DEBUG_V)
-canbus_g_rel_LDFLAGS = $(RTEMS_RELLDFLAGS)
-
-noinst_DATA += canbus$(LIB_VARIANT).rel
-
-EXTRA_PROGRAMS += console.rel
-CLEANFILES += console.rel
-console_rel_SOURCES = console/console.c
-console_rel_CPPFLAGS = $(AM_CPPFLAGS) $(CFLAGS_OPTIMIZE_V)
-console_rel_LDFLAGS = $(RTEMS_RELLDFLAGS)
-
-EXTRA_PROGRAMS += console_g.rel
-CLEANFILES += console_g.rel
-console_g_rel_SOURCES = $(console_rel_SOURCES)
-console_g_rel_CPPFLAGS = $(AM_CPPFLAGS) $(CFLAGS_DEBUG_V)
-console_g_rel_LDFLAGS = $(RTEMS_RELLDFLAGS)
-
-noinst_DATA += console$(LIB_VARIANT).rel
-
-EXTRA_PROGRAMS += pclock.rel
-CLEANFILES += pclock.rel
-pclock_rel_SOURCES = clock/p_clock.c
-pclock_rel_CPPFLAGS = $(AM_CPPFLAGS) $(CFLAGS_OPTIMIZE_V)
-pclock_rel_LDFLAGS = $(RTEMS_RELLDFLAGS)
-
-EXTRA_PROGRAMS += pclock_g.rel
-CLEANFILES += pclock_g.rel
-pclock_g_rel_SOURCES = $(pclock_rel_SOURCES)
-pclock_g_rel_CPPFLAGS = $(AM_CPPFLAGS) $(CFLAGS_DEBUG_V)
-pclock_g_rel_LDFLAGS = $(RTEMS_RELLDFLAGS)
-
-noinst_DATA += pclock$(LIB_VARIANT).rel
-
-include_bsp_HEADERS += irq/irq.h
-
-EXTRA_PROGRAMS += irq.rel
-CLEANFILES += irq.rel
-irq_rel_SOURCES = irq/irq.c irq/irq_init.c irq/irq_asm.S
-irq_rel_CPPFLAGS = $(AM_CPPFLAGS) $(CFLAGS_OPTIMIZE_V)
-irq_rel_LDFLAGS = $(RTEMS_RELLDFLAGS)
-
-EXTRA_PROGRAMS += irq_g.rel
-CLEANFILES += irq_g.rel
-irq_g_rel_SOURCES = $(irq_rel_SOURCES)
-irq_g_rel_CPPFLAGS = $(AM_CPPFLAGS) $(CFLAGS_DEBUG_V)
-irq_g_rel_LDFLAGS = $(RTEMS_RELLDFLAGS)
-
-noinst_DATA += irq$(LIB_VARIANT).rel
-
-include_bsp_HEADERS += vectors/vectors.h
-
-EXTRA_PROGRAMS += vectors.rel
-CLEANFILES += vectors.rel
-vectors_rel_SOURCES = vectors/vectors_init.c vectors/vectors.S \
- vectors/vectors.h
-vectors_rel_CPPFLAGS = $(AM_CPPFLAGS) $(CFLAGS_OPTIMIZE_V)
-vectors_rel_LDFLAGS = $(RTEMS_RELLDFLAGS)
-
-EXTRA_PROGRAMS += vectors_g.rel
-CLEANFILES += vectors_g.rel
-vectors_g_rel_SOURCES = $(vectors_rel_SOURCES)
-vectors_g_rel_CPPFLAGS = $(AM_CPPFLAGS) $(CFLAGS_DEBUG_V)
-vectors_g_rel_LDFLAGS = $(RTEMS_RELLDFLAGS)
-
-noinst_DATA += vectors$(LIB_VARIANT).rel
-
-if HAS_NETWORKING
-network_CPPFLAGS = -D__INSIDE_RTEMS_BSD_TCPIP_STACK__
-EXTRA_PROGRAMS += network.rel
-CLEANFILES += network.rel
-network_rel_SOURCES = network/network.c
-network_rel_CPPFLAGS = $(AM_CPPFLAGS) $(CFLAGS_OPTIMIZE_V) \
- $(network_CPPFLAGS)
-network_rel_LDFLAGS = $(RTEMS_RELLDFLAGS)
-
-EXTRA_PROGRAMS += network_g.rel
-CLEANFILES += network_g.rel
-network_g_rel_SOURCES = $(network_rel_SOURCES)
-network_g_rel_CPPFLAGS = $(AM_CPPFLAGS) $(CFLAGS_DEBUG_V) \
- $(network_CPPFLAGS)
-network_g_rel_LDFLAGS = $(RTEMS_RELLDFLAGS)
-
-noinst_DATA += network$(LIB_VARIANT).rel
-endif
-
-all-local: $(PREINSTALL_FILES) $(TMPINSTALL_FILES)
-
-EXTRA_DIST += times
-
-PREINSTALL_DIRS =
-PREINSTALL_FILES =
-TMPINSTALL_FILES =
-
-$(PROJECT_INCLUDE)/$(dirstamp):
- @$(mkdir_p) $(PROJECT_INCLUDE)
- @: > $(PROJECT_INCLUDE)/$(dirstamp)
-PREINSTALL_DIRS += $(PROJECT_INCLUDE)/$(dirstamp)
-
-$(PROJECT_LIB)/$(dirstamp):
- @$(mkdir_p) $(PROJECT_LIB)
- @: > $(PROJECT_LIB)/$(dirstamp)
-PREINSTALL_DIRS += $(PROJECT_LIB)/$(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)/bsp/$(dirstamp):
- @$(mkdir_p) $(PROJECT_INCLUDE)/bsp
- @: > $(PROJECT_INCLUDE)/bsp/$(dirstamp)
-PREINSTALL_DIRS += $(PROJECT_INCLUDE)/bsp/$(dirstamp)
-
-$(PROJECT_INCLUDE)/coverhd.h: include/coverhd.h $(PROJECT_INCLUDE)/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/coverhd.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/coverhd.h
-
-$(PROJECT_INCLUDE)/canbus.h: include/canbus.h $(PROJECT_INCLUDE)/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/canbus.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/canbus.h
-
-$(PROJECT_INCLUDE)/info.h: include/info.h $(PROJECT_INCLUDE)/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/info.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/info.h
-
-$(PROJECT_INCLUDE)/bsp/commproc.h: include/commproc.h $(PROJECT_INCLUDE)/bsp/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/commproc.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/commproc.h
-
-$(PROJECT_INCLUDE)/bsp/8xx_immap.h: include/8xx_immap.h $(PROJECT_INCLUDE)/bsp/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/8xx_immap.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/8xx_immap.h
-
-$(PROJECT_LIB)/start$(LIB_VARIANT).$(OBJEXT): start$(LIB_VARIANT).$(OBJEXT) $(PROJECT_LIB)/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_LIB)/start$(LIB_VARIANT).$(OBJEXT)
-TMPINSTALL_FILES += $(PROJECT_LIB)/start$(LIB_VARIANT).$(OBJEXT)
-
-$(PROJECT_LIB)/linkcmds: startup/linkcmds $(PROJECT_LIB)/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_LIB)/linkcmds
-PREINSTALL_FILES += $(PROJECT_LIB)/linkcmds
-
-$(PROJECT_INCLUDE)/bsp/irq.h: irq/irq.h $(PROJECT_INCLUDE)/bsp/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/irq.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/irq.h
-
-$(PROJECT_INCLUDE)/bsp/vectors.h: vectors/vectors.h $(PROJECT_INCLUDE)/bsp/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/vectors.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/vectors.h
-
-CLEANFILES += $(PREINSTALL_FILES)
-DISTCLEANFILES = $(PREINSTALL_DIRS)
-CLEANFILES += $(TMPINSTALL_FILES)
-
-include $(top_srcdir)/../../../../automake/subdirs.am
-include $(top_srcdir)/../../../../automake/local.am
diff --git a/c/src/lib/libbsp/powerpc/eth_comm/README b/c/src/lib/libbsp/powerpc/eth_comm/README
deleted file mode 100644
index 11059f1faf..0000000000
--- a/c/src/lib/libbsp/powerpc/eth_comm/README
+++ /dev/null
@@ -1,289 +0,0 @@
-#
-# $Id$
-#
-
-BSP NAME: eth_comm
-BOARD: Frasca International, Inc Ethernet Comm board
-BUS: N/A
-CPU FAMILY: ppc
-CPU: PowerPC MPC860/MPC860T
-COPROCESSORS: N/A
-MODE: 32 bit mode
-
-DEBUG MONITOR: None
-
-PERIPHERALS
-===========
-TIMERS: PIT
- RESOLUTION: 1 microsecond
-SERIAL PORTS: 4 SCCs (one is used for ethernet on MPC860, and unused
- on MPC860T), 2 SMC, 4 on external FPGA, 3 CANBUS
-REAL-TIME CLOCK:
-DMA: Each serial port
-VIDEO: none
-SCSI: none
-NETWORKING: Ethernet (10 Mbps) on SCC1 (MPC860)
- Fast ethernet (100/10 Mbps) on FEC (MPC860T)
-
-DRIVER INFORMATION
-==================
-CLOCK DRIVER: Periodic Interval Timer
-IOSUPP DRIVER: SCC1, SCC2, SCC3, SCC4, SMC1, SMC2
-SHMSUPP: none
-TIMER DRIVER: Timebase register (lower 32 bits only)
-
-STDIO
-=====
-PORT: SCC2
-ELECTRICAL: RS-232
-BAUD: 9600
-BITS PER CHARACTER: 8
-PARITY: None
-STOP BITS: 1
-
-NOTES
-=====
-On-chip resources:
- SCC1 network or console
- SCC2 console
- SCC3 console
- SCC4 console
- CLK1 network
- CLK2 network
- CLK3
- CLK4
- CLK5
- CLK6
- CLK7
- CLK8
- BRG1 console
- BRG2 console
- BRG3 console
- BRG4 console
- RTC
- PIT clock
- TB timer
- DEC
- SWT
- *CS0 FLASH
- *CS1 DRAM bank 1
- *CS2 CAN0
- *CS3 CAN1
- *CS4 CAN2
- *CS5 MB1
- *CS6 ARINC
- *CS7 DRAM bank 0
- UPMA
- UPMB
- IRQ0 Voltage supervisor
- IRQ1 ARINC-429
- IRQ2 CAN2
- IRQ3 CAN0
- IRQ4 CAN1
- IRQ5
- IRQ6 Multibus I
- IRQ7
- IRQ_LVL0 clock - PIT
- IRQ_LVL1 CPM
- IRQ_LVL2 FEC
- IRQ_LVL3
- IRQ_LVL4
- IRQ_LVL5
- IRQ_LVL6
- IRQ_LVL7
-Board description
------------------
-Clock rate: 40 - 66 MHz, depending on CPU
-Bus width: 16 bit Flash, 32 bit DRAM
-FLASH: 128K - 1024K, 120ns
-RAM: 2 - 32M DRAM SIMM, autodetects size and speed
-
-Verification
--------------------------------
-Single processor tests: Passed
-Multi-processort tests: not applicable
-Timing tests:
- Context Switch
-
- context switch: self 9
- context switch: to another task 10
- context switch: no floating point contexts 23
- fp context switch: restore 1st FP task 24
- fp context switch: save initialized, restore initialized 11
- fp context switch: save idle, restore initialized 11
- fp context switch: save idle, restore idle 23
-
- Task Manager
-
- rtems_task_create 83
- rtems_task_ident 84
- rtems_task_start 30
- rtems_task_restart: calling task 48
- rtems_task_restart: suspended task -- returns to caller 36
- rtems_task_restart: blocked task -- returns to caller 47
- rtems_task_restart: ready task -- returns to caller 35
- rtems_task_restart: suspended task -- preempts caller 56
- rtems_task_restart: blocked task -- preempts caller 116
- rtems_task_restart: ready task -- preempts caller 93
- rtems_task_delete: calling task 102
- rtems_task_delete: suspended task 74
- rtems_task_delete: blocked task 76
- rtems_task_delete: ready task 80
- rtems_task_suspend: calling task 37
- rtems_task_suspend: returns to caller 14
- rtems_task_resume: task readied -- returns to caller 16
- rtems_task_resume: task readied -- preempts caller 30
- rtems_task_set_priority: obtain current priority 12
- rtems_task_set_priority: returns to caller 23
- rtems_task_set_priority: preempts caller 52
- rtems_task_mode: obtain current mode 5
- rtems_task_mode: no reschedule 6
- rtems_task_mode: reschedule -- returns to caller 15
- rtems_task_mode: reschedule -- preempts caller 43
- rtems_task_get_note 13
- rtems_task_set_note 12
- rtems_task_wake_after: yield -- returns to caller 8
- rtems_task_wake_after: yields -- preempts caller 30
- rtems_task_wake_when: 49
-
- Interrupt Manager
-
- interrupt entry overhead: returns to nested interrupt 7
- interrupt entry overhead: returns to interrupted task 31
- interrupt entry overhead: returns to preempting task 14
- interrupt exit overhead: returns to nested interrupt 10
- interrupt exit overhead: returns to interrupted task 8
- interrupt exit overhead: returns to preempting task 45
-
- Clock Manager
-
- rtems_clock_set 28
- rtems_clock_get 0
- rtems_clock_tick 36
-
- Timer Manager
-
- rtems_timer_create 11
- rtems_timer_ident 82
- rtems_timer_delete: inactive 14
- rtems_timer_delete: active 16
- rtems_timer_fire_after: inactive 20
- rtems_timer_fire_after: active 22
- rtems_timer_fire_when: inactive 24
- rtems_timer_fire_when: active 24
- rtems_timer_reset: inactive 18
- rtems_timer_reset: active 21
- rtems_timer_cancel: inactive 11
- rtems_timer_cancel: active 12
-
- Semaphore Manager
-
- rtems_semaphore_create 56
- rtems_semaphore_ident 94
- rtems_semaphore_delete 34
- rtems_semaphore_obtain: available 13
- rtems_semaphore_obtain: not available -- NO_WAIT 13
- rtems_semaphore_obtain: not available -- caller blocks 48
- rtems_semaphore_release: no waiting tasks 16
- rtems_semaphore_release: task readied -- returns to caller 36
- rtems_semaphore_release: task readied -- preempts caller 36
-
- Message Queue Manager
-
- rtems_message_queue_create 110
- rtems_message_queue_ident 82
- rtems_message_queue_delete 43
- rtems_message_queue_send: no waiting tasks 28
- rtems_message_queue_send: task readied -- returns to caller 31
- rtems_message_queue_send: task readied -- preempts caller 46
- rtems_message_queue_urgent: no waiting tasks 28
- rtems_message_queue_urgent: task readied -- returns to caller 31
- rtems_message_queue_urgent: task readied -- preempts caller 46
- rtems_message_queue_broadcast: no waiting tasks 22
- rtems_message_queue_broadcast: task readied -- returns to caller 81
- rtems_message_queue_broadcast: task readied -- preempts caller 75
- rtems_message_queue_receive: available 26
- rtems_message_queue_receive: not available -- NO_WAIT 15
- rtems_message_queue_receive: not available -- caller blocks 48
- rtems_message_queue_flush: no messages flushed 14
- rtems_message_queue_flush: messages flushed 14
-
- Event Manager
-
- rtems_event_send: no task readied 12
- rtems_event_send: task readied -- returns to caller 38
- rtems_event_send: task readied -- preempts caller 21
- rtems_event_receive: obtain current events 1
- rtems_event_receive: available 19
- rtems_event_receive: not available -- NO_WAIT 11
- rtems_event_receive: not available -- caller blocks 36
-
- Signal Manager
-
- rtems_signal_catch: 31
- rtems_signal_send: returns to caller 21
- rtems_signal_send: signal to self 39
- exit ASR overhead: returns to calling task 30
- exit ASR overhead: returns to preempting task 33
-
- Partition Manager
-
- rtems_partition_create 59
- rtems_partition_ident 82
- rtems_partition_delete 20
- rtems_partition_get_buffer: available 19
- rtems_partition_get_buffer: not available 13
- rtems_partition_return_buffer 20
-
- Region Manager
-
- rtems_region_create 37
- rtems_region_ident 84
- rtems_region_delete 20
- rtems_region_get_segment: available 19
- rtems_region_get_segment: not available -- NO_WAIT 23
- rtems_region_get_segment: not available -- caller blocks 75
- rtems_region_return_segment: no waiting tasks 21
- rtems_region_return_segment: task readied -- returns to caller 55
- rtems_region_return_segment: task readied -- preempts caller 82
-
- Dual-Ported Memory Manager
-
- rtems_port_create 23
- rtems_port_ident 82
- rtems_port_delete 21
- rtems_port_internal_to_external 10
- rtems_port_external_to_internal 11
-
- IO Manager
-
- rtems_io_initialize 1
- rtems_io_open 1
- rtems_io_close 1
- rtems_io_read 1
- rtems_io_write 1
- rtems_io_control 1
-
- Rate Monotonic Manager
-
- rtems_rate_monotonic_create 43
- rtems_rate_monotonic_ident 82
- rtems_rate_monotonic_cancel 23
- rtems_rate_monotonic_delete: active 28
- rtems_rate_monotonic_delete: inactive 25
- rtems_rate_monotonic_period: obtain status 17
- rtems_rate_monotonic_period: initiate period -- returns to caller 32
- rtems_rate_monotonic_period: conclude periods -- caller blocks 30
-
-Network tests:
- TCP throughput (as measured by ttcp):
- Receive: 1324 kbytes/sec
- Transmit: 1037 kbytes/sec
-
-
-
-
-
-
-
-
diff --git a/c/src/lib/libbsp/powerpc/eth_comm/bsp_specs b/c/src/lib/libbsp/powerpc/eth_comm/bsp_specs
deleted file mode 100644
index 6d5918d876..0000000000
--- a/c/src/lib/libbsp/powerpc/eth_comm/bsp_specs
+++ /dev/null
@@ -1,15 +0,0 @@
-%rename endfile old_endfile
-%rename startfile old_startfile
-%rename link old_link
-
-*startfile:
-%{!qrtems: %(old_startfile)} %{!nostdlib: %{qrtems: ecrti%O%s \
-%{!qrtems_debug: start.o%s} \
-%{qrtems_debug: start_g.o%s}}}
-
-*endfile:
-%{!qrtems: %(old_endfile)} %{qrtems: ecrtn%O%s}
-
-*link:
-%{!qrtems: %(old_link)} %{qrtems: -dc -dp -u __vectors -N -u start -e start}
-
diff --git a/c/src/lib/libbsp/powerpc/eth_comm/canbus/canbus.c b/c/src/lib/libbsp/powerpc/eth_comm/canbus/canbus.c
deleted file mode 100644
index c985209e0b..0000000000
--- a/c/src/lib/libbsp/powerpc/eth_comm/canbus/canbus.c
+++ /dev/null
@@ -1,468 +0,0 @@
-/*
- * RTEMS CANBUS driver for eth-comm BSP
- *
- * Written by Jay Monkman (jmonkman@frasca.com)
- *
- * COPYRIGHT (c) 1998
- * Frasca International, Inc.
- *
- * 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.
- *
- * Note: All of this code assumes a 10Mhz clock input to the 82527
- *
- * $Id$
- */
-#include <stdio.h>
-#include <bsp.h>
-#include <rtems/error.h>
-#include <canbus.h>
-/* How many CAN interfaces are there? */
-#define NUM_CAN_DEVS 3
-
-/* How many received messages should be buffered for each channel */
-#define RX_CAN_BUF_SIZE 16
-
-int rxMsgBufHead[NUM_CAN_DEVS];
-int rxMsgBufTail[NUM_CAN_DEVS];
-i82527_msg_t rxMsgBuf[NUM_CAN_DEVS][RX_CAN_BUF_SIZE];
-
-volatile i82527_t *candev[NUM_CAN_DEVS];
-
-static rtems_isr
-canInterruptHandler (rtems_vector_number v)
-{
- int dev;
- int tmpTail;
-
- switch (v) {
- case PPC_IRQ_IRQ3: dev = 0; break;
- case PPC_IRQ_IRQ4: dev = 1; break;
- case PPC_IRQ_IRQ2: dev = 2; break;
- default: return; /* something screwed up */
- }
-
- /* we only do rx interrupts right now */
- if (!(candev[dev]->msg15.ctrl1 & I82527_MSG_CTRL_NEWDAT)) {
- /* Hmmm, that's odd. Why were we triggered? */
- candev[dev]->msg15.ctrl0 = 0xff & (I82527_MSG_CTRL_INTPND_CLR |
- I82527_MSG_CTRL_MSGVAL_SET);
- candev[dev]->msg15.ctrl1 = 0xff & (I82527_MSG_CTRL_RMTPND_CLR |
- I82527_MSG_CTRL_MSGLST_CLR |
- I82527_MSG_CTRL_NEWDAT_CLR);
- return;
- }
- tmpTail = rxMsgBufTail[dev];
- while (1) {
- if ((tmpTail == rxMsgBufHead[dev]) &&
- (rxMsgBuf[dev][tmpTail].ctrl1 & I82527_MSG_CTRL_NEWDAT)) {
- break; /* Buf is full */
- }
-
- if (!(rxMsgBuf[dev][tmpTail].ctrl1 & I82527_MSG_CTRL_NEWDAT)) {
- int pkt_len;
- int i;
-
- rxMsgBuf[dev][tmpTail].ctrl0 = candev[dev]->msg15.ctrl0;
- rxMsgBuf[dev][tmpTail].ctrl1 = candev[dev]->msg15.ctrl1;
- rxMsgBuf[dev][tmpTail].arb = candev[dev]->msg15.arb;
- rxMsgBuf[dev][tmpTail].cfg = candev[dev]->msg15.cfg;
-
- pkt_len = (rxMsgBuf[dev][tmpTail].cfg >> 4) & 0xf;
- for (i=0; i<pkt_len; i++) {
- rxMsgBuf[dev][tmpTail].data[i] = candev[dev]->msg15.data[i];
- }
-
- tmpTail++;
- if (tmpTail == RX_CAN_BUF_SIZE) {
- tmpTail = 0;
- }
-
- rxMsgBufTail[dev] = tmpTail;
-
- break;
- }
-
- tmpTail++;
- if (tmpTail == RX_CAN_BUF_SIZE) {
- tmpTail = 0;
- }
- if (tmpTail == rxMsgBufTail[dev]) {
- break;
- }
- }
-
- candev[dev]->msg15.ctrl0 = 0xff & (I82527_MSG_CTRL_MSGVAL_SET |
- I82527_MSG_CTRL_INTPND_CLR);
- candev[dev]->msg15.ctrl1 = 0xff & (I82527_MSG_CTRL_NEWDAT_CLR |
- I82527_MSG_CTRL_RMTPND_CLR);
- candev[dev]->status = 0x0;
-}
-
-rtems_device_driver canbus_initialize(
- rtems_device_major_number major,
- rtems_device_minor_number minor,
- void *arg
-)
-{
- int i,j;
-#if 0
- char dev_str[16]; /* This allows us to have a device name up to */
- /* 15 chars long. If we only use names like */
- /* /dev/can0 (9 chars) we will be fine up to */
- /* /dev/can9999999 */
-#endif
- rtems_status_code status;
- rtems_isr_entry old_handler;
-
-#if (NUM_CAN_DEVS > 0)
- candev[0]=&canbus0;
- rtems_interrupt_catch (canInterruptHandler,
- PPC_IRQ_IRQ3,
- &old_handler);
-
-#if (NUM_CAN_DEVS > 1)
- candev[1]=&canbus1;
- rtems_interrupt_catch (canInterruptHandler,
- PPC_IRQ_IRQ4,
- &old_handler);
-
-#if (NUM_CAN_DEVS > 2)
- candev[2]=&canbus2;
- rtems_interrupt_catch (canInterruptHandler,
- PPC_IRQ_IRQ2,
- &old_handler);
-
- /* Right now, we only support 3 CAN interfaces */
-#else
-#error NUM_CAN_DEVS is too big. Fix it, damnit!
-#endif /* NUM_CAN_DEVS > 2 */
-#endif /* NUM_CAN_DEVS > 1 */
-#else
-#error NUM_CAN_DEVS is 0. It needs to be at least 1
-#endif /* NUM_CAN_DEVS > 0 */
-
- for (i=0; i < NUM_CAN_DEVS; i++) {
-
- /* clear rx buffers */
- rxMsgBufHead[i] = 0;
- rxMsgBufTail[i] = 0;
- for (j=0; j < RX_CAN_BUF_SIZE; j++) {
- rxMsgBuf[i][j].ctrl0 = 0x55; /* all flags are cleared */
- rxMsgBuf[i][j].ctrl1 = 0x55; /* all flags are cleared */
- }
-
- candev[i]->ctrl = I82527_CTRL_CCE | /* Enable cfg reg writes */
- I82527_CTRL_INIT; /* Disable external xfers */
-
- candev[i]->cir = I82527_CIR_DMC; /* Divide memory clock by 2 */
-
- /* We want 250 kbps so assuming an input clock rate of 10 MHz:
- * DSC = 0 => SCLK = 10 MHz, tSCLK = 100ns
- * BRP = 1 => tq = 200ns
- * tSYNC_SEG = 1 tq
- * tSEG1 = TSEG1+1 = 14+1 = 15
- * tSEG2 = TSEG2+1 = 3+1 = 4
- *
- * bittime = tSYNC_SEG + tSEG1 + tSEG2
- * = 1 + 15 + 4 = 20
- * baudrate = 1/(bittime * tq) = 1/(20 * 200ns) = 1/(4000ns) = 250 kbps
- */
- candev[i]->btr0 = 0xc1; /* Baud rate prescaler=0, Sync jump width=3 */
-
- candev[i]->btr1 = I82527_BTR1_SPL | /* go for noise immunity */
- (0x3 << 4) | /* TSEG2 = 3 */
- (0xe); /* TSEG1 = 14 */
-
- candev[i]->gms = 0xffff; /* addresses must match exactly */
- candev[i]->gml = 0xffffffff; /* addresses must match exactly */
-
- candev[i]->mlm = 0x0; /* all addresses accepted */
-
- candev[i]->p2conf = 0xff; /* make all outputs */
-
- candev[i]->msg1.cfg = I82527_MSG_CFG_DIR ; /* dir is xmit */
- candev[i]->msg1.ctrl0 = I82527_MSG_CTRL_MSGVAL_CLR |/* this msg invalid */
- I82527_MSG_CTRL_TXIE_CLR |/* no tx interrupts */
- I82527_MSG_CTRL_RXIE_CLR |/* no rx interrupts */
- I82527_MSG_CTRL_INTPND_CLR;
-
- candev[i]->msg2.cfg = I82527_MSG_CFG_DIR ; /* dir is xmit */
- candev[i]->msg2.ctrl0 = I82527_MSG_CTRL_MSGVAL_CLR |/* this msg invalid */
- I82527_MSG_CTRL_TXIE_CLR |/* no tx interrupts */
- I82527_MSG_CTRL_RXIE_CLR |/* no rx interrupts */
- I82527_MSG_CTRL_INTPND_CLR;
-
- candev[i]->msg3.cfg = I82527_MSG_CFG_DIR ; /* dir is xmit */
- candev[i]->msg3.ctrl0 = I82527_MSG_CTRL_MSGVAL_CLR |/* this msg invalid */
- I82527_MSG_CTRL_TXIE_CLR |/* no tx interrupts */
- I82527_MSG_CTRL_RXIE_CLR |/* no rx interrupts */
- I82527_MSG_CTRL_INTPND_CLR;
-
- candev[i]->msg4.cfg = I82527_MSG_CFG_DIR ; /* dir is xmit */
- candev[i]->msg4.ctrl0 = I82527_MSG_CTRL_MSGVAL_CLR |/* this msg invalid */
- I82527_MSG_CTRL_TXIE_CLR |/* no tx interrupts */
- I82527_MSG_CTRL_RXIE_CLR | /* no rx interrupts */
- I82527_MSG_CTRL_INTPND_CLR;
-
- candev[i]->msg5.cfg = I82527_MSG_CFG_DIR ; /* dir is xmit */
- candev[i]->msg5.ctrl0 = I82527_MSG_CTRL_MSGVAL_CLR |/* this msg invalid */
- I82527_MSG_CTRL_TXIE_CLR |/* no tx interrupts */
- I82527_MSG_CTRL_RXIE_CLR |/* no rx interrupts */
- I82527_MSG_CTRL_INTPND_CLR;
-
- candev[i]->msg6.cfg = I82527_MSG_CFG_DIR ; /* dir is xmit */
- candev[i]->msg6.ctrl0 = I82527_MSG_CTRL_MSGVAL_CLR |/* this msg invalid */
- I82527_MSG_CTRL_TXIE_CLR |/* no tx interrupts */
- I82527_MSG_CTRL_RXIE_CLR |/* no rx interrupts */
- I82527_MSG_CTRL_INTPND_CLR;
-
- candev[i]->msg7.cfg = I82527_MSG_CFG_DIR ; /* dir is xmit */
- candev[i]->msg7.ctrl0 = I82527_MSG_CTRL_MSGVAL_CLR |/* this msg invalid */
- I82527_MSG_CTRL_TXIE_CLR |/* no tx interrupts */
- I82527_MSG_CTRL_RXIE_CLR |/* no rx interrupts */
- I82527_MSG_CTRL_INTPND_CLR;
-
- candev[i]->msg8.cfg = I82527_MSG_CFG_DIR ; /* dir is xmit */
- candev[i]->msg8.ctrl0 = I82527_MSG_CTRL_MSGVAL_CLR |/* this msg invalid */
- I82527_MSG_CTRL_TXIE_CLR |/* no tx interrupts */
- I82527_MSG_CTRL_RXIE_CLR |/* no rx interrupts */
- I82527_MSG_CTRL_INTPND_CLR;
-
- candev[i]->msg9.cfg = I82527_MSG_CFG_DIR ; /* dir is xmit */
- candev[i]->msg9.ctrl0 = I82527_MSG_CTRL_MSGVAL_CLR |/* this msg invalid */
- I82527_MSG_CTRL_TXIE_CLR |/* no tx interrupts */
- I82527_MSG_CTRL_RXIE_CLR |/* no rx interrupts */
- I82527_MSG_CTRL_INTPND_CLR;
-
- candev[i]->msg10.cfg = I82527_MSG_CFG_DIR ; /* dir is xmit */
- candev[i]->msg10.ctrl0 = I82527_MSG_CTRL_MSGVAL_CLR |/* this msg invalid */
- I82527_MSG_CTRL_TXIE_CLR |/* no tx interrupts */
- I82527_MSG_CTRL_RXIE_CLR | /* no rx interrupts */
- I82527_MSG_CTRL_INTPND_CLR;
-
- candev[i]->msg11.cfg = I82527_MSG_CFG_DIR ; /* dir is xmit */
- candev[i]->msg11.ctrl0 = I82527_MSG_CTRL_MSGVAL_CLR |/* this msg invalid */
- I82527_MSG_CTRL_TXIE_CLR |/* no tx interrupts */
- I82527_MSG_CTRL_RXIE_CLR |/* no rx interrupts */
- I82527_MSG_CTRL_INTPND_CLR;
-
- candev[i]->msg12.cfg = I82527_MSG_CFG_DIR ; /* dir is xmit */
- candev[i]->msg12.ctrl0 = I82527_MSG_CTRL_MSGVAL_CLR |/* this msg invalid */
- I82527_MSG_CTRL_TXIE_CLR |/* no tx interrupts */
- I82527_MSG_CTRL_RXIE_CLR |/* no rx interrupts */
- I82527_MSG_CTRL_INTPND_CLR;
-
- candev[i]->msg13.cfg = I82527_MSG_CFG_DIR ; /* dir is xmit */
- candev[i]->msg13.ctrl0 = I82527_MSG_CTRL_MSGVAL_CLR |/* this msg invalid */
- I82527_MSG_CTRL_TXIE_CLR |/* no tx interrupts */
- I82527_MSG_CTRL_RXIE_CLR |/* no rx interrupts */
- I82527_MSG_CTRL_INTPND_CLR;
-
- candev[i]->msg14.cfg = I82527_MSG_CFG_DIR ; /* dir is xmit */
- candev[i]->msg14.ctrl0 = I82527_MSG_CTRL_MSGVAL_CLR |/* this msg invalid */
- I82527_MSG_CTRL_TXIE_CLR |/* no tx interrupts */
- I82527_MSG_CTRL_RXIE_CLR |/* no rx interrupts */
- I82527_MSG_CTRL_INTPND_CLR;
-
- candev[i]->msg15.cfg = 0 ; /* dir is rcv */
- candev[i]->msg15.ctrl0 = I82527_MSG_CTRL_MSGVAL_CLR |/* this msg invalid */
- I82527_MSG_CTRL_TXIE_CLR |/* no tx interrupts */
- I82527_MSG_CTRL_RXIE_CLR |/* no rx interrupts */
- I82527_MSG_CTRL_INTPND_CLR;
- candev[i]->msg15.ctrl1 = I82527_MSG_CTRL_RMTPND_CLR |
- I82527_MSG_CTRL_TXRQ_CLR |
- I82527_MSG_CTRL_MSGLST_CLR |
- I82527_MSG_CTRL_NEWDAT_CLR;
-
- }
-
- if ((status=rtems_io_register_name ("/dev/can0", major, 0)) !=
- RTEMS_SUCCESSFUL) {
- rtems_fatal_error_occurred (status);
- }
- if ((status=rtems_io_register_name ("/dev/can1", major, 1)) !=
- RTEMS_SUCCESSFUL) {
- rtems_fatal_error_occurred (status);
- }
- if ((status=rtems_io_register_name ("/dev/can2", major, 2)) !=
- RTEMS_SUCCESSFUL) {
- rtems_fatal_error_occurred (status);
- }
- return RTEMS_SUCCESSFUL;
-}
-
-rtems_device_driver canbus_open(
- rtems_device_major_number major,
- rtems_device_minor_number minor,
- void * arg
-)
-{
- /* msg is in use, rx interrupts are enabled */
- candev[minor]->msg15.ctrl0 = 0xff & (I82527_MSG_CTRL_MSGVAL_SET |
- I82527_MSG_CTRL_RXIE_SET);
-
- candev[minor]->ctrl |= I82527_CTRL_IE;
- candev[minor]->ctrl &= ~(I82527_CTRL_CCE | I82527_CTRL_INIT);
- switch (minor) {
- case 0: m8xx.simask |= M8xx_SIMASK_IRM3; break;
- case 1: m8xx.simask |= M8xx_SIMASK_IRM4; break;
- case 2: m8xx.simask |= M8xx_SIMASK_IRM2; break;
- default: return 0xffffffff;
- }
-
- return RTEMS_SUCCESSFUL;
-}
-
-rtems_device_driver canbus_close(
- rtems_device_major_number major,
- rtems_device_minor_number minor,
- void * arg
-)
-{
- /* msg is not in use, rx & txinterrupts are disbled */
- candev[minor]->msg15.ctrl0 = 0xff & (I82527_MSG_CTRL_MSGVAL_CLR |
- I82527_MSG_CTRL_RXIE_CLR |
- I82527_MSG_CTRL_TXIE_CLR);
-
- /* Take transceiver off the bus, enable cfg. reg. writes */
- candev[minor]->ctrl |= (I82527_CTRL_CCE | I82527_CTRL_INIT);
-
- return RTEMS_SUCCESSFUL;
-}
-
-rtems_device_driver canbus_read(
- rtems_device_major_number major,
- rtems_device_minor_number minor,
- void * arg
-)
-{
- i82527_msg_t *msg;
- int i;
- int tmpHead;
-
- msg = arg;
- tmpHead = rxMsgBufHead[minor];
-
- while (1){
- if ((tmpHead == rxMsgBufTail[minor]) &&
- !(rxMsgBuf[minor][tmpHead].ctrl1 & I82527_MSG_CTRL_NEWDAT)) {
- break;
- }
- if (rxMsgBuf[minor][tmpHead].ctrl1 & I82527_MSG_CTRL_NEWDAT) {
- int pkt_len;
- msg->ctrl0 = rxMsgBuf[minor][tmpHead].ctrl0;
- msg->ctrl1 = rxMsgBuf[minor][tmpHead].ctrl1;
- msg->arb = rxMsgBuf[minor][tmpHead].arb;
- msg->cfg = rxMsgBuf[minor][tmpHead].cfg;
-
- pkt_len = (msg->cfg >> 4) & 0xf;
- for (i=0; i<pkt_len; i++) {
- msg->data[i] = rxMsgBuf[minor][tmpHead].data[i];
- }
- rxMsgBuf[minor][tmpHead].ctrl1 = 0xff & I82527_MSG_CTRL_NEWDAT_CLR;
-
- tmpHead++;
- if (tmpHead == RX_CAN_BUF_SIZE) {
- tmpHead = 0;
- }
- rxMsgBufHead[minor] = tmpHead;
-
- return RTEMS_SUCCESSFUL;
-
- }
-
- tmpHead++;
- if (tmpHead == RX_CAN_BUF_SIZE) {
- tmpHead = 0;
- }
- if (tmpHead == rxMsgBufHead[minor]) {
- break;
- }
- }
-
- return RTEMS_UNSATISFIED;
-
-}
-
-rtems_device_driver canbus_write(
- rtems_device_major_number major,
- rtems_device_minor_number minor,
- void * arg
-)
-{
- i82527_msg_t *msg;
- int i;
-
- msg = arg;
- while(candev[minor]->msg1.ctrl1 & I82527_MSG_CTRL_TXRQ){
- continue;
- }
- candev[minor]->msg1.ctrl1 = 0xff & I82527_MSG_CTRL_CPUUPD_SET;
-
- candev[minor]->msg1.cfg = msg->cfg;
- candev[minor]->msg1.arb = msg->arb;
-
- for (i=0; i < ((msg->cfg >> 4) & 0xff); i++) {
- candev[minor]->msg1.data[i] = msg->data[i];
- }
-
- candev[minor]->msg1.ctrl0 = 0xff & (I82527_MSG_CTRL_INTPND_CLR |
- I82527_MSG_CTRL_MSGVAL_SET |
- I82527_MSG_CTRL_TXIE_CLR);
- candev[minor]->msg1.cfg |= I82527_MSG_CFG_DIR;
- candev[minor]->msg1.ctrl1 = 0xff & (I82527_MSG_CTRL_NEWDAT_SET |
- I82527_MSG_CTRL_CPUUPD_CLR |
- I82527_MSG_CTRL_TXRQ_SET);
-
- return RTEMS_SUCCESSFUL;
-}
-rtems_device_driver canbus_control(
- rtems_device_major_number major,
- rtems_device_minor_number minor,
- void * arg
-)
-{
- return RTEMS_SUCCESSFUL;
-}
-
-/* part of old canbus_read */
-#if 0
- for (i=0; i < RX_CAN_BUF_SIZE) {
- if (rxMsgBuf[minor][i].ctrl1 & I82527_MSG_CTRL_NEWDAT)
- break;
- }
-
- if (i < RX_CAN_BUF_SIZE) {
- int pkt_len;
- int j;
- msg.arb = rxMsgBuf[minor][i].arb;
- msg.cfg = rxMsgBuf[minor][i].cfg;
-
- pkt_len = (msg.cfg >> 4) & 0xf;
-
- for (j=0; j < pkt_len; j++)
- msg.data[j] = rxMsgBuf[minor][i].data[j];
-
- /* wait until there is a msg */
- while (!(candev->msg15.ctrl1 & I82527_MSG_CTRL_NEWDAT))
- continue;
-
- msg->ctrl1 = candev->msg15.ctrl1;
- msg->cfg = candev->msg15.cfg;
- msg->arb = candev->msg15.arb;
-
- for (i=0; i < ((candev->msg15.cfg >> 4) & 0xff); i++) {
- msg->data[i] = candev->msg15.data[i];
- }
-
- candev->msg15.ctrl0 = 0xff & (I82527_MSG_CTRL_MSGVAL_SET |
- I82527_MSG_CTRL_INTPND_CLR);
- candev->msg15.ctrl1 = 0xff & (I82527_MSG_CTRL_NEWDAT_CLR |
- I82527_MSG_CTRL_RMTPND_CLR);
-
- candev->status = 0x0;
-
- return RTEMS_SUCCESSFUL;
-#endif
diff --git a/c/src/lib/libbsp/powerpc/eth_comm/clock/p_clock.c b/c/src/lib/libbsp/powerpc/eth_comm/clock/p_clock.c
deleted file mode 100644
index b4bf7ca93e..0000000000
--- a/c/src/lib/libbsp/powerpc/eth_comm/clock/p_clock.c
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * 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.
- *
- * Modified to support the MPC750.
- * Modifications Copyright (c) 1999 Eric Valette valette@crf.canon.fr
- *
- * $Id$
- */
-
-#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();
-
-static rtems_irq_connect_data clockIrqData = {BSP_PERIODIC_TIMER,
- (rtems_irq_hdl)Clock_isr,
- (rtems_irq_enable)clockOn,
- (rtems_irq_disable)clockOff,
- (rtems_irq_is_enabled)clockIsOn};
-
-int BSP_get_clock_irq_level()
-{
- /*
- * Caution : if you change this, you must change the
- * definition of BSP_PERIODIC_TIMER accordingly
- */
- return 6;
-}
-
-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 = BSP_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);
-}
diff --git a/c/src/lib/libbsp/powerpc/eth_comm/configure.ac b/c/src/lib/libbsp/powerpc/eth_comm/configure.ac
deleted file mode 100644
index e36d273a34..0000000000
--- a/c/src/lib/libbsp/powerpc/eth_comm/configure.ac
+++ /dev/null
@@ -1,46 +0,0 @@
-## Process this file with autoconf to produce a configure script.
-##
-## $Id$
-
-AC_PREREQ(2.59)
-AC_INIT([rtems-c-src-lib-libbsp-powerpc-eth_comm],[_RTEMS_VERSION],[rtems-bugs@rtems.com])
-AC_CONFIG_SRCDIR([bsp_specs])
-RTEMS_TOP(../../../../../..)
-
-RTEMS_CANONICAL_TARGET_CPU
-AM_INIT_AUTOMAKE([no-define nostdinc foreign 1.9])
-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")
-
-# FIXME: Explanation cloned from mbx8xx
-RTEMS_BSPOPTS_SET([UARTS_IO_MODE],[*],[0])
-RTEMS_BSPOPTS_HELP([UARTS_IO_MODE],
-[(BSP--console driver)
- Define to 0 or 1 if you want polled I/O performed by RTEMS.
- Define to 1 if you want interrupt-driven performed by RTEMS.
- Define to 2 if you want polled I/O performed by EPPCBug.
- There is no provision to have a mix of interrupt-driven and polled I/O
- ports, except that the printk port may use a different mode from the
- other ports. If this is done, do not open the printk port from an RTEMS
- application. With EPPCBug 1.1, if mode 2 is selected, CONSOLE_MINOR
- must be set to SMC1_MINOR. This is a deficiency of the firmware: it
- does not perform serial I/O on any port other than its default debug
- port, which must be SMC1.])
-
-RTEMS_BSPOPTS_SET([DISPATCH_HANDLER_STAT],[*],[])
-RTEMS_BSPOPTS_HELP([DISPATCH_HANDLER_STAT],
-[used by irq/irq.c])
-
-# Explicitly list all Makefiles here
-AC_CONFIG_FILES([Makefile
-wrapup/Makefile])
-
-RTEMS_PPC_EXCEPTIONS([new])
-
-AC_OUTPUT
diff --git a/c/src/lib/libbsp/powerpc/eth_comm/console/console.c b/c/src/lib/libbsp/powerpc/eth_comm/console/console.c
deleted file mode 100644
index d9d98c5a91..0000000000
--- a/c/src/lib/libbsp/powerpc/eth_comm/console/console.c
+++ /dev/null
@@ -1,239 +0,0 @@
-#define I_WANT_TERMIOS
-/*
- * BSP specific Serial I/O Functions for the eth-comm BSP
- *
- * This file contains the BSP specific functions for
- * performing serial I/O. These are the functions
- * RTEMS uses (the 6 listed in the device driver
- * structure)
- *
- * The SCCs and SMCs are assigned as follows
- *
- * Channel Device Minor Termios
- * SMC1 /dev/tty0 0 no
- * SMC2 /dev/tty1 1 no
- * SCC1 ethernet
- * SCC2 /dev/console 3 yes
- * SCC3 /dev/tty3 4 no
- * SCC4 /dev/tty4 5 no
- *
- * FIXME: This should use termios for /dev/console, but it doesn't
- * appear to work correctly yet. On startup, with termios enabled,
- * the board hangs for a few seconds before running correctly
- *
- * Author: Jay Monkman (jmonkman@frasca.com)
- * Copyright (C) 1998 by Frasca International, Inc.
- *
- * $Id$
- */
-
-#include <bsp.h> /* Must be before libio.h */
-#include <rtems/libio.h>
-#include <termios.h>
-#include <rtems/bspIo.h>
-
-extern void rtems_panic(char *,int);
-
-static void _BSP_null_char( char c ) {return;}
-BSP_output_char_function_type BSP_output_char = _BSP_null_char;
-
-rtems_device_driver console_initialize(rtems_device_major_number major,
- rtems_device_minor_number minor,
- void *arg)
-{
- rtems_status_code status;
-
-#ifdef I_WANT_TERMIOS
- /*
- * Set up TERMIOS (for /dev/console)
- */
- rtems_termios_initialize();
-#endif
-
- /*
- * Do common initialization.
- */
- m8xx_uart_initialize();
-
- /*
- * Do device-specific initialization
- */
- m8xx_uart_smc_initialize(SMC1_MINOR); /* /dev/tty0 */
- m8xx_uart_smc_initialize(SMC2_MINOR); /* /dev/tty1 */
- m8xx_uart_scc_initialize(SCC2_MINOR); /* /dev/tty2 */
- m8xx_uart_scc_initialize(SCC3_MINOR); /* /dev/tty3 */
- m8xx_uart_scc_initialize(SCC4_MINOR); /* /dev/tty4 */
-
- /*
- * Register the devices
- */
- status = rtems_io_register_name ("/dev/console", major, SCC2_MINOR);
- if (status != RTEMS_SUCCESSFUL)
- rtems_fatal_error_occurred (status);
- status = rtems_io_register_name ("/dev/tty0", major, SMC1_MINOR);
- if (status != RTEMS_SUCCESSFUL)
- rtems_fatal_error_occurred (status);
- status = rtems_io_register_name ("/dev/tty1", major, SMC2_MINOR);
- if (status != RTEMS_SUCCESSFUL)
- rtems_fatal_error_occurred (status);
- status = rtems_io_register_name ("/dev/tty3", major, SCC3_MINOR);
- if (status != RTEMS_SUCCESSFUL)
- rtems_fatal_error_occurred (status);
- status = rtems_io_register_name ("/dev/tty4", major, SCC4_MINOR);
- if (status != RTEMS_SUCCESSFUL)
- rtems_fatal_error_occurred (status);
- return RTEMS_SUCCESSFUL;
-}
-
-rtems_device_driver console_open(rtems_device_major_number major,
- rtems_device_minor_number minor,
- void *arg)
-{
- volatile m8xxSCCRegisters_t *sccregs;
-
-#ifdef I_WANT_TERMIOS
- static const rtems_termios_callbacks sccPollCallbacks = {
- NULL, /* firstOpen */
- NULL, /* lastClose */
- m8xx_uart_pollRead, /* pollRead */
- m8xx_uart_pollWrite, /* write */
- m8xx_uart_setAttributes, /* setAttributes */
- NULL, /* stopRemoteTx */
- NULL, /* startRemoteTx */
- 0 /* outputUsesInterrupts */
- };
-#endif /* I_WANT_TERMIOS */
-
- sccregs = 0;
-
- switch (minor) {
- case 0:
- m8xx.smc1.smcm = 1; /* Enable SMC1 RX interrupts */
- break;
- case 1:
- m8xx.smc2.smcm = 1; /* Enable SMC2 RX interrupts */
- break;
- case 2:
- sccregs = &m8xx.scc1;
- break;
- case 3:
- sccregs = &m8xx.scc2;
- break;
- case 4:
- sccregs = &m8xx.scc3;
- break;
- case 5:
- sccregs = &m8xx.scc4;
- break;
- default:
- rtems_panic ("CONSOLE: bad minor number", 0);
- }
-
- if (sccregs)
- sccregs->sccm=0x3;
-
-#ifdef I_WANT_TERMIOS
- if (minor == SCC2_MINOR) {
- return rtems_termios_open (major, minor, arg, &sccPollCallbacks);
- }
- else {
- return RTEMS_SUCCESSFUL;
- }
-#else
- return RTEMS_SUCCESSFUL;
-#endif
-}
-
-rtems_device_driver console_close(rtems_device_major_number major,
- rtems_device_minor_number minor,
- void *arg)
-{
-#ifdef I_WANT_TERMIOS
- if (minor == SCC2_MINOR) {
- return rtems_termios_close (arg);
- }
- else {
- return RTEMS_SUCCESSFUL;
- }
-#else
- return RTEMS_SUCCESSFUL;
-#endif
-}
-
-rtems_device_driver console_read(rtems_device_major_number major,
- rtems_device_minor_number minor,
- void *arg)
-{
-#ifdef I_WANT_TERMIOS
- /*
- if (minor == SCC2_MINOR) {
- */
- return rtems_termios_read(arg);
- /*
- }
- else {
- return m8xx_console_read(major, minor, arg);
- }
- */
-#else
- return m8xx_console_read(major, minor, arg);
-#endif
-}
-
-rtems_device_driver console_write(rtems_device_major_number major,
- rtems_device_minor_number minor,
- void *arg)
-{
-#ifdef I_WANT_TERMIOS
- /*
- if (minor == SCC2_MINOR) {
- */
- return rtems_termios_write(arg);
- /*
- }
- else {
- return m8xx_console_write(major, minor, arg);
- }
- */
-#else
- return m8xx_console_write(major, minor, arg);
-#endif
-}
-
-/*
- * Handle ioctl request.
- * Should set hardware line speed, bits/char, etc.
- */
-rtems_device_driver console_control(rtems_device_major_number major,
- rtems_device_minor_number minor,
- void *arg)
-{
-#ifdef I_WANT_TERMIOS
- if (minor == SCC2_MINOR) {
- return rtems_termios_ioctl (arg);
- }
- else {
- return RTEMS_SUCCESSFUL;
- }
-#else
- return RTEMS_SUCCESSFUL;
-#endif
-}
-
-/*
- * Support routine for console-generic
- */
-
-int mbx8xx_console_get_configuration(void)
-{
-#if NVRAM_CONFIGURE == 1
- return nvram->console_mode;
-#else
-#if UARTS_IO_MODE == 1
- return 0x02;
-#else
- return 0;
-#endif
-#endif
-
-}
diff --git a/c/src/lib/libbsp/powerpc/eth_comm/include/.cvsignore b/c/src/lib/libbsp/powerpc/eth_comm/include/.cvsignore
deleted file mode 100644
index 5f1077556d..0000000000
--- a/c/src/lib/libbsp/powerpc/eth_comm/include/.cvsignore
+++ /dev/null
@@ -1,4 +0,0 @@
-bspopts.h
-bspopts.h.in
-stamp-h
-stamp-h.in
diff --git a/c/src/lib/libbsp/powerpc/eth_comm/include/8xx_immap.h b/c/src/lib/libbsp/powerpc/eth_comm/include/8xx_immap.h
deleted file mode 100644
index 3e9f981b31..0000000000
--- a/c/src/lib/libbsp/powerpc/eth_comm/include/8xx_immap.h
+++ /dev/null
@@ -1,455 +0,0 @@
-
-/*
- * MPC8xx Internal Memory Map
- * Copyright (c) 1997 Dan Malek (dmalek@jlc.net)
- *
- * The I/O on the MPC860 is comprised of blocks of special registers
- * and the dual port ram for the Communication Processor Module.
- * Within this space are functional units such as the SIU, memory
- * controller, system timers, and other control functions. It is
- * a combination that I found difficult to separate into logical
- * functional files.....but anyone else is welcome to try. -- Dan
- */
-#ifndef __IMMAP_8XX__
-#define __IMMAP_8XX__
-
-/* System configuration registers.
-*/
-typedef struct sys_conf {
- unsigned int sc_siumcr;
- unsigned int sc_sypcr;
- unsigned int sc_swt;
- char res1[2];
- unsigned short sc_swsr;
- unsigned int sc_sipend;
- unsigned int sc_simask;
- unsigned int sc_siel;
- unsigned int sc_sivec;
- unsigned int sc_tesr;
- char res2[0xc];
- unsigned int sc_sdcr;
- char res3[0x4c];
-} sysconf8xx_t;
-
-/* PCMCIA configuration registers.
-*/
-typedef struct pcmcia_conf {
- unsigned int pcmc_pbr0;
- unsigned int pcmc_por0;
- unsigned int pcmc_pbr1;
- unsigned int pcmc_por1;
- unsigned int pcmc_pbr2;
- unsigned int pcmc_por2;
- unsigned int pcmc_pbr3;
- unsigned int pcmc_por3;
- unsigned int pcmc_pbr4;
- unsigned int pcmc_por4;
- unsigned int pcmc_pbr5;
- unsigned int pcmc_por5;
- unsigned int pcmc_pbr6;
- unsigned int pcmc_por6;
- unsigned int pcmc_pbr7;
- unsigned int pcmc_por7;
- char res1[0x20];
- unsigned int pcmc_pgcra;
- unsigned int pcmc_pgcrb;
- unsigned int pcmc_pscr;
- char res2[4];
- unsigned int pcmc_pipr;
- char res3[4];
- unsigned int pcmc_per;
- char res4[4];
-} pcmconf8xx_t;
-
-/* Memory controller registers.
-*/
-typedef struct mem_ctlr {
- unsigned int memc_br0;
- unsigned int memc_or0;
- unsigned int memc_br1;
- unsigned int memc_or1;
- unsigned int memc_br2;
- unsigned int memc_or2;
- unsigned int memc_br3;
- unsigned int memc_or3;
- unsigned int memc_br4;
- unsigned int memc_or4;
- unsigned int memc_br5;
- unsigned int memc_or5;
- unsigned int memc_br6;
- unsigned int memc_or6;
- unsigned int memc_br7;
- unsigned int memc_or7;
- char res1[0x24];
- unsigned int memc_mar;
- unsigned int memc_mcr;
- char res2[4];
- unsigned int memc_mamr;
- unsigned int memc_mbmr;
- unsigned short memc_mstat;
- unsigned short memc_mptpr;
- unsigned int memc_mdr;
- char res3[0x80];
-} memctl8xx_t;
-
-/* System Integration Timers.
-*/
-typedef struct sys_int_timers {
- unsigned short sit_tbscr;
- unsigned int sit_tbreff0;
- unsigned int sit_tbreff1;
- char res1[0x14];
- unsigned short sit_rtcsc;
- unsigned int sit_rtc;
- unsigned int sit_rtsec;
- unsigned int sit_rtcal;
- char res2[0x10];
- unsigned short sit_piscr;
- char res3[2];
- unsigned int sit_pitc;
- unsigned int sit_pitr;
- char res4[0x34];
-} sit8xx_t;
-
-#define TBSCR_TBIRQ_MASK ((unsigned short)0xff00)
-#define TBSCR_REFA ((unsigned short)0x0080)
-#define TBSCR_REFB ((unsigned short)0x0040)
-#define TBSCR_REFAE ((unsigned short)0x0008)
-#define TBSCR_REFBE ((unsigned short)0x0004)
-#define TBSCR_TBF ((unsigned short)0x0002)
-#define TBSCR_TBE ((unsigned short)0x0001)
-
-#define RTCSC_RTCIRQ_MASK ((unsigned short)0xff00)
-#define RTCSC_SEC ((unsigned short)0x0080)
-#define RTCSC_ALR ((unsigned short)0x0040)
-#define RTCSC_38K ((unsigned short)0x0010)
-#define RTCSC_SIE ((unsigned short)0x0008)
-#define RTCSC_ALE ((unsigned short)0x0004)
-#define RTCSC_RTF ((unsigned short)0x0002)
-#define RTCSC_RTE ((unsigned short)0x0001)
-
-#define PISCR_PIRQ_MASK ((unsigned short)0xff00)
-#define PISCR_PS ((unsigned short)0x0080)
-#define PISCR_PIE ((unsigned short)0x0004)
-#define PISCR_PTF ((unsigned short)0x0002)
-#define PISCR_PTE ((unsigned short)0x0001)
-
-/* Clocks and Reset.
-*/
-typedef struct clk_and_reset {
- unsigned int car_sccr;
- unsigned int car_plprcr;
- unsigned int car_rsr;
- char res[0x74]; /* Reserved area */
-} car8xx_t;
-
-/* System Integration Timers keys.
-*/
-typedef struct sitk {
- unsigned int sitk_tbscrk;
- unsigned int sitk_tbreff0k;
- unsigned int sitk_tbreff1k;
- unsigned int sitk_tbk;
- char res1[0x10];
- unsigned int sitk_rtcsck;
- unsigned int sitk_rtck;
- unsigned int sitk_rtseck;
- unsigned int sitk_rtcalk;
- char res2[0x10];
- unsigned int sitk_piscrk;
- unsigned int sitk_pitck;
- char res3[0x38];
-} sitk8xx_t;
-
-/* Clocks and reset keys.
-*/
-typedef struct cark {
- unsigned int cark_sccrk;
- unsigned int cark_plprcrk;
- unsigned int cark_rsrk;
- char res[0x474];
-} cark8xx_t;
-
-/* The key to unlock registers maintained by keep-alive power.
-*/
-#define KAPWR_KEY ((unsigned int)0x55ccaa33)
-
-/* LCD interface. MPC821 Only.
-*/
-typedef struct lcd {
- unsigned short lcd_lcolr[16];
- char res[0x20];
- unsigned int lcd_lccr;
- unsigned int lcd_lchcr;
- unsigned int lcd_lcvcr;
- char res2[4];
- unsigned int lcd_lcfaa;
- unsigned int lcd_lcfba;
- char lcd_lcsr;
- char res3[0x7];
-} lcd8xx_t;
-
-/* I2C
-*/
-typedef struct i2c {
- unsigned char i2c_i2mod;
- char res1[3];
- unsigned char i2c_i2add;
- char res2[3];
- unsigned char i2c_i2brg;
- char res3[3];
- unsigned char i2c_i2com;
- char res4[3];
- unsigned char i2c_i2cer;
- char res5[3];
- unsigned char i2c_i2cmr;
- char res6[0x8b];
-} i2c8xx_t;
-
-/* DMA control/status registers.
-*/
-typedef struct sdma_csr {
- char res1[4];
- unsigned int sdma_sdar;
- unsigned char sdma_sdsr;
- char res3[3];
- unsigned char sdma_sdmr;
- char res4[3];
- unsigned char sdma_idsr1;
- char res5[3];
- unsigned char sdma_idmr1;
- char res6[3];
- unsigned char sdma_idsr2;
- char res7[3];
- unsigned char sdma_idmr2;
- char res8[0x13];
-} sdma8xx_t;
-
-/* Communication Processor Module Interrupt Controller.
-*/
-typedef struct cpm_ic {
- unsigned short cpic_civr;
- char res[0xe];
- unsigned int cpic_cicr;
- unsigned int cpic_cipr;
- unsigned int cpic_cimr;
- unsigned int cpic_cisr;
-} cpic8xx_t;
-
-/* Input/Output Port control/status registers.
-*/
-typedef struct io_port {
- unsigned short iop_padir;
- unsigned short iop_papar;
- unsigned short iop_paodr;
- unsigned short iop_padat;
- char res1[8];
- unsigned short iop_pcdir;
- unsigned short iop_pcpar;
- unsigned short iop_pcso;
- unsigned short iop_pcdat;
- unsigned short iop_pcint;
- char res2[6];
- unsigned short iop_pddir;
- unsigned short iop_pdpar;
- char res3[2];
- unsigned short iop_pddat;
- char res4[8];
-} iop8xx_t;
-
-/* Communication Processor Module Timers
-*/
-typedef struct cpm_timers {
- unsigned short cpmt_tgcr;
- char res1[0xe];
- unsigned short cpmt_tmr1;
- unsigned short cpmt_tmr2;
- unsigned short cpmt_trr1;
- unsigned short cpmt_trr2;
- unsigned short cpmt_tcr1;
- unsigned short cpmt_tcr2;
- unsigned short cpmt_tcn1;
- unsigned short cpmt_tcn2;
- unsigned short cpmt_tmr3;
- unsigned short cpmt_tmr4;
- unsigned short cpmt_trr3;
- unsigned short cpmt_trr4;
- unsigned short cpmt_tcr3;
- unsigned short cpmt_tcr4;
- unsigned short cpmt_tcn3;
- unsigned short cpmt_tcn4;
- unsigned short cpmt_ter1;
- unsigned short cpmt_ter2;
- unsigned short cpmt_ter3;
- unsigned short cpmt_ter4;
- char res2[8];
-} cpmtimer8xx_t;
-
-/* Finally, the Communication Processor stuff.....
-*/
-typedef struct scc { /* Serial communication channels */
- unsigned int scc_gsmrl;
- unsigned int scc_gsmrh;
- unsigned short scc_pmsr;
- char res1[2];
- unsigned short scc_todr;
- unsigned short scc_dsr;
- unsigned short scc_scce;
- char res2[2];
- unsigned short scc_sccm;
- char res3;
- unsigned char scc_sccs;
- char res4[8];
-} scc_t;
-
-typedef struct smc { /* Serial management channels */
- char res1[2];
- unsigned short smc_smcmr;
- char res2[2];
- unsigned char smc_smce;
- char res3[3];
- unsigned char smc_smcm;
- char res4[5];
-} smc_t;
-
-/* MPC860T Fast Ethernet Controller. It isn't part of the CPM, but
- * it fits within the address space.
- */
-typedef struct fec {
- unsigned int fec_addr_low; /* LS 32 bits of station address */
- unsigned short fec_addr_high; /* MS 16 bits of address */
- unsigned short res1;
- unsigned int fec_hash_table_high;
- unsigned int fec_hash_table_low;
- unsigned int fec_r_des_start;
- unsigned int fec_x_des_start;
- unsigned int fec_r_buff_size;
- unsigned int res2[9];
- unsigned int fec_ecntrl;
- unsigned int fec_ievent;
- unsigned int fec_imask;
- unsigned int fec_ivec;
- unsigned int fec_r_des_active;
- unsigned int fec_x_des_active;
- unsigned int res3[10];
- unsigned int fec_mii_data;
- unsigned int fec_mii_speed;
- unsigned int res4[17];
- unsigned int fec_r_bound;
- unsigned int fec_r_fstart;
- unsigned int res5[6];
- unsigned int fec_x_fstart;
- unsigned int res6[17];
- unsigned int fec_fun_code;
- unsigned int res7[3];
- unsigned int fec_r_cntrl;
- unsigned int fec_r_hash;
- unsigned int res8[14];
- unsigned int fec_x_cntrl;
- unsigned int res9[0x1e];
-} fec_t;
-
-typedef struct comm_proc {
- /* General control and status registers.
- */
- unsigned short cp_cpcr;
- char res1[2];
- unsigned short cp_rccr;
- char res2[6];
- unsigned short cp_cpmcr1;
- unsigned short cp_cpmcr2;
- unsigned short cp_cpmcr3;
- unsigned short cp_cpmcr4;
- char res3[2];
- unsigned short cp_rter;
- char res4[2];
- unsigned short cp_rtmr;
- char res5[0x14];
-
- /* Baud rate generators.
- */
- unsigned int cp_brgc1;
- unsigned int cp_brgc2;
- unsigned int cp_brgc3;
- unsigned int cp_brgc4;
-
- /* Serial Communication Channels.
- */
- scc_t cp_scc[4];
-
- /* Serial Management Channels.
- */
- smc_t cp_smc[2];
-
- /* Serial Peripheral Interface.
- */
- unsigned short cp_spmode;
- char res6[4];
- unsigned char cp_spie;
- char res7[3];
- unsigned char cp_spim;
- char res8[2];
- unsigned char cp_spcom;
- char res9[2];
-
- /* Parallel Interface Port.
- */
- char res10[2];
- unsigned short cp_pipc;
- char res11[2];
- unsigned short cp_ptpr;
- unsigned int cp_pbdir;
- unsigned int cp_pbpar;
- char res12[2];
- unsigned short cp_pbodr;
- unsigned int cp_pbdat;
- char res13[0x18];
-
- /* Serial Interface and Time Slot Assignment.
- */
- unsigned int cp_simode;
- unsigned char cp_sigmr;
- char res14;
- unsigned char cp_sistr;
- unsigned char cp_sicmr;
- char res15[4];
- unsigned int cp_sicr;
- unsigned int cp_sirp;
- char res16[0x10c];
- unsigned char cp_siram[0x200];
-
- /* The fast ethernet controller is not really part of the CPM,
- * but it resides in the address space.
- */
- fec_t cp_fec;
- char res18[0x1000];
-
- /* Dual Ported RAM follows.
- * There are many different formats for this memory area
- * depending upon the devices used and options chosen.
- */
- unsigned char cp_dpmem[0x1000]; /* BD / Data / ucode */
- unsigned char res19[0xc00];
- unsigned char cp_dparam[0x400]; /* Parameter RAM */
-} cpm8xx_t;
-
-/* Internal memory map.
-*/
-typedef struct immap {
- sysconf8xx_t im_siu_conf; /* SIU Configuration */
- pcmconf8xx_t im_pcmcia; /* PCMCIA Configuration */
- memctl8xx_t im_memctl; /* Memory Controller */
- sit8xx_t im_sit; /* System integration timers */
- car8xx_t im_clkrst; /* Clocks and reset */
- sitk8xx_t im_sitk; /* Sys int timer keys */
- cark8xx_t im_clkrstk; /* Clocks and reset keys */
- lcd8xx_t im_lcd; /* LCD (821 only) */
- i2c8xx_t im_i2c; /* I2C control/status */
- sdma8xx_t im_sdma; /* SDMA control/status */
- cpic8xx_t im_cpic; /* CPM Interrupt Controller */
- iop8xx_t im_ioport; /* IO Port control/status */
- cpmtimer8xx_t im_cpmtimer; /* CPM timers */
- cpm8xx_t im_cpm; /* Communication processor */
-} immap_t;
-
-#endif /* __IMMAP_8XX__ */
diff --git a/c/src/lib/libbsp/powerpc/eth_comm/include/bsp.h b/c/src/lib/libbsp/powerpc/eth_comm/include/bsp.h
deleted file mode 100644
index f852c51b67..0000000000
--- a/c/src/lib/libbsp/powerpc/eth_comm/include/bsp.h
+++ /dev/null
@@ -1,107 +0,0 @@
-/* bsp.h
- *
- * This include file contains all board IO definitions.
- *
- * XXX : put yours in here
- *
- * 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$
- */
-
-#ifndef __NO_BSP_h
-#define __NO_BSP_h
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <bspopts.h>
-
-#include <rtems.h>
-#include <rtems/console.h>
-#include <rtems/clockdrv.h>
-#include <mpc8xx.h>
-#include <mpc8xx/cpm.h>
-#include <mpc8xx/mmu.h>
-#include <mpc8xx/console.h>
-#include <bsp/vectors.h>
-
-/*
- * confdefs.h overrides for this BSP:
- * - termios serial ports (defaults to 1)
- * - Interrupt stack space is not minimum if defined.
- */
-
-/* #define CONFIGURE_NUMBER_OF_TERMIOS_PORTS 2 */
-#define CONFIGURE_INTERRUPT_STACK_MEMORY (4 * 1024)
-
-/*
- * Network driver configuration
- */
-struct rtems_bsdnet_ifconfig;
-extern int rtems_enet_driver_attach (struct rtems_bsdnet_ifconfig *config);
-#define RTEMS_BSP_NETWORK_DRIVER_NAME "eth1"
-#define RTEMS_BSP_NETWORK_DRIVER_ATTACH rtems_enet_driver_attach
-
-/*
- * We need to decide how much memory will be non-cacheable. This
- * will mainly be memory that will be used in DMA (network and serial
- * buffers).
- */
-#define NOCACHE_MEM_SIZE 512*1024
-
-/* Constants */
-
-#define RAM_START 0
-#define RAM_END 0x100000
-#define IMAP_ADDR ((unsigned int)0xff000000)
-#define IMAP_SIZE ((unsigned int)(16 * 1024))
-/* 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
- */
-
-/*
- * How many libio files we want
- */
-
-#define BSP_LIBIO_MAX_FDS 20
-
-/* functions */
-
-void bsp_cleanup( void );
-
-void M860ExecuteRISC( uint16_t command );
-void *M860AllocateBufferDescriptors( int count );
-void *M860AllocateRiscTimers( int count );
-extern char M860DefaultWatchdogFeeder;
-
-rtems_isr_entry set_vector( /* returns old vector */
- rtems_isr_entry handler, /* isr routine */
- rtems_vector_number vector, /* vector number */
- int type /* RTEMS or RAW intr */
-);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-/* end of include file */
diff --git a/c/src/lib/libbsp/powerpc/eth_comm/include/canbus.h b/c/src/lib/libbsp/powerpc/eth_comm/include/canbus.h
deleted file mode 100644
index 1611fab1b2..0000000000
--- a/c/src/lib/libbsp/powerpc/eth_comm/include/canbus.h
+++ /dev/null
@@ -1,170 +0,0 @@
-/* canbus.h
- *
- * This include file contains all canbus IO definitions
- *
- * Written by Jay Monkman (jmonkman@frasca.com)
- *
- * COPYRIGHT (c) 1998
- * Frasca International, Inc.
- *
- * 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:
- */
-
-#ifndef __CANBUS_H_
-#define __CANBUS_H_
-
-#include <rtems.h>
-
-typedef struct i82527_msg_t_ {
- uint8_t ctrl0 __attribute__ ((packed)); /* Control 0 register */
- uint8_t ctrl1 __attribute__ ((packed)); /* Control 1 register */
- uint32_t arb __attribute__ ((packed)); /* Arbitration reg */
- uint8_t cfg __attribute__ ((packed)); /* Message config reg */
- uint8_t data[8] __attribute__ ((packed)); /* Actual message */
-} i82527_msg_t;
-
-typedef struct i82527_t_ {
- uint8_t ctrl __attribute__ ((packed)); /* Control register */
- uint8_t status __attribute__ ((packed)); /* Status register */
- uint8_t cir __attribute__ ((packed)); /* CPU interface reg */
- uint8_t _res0 __attribute__ ((packed));
- uint16_t hsr __attribute__ ((packed)); /* High speed read */
- uint16_t gms __attribute__ ((packed)); /* Global Mask - std */
- uint32_t gml __attribute__ ((packed)); /* Global Mask - long */
- uint32_t mlm __attribute__ ((packed)); /* Mask last message */
- i82527_msg_t msg1 __attribute__ ((packed)); /* Message 1 */
- uint8_t clkout __attribute__ ((packed)); /* CLKOUT register */
- i82527_msg_t msg2 __attribute__ ((packed)); /* Message 2 */
- uint8_t bcr __attribute__ ((packed)); /* Bus config register */
- i82527_msg_t msg3 __attribute__ ((packed)); /* Message 3 */
- uint8_t btr0 __attribute__ ((packed)); /* Bit timing reg 0 */
- i82527_msg_t msg4 __attribute__ ((packed)); /* Message 4 */
- uint8_t btr1 __attribute__ ((packed)); /* Bit timing reg 1 */
- i82527_msg_t msg5 __attribute__ ((packed)); /* Message 5 */
- uint8_t intr __attribute__ ((packed)); /* Interrupt register */
- i82527_msg_t msg6 __attribute__ ((packed)); /* Message 6 */
- uint8_t _res1 __attribute__ ((packed));
- i82527_msg_t msg7 __attribute__ ((packed)); /* Message 7 */
- uint8_t _res2 __attribute__ ((packed));
- i82527_msg_t msg8 __attribute__ ((packed)); /* Message 8 */
- uint8_t _res3 __attribute__ ((packed));
- i82527_msg_t msg9 __attribute__ ((packed)); /* Message 9 */
- uint8_t p1conf __attribute__ ((packed)); /* Port 1 config */
- i82527_msg_t msg10 __attribute__ ((packed)); /* Message 10 */
- uint8_t p2conf __attribute__ ((packed)); /* Port 2 config */
- i82527_msg_t msg11 __attribute__ ((packed)); /* Message 11 */
- uint8_t p1in __attribute__ ((packed)); /* Port 1 in */
- i82527_msg_t msg12 __attribute__ ((packed)); /* Message 12 */
- uint8_t p2in __attribute__ ((packed)); /* Port 2 in */
- i82527_msg_t msg13 __attribute__ ((packed)); /* Message 13 */
- uint8_t p1out __attribute__ ((packed)); /* Port 1 out */
- i82527_msg_t msg14 __attribute__ ((packed)); /* Message 14 */
- uint8_t p2out __attribute__ ((packed)); /* Port 2 out */
- i82527_msg_t msg15 __attribute__ ((packed)); /* Message 15 */
- uint8_t sra __attribute__ ((packed)); /* Serial reset address */
-} i82527_t;
-
-#define I82527_CTRL_CCE (1<<6)
-#define I82527_CTRL_EIE (1<<3)
-#define I82527_CTRL_SIE (1<<2)
-#define I82527_CTRL_IE (1<<1)
-#define I82527_CTRL_INIT (1)
-#define I82527_STATUS_BOFF (1<<7)
-#define I82527_STATUS_WARN (1<<6)
-#define I82527_STATUS_WAKE (1<<5)
-#define I82527_STATUS_RXOK (1<<4)
-#define I82527_STATUS_TXOK (1<<3)
-#define I82527_STATUS_LEC (7)
-#define I82527_STATUS_LEC_NONE 0
-#define I82527_STATUS_LEC_STUFF 1
-#define I82527_STATUS_LEC_FORM 2
-#define I82527_STATUS_LEC_ACK 3
-#define I82527_STATUS_LEC_BIT1 4
-#define I82527_STATUS_LEC_BIT0 5
-#define I82527_STATUS_LEC_CRC 6
-#define I82527_CIR_RSTSTAT (1<<7)
-#define I82527_CIR_DSC (1<<6)
-#define I82527_CIR_DMC (1<<5)
-#define I82527_CIR_PWD (1<<4)
-#define I82527_CIR_SLEEP (1<<3)
-#define I82527_CIR_MUX (1<<2)
-#define I82527_CIR_CEN (1)
-#define I82527_CLKOUT_SL1 (1<<5)
-#define I82527_CLKOUT_SLO (1<<4)
-#define I82527_BCR_COBY (1<<6)
-#define I82527_BCR_POL (1<<5)
-#define I82527_DCT1 (1<<3)
-#define I82527_DCR1 (1<<1)
-#define I82527_DCR0 (1)
-#define I82527_BTR1_SPL (1<<7)
-#define I82527_MSG_CTRL_MSGVAL (2<<6)
-#define I82527_MSG_CTRL_MSGVAL_NC (3<<6)
-#define I82527_MSG_CTRL_MSGVAL_SET (2<<6)
-#define I82527_MSG_CTRL_MSGVAL_CLR (1<<6)
-#define I82527_MSG_CTRL_TXIE (2<<4)
-#define I82527_MSG_CTRL_TXIE_NC (3<<4)
-#define I82527_MSG_CTRL_TXIE_SET (2<<4)
-#define I82527_MSG_CTRL_TXIE_CLR (1<<4)
-#define I82527_MSG_CTRL_RXIE (2<<2)
-#define I82527_MSG_CTRL_RXIE_NC (3<<2)
-#define I82527_MSG_CTRL_RXIE_SET (2<<2)
-#define I82527_MSG_CTRL_RXIE_CLR (1<<2)
-#define I82527_MSG_CTRL_INTPND (2)
-#define I82527_MSG_CTRL_INTPND_NC (3)
-#define I82527_MSG_CTRL_INTPND_SET (2)
-#define I82527_MSG_CTRL_INTPND_CLR (1)
-#define I82527_MSG_CTRL_RMTPND (2<<6)
-#define I82527_MSG_CTRL_RMTPND_NC (3<<6)
-#define I82527_MSG_CTRL_RMTPND_SET (2<<6)
-#define I82527_MSG_CTRL_RMTPND_CLR (1<<6)
-#define I82527_MSG_CTRL_TXRQ (2<<4)
-#define I82527_MSG_CTRL_TXRQ_NC (3<<4)
-#define I82527_MSG_CTRL_TXRQ_SET (2<<4)
-#define I82527_MSG_CTRL_TXRQ_CLR (1<<4)
-#define I82527_MSG_CTRL_MSGLST (2<<2)
-#define I82527_MSG_CTRL_MSGLST_NC (3<<2)
-#define I82527_MSG_CTRL_MSGLST_SET (2<<2)
-#define I82527_MSG_CTRL_MSGLST_CLR (1<<2)
-#define I82527_MSG_CTRL_CPUUPD (2<<2)
-#define I82527_MSG_CTRL_CPUUPD_NC (3<<2)
-#define I82527_MSG_CTRL_CPUUPD_SET (2<<2)
-#define I82527_MSG_CTRL_CPUUPD_CLR (1<<2)
-#define I82527_MSG_CTRL_NEWDAT (2)
-#define I82527_MSG_CTRL_NEWDAT_NC (3)
-#define I82527_MSG_CTRL_NEWDAT_SET (2)
-#define I82527_MSG_CTRL_NEWDAT_CLR (1)
-#define I82527_MSG_CFG_DIR (1<<3)
-#define I82527_MSG_CFG_XTD (1<<2)
-
-extern i82527_t canbus0;
-extern i82527_t canbus1;
-extern i82527_t canbus2;
-
-rtems_device_driver canbus_initialize(rtems_device_major_number,
- rtems_device_minor_number,
- void *);
-rtems_device_driver canbus_open(rtems_device_major_number,
- rtems_device_minor_number,
- void *);
-rtems_device_driver canbus_close(rtems_device_major_number,
- rtems_device_minor_number,
- void *);
-rtems_device_driver canbus_read(rtems_device_major_number,
- rtems_device_minor_number,
- void *);
-rtems_device_driver canbus_write(rtems_device_major_number,
- rtems_device_minor_number,
- void *);
-rtems_device_driver canbus_control(rtems_device_major_number,
- rtems_device_minor_number,
- void *);
-
-#define CANBUS_DRIVER_TABLE_ENTRY \
- { canbus_initialize, canbus_open, canbus_close, \
- canbus_read, canbus_write, canbus_control }
-
-#endif /* __CANBUS_H_ */
diff --git a/c/src/lib/libbsp/powerpc/eth_comm/include/commproc.h b/c/src/lib/libbsp/powerpc/eth_comm/include/commproc.h
deleted file mode 100644
index e157203467..0000000000
--- a/c/src/lib/libbsp/powerpc/eth_comm/include/commproc.h
+++ /dev/null
@@ -1,529 +0,0 @@
-
-/*
- * MPC8xx Communication Processor Module.
- * Copyright (c) 1997 Dan Malek (dmalek@jlc.net)
- *
- * This file contains structures and information for the communication
- * processor channels. Some CPM control and status is available
- * throught the MPC8xx internal memory map. See immap.h for details.
- * This file only contains what I need for the moment, not the total
- * CPM capabilities. I (or someone else) will add definitions as they
- * are needed. -- Dan
- *
- * On the MBX board, EPPC-Bug loads CPM microcode into the first 512
- * bytes of the DP RAM and relocates the I2C parameter area to the
- * IDMA1 space. The remaining DP RAM is available for buffer descriptors
- * or other use.
- */
-#ifndef __CPM_8XX__
-#define __CPM_8XX__
-
-#include <bsp/8xx_immap.h>
-
-/* CPM Command register.
-*/
-#define CPM_CR_RST ((ushort)0x8000)
-#define CPM_CR_OPCODE ((ushort)0x0f00)
-#define CPM_CR_CHAN ((ushort)0x00f0)
-#define CPM_CR_FLG ((ushort)0x0001)
-
-/* Some commands (there are more...later)
-*/
-#define CPM_CR_INIT_TRX ((ushort)0x0000)
-#define CPM_CR_INIT_RX ((ushort)0x0001)
-#define CPM_CR_INIT_TX ((ushort)0x0002)
-#define CPM_CR_STOP_TX ((ushort)0x0004)
-#define CPM_CR_RESTART_TX ((ushort)0x0006)
-#define CPM_CR_SET_GADDR ((ushort)0x0008)
-
-/* Channel numbers.
-*/
-#define CPM_CR_CH_SCC1 ((ushort)0x0000)
-#define CPM_CR_CH_I2C ((ushort)0x0001) /* I2C and IDMA1 */
-#define CPM_CR_CH_SCC2 ((ushort)0x0004)
-#define CPM_CR_CH_SPI ((ushort)0x0005) /* SPI / IDMA2 / Timers */
-#define CPM_CR_CH_SCC3 ((ushort)0x0008)
-#define CPM_CR_CH_SMC1 ((ushort)0x0009) /* SMC1 / DSP1 */
-#define CPM_CR_CH_SCC4 ((ushort)0x000c)
-#define CPM_CR_CH_SMC2 ((ushort)0x000d) /* SMC2 / DSP2 */
-
-#define mk_cr_cmd(CH, CMD) ((CMD << 8) | (CH << 4))
-
-/* The dual ported RAM is multi-functional. Some areas can be (and are
- * being) used for microcode. There is an area that can only be used
- * as data ram for buffer descriptors, which is all we use right now.
- * Currently the first 512 and last 256 bytes are used for microcode.
- */
-#define CPM_DATAONLY_BASE ((uint)0x0800)
-#define CPM_DATAONLY_SIZE ((uint)0x0700)
-#define CPM_DP_NOSPACE ((uint)0x7fffffff)
-
-/* Export the base address of the communication processor registers
- * and dual port ram.
- */
-extern cpm8xx_t *cpmp; /* Pointer to comm processor */
-uint m8xx_cpm_dpalloc(uint size);
-uint m8xx_cpm_hostalloc(uint size);
-void m8xx_cpm_setbrg(uint brg, uint rate);
-
-/* Buffer descriptors used by many of the CPM protocols.
-*/
-typedef struct cpm_buf_desc {
- ushort cbd_sc; /* Status and Control */
- ushort cbd_datlen; /* Data length in buffer */
- uint cbd_bufaddr; /* Buffer address in host memory */
-} cbd_t;
-
-#define BD_SC_EMPTY ((ushort)0x8000) /* Recieve is empty */
-#define BD_SC_READY ((ushort)0x8000) /* Transmit is ready */
-#define BD_SC_WRAP ((ushort)0x2000) /* Last buffer descriptor */
-#define BD_SC_INTRPT ((ushort)0x1000) /* Interrupt on change */
-#define BD_SC_CM ((ushort)0x0200) /* Continous mode */
-#define BD_SC_ID ((ushort)0x0100) /* Rec'd too many idles */
-#define BD_SC_P ((ushort)0x0100) /* xmt preamble */
-#define BD_SC_BR ((ushort)0x0020) /* Break received */
-#define BD_SC_FR ((ushort)0x0010) /* Framing error */
-#define BD_SC_PR ((ushort)0x0008) /* Parity error */
-#define BD_SC_OV ((ushort)0x0002) /* Overrun */
-#define BD_SC_CD ((ushort)0x0001) /* ?? */
-
-/* Parameter RAM offsets.
-*/
-#define PROFF_SCC1 ((uint)0x0000)
-#define PROFF_SCC2 ((uint)0x0100)
-#define PROFF_SCC3 ((uint)0x0200)
-#define PROFF_SMC1 ((uint)0x0280)
-#define PROFF_SCC4 ((uint)0x0300)
-#define PROFF_SMC2 ((uint)0x0380)
-
-/* Define enough so I can at least use the serial port as a UART.
- */
-typedef struct smc_uart {
- ushort smc_rbase; /* Rx Buffer descriptor base address */
- ushort smc_tbase; /* Tx Buffer descriptor base address */
- u_char smc_rfcr; /* Rx function code */
- u_char smc_tfcr; /* Tx function code */
- ushort smc_mrblr; /* Max receive buffer length */
- uint smc_rstate; /* Internal */
- uint smc_idp; /* Internal */
- ushort smc_rbptr; /* Internal */
- ushort smc_ibc; /* Internal */
- uint smc_rxtmp; /* Internal */
- uint smc_tstate; /* Internal */
- uint smc_tdp; /* Internal */
- ushort smc_tbptr; /* Internal */
- ushort smc_tbc; /* Internal */
- uint smc_txtmp; /* Internal */
- ushort smc_maxidl; /* Maximum idle characters */
- ushort smc_tmpidl; /* Temporary idle counter */
- ushort smc_brklen; /* Last received break length */
- ushort smc_brkec; /* rcv'd break condition counter */
- ushort smc_brkcr; /* xmt break count register */
- ushort smc_rmask; /* Temporary bit mask */
-} smc_uart_t;
-
-/* Function code bits.
-*/
-#define SMC_EB ((u_char)0x10) /* Set big endian byte order */
-
-/* SMC uart mode register.
-*/
-#define SMCMR_REN ((ushort)0x0001)
-#define SMCMR_TEN ((ushort)0x0002)
-#define SMCMR_DM ((ushort)0x000c)
-#define SMCMR_SM_GCI ((ushort)0x0000)
-#define SMCMR_SM_UART ((ushort)0x0020)
-#define SMCMR_SM_TRANS ((ushort)0x0030)
-#define SMCMR_SM_MASK ((ushort)0x0030)
-#define SMCMR_PM_EVEN ((ushort)0x0100) /* Even parity, else odd */
-#define SMCMR_PEN ((ushort)0x0200) /* Parity enable */
-#define SMCMR_SL ((ushort)0x0400) /* Two stops, else one */
-#define SMCR_CLEN_MASK ((ushort)0x7800) /* Character length */
-#define smcr_mk_clen(C) (((C) << 11) & SMCR_CLEN_MASK)
-
-/* SMC Event and Mask register.
-*/
-#define SMCM_TXE ((unsigned char)0x10)
-#define SMCM_BSY ((unsigned char)0x04)
-#define SMCM_TX ((unsigned char)0x02)
-#define SMCM_RX ((unsigned char)0x01)
-
-/* Baud rate generators.
-*/
-#define CPM_BRG_RST ((uint)0x00020000)
-#define CPM_BRG_EN ((uint)0x00010000)
-#define CPM_BRG_EXTC_INT ((uint)0x00000000)
-#define CPM_BRG_EXTC_CLK2 ((uint)0x00004000)
-#define CPM_BRG_EXTC_CLK6 ((uint)0x00008000)
-#define CPM_BRG_ATB ((uint)0x00002000)
-#define CPM_BRG_CD_MASK ((uint)0x00001ffe)
-#define CPM_BRG_DIV16 ((uint)0x00000001)
-
-/* SCCs.
-*/
-#define SCC_GSMRH_IRP ((uint)0x00040000)
-#define SCC_GSMRH_GDE ((uint)0x00010000)
-#define SCC_GSMRH_TCRC_CCITT ((uint)0x00008000)
-#define SCC_GSMRH_TCRC_BISYNC ((uint)0x00004000)
-#define SCC_GSMRH_TCRC_HDLC ((uint)0x00000000)
-#define SCC_GSMRH_REVD ((uint)0x00002000)
-#define SCC_GSMRH_TRX ((uint)0x00001000)
-#define SCC_GSMRH_TTX ((uint)0x00000800)
-#define SCC_GSMRH_CDP ((uint)0x00000400)
-#define SCC_GSMRH_CTSP ((uint)0x00000200)
-#define SCC_GSMRH_CDS ((uint)0x00000100)
-#define SCC_GSMRH_CTSS ((uint)0x00000080)
-#define SCC_GSMRH_TFL ((uint)0x00000040)
-#define SCC_GSMRH_RFW ((uint)0x00000020)
-#define SCC_GSMRH_TXSY ((uint)0x00000010)
-#define SCC_GSMRH_SYNL16 ((uint)0x0000000c)
-#define SCC_GSMRH_SYNL8 ((uint)0x00000008)
-#define SCC_GSMRH_SYNL4 ((uint)0x00000004)
-#define SCC_GSMRH_RTSM ((uint)0x00000002)
-#define SCC_GSMRH_RSYN ((uint)0x00000001)
-
-#define SCC_GSMRL_SIR ((uint)0x80000000) /* SCC2 only */
-#define SCC_GSMRL_EDGE_NONE ((uint)0x60000000)
-#define SCC_GSMRL_EDGE_NEG ((uint)0x40000000)
-#define SCC_GSMRL_EDGE_POS ((uint)0x20000000)
-#define SCC_GSMRL_EDGE_BOTH ((uint)0x00000000)
-#define SCC_GSMRL_TCI ((uint)0x10000000)
-#define SCC_GSMRL_TSNC_3 ((uint)0x0c000000)
-#define SCC_GSMRL_TSNC_4 ((uint)0x08000000)
-#define SCC_GSMRL_TSNC_14 ((uint)0x04000000)
-#define SCC_GSMRL_TSNC_INF ((uint)0x00000000)
-#define SCC_GSMRL_RINV ((uint)0x02000000)
-#define SCC_GSMRL_TINV ((uint)0x01000000)
-#define SCC_GSMRL_TPL_128 ((uint)0x00c00000)
-#define SCC_GSMRL_TPL_64 ((uint)0x00a00000)
-#define SCC_GSMRL_TPL_48 ((uint)0x00800000)
-#define SCC_GSMRL_TPL_32 ((uint)0x00600000)
-#define SCC_GSMRL_TPL_16 ((uint)0x00400000)
-#define SCC_GSMRL_TPL_8 ((uint)0x00200000)
-#define SCC_GSMRL_TPL_NONE ((uint)0x00000000)
-#define SCC_GSMRL_TPP_ALL1 ((uint)0x00180000)
-#define SCC_GSMRL_TPP_01 ((uint)0x00100000)
-#define SCC_GSMRL_TPP_10 ((uint)0x00080000)
-#define SCC_GSMRL_TPP_ZEROS ((uint)0x00000000)
-#define SCC_GSMRL_TEND ((uint)0x00040000)
-#define SCC_GSMRL_TDCR_32 ((uint)0x00030000)
-#define SCC_GSMRL_TDCR_16 ((uint)0x00020000)
-#define SCC_GSMRL_TDCR_8 ((uint)0x00010000)
-#define SCC_GSMRL_TDCR_1 ((uint)0x00000000)
-#define SCC_GSMRL_RDCR_32 ((uint)0x0000c000)
-#define SCC_GSMRL_RDCR_16 ((uint)0x00008000)
-#define SCC_GSMRL_RDCR_8 ((uint)0x00004000)
-#define SCC_GSMRL_RDCR_1 ((uint)0x00000000)
-#define SCC_GSMRL_RENC_DFMAN ((uint)0x00003000)
-#define SCC_GSMRL_RENC_MANCH ((uint)0x00002000)
-#define SCC_GSMRL_RENC_FM0 ((uint)0x00001000)
-#define SCC_GSMRL_RENC_NRZI ((uint)0x00000800)
-#define SCC_GSMRL_RENC_NRZ ((uint)0x00000000)
-#define SCC_GSMRL_TENC_DFMAN ((uint)0x00000600)
-#define SCC_GSMRL_TENC_MANCH ((uint)0x00000400)
-#define SCC_GSMRL_TENC_FM0 ((uint)0x00000200)
-#define SCC_GSMRL_TENC_NRZI ((uint)0x00000100)
-#define SCC_GSMRL_TENC_NRZ ((uint)0x00000000)
-#define SCC_GSMRL_DIAG_LE ((uint)0x000000c0) /* Loop and echo */
-#define SCC_GSMRL_DIAG_ECHO ((uint)0x00000080)
-#define SCC_GSMRL_DIAG_LOOP ((uint)0x00000040)
-#define SCC_GSMRL_DIAG_NORM ((uint)0x00000000)
-#define SCC_GSMRL_ENR ((uint)0x00000020)
-#define SCC_GSMRL_ENT ((uint)0x00000010)
-#define SCC_GSMRL_MODE_ENET ((uint)0x0000000c)
-#define SCC_GSMRL_MODE_DDCMP ((uint)0x00000009)
-#define SCC_GSMRL_MODE_BISYNC ((uint)0x00000008)
-#define SCC_GSMRL_MODE_V14 ((uint)0x00000007)
-#define SCC_GSMRL_MODE_AHDLC ((uint)0x00000006)
-#define SCC_GSMRL_MODE_PROFIBUS ((uint)0x00000005)
-#define SCC_GSMRL_MODE_UART ((uint)0x00000004)
-#define SCC_GSMRL_MODE_SS7 ((uint)0x00000003)
-#define SCC_GSMRL_MODE_ATALK ((uint)0x00000002)
-#define SCC_GSMRL_MODE_HDLC ((uint)0x00000000)
-
-#define SCC_TODR_TOD ((ushort)0x8000)
-
-/* SCC Event and Mask register.
-*/
-#define SCCM_TXE ((unsigned char)0x10)
-#define SCCM_BSY ((unsigned char)0x04)
-#define SCCM_TX ((unsigned char)0x02)
-#define SCCM_RX ((unsigned char)0x01)
-
-typedef struct scc_param {
- ushort scc_rbase; /* Rx Buffer descriptor base address */
- ushort scc_tbase; /* Tx Buffer descriptor base address */
- u_char scc_rfcr; /* Rx function code */
- u_char scc_tfcr; /* Tx function code */
- ushort scc_mrblr; /* Max receive buffer length */
- uint scc_rstate; /* Internal */
- uint scc_idp; /* Internal */
- ushort scc_rbptr; /* Internal */
- ushort scc_ibc; /* Internal */
- uint scc_rxtmp; /* Internal */
- uint scc_tstate; /* Internal */
- uint scc_tdp; /* Internal */
- ushort scc_tbptr; /* Internal */
- ushort scc_tbc; /* Internal */
- uint scc_txtmp; /* Internal */
- uint scc_rcrc; /* Internal */
- uint scc_tcrc; /* Internal */
-} sccp_t;
-
-/* Function code bits.
-*/
-#define SCC_EB ((u_char)0x10) /* Set big endian byte order */
-
-/* CPM Ethernet through SCC1.
- */
-typedef struct scc_enet {
- sccp_t sen_genscc;
- uint sen_cpres; /* Preset CRC */
- uint sen_cmask; /* Constant mask for CRC */
- uint sen_crcec; /* CRC Error counter */
- uint sen_alec; /* alignment error counter */
- uint sen_disfc; /* discard frame counter */
- ushort sen_pads; /* Tx short frame pad character */
- ushort sen_retlim; /* Retry limit threshold */
- ushort sen_retcnt; /* Retry limit counter */
- ushort sen_maxflr; /* maximum frame length register */
- ushort sen_minflr; /* minimum frame length register */
- ushort sen_maxd1; /* maximum DMA1 length */
- ushort sen_maxd2; /* maximum DMA2 length */
- ushort sen_maxd; /* Rx max DMA */
- ushort sen_dmacnt; /* Rx DMA counter */
- ushort sen_maxb; /* Max BD byte count */
- ushort sen_gaddr1; /* Group address filter */
- ushort sen_gaddr2;
- ushort sen_gaddr3;
- ushort sen_gaddr4;
- uint sen_tbuf0data0; /* Save area 0 - current frame */
- uint sen_tbuf0data1; /* Save area 1 - current frame */
- uint sen_tbuf0rba; /* Internal */
- uint sen_tbuf0crc; /* Internal */
- ushort sen_tbuf0bcnt; /* Internal */
- ushort sen_paddrh; /* physical address (MSB) */
- ushort sen_paddrm;
- ushort sen_paddrl; /* physical address (LSB) */
- ushort sen_pper; /* persistence */
- ushort sen_rfbdptr; /* Rx first BD pointer */
- ushort sen_tfbdptr; /* Tx first BD pointer */
- ushort sen_tlbdptr; /* Tx last BD pointer */
- uint sen_tbuf1data0; /* Save area 0 - current frame */
- uint sen_tbuf1data1; /* Save area 1 - current frame */
- uint sen_tbuf1rba; /* Internal */
- uint sen_tbuf1crc; /* Internal */
- ushort sen_tbuf1bcnt; /* Internal */
- ushort sen_txlen; /* Tx Frame length counter */
- ushort sen_iaddr1; /* Individual address filter */
- ushort sen_iaddr2;
- ushort sen_iaddr3;
- ushort sen_iaddr4;
- ushort sen_boffcnt; /* Backoff counter */
-
- /* NOTE: Some versions of the manual have the following items
- * incorrectly documented. Below is the proper order.
- */
- ushort sen_taddrh; /* temp address (MSB) */
- ushort sen_taddrm;
- ushort sen_taddrl; /* temp address (LSB) */
-} scc_enet_t;
-
-/* Bits in parallel I/O port registers that have to be set/cleared
- * to configure the pins for SCC1 use. The TCLK and RCLK seem unique
- * to the MBX860 board. Any two of the four available clocks could be
- * used, and the MPC860 cookbook manual has an example using different
- * clock pins.
- */
-#define PA_ENET_RXD ((ushort)0x0001)
-#define PA_ENET_TXD ((ushort)0x0002)
-#define PA_ENET_TCLK ((ushort)0x0200)
-#define PA_ENET_RCLK ((ushort)0x0800)
-#define PC_ENET_TENA ((ushort)0x0001)
-#define PC_ENET_CLSN ((ushort)0x0010)
-#define PC_ENET_RENA ((ushort)0x0020)
-
-/* Control bits in the SICR to route TCLK (CLK2) and RCLK (CLK4) to
- * SCC1. Also, make sure GR1 (bit 24) and SC1 (bit 25) are zero.
- */
-#define SICR_ENET_MASK ((uint)0x000000ff)
-#define SICR_ENET_CLKRT ((uint)0x0000003d)
-
-/* SCC Event register as used by Ethernet.
-*/
-#define SCCE_ENET_GRA ((ushort)0x0080) /* Graceful stop complete */
-#define SCCE_ENET_TXE ((ushort)0x0010) /* Transmit Error */
-#define SCCE_ENET_RXF ((ushort)0x0008) /* Full frame received */
-#define SCCE_ENET_BSY ((ushort)0x0004) /* All incoming buffers full */
-#define SCCE_ENET_TXB ((ushort)0x0002) /* A buffer was transmitted */
-#define SCCE_ENET_RXB ((ushort)0x0001) /* A buffer was received */
-
-/* SCC Mode Register (PMSR) as used by Ethernet.
-*/
-#define SCC_PMSR_HBC ((ushort)0x8000) /* Enable heartbeat */
-#define SCC_PMSR_FC ((ushort)0x4000) /* Force collision */
-#define SCC_PMSR_RSH ((ushort)0x2000) /* Receive short frames */
-#define SCC_PMSR_IAM ((ushort)0x1000) /* Check individual hash */
-#define SCC_PMSR_ENCRC ((ushort)0x0800) /* Ethernet CRC mode */
-#define SCC_PMSR_PRO ((ushort)0x0200) /* Promiscuous mode */
-#define SCC_PMSR_BRO ((ushort)0x0100) /* Catch broadcast pkts */
-#define SCC_PMSR_SBT ((ushort)0x0080) /* Special backoff timer */
-#define SCC_PMSR_LPB ((ushort)0x0040) /* Set Loopback mode */
-#define SCC_PMSR_SIP ((ushort)0x0020) /* Sample Input Pins */
-#define SCC_PMSR_LCW ((ushort)0x0010) /* Late collision window */
-#define SCC_PMSR_NIB22 ((ushort)0x000a) /* Start frame search */
-#define SCC_PMSR_FDE ((ushort)0x0001) /* Full duplex enable */
-
-/* Buffer descriptor control/status used by Ethernet receive.
-*/
-#define BD_ENET_RX_EMPTY ((ushort)0x8000)
-#define BD_ENET_RX_WRAP ((ushort)0x2000)
-#define BD_ENET_RX_INTR ((ushort)0x1000)
-#define BD_ENET_RX_LAST ((ushort)0x0800)
-#define BD_ENET_RX_FIRST ((ushort)0x0400)
-#define BD_ENET_RX_MISS ((ushort)0x0100)
-#define BD_ENET_RX_LG ((ushort)0x0020)
-#define BD_ENET_RX_NO ((ushort)0x0010)
-#define BD_ENET_RX_SH ((ushort)0x0008)
-#define BD_ENET_RX_CR ((ushort)0x0004)
-#define BD_ENET_RX_OV ((ushort)0x0002)
-#define BD_ENET_RX_CL ((ushort)0x0001)
-#define BD_ENET_RX_STATS ((ushort)0x013f) /* All status bits */
-
-/* Buffer descriptor control/status used by Ethernet transmit.
-*/
-#define BD_ENET_TX_READY ((ushort)0x8000)
-#define BD_ENET_TX_PAD ((ushort)0x4000)
-#define BD_ENET_TX_WRAP ((ushort)0x2000)
-#define BD_ENET_TX_INTR ((ushort)0x1000)
-#define BD_ENET_TX_LAST ((ushort)0x0800)
-#define BD_ENET_TX_TC ((ushort)0x0400)
-#define BD_ENET_TX_DEF ((ushort)0x0200)
-#define BD_ENET_TX_HB ((ushort)0x0100)
-#define BD_ENET_TX_LC ((ushort)0x0080)
-#define BD_ENET_TX_RL ((ushort)0x0040)
-#define BD_ENET_TX_RCMASK ((ushort)0x003c)
-#define BD_ENET_TX_UN ((ushort)0x0002)
-#define BD_ENET_TX_CSL ((ushort)0x0001)
-#define BD_ENET_TX_STATS ((ushort)0x03ff) /* All status bits */
-
-/* SCC as UART
-*/
-typedef struct scc_uart {
- sccp_t scc_genscc;
- uint scc_res1; /* Reserved */
- uint scc_res2; /* Reserved */
- ushort scc_maxidl; /* Maximum idle chars */
- ushort scc_idlc; /* temp idle counter */
- ushort scc_brkcr; /* Break count register */
- ushort scc_parec; /* receive parity error counter */
- ushort scc_frmec; /* receive framing error counter */
- ushort scc_nosec; /* receive noise counter */
- ushort scc_brkec; /* receive break condition counter */
- ushort scc_brkln; /* last received break length */
- ushort scc_uaddr1; /* UART address character 1 */
- ushort scc_uaddr2; /* UART address character 2 */
- ushort scc_rtemp; /* Temp storage */
- ushort scc_toseq; /* Transmit out of sequence char */
- ushort scc_char1; /* control character 1 */
- ushort scc_char2; /* control character 2 */
- ushort scc_char3; /* control character 3 */
- ushort scc_char4; /* control character 4 */
- ushort scc_char5; /* control character 5 */
- ushort scc_char6; /* control character 6 */
- ushort scc_char7; /* control character 7 */
- ushort scc_char8; /* control character 8 */
- ushort scc_rccm; /* receive control character mask */
- ushort scc_rccr; /* receive control character register */
- ushort scc_rlbc; /* receive last break character */
-} scc_uart_t;
-
-/* SCC Event and Mask registers when it is used as a UART.
-*/
-#define UART_SCCM_GLR ((ushort)0x1000)
-#define UART_SCCM_GLT ((ushort)0x0800)
-#define UART_SCCM_AB ((ushort)0x0200)
-#define UART_SCCM_IDL ((ushort)0x0100)
-#define UART_SCCM_GRA ((ushort)0x0080)
-#define UART_SCCM_BRKE ((ushort)0x0040)
-#define UART_SCCM_BRKS ((ushort)0x0020)
-#define UART_SCCM_CCR ((ushort)0x0008)
-#define UART_SCCM_BSY ((ushort)0x0004)
-#define UART_SCCM_TX ((ushort)0x0002)
-#define UART_SCCM_RX ((ushort)0x0001)
-
-/* The SCC PMSR when used as a UART.
-*/
-#define SCU_PMSR_FLC ((ushort)0x8000)
-#define SCU_PMSR_SL ((ushort)0x4000)
-#define SCU_PMSR_CL ((ushort)0x3000)
-#define SCU_PMSR_UM ((ushort)0x0c00)
-#define SCU_PMSR_FRZ ((ushort)0x0200)
-#define SCU_PMSR_RZS ((ushort)0x0100)
-#define SCU_PMSR_SYN ((ushort)0x0080)
-#define SCU_PMSR_DRT ((ushort)0x0040)
-#define SCU_PMSR_PEN ((ushort)0x0010)
-#define SCU_PMSR_RPM ((ushort)0x000c)
-#define SCU_PMSR_REVP ((ushort)0x0008)
-#define SCU_PMSR_TPM ((ushort)0x0003)
-#define SCU_PMSR_TEVP ((ushort)0x0003)
-
-/* CPM Transparent mode SCC.
- */
-typedef struct scc_trans {
- sccp_t st_genscc;
- uint st_cpres; /* Preset CRC */
- uint st_cmask; /* Constant mask for CRC */
-} scc_trans_t;
-
-/* CPM interrupts. There are nearly 32 interrupts generated by CPM
- * channels or devices. All of these are presented to the PPC core
- * as a single interrupt. The CPM interrupt handler dispatches its
- * own handlers, in a similar fashion to the PPC core handler. We
- * use the table as defined in the manuals (i.e. no special high
- * priority and SCC1 == SCCa, etc...).
- */
-#define CPMVEC_NR 32
-#define CPMVEC_PIO_PC15 ((ushort)0x1f)
-#define CPMVEC_SCC1 ((ushort)0x1e)
-#define CPMVEC_SCC2 ((ushort)0x1d)
-#define CPMVEC_SCC3 ((ushort)0x1c)
-#define CPMVEC_SCC4 ((ushort)0x1b)
-#define CPMVEC_PIO_PC14 ((ushort)0x1a)
-#define CPMVEC_TIMER1 ((ushort)0x19)
-#define CPMVEC_PIO_PC13 ((ushort)0x18)
-#define CPMVEC_PIO_PC12 ((ushort)0x17)
-#define CPMVEC_SDMA_CB_ERR ((ushort)0x16)
-#define CPMVEC_IDMA1 ((ushort)0x15)
-#define CPMVEC_IDMA2 ((ushort)0x14)
-#define CPMVEC_TIMER2 ((ushort)0x12)
-#define CPMVEC_RISCTIMER ((ushort)0x11)
-#define CPMVEC_I2C ((ushort)0x10)
-#define CPMVEC_PIO_PC11 ((ushort)0x0f)
-#define CPMVEC_PIO_PC10 ((ushort)0x0e)
-#define CPMVEC_TIMER3 ((ushort)0x0c)
-#define CPMVEC_PIO_PC9 ((ushort)0x0b)
-#define CPMVEC_PIO_PC8 ((ushort)0x0a)
-#define CPMVEC_PIO_PC7 ((ushort)0x09)
-#define CPMVEC_TIMER4 ((ushort)0x07)
-#define CPMVEC_PIO_PC6 ((ushort)0x06)
-#define CPMVEC_SPI ((ushort)0x05)
-#define CPMVEC_SMC1 ((ushort)0x04)
-#define CPMVEC_SMC2 ((ushort)0x03)
-#define CPMVEC_PIO_PC5 ((ushort)0x02)
-#define CPMVEC_PIO_PC4 ((ushort)0x01)
-#define CPMVEC_ERROR ((ushort)0x00)
-
-extern void cpm_install_handler(int vec, void (*handler)(void *), void *dev_id);
-
-/* CPM interrupt configuration vector.
-*/
-#define CICR_SCD_SCC4 ((uint)0x00c00000) /* SCC4 @ SCCd */
-#define CICR_SCC_SCC3 ((uint)0x00200000) /* SCC3 @ SCCc */
-#define CICR_SCB_SCC2 ((uint)0x00040000) /* SCC2 @ SCCb */
-#define CICR_SCA_SCC1 ((uint)0x00000000) /* SCC1 @ SCCa */
-#define CICR_IRL_MASK ((uint)0x0000e000) /* Core interrrupt */
-#define CICR_HP_MASK ((uint)0x00001f00) /* Hi-pri int. */
-#define CICR_IEN ((uint)0x00000080) /* Int. enable */
-#define CICR_SPS ((uint)0x00000001) /* SCC Spread */
-#endif /* __CPM_8XX__ */
diff --git a/c/src/lib/libbsp/powerpc/eth_comm/include/coverhd.h b/c/src/lib/libbsp/powerpc/eth_comm/include/coverhd.h
deleted file mode 100644
index c633647c62..0000000000
--- a/c/src/lib/libbsp/powerpc/eth_comm/include/coverhd.h
+++ /dev/null
@@ -1,114 +0,0 @@
-/* coverhd.h
- *
- * This include file has defines to represent the overhead associated
- * with calling a particular directive from C. These are used in the
- * Timing Test Suite to ignore the overhead required to pass arguments
- * to directives. On some CPUs and/or target boards, this overhead
- * is significant and makes it difficult to distinguish internal
- * RTEMS execution time from that used to call the directive.
- * This file should be updated after running the C overhead timing
- * test. Once this update has been performed, the RTEMS Time Test
- * Suite should be rebuilt to account for these overhead times in the
- * timing results.
- *
- * NOTE: If these are all zero, then the times reported include
- * all calling overhead including passing of arguments.
- *
- * 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$
- */
-
-#ifndef __COVERHD_h
-#define __COVERHD_h
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define CALLING_OVERHEAD_INITIALIZE_EXECUTIVE 0
-#define CALLING_OVERHEAD_SHUTDOWN_EXECUTIVE 0
-#define CALLING_OVERHEAD_TASK_CREATE 0
-#define CALLING_OVERHEAD_TASK_IDENT 0
-#define CALLING_OVERHEAD_TASK_START 0
-#define CALLING_OVERHEAD_TASK_RESTART 0
-#define CALLING_OVERHEAD_TASK_DELETE 0
-#define CALLING_OVERHEAD_TASK_SUSPEND 0
-#define CALLING_OVERHEAD_TASK_RESUME 0
-#define CALLING_OVERHEAD_TASK_SET_PRIORITY 0
-#define CALLING_OVERHEAD_TASK_MODE 0
-#define CALLING_OVERHEAD_TASK_GET_NOTE 0
-#define CALLING_OVERHEAD_TASK_SET_NOTE 0
-#define CALLING_OVERHEAD_TASK_WAKE_WHEN 2
-#define CALLING_OVERHEAD_TASK_WAKE_AFTER 0
-#define CALLING_OVERHEAD_INTERRUPT_CATCH 0
-#define CALLING_OVERHEAD_CLOCK_GET 2
-#define CALLING_OVERHEAD_CLOCK_SET 2
-#define CALLING_OVERHEAD_CLOCK_TICK 0
-
-#define CALLING_OVERHEAD_TIMER_CREATE 0
-#define CALLING_OVERHEAD_TIMER_IDENT 0
-#define CALLING_OVERHEAD_TIMER_DELETE 0
-#define CALLING_OVERHEAD_TIMER_FIRE_AFTER 0
-#define CALLING_OVERHEAD_TIMER_FIRE_WHEN 2
-#define CALLING_OVERHEAD_TIMER_RESET 0
-#define CALLING_OVERHEAD_TIMER_CANCEL 0
-#define CALLING_OVERHEAD_SEMAPHORE_CREATE 0
-#define CALLING_OVERHEAD_SEMAPHORE_IDENT 0
-#define CALLING_OVERHEAD_SEMAPHORE_DELETE 0
-#define CALLING_OVERHEAD_SEMAPHORE_OBTAIN 0
-#define CALLING_OVERHEAD_SEMAPHORE_RELEASE 0
-#define CALLING_OVERHEAD_MESSAGE_QUEUE_CREATE 0
-#define CALLING_OVERHEAD_MESSAGE_QUEUE_IDENT 0
-#define CALLING_OVERHEAD_MESSAGE_QUEUE_DELETE 0
-#define CALLING_OVERHEAD_MESSAGE_QUEUE_SEND 0
-#define CALLING_OVERHEAD_MESSAGE_QUEUE_URGENT 0
-#define CALLING_OVERHEAD_MESSAGE_QUEUE_BROADCAST 0
-#define CALLING_OVERHEAD_MESSAGE_QUEUE_RECEIVE 0
-#define CALLING_OVERHEAD_MESSAGE_QUEUE_FLUSH 0
-
-#define CALLING_OVERHEAD_EVENT_SEND 0
-#define CALLING_OVERHEAD_EVENT_RECEIVE 0
-#define CALLING_OVERHEAD_SIGNAL_CATCH 0
-#define CALLING_OVERHEAD_SIGNAL_SEND 0
-#define CALLING_OVERHEAD_PARTITION_CREATE 0
-#define CALLING_OVERHEAD_PARTITION_IDENT 0
-#define CALLING_OVERHEAD_PARTITION_DELETE 0
-#define CALLING_OVERHEAD_PARTITION_GET_BUFFER 0
-#define CALLING_OVERHEAD_PARTITION_RETURN_BUFFER 0
-#define CALLING_OVERHEAD_REGION_CREATE 0
-#define CALLING_OVERHEAD_REGION_IDENT 0
-#define CALLING_OVERHEAD_REGION_DELETE 0
-#define CALLING_OVERHEAD_REGION_GET_SEGMENT 0
-#define CALLING_OVERHEAD_REGION_RETURN_SEGMENT 0
-#define CALLING_OVERHEAD_PORT_CREATE 0
-#define CALLING_OVERHEAD_PORT_IDENT 0
-#define CALLING_OVERHEAD_PORT_DELETE 0
-#define CALLING_OVERHEAD_PORT_EXTERNAL_TO_INTERNAL 0
-#define CALLING_OVERHEAD_PORT_INTERNAL_TO_EXTERNAL 0
-
-#define CALLING_OVERHEAD_IO_INITIALIZE 0
-#define CALLING_OVERHEAD_IO_OPEN 0
-#define CALLING_OVERHEAD_IO_CLOSE 0
-#define CALLING_OVERHEAD_IO_READ 0
-#define CALLING_OVERHEAD_IO_WRITE 0
-#define CALLING_OVERHEAD_IO_CONTROL 0
-#define CALLING_OVERHEAD_FATAL_ERROR_OCCURRED 0
-#define CALLING_OVERHEAD_RATE_MONOTONIC_CREATE 0
-#define CALLING_OVERHEAD_RATE_MONOTONIC_IDENT 0
-#define CALLING_OVERHEAD_RATE_MONOTONIC_DELETE 0
-#define CALLING_OVERHEAD_RATE_MONOTONIC_CANCEL 0
-#define CALLING_OVERHEAD_RATE_MONOTONIC_PERIOD 0
-#define CALLING_OVERHEAD_MULTIPROCESSING_ANNOUNCE 0
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-/* end of include file */
diff --git a/c/src/lib/libbsp/powerpc/eth_comm/include/info.h b/c/src/lib/libbsp/powerpc/eth_comm/include/info.h
deleted file mode 100644
index 3dcc8e380c..0000000000
--- a/c/src/lib/libbsp/powerpc/eth_comm/include/info.h
+++ /dev/null
@@ -1,90 +0,0 @@
-/* info.h - Defines board info block structure and macros for
- * handling elements of struct for ethernet comm board
- *
- * Written by Jay Monkman 7/21/98
- * Copyright Frasca International, Inc 1998
- *
- * $Id$
- */
-
-#ifndef __info_h__
-#define __info_h__
-
-typedef struct BoardInfoBlock_ {
- uint16_t size; /* size of info block in bytes */
- uint8_t eth_id[6]; /* ethernet id of ethernet interface */
- uint32_t cpu_spd; /* cpu speed in Hz */
- uint32_t flash_size; /* size of flash memory in bytes */
- uint32_t ram_size; /* size of ram in bytes */
- uint32_t version; /* version of firmare (x.y format) */
- uint32_t if429; /* mask for arinc429 interface */
- uint32_t ifcsdb; /* mask for csdb interface */
- uint16_t if232; /* mask for rs232 interface */
- uint8_t ifcan; /* mask for canbus interface */
- uint8_t if568; /* mask for arinc568 interface */
- uint8_t fpn[16]; /* Frasca part number in ASCII */
- uint16_t rev; /* Board revision */
- uint32_t ip_num; /* Board IP number */
-
-} boardinfo_t;
-
-#define IFACE_ARINC429_TX0 0x00000001;
-#define IFACE_ARINC429_RX0 0x00000002;
-#define IFACE_ARINC429_TX1 0x00000004;
-#define IFACE_ARINC429_RX1 0x00000008;
-#define IFACE_ARINC429_TX2 0x00000010;
-#define IFACE_ARINC429_RX2 0x00000020;
-#define IFACE_ARINC429_TX3 0x00000040;
-#define IFACE_ARINC429_RX3 0x00000080;
-#define IFACE_ARINC429_TX4 0x00000100;
-#define IFACE_ARINC429_RX4 0x00000200;
-#define IFACE_ARINC429_TX5 0x00000400;
-#define IFACE_ARINC429_RX5 0x00000800;
-#define IFACE_ARINC429_TX6 0x00001000;
-#define IFACE_ARINC429_RX6 0x00002000;
-#define IFACE_ARINC429_TX7 0x00004000;
-#define IFACE_ARINC429_RX7 0x00008000;
-
-#define IFACE_ARINC568_TX0 0x0001;
-#define IFACE_ARINC568_RX0 0x0002;
-#define IFACE_ARINC568_TX1 0x0004;
-#define IFACE_ARINC568_RX1 0x0008;
-
-#define IFACE_CSDB_TX0 0x00000001;
-#define IFACE_CSDB_RX0 0x00000002;
-#define IFACE_CSDB_TX1 0x00000004;
-#define IFACE_CSDB_RX1 0x00000008;
-#define IFACE_CSDB_TX2 0x00000010;
-#define IFACE_CSDB_RX2 0x00000020;
-#define IFACE_CSDB_TX3 0x00000040;
-#define IFACE_CSDB_RX3 0x00000080;
-#define IFACE_CSDB_TX4 0x00000100;
-#define IFACE_CSDB_RX4 0x00000200;
-#define IFACE_CSDB_TX5 0x00000400;
-#define IFACE_CSDB_RX5 0x00000800;
-#define IFACE_CSDB_TX6 0x00001000;
-#define IFACE_CSDB_RX6 0x00002000;
-#define IFACE_CSDB_TX7 0x00004000;
-#define IFACE_CSDB_RX7 0x00008000;
-#define IFACE_CSDB_TX8 0x00010000;
-#define IFACE_CSDB_RX8 0x00020000;
-
-#define IFACE_CAN_TX0 0x0001;
-#define IFACE_CAN_RX0 0x0002;
-#define IFACE_CAN_TX1 0x0004;
-#define IFACE_CAN_RX1 0x0008;
-#define IFACE_CAN_TX2 0x0010;
-#define IFACE_CAN_RX2 0x0020;
-
-#define IFACE_RS232_TX0 0x0001;
-#define IFACE_RS232_RX0 0x0002;
-#define IFACE_RS232_TX1 0x0004;
-#define IFACE_RS232_RX1 0x0008;
-#define IFACE_RS232_TX2 0x0010;
-#define IFACE_RS232_RX2 0x0020;
-#define IFACE_RS232_TX3 0x0040;
-#define IFACE_RS232_RX3 0x0080;
-#define IFACE_RS232_TX4 0x0100;
-#define IFACE_RS232_RX4 0x0200;
-
-#endif /* __info_h__*/
diff --git a/c/src/lib/libbsp/powerpc/eth_comm/include/tm27.h b/c/src/lib/libbsp/powerpc/eth_comm/include/tm27.h
deleted file mode 100644
index 8c06f13a75..0000000000
--- a/c/src/lib/libbsp/powerpc/eth_comm/include/tm27.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * 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$
- */
-
-#ifndef _RTEMS_TMTEST27
-#error "This is an RTEMS internal file you must not include directly."
-#endif
-
-#ifndef __tm27_h
-#define __tm27_h
-
-/*
- * Stuff for Time Test 27
- */
-
-#define MUST_WAIT_FOR_INTERRUPT 0
-
-#define Install_tm27_vector( handler ) /* set_vector( (handler), PPC_IRQ_SCALL, 1 ) */
-
-#define Cause_tm27_intr() asm volatile ("sc")
-
-#define Clear_tm27_intr() /* empty */
-
-#define Lower_tm27_intr() /* empty */
-
-#endif
diff --git a/c/src/lib/libbsp/powerpc/eth_comm/irq/irq.c b/c/src/lib/libbsp/powerpc/eth_comm/irq/irq.c
deleted file mode 100644
index 9f4b5ce818..0000000000
--- a/c/src/lib/libbsp/powerpc/eth_comm/irq/irq.c
+++ /dev/null
@@ -1,502 +0,0 @@
-/*
- *
- * This file contains the implementation of the function described in irq.h
- *
- * Copyright (C) 1998, 1999 valette@crf.canon.fr
- *
- * The license and distribution terms for this file may be
- * found in found in the file LICENSE in this distribution or at
- * http://www.rtems.com/license/LICENSE.
- *
- * $Id$
- */
-
-#include <rtems/system.h>
-#include <bsp.h>
-#include <bsp/irq.h>
-#include <rtems/score/thread.h>
-#include <rtems/score/apiext.h>
-#include <libcpu/raw_exception.h>
-#include <bsp/vectors.h>
-#include <bsp/8xx_immap.h>
-#include <bsp/commproc.h>
-
-/*
- * default handler connected on each irq after bsp initialization
- */
-static rtems_irq_connect_data default_rtems_entry;
-
-/*
- * location used to store initial tables used for interrupt
- * management.
- */
-static rtems_irq_global_settings* internal_config;
-static rtems_irq_connect_data* rtems_hdl_tbl;
-
-/*
- * Check if symbolic IRQ name is an SIU IRQ
- */
-static inline int is_siu_irq(const rtems_irq_symbolic_name irqLine)
-{
- return (((int) irqLine <= BSP_SIU_IRQ_MAX_OFFSET) &
- ((int) irqLine >= BSP_SIU_IRQ_LOWEST_OFFSET)
- );
-}
-
-/*
- * Check if symbolic IRQ name is an CPM IRQ
- */
-static inline int is_cpm_irq(const rtems_irq_symbolic_name irqLine)
-{
- return (((int) irqLine <= BSP_CPM_IRQ_MAX_OFFSET) &
- ((int) irqLine >= BSP_CPM_IRQ_LOWEST_OFFSET)
- );
-}
-
-/*
- * Check if symbolic IRQ name is a Processor IRQ
- */
-static inline int is_processor_irq(const rtems_irq_symbolic_name irqLine)
-{
- return (((int) irqLine <= BSP_PROCESSOR_IRQ_MAX_OFFSET) &
- ((int) irqLine >= BSP_PROCESSOR_IRQ_LOWEST_OFFSET)
- );
-}
-
-/*
- * masks used to mask off the interrupts. For exmaple, for ILVL2, the
- * mask is used to mask off interrupts ILVL2, IRQ3, ILVL3, ... IRQ7
- * and ILVL7.
- *
- */
-const static unsigned int SIU_IvectMask[BSP_SIU_IRQ_NUMBER] =
-{
- /* IRQ0 ILVL0 IRQ1 ILVL1 */
- 0x00000000, 0x80000000, 0xC0000000, 0xE0000000,
-
- /* IRQ2 ILVL2 IRQ3 ILVL3 */
- 0xF0000000, 0xF8000000, 0xFC000000, 0xFE000000,
-
- /* IRQ4 ILVL4 IRQ5 ILVL5 */
- 0xFF000000, 0xFF800000, 0xFFC00000, 0xFFE00000,
-
- /* IRQ6 ILVL6 IRQ7 ILVL7 */
- 0xFFF00000, 0xFFF80000, 0xFFFC0000, 0xFFFE0000
-};
-
-/*
- * ------------------------ RTEMS Irq helper functions ----------------
- */
-
-/*
- * Caution : this function assumes the variable "internal_config"
- * is already set and that the tables it contains are still valid
- * and accessible.
- */
-static void compute_SIU_IvectMask_from_prio ()
-{
- /*
- * In theory this is feasible. No time to code it yet. See i386/shared/irq.c
- * for an example based on 8259 controller mask. The actual masks defined
- * correspond to the priorities defined for the SIU in irq_init.c.
- */
-}
-
-/*
- * This function check that the value given for the irq line
- * is valid.
- */
-
-static int isValidInterrupt(int irq)
-{
- if ( (irq < BSP_LOWEST_OFFSET) || (irq > BSP_MAX_OFFSET) || (irq == BSP_CPM_INTERRUPT) )
- return 0;
- return 1;
-}
-
-int BSP_irq_enable_at_cpm(const rtems_irq_symbolic_name irqLine)
-{
- int cpm_irq_index;
-
- if (!is_cpm_irq(irqLine))
- return 1;
-
- cpm_irq_index = ((int) (irqLine) - BSP_CPM_IRQ_LOWEST_OFFSET);
- ((volatile immap_t *)IMAP_ADDR)->im_cpic.cpic_cimr |= (1 << cpm_irq_index);
-
- return 0;
-}
-
-int BSP_irq_disable_at_cpm(const rtems_irq_symbolic_name irqLine)
-{
- int cpm_irq_index;
-
- if (!is_cpm_irq(irqLine))
- return 1;
-
- cpm_irq_index = ((int) (irqLine) - BSP_CPM_IRQ_LOWEST_OFFSET);
- ((volatile immap_t *)IMAP_ADDR)->im_cpic.cpic_cimr &= ~(1 << cpm_irq_index);
-
- return 0;
-}
-
-int BSP_irq_enabled_at_cpm(const rtems_irq_symbolic_name irqLine)
-{
- int cpm_irq_index;
-
- if (!is_cpm_irq(irqLine))
- return 0;
-
- cpm_irq_index = ((int) (irqLine) - BSP_CPM_IRQ_LOWEST_OFFSET);
- return (((volatile immap_t *)IMAP_ADDR)->im_cpic.cpic_cimr & (1 << cpm_irq_index));
-}
-
-int BSP_irq_enable_at_siu(const rtems_irq_symbolic_name irqLine)
-{
- int siu_irq_index;
-
- if (!is_siu_irq(irqLine))
- return 1;
-
- siu_irq_index = ((int) (irqLine) - BSP_SIU_IRQ_LOWEST_OFFSET);
- ppc_cached_irq_mask |= (1 << (31-siu_irq_index));
- ((volatile immap_t *)IMAP_ADDR)->im_siu_conf.sc_simask = ppc_cached_irq_mask;
-
- return 0;
-}
-
-int BSP_irq_disable_at_siu(const rtems_irq_symbolic_name irqLine)
-{
- int siu_irq_index;
-
- if (!is_siu_irq(irqLine))
- return 1;
-
- siu_irq_index = ((int) (irqLine) - BSP_SIU_IRQ_LOWEST_OFFSET);
- ppc_cached_irq_mask &= ~(1 << (31-siu_irq_index));
- ((volatile immap_t *)IMAP_ADDR)->im_siu_conf.sc_simask = ppc_cached_irq_mask;
-
- return 0;
-}
-
-int BSP_irq_enabled_at_siu (const rtems_irq_symbolic_name irqLine)
-{
- int siu_irq_index;
-
- if (!is_siu_irq(irqLine))
- return 0;
-
- siu_irq_index = ((int) (irqLine) - BSP_SIU_IRQ_LOWEST_OFFSET);
- return ppc_cached_irq_mask & (1 << (31-siu_irq_index));
-}
-
-/*
- * ------------------------ RTEMS Single Irq Handler Mngt Routines ----------------
- */
-
-int BSP_install_rtems_irq_handler (const rtems_irq_connect_data* irq)
-{
- unsigned int level;
-
- if (!isValidInterrupt(irq->name)) {
- return 0;
- }
- /*
- * Check if default handler is actually connected. If not issue an error.
- * You must first get the current handler via i386_get_current_idt_entry
- * and then disconnect it using i386_delete_idt_entry.
- * RATIONALE : to always have the same transition by forcing the user
- * to get the previous handler before accepting to disconnect.
- */
- if (rtems_hdl_tbl[irq->name].hdl != default_rtems_entry.hdl) {
- return 0;
- }
-
- _CPU_ISR_Disable(level);
-
- /*
- * store the data provided by user
- */
- rtems_hdl_tbl[irq->name] = *irq;
-
- if (is_cpm_irq(irq->name)) {
- /*
- * Enable interrupt at PIC level
- */
- BSP_irq_enable_at_cpm (irq->name);
- }
-
- if (is_siu_irq(irq->name)) {
- /*
- * Enable interrupt at SIU level
- */
- BSP_irq_enable_at_siu (irq->name);
- }
-
- if (is_processor_irq(irq->name)) {
- /*
- * Should Enable exception at processor level but not needed. Will restore
- * EE flags at the end of the routine anyway.
- */
- }
- /*
- * Enable interrupt on device
- */
- irq->on(irq);
-
- _CPU_ISR_Enable(level);
-
- return 1;
-}
-
-int BSP_get_current_rtems_irq_handler (rtems_irq_connect_data* irq)
-{
- if (!isValidInterrupt(irq->name)) {
- return 0;
- }
- *irq = rtems_hdl_tbl[irq->name];
- return 1;
-}
-
-int BSP_remove_rtems_irq_handler (const rtems_irq_connect_data* irq)
-{
- unsigned int level;
-
- if (!isValidInterrupt(irq->name)) {
- return 0;
- }
- /*
- * Check if default handler is actually connected. If not issue an error.
- * You must first get the current handler via i386_get_current_idt_entry
- * and then disconnect it using i386_delete_idt_entry.
- * RATIONALE : to always have the same transition by forcing the user
- * to get the previous handler before accepting to disconnect.
- */
- if (rtems_hdl_tbl[irq->name].hdl != irq->hdl) {
- return 0;
- }
- _CPU_ISR_Disable(level);
-
- if (is_cpm_irq(irq->name)) {
- /*
- * disable interrupt at PIC level
- */
- BSP_irq_disable_at_cpm (irq->name);
- }
- if (is_siu_irq(irq->name)) {
- /*
- * disable interrupt at OPENPIC level
- */
- BSP_irq_disable_at_siu (irq->name);
- }
- if (is_processor_irq(irq->name)) {
- /*
- * disable exception at processor level
- */
- }
-
- /*
- * Disable interrupt on device
- */
- irq->off(irq);
-
- /*
- * restore the default irq value
- */
- rtems_hdl_tbl[irq->name] = default_rtems_entry;
-
- _CPU_ISR_Enable(level);
-
- return 1;
-}
-
-/*
- * ------------------------ RTEMS Global Irq Handler Mngt Routines ----------------
- */
-
-int BSP_rtems_irq_mngt_set(rtems_irq_global_settings* config)
-{
- int i;
- unsigned int level;
- /*
- * Store various code accelerators
- */
- internal_config = config;
- default_rtems_entry = config->defaultEntry;
- rtems_hdl_tbl = config->irqHdlTbl;
-
- _CPU_ISR_Disable(level);
- /*
- * start with CPM IRQ
- */
- for (i=BSP_CPM_IRQ_LOWEST_OFFSET; i < BSP_CPM_IRQ_LOWEST_OFFSET + BSP_CPM_IRQ_NUMBER ; i++) {
- if (rtems_hdl_tbl[i].hdl != default_rtems_entry.hdl) {
- BSP_irq_enable_at_cpm (i);
- rtems_hdl_tbl[i].on(&rtems_hdl_tbl[i]);
- }
- else {
- rtems_hdl_tbl[i].off(&rtems_hdl_tbl[i]);
- BSP_irq_disable_at_cpm (i);
- }
- }
-
- /*
- * continue with PCI IRQ
- */
- /*
- * set up internal tables used by rtems interrupt prologue
- */
- compute_SIU_IvectMask_from_prio ();
-
- for (i=BSP_SIU_IRQ_LOWEST_OFFSET; i < BSP_SIU_IRQ_LOWEST_OFFSET + BSP_SIU_IRQ_NUMBER ; i++) {
- if (rtems_hdl_tbl[i].hdl != default_rtems_entry.hdl) {
- BSP_irq_enable_at_siu (i);
- rtems_hdl_tbl[i].on(&rtems_hdl_tbl[i]);
- }
- else {
- rtems_hdl_tbl[i].off(&rtems_hdl_tbl[i]);
- BSP_irq_disable_at_siu (i);
- }
- }
- /*
- * Must enable CPM interrupt on SIU. CPM on SIU Interrupt level has already been
- * set up in BSP_CPM_irq_init.
- */
- ((volatile immap_t *)IMAP_ADDR)->im_cpic.cpic_cicr |= CICR_IEN;
- BSP_irq_enable_at_siu (BSP_CPM_INTERRUPT);
- /*
- * finish with Processor exceptions handled like IRQ
- */
- for (i=BSP_PROCESSOR_IRQ_LOWEST_OFFSET; i < BSP_PROCESSOR_IRQ_LOWEST_OFFSET + BSP_PROCESSOR_IRQ_NUMBER; i++) {
- if (rtems_hdl_tbl[i].hdl != default_rtems_entry.hdl) {
- rtems_hdl_tbl[i].on(&rtems_hdl_tbl[i]);
- }
- else {
- rtems_hdl_tbl[i].off(&rtems_hdl_tbl[i]);
- }
- }
- _CPU_ISR_Enable(level);
- return 1;
-}
-
-int BSP_rtems_irq_mngt_get(rtems_irq_global_settings** config)
-{
- *config = internal_config;
- return 0;
-}
-
-#ifdef DISPATCH_HANDLER_STAT
-volatile unsigned int maxLoop = 0;
-#endif
-
-/*
- * High level IRQ handler called from shared_raw_irq_code_entry
- */
-void C_dispatch_irq_handler (CPU_Interrupt_frame *frame, unsigned int excNum)
-{
- register unsigned int irq;
- register unsigned cpmIntr; /* boolean */
- register unsigned oldMask; /* old siu pic masks */
- register unsigned msr;
- register unsigned new_msr;
-#ifdef DISPATCH_HANDLER_STAT
- unsigned loopCounter;
-#endif
- /*
- * Handle decrementer interrupt
- */
- if (excNum == ASM_DEC_VECTOR) {
- _CPU_MSR_GET(msr);
- new_msr = msr | MSR_EE;
- _CPU_MSR_SET(new_msr);
-
- rtems_hdl_tbl[BSP_DECREMENTER].hdl();
-
- _CPU_MSR_SET(msr);
- return;
- }
- /*
- * Handle external interrupt generated by SIU on PPC core
- */
-#ifdef DISPATCH_HANDLER_STAT
- loopCounter = 0;
-#endif
- while (1) {
- if ((ppc_cached_irq_mask & ((volatile immap_t *)IMAP_ADDR)->im_siu_conf.sc_sipend) == 0) {
-#ifdef DISPATCH_HANDLER_STAT
- if (loopCounter > maxLoop) maxLoop = loopCounter;
-#endif
- break;
- }
- irq = (((volatile immap_t *)IMAP_ADDR)->im_siu_conf.sc_sivec >> 26);
- cpmIntr = (irq == BSP_CPM_INTERRUPT);
- /*
- * Disable the interrupt of the same and lower priority.
- */
- oldMask = ppc_cached_irq_mask;
- ppc_cached_irq_mask = oldMask & SIU_IvectMask[irq];
- ((volatile immap_t *)IMAP_ADDR)->im_siu_conf.sc_simask = ppc_cached_irq_mask;
- /*
- * Acknowledge current interrupt. This has no effect on internal level interrupt.
- */
- ((volatile immap_t *)IMAP_ADDR)->im_siu_conf.sc_sipend = (1 << (31 - irq));
-
- if (cpmIntr) {
- /*
- * We will reenable the SIU CPM interrupt to allow nesting of CPM interrupt.
- * We must before acknowledege the current irq at CPM level to avoid trigerring
- * the interrupt again.
- */
- /*
- * Acknowledge and get the vector.
- */
- ((volatile immap_t *)IMAP_ADDR)->im_cpic.cpic_civr = 1;
- irq = (((volatile immap_t *)IMAP_ADDR)->im_cpic.cpic_civr >> 11);
- /*
- * transform IRQ to normalized irq table index.
- */
- irq += BSP_CPM_IRQ_LOWEST_OFFSET;
- /*
- * Unmask CPM interrupt at SIU level
- */
- ppc_cached_irq_mask |= (1 << (31 - BSP_CPM_INTERRUPT));
- ((volatile immap_t *)IMAP_ADDR)->im_siu_conf.sc_simask = ppc_cached_irq_mask;
- }
- _CPU_MSR_GET(msr);
- new_msr = msr | MSR_EE;
- _CPU_MSR_SET(new_msr);
-
- rtems_hdl_tbl[irq].hdl();
-
- _CPU_MSR_SET(msr);
-
- if (cpmIntr) {
- irq -= BSP_CPM_IRQ_LOWEST_OFFSET;
- ((volatile immap_t *)IMAP_ADDR)->im_cpic.cpic_cisr = (1 << irq);
- }
- ppc_cached_irq_mask |= (oldMask & ~(SIU_IvectMask[irq]));
- ((volatile immap_t *)IMAP_ADDR)->im_siu_conf.sc_simask = ppc_cached_irq_mask;
-#ifdef DISPATCH_HANDLER_STAT
- ++ loopCounter;
-#endif
- }
-}
-
-void _ThreadProcessSignalsFromIrq (BSP_Exception_frame* ctx)
-{
- /*
- * Process pending signals that have not already been
- * processed by _Thread_Displatch. This happens quite
- * unfrequently : the ISR must have posted an action
- * to the current running thread.
- */
- if ( _Thread_Do_post_task_switch_extension ||
- _Thread_Executing->do_post_task_switch_extension ) {
- _Thread_Executing->do_post_task_switch_extension = FALSE;
- _API_extensions_Run_postswitch();
- }
- /*
- * I plan to process other thread related events here.
- * This will include DEBUG session requested from keyboard...
- */
-}
diff --git a/c/src/lib/libbsp/powerpc/eth_comm/irq/irq.h b/c/src/lib/libbsp/powerpc/eth_comm/irq/irq.h
deleted file mode 100644
index daa6290878..0000000000
--- a/c/src/lib/libbsp/powerpc/eth_comm/irq/irq.h
+++ /dev/null
@@ -1,335 +0,0 @@
-/* irq.h
- *
- * This include file describe the data structure and the functions implemented
- * by rtems to write interrupt handlers.
- *
- * CopyRight (C) 1999 valette@crf.canon.fr
- *
- * This code is heavilly inspired by the public specification of STREAM V2
- * that can be found at :
- *
- * <http://www.chorus.com/Documentation/index.html> by following
- * the STREAM API Specification Document link.
- *
- * The license and distribution terms for this file may be
- * found in found in the file LICENSE in this distribution or at
- * http://www.rtems.com/license/LICENSE.
- *
- * $Id$
- */
-
-#ifndef LIBBSP_POWERPC_ETH_COMM_IRQ_IRQ_H
-#define LIBBSP_POWERPC_ETH_COMM_IRQ_IRQ_H
-
-#define BSP_ASM_IRQ_VECTOR_BASE 0x0
-
-#ifndef ASM
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-extern volatile unsigned int ppc_cached_irq_mask;
-
-/*
- * Symblolic IRQ names and related definitions.
- */
-
-typedef enum {
- /* Base vector for our SIU IRQ handlers. */
- BSP_SIU_VECTOR_BASE = BSP_ASM_IRQ_VECTOR_BASE,
- /*
- * SIU IRQ handler related definitions
- */
- BSP_SIU_IRQ_NUMBER = 16, /* 16 reserved but in the future... */
- BSP_SIU_IRQ_LOWEST_OFFSET = 0,
- BSP_SIU_IRQ_MAX_OFFSET = BSP_SIU_IRQ_LOWEST_OFFSET + BSP_SIU_IRQ_NUMBER - 1,
- /*
- * CPM IRQ handlers related definitions
- * CAUTION : BSP_CPM_IRQ_LOWEST_OFFSET should be equal to OPENPIC_VEC_SOURCE
- */
- BSP_CPM_IRQ_NUMBER = 32,
- BSP_CPM_IRQ_LOWEST_OFFSET = BSP_SIU_IRQ_NUMBER + BSP_SIU_VECTOR_BASE,
- BSP_CPM_IRQ_MAX_OFFSET = BSP_CPM_IRQ_LOWEST_OFFSET + BSP_CPM_IRQ_NUMBER - 1,
- /*
- * PowerPc exceptions handled as interrupt where a rtems managed interrupt
- * handler might be connected
- */
- BSP_PROCESSOR_IRQ_NUMBER = 1,
- BSP_PROCESSOR_IRQ_LOWEST_OFFSET = BSP_CPM_IRQ_MAX_OFFSET + 1,
- BSP_PROCESSOR_IRQ_MAX_OFFSET = BSP_PROCESSOR_IRQ_LOWEST_OFFSET + BSP_PROCESSOR_IRQ_NUMBER - 1,
- /*
- * Summary
- */
- BSP_IRQ_NUMBER = BSP_PROCESSOR_IRQ_MAX_OFFSET + 1,
- BSP_LOWEST_OFFSET = BSP_SIU_IRQ_LOWEST_OFFSET,
- BSP_MAX_OFFSET = BSP_PROCESSOR_IRQ_MAX_OFFSET,
- /*
- * Some SIU IRQ symbolic name definition. Please note that
- * INT IRQ are defined but a single one will be used to
- * redirect all CPM interrupt.
- */
- BSP_SIU_EXT_IRQ_0 = 0,
- BSP_SIU_INT_IRQ_0 = 1,
-
- BSP_SIU_EXT_IRQ_1 = 2,
- BSP_SIU_INT_IRQ_1 = 3,
-
- BSP_SIU_EXT_IRQ_2 = 4,
- BSP_SIU_INT_IRQ_2 = 5,
-
- BSP_SIU_EXT_IRQ_3 = 6,
- BSP_SIU_INT_IRQ_3 = 7,
-
- BSP_SIU_EXT_IRQ_4 = 8,
- BSP_SIU_INT_IRQ_4 = 9,
-
- BSP_SIU_EXT_IRQ_5 = 10,
- BSP_SIU_INT_IRQ_5 = 11,
-
- BSP_SIU_EXT_IRQ_6 = 12,
- BSP_SIU_INT_IRQ_6 = 13,
-
- BSP_SIU_EXT_IRQ_7 = 14,
- BSP_SIU_INT_IRQ_7 = 15,
- /*
- * Symbolic name for CPM interrupt on SIU Internal level 2
- */
- BSP_CPM_INTERRUPT = BSP_SIU_INT_IRQ_2,
- BSP_PERIODIC_TIMER = BSP_SIU_INT_IRQ_6,
- BSP_FAST_ETHERNET_CTRL = BSP_SIU_INT_IRQ_3,
- /*
- * Some CPM IRQ symbolic name definition
- */
- BSP_CPM_IRQ_ERROR = BSP_CPM_IRQ_LOWEST_OFFSET,
- BSP_CPM_IRQ_PARALLEL_IO_PC4 = BSP_CPM_IRQ_LOWEST_OFFSET + 1,
- BSP_CPM_IRQ_PARALLEL_IO_PC5 = BSP_CPM_IRQ_LOWEST_OFFSET + 2,
- BSP_CPM_IRQ_SMC2_OR_PIP = BSP_CPM_IRQ_LOWEST_OFFSET + 3,
- BSP_CPM_IRQ_SMC1 = BSP_CPM_IRQ_LOWEST_OFFSET + 4,
- BSP_CPM_IRQ_SPI = BSP_CPM_IRQ_LOWEST_OFFSET + 5,
- BSP_CPM_IRQ_PARALLEL_IO_PC6 = BSP_CPM_IRQ_LOWEST_OFFSET + 6,
- BSP_CPM_IRQ_TIMER_4 = BSP_CPM_IRQ_LOWEST_OFFSET + 7,
-
- BSP_CPM_IRQ_PARALLEL_IO_PC7 = BSP_CPM_IRQ_LOWEST_OFFSET + 9,
- BSP_CPM_IRQ_PARALLEL_IO_PC8 = BSP_CPM_IRQ_LOWEST_OFFSET + 10,
- BSP_CPM_IRQ_PARALLEL_IO_PC9 = BSP_CPM_IRQ_LOWEST_OFFSET + 11,
- BSP_CPM_IRQ_TIMER_3 = BSP_CPM_IRQ_LOWEST_OFFSET + 12,
-
- BSP_CPM_IRQ_PARALLEL_IO_PC10 = BSP_CPM_IRQ_LOWEST_OFFSET + 14,
- BSP_CPM_IRQ_PARALLEL_IO_PC11 = BSP_CPM_IRQ_LOWEST_OFFSET + 15,
- BSP_CPM_I2C = BSP_CPM_IRQ_LOWEST_OFFSET + 16,
- BSP_CPM_RISC_TIMER_TABLE = BSP_CPM_IRQ_LOWEST_OFFSET + 17,
- BSP_CPM_IRQ_TIMER_2 = BSP_CPM_IRQ_LOWEST_OFFSET + 18,
-
- BSP_CPM_IDMA2 = BSP_CPM_IRQ_LOWEST_OFFSET + 20,
- BSP_CPM_IDMA1 = BSP_CPM_IRQ_LOWEST_OFFSET + 21,
- BSP_CPM_SDMA_CHANNEL_BUS_ERR = BSP_CPM_IRQ_LOWEST_OFFSET + 22,
- BSP_CPM_IRQ_PARALLEL_IO_PC12 = BSP_CPM_IRQ_LOWEST_OFFSET + 23,
- BSP_CPM_IRQ_PARALLEL_IO_PC13 = BSP_CPM_IRQ_LOWEST_OFFSET + 24,
- BSP_CPM_IRQ_TIMER_1 = BSP_CPM_IRQ_LOWEST_OFFSET + 25,
- BSP_CPM_IRQ_PARALLEL_IO_PC14 = BSP_CPM_IRQ_LOWEST_OFFSET + 26,
- BSP_CPM_IRQ_SCC4 = BSP_CPM_IRQ_LOWEST_OFFSET + 27,
- BSP_CPM_IRQ_SCC3 = BSP_CPM_IRQ_LOWEST_OFFSET + 28,
- BSP_CPM_IRQ_SCC2 = BSP_CPM_IRQ_LOWEST_OFFSET + 29,
- BSP_CPM_IRQ_SCC1 = BSP_CPM_IRQ_LOWEST_OFFSET + 30,
- BSP_CPM_IRQ_PARALLEL_IO_PC15 = BSP_CPM_IRQ_LOWEST_OFFSET + 31,
- /*
- * Some Processor exception handled as rtems IRQ symbolic name definition
- */
- BSP_DECREMENTER = BSP_PROCESSOR_IRQ_LOWEST_OFFSET
-
-}rtems_irq_symbolic_name;
-
-#define CPM_INTERRUPT
-
-/*
- * Type definition for RTEMS managed interrupts
- */
-typedef unsigned char rtems_irq_prio;
-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__*);
-
-typedef struct __rtems_irq_connect_data__ {
- /*
- * IRQ line
- */
- rtems_irq_symbolic_name name;
- /*
- * handler. See comment on handler properties below in function prototype.
- */
- rtems_irq_hdl hdl;
- /*
- * function for enabling interrupts at device level (ONLY!).
- * The BSP code will automatically enable it at SIU level and CPM level.
- * RATIONALE : anyway such code has to exist in current driver code.
- * It is usually called immediately AFTER connecting the interrupt handler.
- * RTEMS may well need such a function when restoring normal interrupt
- * processing after a debug session.
- *
- */
- rtems_irq_enable on;
- /*
- * function for disabling interrupts at device level (ONLY!).
- * The code will disable it at SIU and CPM level. RATIONALE : anyway
- * such code has to exist for clean shutdown. It is usually called
- * BEFORE disconnecting the interrupt. RTEMS may well need such
- * a function when disabling normal interrupt processing for
- * a debug session. May well be a NOP function.
- */
- rtems_irq_disable off;
- /*
- * function enabling to know what interrupt may currently occur
- * if someone manipulates the i8259s interrupt mask without care...
- */
- rtems_irq_is_enabled isOn;
-}rtems_irq_connect_data;
-
-typedef struct {
- /*
- * size of all the table fields (*Tbl) described below.
- */
- unsigned int irqNb;
- /*
- * Default handler used when disconnecting interrupts.
- */
- rtems_irq_connect_data defaultEntry;
- /*
- * Table containing initials/current value.
- */
- rtems_irq_connect_data* irqHdlTbl;
- /*
- * actual value of BSP_SIU_IRQ_VECTOR_BASE...
- */
- rtems_irq_symbolic_name irqBase;
- /*
- * software priorities associated with interrupts.
- * if irqPrio [i] > intrPrio [j] it means that
- * interrupt handler hdl connected for interrupt name i
- * will not be interrupted by the handler connected for interrupt j
- * The interrupt source will be physically masked at i8259 level.
- */
- rtems_irq_prio* irqPrioTbl;
-}rtems_irq_global_settings;
-
-/*-------------------------------------------------------------------------+
-| Function Prototypes.
-+--------------------------------------------------------------------------*/
-/*
- * ------------------------ PPC SIU Mngt Routines -------
- */
-
-/*
- * function to disable a particular irq at 8259 level. After calling
- * this function, even if the device asserts the interrupt line it will
- * not be propagated further to the processor
- */
-int BSP_irq_disable_at_siu (const rtems_irq_symbolic_name irqLine);
-/*
- * function to enable a particular irq at 8259 level. After calling
- * this function, if the device asserts the interrupt line it will
- * be propagated further to the processor
- */
-int BSP_irq_enable_at_siu (const rtems_irq_symbolic_name irqLine);
-/*
- * function to acknoledge a particular irq at 8259 level. After calling
- * this function, if a device asserts an enabled interrupt line it will
- * be propagated further to the processor. Mainly usefull for people
- * writting raw handlers as this is automagically done for rtems managed
- * handlers.
- */
-int BSP_irq_ack_at_siu (const rtems_irq_symbolic_name irqLine);
-/*
- * function to check if a particular irq is enabled at 8259 level. After calling
- */
-int BSP_irq_enabled_at_siu (const rtems_irq_symbolic_name irqLine);
-/*
- * ------------------------ RTEMS Single Irq Handler Mngt Routines ----------------
- */
-/*
- * function to connect a particular irq handler. This hanlder will NOT be called
- * directly as the result of the corresponding interrupt. Instead, a RTEMS
- * irq prologue will be called that will :
- *
- * 1) save the C scratch registers,
- * 2) switch to a interrupt stack if the interrupt is not nested,
- * 4) modify them to disable the current interrupt at SIU level (and may
- * be others depending on software priorities)
- * 5) aknowledge the SIU',
- * 6) demask the processor,
- * 7) call the application handler
- *
- * As a result the hdl function provided
- *
- * a) can perfectly be written is C,
- * b) may also well directly call the part of the RTEMS API that can be used
- * from interrupt level,
- * c) It only responsible for handling the jobs that need to be done at
- * the device level including (aknowledging/re-enabling the interrupt at device,
- * level, getting the data,...)
- *
- * When returning from the function, the following will be performed by
- * the RTEMS irq epilogue :
- *
- * 1) masks the interrupts again,
- * 2) restore the original SIU interrupt masks
- * 3) switch back on the orinal stack if needed,
- * 4) perform rescheduling when necessary,
- * 5) restore the C scratch registers...
- * 6) restore initial execution flow
- *
- */
-int BSP_install_rtems_irq_handler (const rtems_irq_connect_data*);
-/*
- * function to get the current RTEMS irq handler for ptr->name. It enables to
- * define hanlder chain...
- */
-int BSP_get_current_rtems_irq_handler (rtems_irq_connect_data* ptr);
-/*
- * function to get disconnect the RTEMS irq handler for ptr->name.
- * This function checks that the value given is the current one for safety reason.
- * The user can use the previous function to get it.
- */
-int BSP_remove_rtems_irq_handler (const rtems_irq_connect_data*);
-
-/*
- * ------------------------ RTEMS Global Irq Handler Mngt Routines ----------------
- */
-/*
- * (Re) Initialize the RTEMS interrupt management.
- *
- * The result of calling this function will be the same as if each individual
- * handler (config->irqHdlTbl[i].hdl) different from "config->defaultEntry.hdl"
- * has been individualy connected via
- * BSP_install_rtems_irq_handler(&config->irqHdlTbl[i])
- * And each handler currently equal to config->defaultEntry.hdl
- * has been previously disconnected via
- * BSP_remove_rtems_irq_handler (&config->irqHdlTbl[i])
- *
- * This is to say that all information given will be used and not just
- * only the space.
- *
- * CAUTION : the various table address contained in config will be used
- * directly by the interrupt mangement code in order to save
- * data size so they must stay valid after the call => they should
- * not be modified or declared on a stack.
- */
-
-int BSP_rtems_irq_mngt_set(rtems_irq_global_settings* config);
-/*
- * (Re) get info on current RTEMS interrupt management.
- */
-int BSP_rtems_irq_mngt_get(rtems_irq_global_settings**);
-
-extern void BSP_rtems_irq_mng_init(unsigned cpuId);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-#endif
diff --git a/c/src/lib/libbsp/powerpc/eth_comm/irq/irq_asm.S b/c/src/lib/libbsp/powerpc/eth_comm/irq/irq_asm.S
deleted file mode 100644
index 0f08a13434..0000000000
--- a/c/src/lib/libbsp/powerpc/eth_comm/irq/irq_asm.S
+++ /dev/null
@@ -1,351 +0,0 @@
-/*
- * This file contains the assembly code for the PowerPC
- * IRQ veneers for RTEMS.
- *
- * The license and distribution terms for this file may be
- * found in found in the file LICENSE in this distribution or at
- * http://www.rtems.com/license/LICENSE.
- *
- * Modified to support the MCP750.
- * Modifications Copyright (C) 1999 Eric Valette. valette@crf.canon.fr
- *
- * Till Straumann <strauman@slac.stanford.edu>, 2003/7:
- * - store isr nesting level in _ISR_Nest_level rather than
- * SPRG0 - RTEMS relies on that variable.
- *
- * $Id$
- */
-
-#include <rtems/asm.h>
-#include <rtems/score/cpu.h>
-#include <bsp/vectors.h>
-#include <libcpu/raw_exception.h>
-
-#define SYNC \
- sync; \
- isync
-
- .text
- .p2align 5
-
- PUBLIC_VAR(decrementer_exception_vector_prolog_code)
-
-SYM (decrementer_exception_vector_prolog_code):
- /*
- * let room for exception frame
- */
- stwu r1, - (EXCEPTION_FRAME_END)(r1)
- stw r4, GPR4_OFFSET(r1)
- li r4, ASM_DEC_VECTOR
- ba shared_raw_irq_code_entry
-
- PUBLIC_VAR (decrementer_exception_vector_prolog_code_size)
-
- decrementer_exception_vector_prolog_code_size = . - decrementer_exception_vector_prolog_code
-
- PUBLIC_VAR(external_exception_vector_prolog_code)
-
-SYM (external_exception_vector_prolog_code):
- /*
- * let room for exception frame
- */
- stwu r1, - (EXCEPTION_FRAME_END)(r1)
- stw r4, GPR4_OFFSET(r1)
- li r4, ASM_EXT_VECTOR
- ba shared_raw_irq_code_entry
-
- PUBLIC_VAR (external_exception_vector_prolog_code_size)
-
- external_exception_vector_prolog_code_size = . - external_exception_vector_prolog_code
-
- PUBLIC_VAR(shared_raw_irq_code_entry)
- PUBLIC_VAR(C_dispatch_irq_handler)
-
- .p2align 5
-SYM (shared_raw_irq_code_entry):
- /*
- * Entry conditions :
- * Registers already saved : R1, R4
- * R1 : points to a location with enough room for the
- * interrupt frame
- * R4 : vector number
- */
- /*
- * Save SRR0/SRR1 As soon As possible as it is the minimal needed
- * to reenable exception processing
- */
- stw r0, GPR0_OFFSET(r1)
- stw r2, GPR2_OFFSET(r1)
- stw r3, GPR3_OFFSET(r1)
-
- mfsrr0 r0
- mfsrr1 r2
- mfmsr r3
-
- stw r0, SRR0_FRAME_OFFSET(r1)
- stw r2, SRR1_FRAME_OFFSET(r1)
- /*
- * Enable data and instruction address translation, exception recovery
- *
- * also, on CPUs with FP, enable FP so that FP context can be
- * saved and restored (using FP instructions)
- */
-#if (PPC_HAS_FPU == 0)
- ori r3, r3, MSR_RI | MSR_IR | MSR_DR
-#else
- ori r3, r3, MSR_RI | MSR_IR | MSR_DR | MSR_FP
-#endif
- mtmsr r3
- SYNC
- /*
- * Push C scratch registers on the current stack. It may
- * actually be the thread stack or the interrupt stack.
- * Anyway we have to make it in order to be able to call C/C++
- * functions. Depending on the nesting interrupt level, we will
- * switch to the right stack later.
- */
- stw r5, GPR5_OFFSET(r1)
- stw r6, GPR6_OFFSET(r1)
- stw r7, GPR7_OFFSET(r1)
- stw r8, GPR8_OFFSET(r1)
- stw r9, GPR9_OFFSET(r1)
- stw r10, GPR10_OFFSET(r1)
- stw r11, GPR11_OFFSET(r1)
- stw r12, GPR12_OFFSET(r1)
- stw r13, GPR13_OFFSET(r1)
-
- mfcr r5
- mfctr r6
- mfxer r7
- mflr r8
-
- stw r5, EXC_CR_OFFSET(r1)
- stw r6, EXC_CTR_OFFSET(r1)
- stw r7, EXC_XER_OFFSET(r1)
- stw r8, EXC_LR_OFFSET(r1)
-
- /*
- * Add some non volatile registers to store information
- * that will be used when returning from C handler
- */
- stw r14, GPR14_OFFSET(r1)
- stw r15, GPR15_OFFSET(r1)
- /*
- * save current stack pointer location in R14
- */
- addi r14, r1, 0
- /*
- * store part of _Thread_Dispatch_disable_level address in R15
- */
- addis r15,0, _Thread_Dispatch_disable_level@ha
-#if BROKEN_ISR_NEST_LEVEL
- /*
- * Get current nesting level in R2
- */
- mfspr r2, SPRG0
-#else
- /*
- * Retrieve current nesting level from _ISR_Nest_level
- */
- lis r7, _ISR_Nest_level@ha
- lwz r2, _ISR_Nest_level@l(r7)
-#endif
- /*
- * Check if stack switch is necessary
- */
- cmpwi r2,0
- bne nested
- mfspr r1, SPRG1
-
-nested:
- /*
- * Start Incrementing nesting level in R2
- */
- addi r2,r2,1
- /*
- * Start Incrementing _Thread_Dispatch_disable_level R4 = _Thread_Dispatch_disable_level
- */
- lwz r6,_Thread_Dispatch_disable_level@l(r15)
-#if BROKEN_ISR_NEST_LEVEL
- /*
- * Store new nesting level in SPRG0
- */
- mtspr SPRG0, r2
-#else
- /* store new nesting level in _ISR_Nest_level */
- stw r2, _ISR_Nest_level@l(r7)
-#endif
-
- addi r6, r6, 1
- mfmsr r5
- /*
- * store new _Thread_Dispatch_disable_level value
- */
- stw r6, _Thread_Dispatch_disable_level@l(r15)
- /*
- * We are now running on the interrupt stack. External and decrementer
- * exceptions are still disabled. I see no purpose trying to optimize
- * further assembler code.
- */
- /*
- * Call C exception handler for decrementer Interrupt frame is passed just
- * in case...
- */
- addi r3, r14, 0x8
- bl C_dispatch_irq_handler /* C_dispatch_irq_handler(cpu_interrupt_frame* r3, vector r4) */
- /*
- * start decrementing nesting level. Note : do not test result against 0
- * value as an easy exit condition because if interrupt nesting level > 1
- * then _Thread_Dispatch_disable_level > 1
- */
-#if BROKEN_ISR_NEST_LEVEL
- mfspr r2, SPRG0
-#else
- lis r7, _ISR_Nest_level@ha
- lwz r2, _ISR_Nest_level@l(r7)
-#endif
- /*
- * start decrementing _Thread_Dispatch_disable_level
- */
- lwz r3,_Thread_Dispatch_disable_level@l(r15)
- addi r2, r2, -1 /* Continue decrementing nesting level */
- addi r3, r3, -1 /* Continue decrementing _Thread_Dispatch_disable_level */
-#if BROKEN_ISR_NEST_LEVEL
- mtspr SPRG0, r2 /* End decrementing nesting level */
-#else
- stw r2, _ISR_Nest_level@l(r7) /* End decrementing nesting level */
-#endif
- stw r3,_Thread_Dispatch_disable_level@l(r15) /* End decrementing _Thread_Dispatch_disable_level */
- cmpwi r3, 0
- /*
- * switch back to original stack (done here just optimize registers
- * contention. Could have been done before...)
- */
- addi r1, r14, 0
- bne easy_exit /* if (_Thread_Dispatch_disable_level != 0) goto easy_exit */
- /*
- * Here we are running again on the thread system stack.
- * We have interrupt nesting level = _Thread_Dispatch_disable_level = 0.
- * Interrupt are still disabled. Time to check if scheduler request to
- * do something with the current thread...
- */
- addis r4, 0, _Context_Switch_necessary@ha
- lwz r5, _Context_Switch_necessary@l(r4)
- cmpwi r5, 0
- bne switch
-
- addis r6, 0, _ISR_Signals_to_thread_executing@ha
- lwz r7, _ISR_Signals_to_thread_executing@l(r6)
- cmpwi r7, 0
- li r8, 0
- beq easy_exit
- stw r8, _ISR_Signals_to_thread_executing@l(r6)
- /*
- * going to call _ThreadProcessSignalsFromIrq
- * Push a complete exception like frame...
- */
- stmw r16, GPR16_OFFSET(r1)
- addi r3, r1, 0x8
- /*
- * compute SP at exception entry
- */
- addi r2, r1, EXCEPTION_FRAME_END
- /*
- * store it at the right place
- */
- stw r2, GPR1_OFFSET(r1)
- /*
- * Call High Level signal handling code
- */
- bl _ThreadProcessSignalsFromIrq
- /*
- * start restoring exception like frame
- */
- lwz r31, EXC_CTR_OFFSET(r1)
- lwz r30, EXC_XER_OFFSET(r1)
- lwz r29, EXC_CR_OFFSET(r1)
- lwz r28, EXC_LR_OFFSET(r1)
-
- mtctr r31
- mtxer r30
- mtcr r29
- mtlr r28
-
- lmw r4, GPR4_OFFSET(r1)
- lwz r2, GPR2_OFFSET(r1)
- lwz r0, GPR0_OFFSET(r1)
-
- /*
- * Disable data and instruction translation. Make path non recoverable...
- */
- mfmsr r3
- xori r3, r3, MSR_RI | MSR_IR | MSR_DR
- mtmsr r3
- SYNC
- /*
- * Restore rfi related settings
- */
-
- lwz r3, SRR1_FRAME_OFFSET(r1)
- mtsrr1 r3
- lwz r3, SRR0_FRAME_OFFSET(r1)
- mtsrr0 r3
-
- lwz r3, GPR3_OFFSET(r1)
- addi r1,r1, EXCEPTION_FRAME_END
- SYNC
- rfi
-
-switch:
- bl SYM (_Thread_Dispatch)
-
-easy_exit:
- /*
- * start restoring interrupt frame
- */
- lwz r3, EXC_CTR_OFFSET(r1)
- lwz r4, EXC_XER_OFFSET(r1)
- lwz r5, EXC_CR_OFFSET(r1)
- lwz r6, EXC_LR_OFFSET(r1)
-
- mtctr r3
- mtxer r4
- mtcr r5
- mtlr r6
-
- lwz r15, GPR15_OFFSET(r1)
- lwz r14, GPR14_OFFSET(r1)
- lwz r13, GPR13_OFFSET(r1)
- lwz r12, GPR12_OFFSET(r1)
- lwz r11, GPR11_OFFSET(r1)
- lwz r10, GPR10_OFFSET(r1)
- lwz r9, GPR9_OFFSET(r1)
- lwz r8, GPR8_OFFSET(r1)
- lwz r7, GPR7_OFFSET(r1)
- lwz r6, GPR6_OFFSET(r1)
- lwz r5, GPR5_OFFSET(r1)
-
- /*
- * Disable nested exception processing, data and instruction
- * translation.
- */
- mfmsr r3
- xori r3, r3, MSR_RI | MSR_IR | MSR_DR
- mtmsr r3
- SYNC
- /*
- * Restore rfi related settings
- */
-
- lwz r4, SRR1_FRAME_OFFSET(r1)
- lwz r2, SRR0_FRAME_OFFSET(r1)
- lwz r3, GPR3_OFFSET(r1)
- lwz r0, GPR0_OFFSET(r1)
-
- mtsrr1 r4
- mtsrr0 r2
- lwz r4, GPR4_OFFSET(r1)
- lwz r2, GPR2_OFFSET(r1)
- addi r1,r1, EXCEPTION_FRAME_END
- SYNC
- rfi
diff --git a/c/src/lib/libbsp/powerpc/eth_comm/irq/irq_init.c b/c/src/lib/libbsp/powerpc/eth_comm/irq/irq_init.c
deleted file mode 100644
index 53a8fb8975..0000000000
--- a/c/src/lib/libbsp/powerpc/eth_comm/irq/irq_init.c
+++ /dev/null
@@ -1,160 +0,0 @@
-/* irq_init.c
- *
- * This file contains the implementation of rtems initialization
- * related to interrupt handling.
- *
- * CopyRight (C) 2001 valette@crf.canon.fr
- *
- * 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$
- */
-#include <bsp/irq.h>
-#include <bsp.h>
-#include <libcpu/raw_exception.h>
-#include <bsp/8xx_immap.h>
-#include <bsp/commproc.h>
-
-extern unsigned int external_exception_vector_prolog_code_size;
-extern void external_exception_vector_prolog_code();
-extern unsigned int decrementer_exception_vector_prolog_code_size;
-extern void decrementer_exception_vector_prolog_code();
-
-volatile unsigned int ppc_cached_irq_mask;
-
-/*
- * default on/off function
- */
-static void nop_func(){}
-/*
- * default isOn function
- */
-static int not_connected() {return 0;}
-/*
- * default possible isOn function
- */
-static int connected() {return 1;}
-
-static rtems_irq_connect_data rtemsIrq[BSP_IRQ_NUMBER];
-static rtems_irq_global_settings initial_config;
-static rtems_irq_connect_data defaultIrq = {
- /* vectorIdex, hdl , on , off , isOn */
- 0, nop_func , nop_func , nop_func , not_connected
-};
-static rtems_irq_prio irqPrioTable[BSP_IRQ_NUMBER]={
- /*
- * actual rpiorities for interrupt :
- * 0 means that only current interrupt is masked
- * 255 means all other interrupts are masked
- */
- /*
- * SIU interrupts.
- */
- 7,7, 6,6, 5,5, 4,4, 3,3, 2,2, 1,1, 0,0,
- /*
- * CPM Interrupts
- */
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
- 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
- /*
- * Processor exceptions handled as interrupts
- */
- 0
-};
-
-void BSP_SIU_irq_init()
-{
- /*
- * In theory we should initialize two registers at least :
- * SIMASK, SIEL. SIMASK is reset at 0 value meaning no interrupt. But
- * we should take care that a monitor may have restoreed to another value.
- * If someone find a reasonnable value for SIEL, AND THE NEED TO CHANGE IT
- * please feel free to add it here.
- */
- ((volatile immap_t *)IMAP_ADDR)->im_siu_conf.sc_simask = 0;
- ((volatile immap_t *)IMAP_ADDR)->im_siu_conf.sc_sipend = 0xffff0000;
- ppc_cached_irq_mask = 0;
- ((volatile immap_t *)IMAP_ADDR)->im_siu_conf.sc_siel = ((volatile immap_t *)IMAP_ADDR)->im_siu_conf.sc_siel;
-}
-
-/*
- * Initialize CPM interrupt management
- */
-void
-BSP_CPM_irq_init(void)
-{
- /*
- * Initialize the CPM interrupt controller.
- */
- ((volatile immap_t *)IMAP_ADDR)->im_cpic.cpic_cicr =
-#ifdef mpc860
- (CICR_SCD_SCC4 | CICR_SCC_SCC3 | CICR_SCB_SCC2 | CICR_SCA_SCC1) |
-#else
- (CICR_SCB_SCC2 | CICR_SCA_SCC1) |
-#endif
- ((BSP_CPM_INTERRUPT/2) << 13) | CICR_HP_MASK;
- ((volatile immap_t *)IMAP_ADDR)->im_cpic.cpic_cimr = 0;
-
- ((volatile immap_t *)IMAP_ADDR)->im_cpic.cpic_cicr |= CICR_IEN;
-}
-
-void BSP_rtems_irq_mng_init(unsigned cpuId)
-{
- rtems_raw_except_connect_data vectorDesc;
- int i;
-
- BSP_SIU_irq_init();
- BSP_CPM_irq_init();
- /*
- * Initialize Rtems management interrupt table
- */
- /*
- * re-init the rtemsIrq table
- */
- for (i = 0; i < BSP_IRQ_NUMBER; i++) {
- rtemsIrq[i] = defaultIrq;
- rtemsIrq[i].name = i;
- }
- /*
- * Init initial Interrupt management config
- */
- initial_config.irqNb = BSP_IRQ_NUMBER;
- initial_config.defaultEntry = defaultIrq;
- initial_config.irqHdlTbl = rtemsIrq;
- initial_config.irqBase = BSP_ASM_IRQ_VECTOR_BASE;
- initial_config.irqPrioTbl = irqPrioTable;
-
- if (!BSP_rtems_irq_mngt_set(&initial_config)) {
- /*
- * put something here that will show the failure...
- */
- BSP_panic("Unable to initialize RTEMS interrupt Management!!! System locked\n");
- }
-
- /*
- * We must connect the raw irq handler for the two
- * expected interrupt sources : decrementer and external interrupts.
- */
- vectorDesc.exceptIndex = ASM_DEC_VECTOR;
- vectorDesc.hdl.vector = ASM_DEC_VECTOR;
- vectorDesc.hdl.raw_hdl = decrementer_exception_vector_prolog_code;
- vectorDesc.hdl.raw_hdl_size = (unsigned) &decrementer_exception_vector_prolog_code_size;
- vectorDesc.on = nop_func;
- vectorDesc.off = nop_func;
- vectorDesc.isOn = connected;
- if (!mpc8xx_set_exception (&vectorDesc)) {
- BSP_panic("Unable to initialize RTEMS decrementer raw exception\n");
- }
- vectorDesc.exceptIndex = ASM_EXT_VECTOR;
- vectorDesc.hdl.vector = ASM_EXT_VECTOR;
- vectorDesc.hdl.raw_hdl = external_exception_vector_prolog_code;
- vectorDesc.hdl.raw_hdl_size = (unsigned) &external_exception_vector_prolog_code_size;
- if (!mpc8xx_set_exception (&vectorDesc)) {
- BSP_panic("Unable to initialize RTEMS external raw exception\n");
- }
-#ifdef TRACE_IRQ_INIT
- printk("RTEMS IRQ management is now operationnal\n");
-#endif
-}
diff --git a/c/src/lib/libbsp/powerpc/eth_comm/network/README b/c/src/lib/libbsp/powerpc/eth_comm/network/README
deleted file mode 100644
index 8e14552641..0000000000
--- a/c/src/lib/libbsp/powerpc/eth_comm/network/README
+++ /dev/null
@@ -1,294 +0,0 @@
-#
-# $Id$
-#
-
-#
-# This package requires a version of GCC that supports the `-mcpu32' option.
-#
-
-#
-# Please send any comments, improvements, or bug reports to:
-# W. Eric Norum
-# Saskatchewan Accelerator Laboratory
-# 107 North Road
-# University of Saskatchewan
-# Saskatoon, Saskatchewan, CANADA
-# S7N 5C6
-# eric@skatter.usask.ca
-#
-
-#
-# This board support package works with several different versions of
-# MC68360 systems. The choice of hardware is made at the final link-edit
-# phase by setting the Makefile CLAGS_LD definition appropriately.
-#
-# Decisions made at compile time include:
-# - If the CPU is a member of the 68040 family, the BSP is
-# compiled for a generic 68040/68360 system as described
-# in Chapter 9 of the MC68360 User's Manual.
-# - If the preprocessor symbol M68360_ATLAS_HSB is defined,
-# the BSP is compiled for an Atlas HSB card.
-# - Otherwise, the BSP is compiled for a generic 68360 system
-# as described in Chapter 9 of the MC68360 User's Manual.
-#
-# Decisions to be made a link-edit time are:
-# - The size of the memory allocator heap. The default value is
-# 64 kbytes. If the network package is used the heap
-# should be at least 256 kbytes. If your network is large, or
-# busy, the heap should be even larger.
-# To choose a heap size of 256 kbytes,
-# CFLAGS_LD += -Wl,--defsym -Wl,HeapSize=0x40000
-
-BSP NAME: gen68360 or gen68360_040
-BOARD: Generic 68360 as described in Motorola MC68360 User's Manual
-BOARD: Atlas Computer Equipment Inc. High Speed Bridge (HSB)
-BOARD: Atlas Computer Equipment Inc. Advanced Communication Engine (ACE)
-BOARD: Arnewsh SBC360 68040/68360 card
-BUS: none
-CPU FAMILY: Motorola CPU32+, Motorola 68040
-COPROCESSORS: none
-MODE: not applicable
-
-DEBUG MONITOR: none (Hardware provides BDM)
-
-PERIPHERALS
-===========
-TIMERS: PIT, Watchdog, 4 general purpose, 16 RISC
- RESOLUTION: one microsecond
-SERIAL PORTS: 4 SCC, 2 SMC, 1 SPI
-REAL-TIME CLOCK:
-DMA: Each serial port, 2 general purpose
-VIDEO: none
-SCSI: none
-NETWORKING: Ethernet on SCC1.
-
-DRIVER INFORMATION
-==================
-CLOCK DRIVER: Programmable Interval Timer
-IOSUPP DRIVER: Serial Management Controller 1
-SHMSUPP: none
-TIMER DRIVER: Timer 1
-
-STDIO
-=====
-PORT: SMC1
-ELECTRICAL: EIA-232 (if board supplies level shifter)
-BAUD: 9600
-BITS PER CHARACTER: 8
-PARITY: None
-STOP BITS: 1
-
-NOTES
-=====
-
-Board description
------------------
-clock rate: 25 MHz
-bus width: 8-bit PROM, 32-bit DRAM
-ROM: To 1 MByte, 180 nsec (3 wait states), chip select 0
-RAM: 1 to 16 MByte DRAM SIMM, 60 nsec (0 wait states), parity or nonparity
-
-Host System
------------
-OPENSTEP 4.2 (Intel and Motorola), Solaris 2.5, Linux 2.0.29
-
-Verification (Standalone 68360)
--------------------------------
-Single processor tests: Passed
-Multi-processort tests: not applicable
-Timing tests:
- Context Switch
-
- context switch: self 10
- context switch: to another task 11
- context switch: no floating point contexts 40
- fp context switch: restore 1st FP task 41
- fp context switch: save initialized, restore initialized 14
- fp context switch: save idle, restore initialized 14
- fp context switch: save idle, restore idle 43
-
- Task Manager
-
- rtems_task_create 133
- rtems_task_ident 351
- rtems_task_start 77
- rtems_task_restart: calling task 93
- rtems_task_restart: suspended task -- returns to caller 90
- rtems_task_restart: blocked task -- returns to caller 120
- rtems_task_restart: ready task -- returns to caller 92
- rtems_task_restart: suspended task -- preempts caller 121
- rtems_task_restart: blocked task -- preempts caller 143
- rtems_task_restart: ready task -- preempts caller 138
- rtems_task_delete: calling task 158
- rtems_task_delete: suspended task 129
- rtems_task_delete: blocked task 134
- rtems_task_delete: ready task 136
- rtems_task_suspend: calling task 71
- rtems_task_suspend: returns to caller 47
- rtems_task_resume: task readied -- returns to caller 48
- rtems_task_resume: task readied -- preempts caller 67
- rtems_task_set_priority: obtain current priority 36
- rtems_task_set_priority: returns to caller 65
- rtems_task_set_priority: preempts caller 102
- rtems_task_mode: obtain current mode 13
- rtems_task_mode: no reschedule 15
- rtems_task_mode: reschedule -- returns to caller 22
- rtems_task_mode: reschedule -- preempts caller 61
- rtems_task_get_note 38
- rtems_task_set_note 37
- rtems_task_wake_after: yield -- returns to caller 22
- rtems_task_wake_after: yields -- preempts caller 56
- rtems_task_wake_when 110
-
- Interrupt Manager
-
- interrupt entry overhead: returns to nested interrupt 8
- interrupt entry overhead: returns to interrupted task 8
- interrupt entry overhead: returns to preempting task 8
- interrupt exit overhead: returns to nested interrupt 7
- interrupt exit overhead: returns to interrupted task 8
- interrupt exit overhead: returns to preempting task 52
-
- Clock Manager
-
- rtems_clock_set 82
- rtems_clock_get 2
- rtems_clock_tick 15
-
- Timer Manager
-
- rtems_timer_create 33
- rtems_timer_ident 343
- rtems_timer_delete: inactive 47
- rtems_timer_delete: active 50
- rtems_timer_fire_after: inactive 59
- rtems_timer_fire_after: active 63
- rtems_timer_fire_when: inactive 83
- rtems_timer_fire_when: active 83
- rtems_timer_reset: inactive 55
- rtems_timer_reset: active 58
- rtems_timer_cancel: inactive 35
- rtems_timer_cancel: active 38
-
- Semaphore Manager
-
- rtems_semaphore_create 62
- rtems_semaphore_ident 368
- rtems_semaphore_delete 61
- rtems_semaphore_obtain: available 42
- rtems_semaphore_obtain: not available -- NO_WAIT 42
- rtems_semaphore_obtain: not available -- caller blocks 105
- rtems_semaphore_release: no waiting tasks 46
- rtems_semaphore_release: task readied -- returns to caller 64
- rtems_semaphore_release: task readied -- preempts caller 84
-
- Message Queue Manager
-
- rtems_message_queue_create 240
- rtems_message_queue_ident 342
- rtems_message_queue_delete 79
- rtems_message_queue_send: no waiting tasks 93
- rtems_message_queue_send: task readied -- returns to caller 96
- rtems_message_queue_send: task readied -- preempts caller 116
- rtems_message_queue_urgent: no waiting tasks 93
- rtems_message_queue_urgent: task readied -- returns to caller 97
- rtems_message_queue_urgent: task readied -- preempts caller 117
- rtems_message_queue_broadcast: no waiting tasks 54
- rtems_message_queue_broadcast: task readied -- returns to caller 106
- rtems_message_queue_broadcast: task readied -- preempts caller 126
- rtems_message_queue_receive: available 79
- rtems_message_queue_receive: not available -- NO_WAIT 48
- rtems_message_queue_receive: not available -- caller blocks 111
- rtems_message_queue_flush: no messages flushed 35
- rtems_message_queue_flush: messages flushed 44
-
- Event Manager
-
- rtems_event_send: no task readied 30
- rtems_event_send: task readied -- returns to caller 59
- rtems_event_send: task readied -- preempts caller 81
- rtems_event_receive: obtain current events 1
- rtems_event_receive: available 34
- rtems_event_receive: not available -- NO_WAIT 31
- rtems_event_receive: not available -- caller blocks 84
-
- Signal Manager
-
- rtems_signal_catch 24
- rtems_signal_send: returns to caller 42
- rtems_signal_send: signal to self 47
- exit ASR overhead: returns to calling task 33
- exit ASR overhead: returns to preempting task 58
-
- Partition Manager
-
- rtems_partition_create 78
- rtems_partition_ident 342
- rtems_partition_delete 46
- rtems_partition_get_buffer: available 40
- rtems_partition_get_buffer: not available 39
- rtems_partition_return_buffer 47
-
- Region Manager
-
- rtems_region_create 65
- rtems_region_ident 349
- rtems_region_delete 45
- rtems_region_get_segment: available 55
- rtems_region_get_segment: not available -- NO_WAIT 52
- rtems_region_get_segment: not available -- caller blocks 119
- rtems_region_return_segment: no waiting tasks 57
- rtems_region_return_segment: task readied -- returns to caller 106
- rtems_region_return_segment: task readied -- preempts caller 127
-
- Dual-Ported Memory Manager
-
- rtems_port_create 40
- rtems_port_ident 342
- rtems_port_delete 44
- rtems_port_internal_to_external 32
- rtems_port_external_to_internal 32
-
- IO Manager
-
- rtems_io_initialize 4
- rtems_io_open 1
- rtems_io_close 1
- rtems_io_read 1
- rtems_io_write 1
- rtems_io_control 1
-
- Rate Monotonic Manager
-
- rtems_rate_monotonic_create 39
- rtems_rate_monotonic_ident 343
- rtems_rate_monotonic_cancel 43
- rtems_rate_monotonic_delete: active 54
- rtems_rate_monotonic_delete: inactive 52
- rtems_rate_monotonic_period: obtain status 37
- rtems_rate_monotonic_period: initiate period -- returns to caller 58
- rtems_rate_monotonic_period: conclude periods -- caller blocks 75
-
-Porting
--------
-This board support package is written for a 68360 system similar to that
-described in chapter 9 of the Motorola MC68360 Quad Integrated Communication
-Processor Users' Manual. The salient features of this hardware are:
-
- 25 MHz external clock
- DRAM address multiplexing provided by 68360
- 8-bit 180nsec PROM to CS0*
- 4 MBytes of 60 nsec parity DRAM (1Mx36) to RAS1*/CAS1*
- Console serial port on SMC1
- Ethernet interface on SCC1
-
-The board support package has been tested with:
- A home-built 68360 board
- An ACE360A and an HSB board produced by:
- Atlas Computer Equipment
- 703 Colina Lane
- Santa Barbara, CA 93103
- A 68040/68360 board (SBC360) produced by:
- Arnewsh Inc.
- P.O. Box 270352
- Fort Collins, CO 80527-0352
diff --git a/c/src/lib/libbsp/powerpc/eth_comm/network/network.c b/c/src/lib/libbsp/powerpc/eth_comm/network/network.c
deleted file mode 100644
index 9b761fbf96..0000000000
--- a/c/src/lib/libbsp/powerpc/eth_comm/network/network.c
+++ /dev/null
@@ -1,1622 +0,0 @@
-/*
- * RTEMS/TCPIP driver for MPC860 SCC1 Ethernet
- *
- * Modified for MPC860 by Jay Monkman (jmonkman@frasca.com)
- *
- * This supports ethernet on either SCC1 or the FEC of the MPC860T.
- * Right now, we only do 10 Mbps, even with the FEC. The function
- * rtems_m860_enet_driver_attach determines which one to use. Currently,
- * only one may be used at a time.
- *
- * W. Eric Norum
- * Saskatchewan Accelerator Laboratory
- * University of Saskatchewan
- * Saskatoon, Saskatchewan, CANADA
- * eric@skatter.usask.ca
- *
- * $Id$
- */
-#include <bsp.h>
-#include <stdio.h>
-#include <rtems/error.h>
-#include <rtems/rtems_bsdnet.h>
-
-#include <sys/param.h>
-#include <sys/mbuf.h>
-#include <sys/socket.h>
-#include <sys/sockio.h>
-#include <sys/errno.h>
-
-#include <net/if.h>
-
-#include <netinet/in.h>
-#include <netinet/if_ether.h>
-#include <bsp/irq.h>
-
-int BSP_irq_enabled_at_cpm (const rtems_irq_symbolic_name);
-
-/*
- * Number of interfaces supported by this driver
- */
-#define NIFACES 1
-
-/*
- * Default number of buffer descriptors set aside for this driver.
- * The number of transmit buffer descriptors has to be quite large
- * since a single frame often uses four or more buffer descriptors.
- */
-#define RX_BUF_COUNT 32
-#define TX_BUF_COUNT 8
-#define TX_BD_PER_BUF 4
-
-#define INET_ADDR_MAX_BUF_SIZE (sizeof "255.255.255.255")
-
-/*
- * RTEMS event used by interrupt handler to signal daemons.
- * This must *not* be the same event used by the TCP/IP task synchronization.
- */
-#define INTERRUPT_EVENT RTEMS_EVENT_1
-
-/*
- * RTEMS event used to start transmit daemon.
- * This must not be the same as INTERRUPT_EVENT.
- */
-#define START_TRANSMIT_EVENT RTEMS_EVENT_2
-
-/*
- * Receive buffer size -- Allow for a full ethernet packet plus a pointer
- */
-#define RBUF_SIZE 1520
-
-#if (MCLBYTES < RBUF_SIZE)
-# error "Driver must have MCLBYTES > RBUF_SIZE"
-#endif
-
-/*
- * Per-device data
- */
-struct m860_enet_struct {
- struct arpcom arpcom;
- struct mbuf **rxMbuf;
- struct mbuf **txMbuf;
- int acceptBroadcast;
- int rxBdCount;
- int txBdCount;
- int txBdHead;
- int txBdTail;
- int txBdActiveCount;
- m8xxBufferDescriptor_t *rxBdBase;
- m8xxBufferDescriptor_t *txBdBase;
- rtems_id rxDaemonTid;
- rtems_id txDaemonTid;
-
- /*
- * Statistics
- */
- unsigned long rxInterrupts;
- unsigned long rxNotFirst;
- unsigned long rxNotLast;
- unsigned long rxGiant;
- unsigned long rxNonOctet;
- unsigned long rxRunt;
- unsigned long rxBadCRC;
- unsigned long rxOverrun;
- unsigned long rxCollision;
-
- unsigned long txInterrupts;
- unsigned long txDeferred;
- unsigned long txHeartbeat;
- unsigned long txLateCollision;
- unsigned long txRetryLimit;
- unsigned long txUnderrun;
- unsigned long txLostCarrier;
- unsigned long txRawWait;
-};
-static struct m860_enet_struct enet_driver[NIFACES];
-
-static void m8xx_scc1_ethernet_on(const rtems_irq_connect_data* ptr)
-{
- /*
- * Please put relevant code there
- */
-}
-
-static void m8xx_scc1_ethernet_off(const rtems_irq_connect_data* ptr)
-{
- /*
- * Please put relevant code there
- */
-}
-
-static void m8xx_scc1_ethernet_isOn(const rtems_irq_connect_data* ptr)
-{
- BSP_irq_enabled_at_cpm (ptr->name);
-}
-
-/*
- * SCC1 interrupt handler
- */
-static void m860_scc1_interrupt_handler ()
-{
- /*
- * Frame received?
- */
- if ((m8xx.scc1.sccm & 0x8) && (m8xx.scc1.scce & 0x8)) {
- m8xx.scc1.scce = 0x8;
- /* I don't think the next line is needed. It was in
- * the 68360 stuff, though.
- * m8xx.scc1.sccm &= ~0x8;
- */
- enet_driver[0].rxInterrupts++;
- rtems_event_send (enet_driver[0].rxDaemonTid, INTERRUPT_EVENT);
- }
-
- /*
- * Buffer transmitted or transmitter error?
- */
- if ((m8xx.scc1.sccm & 0x12) && (m8xx.scc1.scce & 0x12)) {
- m8xx.scc1.scce = 0x12;
- /* I don't think the next line is needed. It was in
- * the 68360 stuff, though.
- * m8xx.scc1.sccm &= ~0x12;
- */
- enet_driver[0].txInterrupts++;
- rtems_event_send (enet_driver[0].txDaemonTid, INTERRUPT_EVENT);
- }
-}
-
-/*
- * FEC interrupt handler
- */
-static void m860_fec_interrupt_handler ()
-{
- /*
- * Frame received?
- */
- if (m8xx.fec.ievent & M8xx_FEC_IEVENT_RFINT) {
- m8xx.fec.ievent = M8xx_FEC_IEVENT_RFINT;
- enet_driver[0].rxInterrupts++;
- rtems_event_send (enet_driver[0].rxDaemonTid, INTERRUPT_EVENT);
- }
-
- /*
- * Buffer transmitted or transmitter error?
- */
- if (m8xx.fec.ievent & M8xx_FEC_IEVENT_TFINT) {
- m8xx.fec.ievent = M8xx_FEC_IEVENT_TFINT;
- enet_driver[0].txInterrupts++;
- rtems_event_send (enet_driver[0].txDaemonTid, INTERRUPT_EVENT);
- }
-}
-static rtems_irq_connect_data ethernetSCC1IrqData = {
- BSP_CPM_IRQ_SCC1,
- (rtems_irq_hdl) m860_scc1_interrupt_handler,
- (rtems_irq_enable) m8xx_scc1_ethernet_on,
- (rtems_irq_disable) m8xx_scc1_ethernet_off,
- (rtems_irq_is_enabled)m8xx_scc1_ethernet_isOn
-};
-
-/*
- * Initialize the ethernet hardware
- */
-static void
-m860_scc_initialize_hardware (struct m860_enet_struct *sc)
-{
- int i;
- unsigned char *hwaddr;
-
- /*
- * Configure port A CLK1, CLK2, TXD1 and RXD1 pins
- */
- m8xx.papar |= 0x303;
- m8xx.padir &= ~0x303;
- m8xx.paodr &= ~0x303;
-
- /*
- * Configure port C CTS1* and CD1* pins, and PC4-PC7
- *
- */
- m8xx.pcpar &= ~0x30;
- m8xx.pcdir |= 0x0f00;
- m8xx.pcdir &= ~0x30;
- m8xx.pcso |= 0x30;
- m8xx.pcdat &= ~0x0f00; /* Clear LOOP */
- m8xx.pcdat |= 0x0700; /* Set FULDL, TPSQEL, TPAPCE */
-
- /*
- * Connect CLK1 and CLK2 to SCC1
- */
- m8xx.sicr &= ~0xFF;
- m8xx.sicr |= (5 << 3) | 4;
-
- /*
- * Initialize SDMA configuration register
- */
- m8xx.sdcr = 1;
-
- /*
- * Allocate mbuf pointers
- */
- sc->rxMbuf = malloc (sc->rxBdCount * sizeof *sc->rxMbuf,
- M_MBUF, M_NOWAIT);
- sc->txMbuf = malloc (sc->txBdCount * sizeof *sc->txMbuf,
- M_MBUF, M_NOWAIT);
- if (!sc->rxMbuf || !sc->txMbuf)
- rtems_panic ("No memory for mbuf pointers",0);
-
- /*
- * Set receiver and transmitter buffer descriptor bases
- */
- sc->rxBdBase = m8xx_bd_allocate(sc->rxBdCount);
- sc->txBdBase = m8xx_bd_allocate(sc->txBdCount);
- m8xx.scc1p.rbase = (char *)sc->rxBdBase - (char *)&m8xx;
- m8xx.scc1p.tbase = (char *)sc->txBdBase - (char *)&m8xx;
-
- /*
- * Send "Init parameters" command
- */
- m8xx_cp_execute_cmd (M8xx_CR_OP_INIT_RX_TX | M8xx_CR_CHAN_SCC1);
-
- /*
- * Set receive and transmit function codes
- */
- m8xx.scc1p.rfcr = M8xx_RFCR_MOT | M8xx_RFCR_DMA_SPACE(0);
- m8xx.scc1p.tfcr = M8xx_TFCR_MOT | M8xx_TFCR_DMA_SPACE(0);
-
- /*
- * Set maximum receive buffer length
- */
- m8xx.scc1p.mrblr = RBUF_SIZE;
-
- /*
- * Set CRC parameters
- */
- m8xx.scc1p.un.ethernet.c_pres = 0xFFFFFFFF;
- m8xx.scc1p.un.ethernet.c_mask = 0xDEBB20E3;
-
- /*
- * Clear diagnostic counters
- */
- m8xx.scc1p.un.ethernet.crcec = 0;
- m8xx.scc1p.un.ethernet.alec = 0;
- m8xx.scc1p.un.ethernet.disfc = 0;
-
- /*
- * Set pad value
- */
- m8xx.scc1p.un.ethernet.pads = 0x8888;
-
- /*
- * Set retry limit
- */
- m8xx.scc1p.un.ethernet.ret_lim = 15;
-
- /*
- * Set maximum and minimum frame length
- */
- m8xx.scc1p.un.ethernet.mflr = 1518;
- m8xx.scc1p.un.ethernet.minflr = 64;
- m8xx.scc1p.un.ethernet.maxd1 = RBUF_SIZE;
- m8xx.scc1p.un.ethernet.maxd2 = RBUF_SIZE;
-
- /*
- * Clear group address hash table
- */
- m8xx.scc1p.un.ethernet.gaddr1 = 0;
- m8xx.scc1p.un.ethernet.gaddr2 = 0;
- m8xx.scc1p.un.ethernet.gaddr3 = 0;
- m8xx.scc1p.un.ethernet.gaddr4 = 0;
-
- /*
- * Set our physical address
- */
- hwaddr = sc->arpcom.ac_enaddr;
-
- m8xx.scc1p.un.ethernet.paddr_h = (hwaddr[5] << 8) | hwaddr[4];
- m8xx.scc1p.un.ethernet.paddr_m = (hwaddr[3] << 8) | hwaddr[2];
- m8xx.scc1p.un.ethernet.paddr_l = (hwaddr[1] << 8) | hwaddr[0];
-
- /*
- * Aggressive retry
- */
- m8xx.scc1p.un.ethernet.p_per = 0;
-
- /*
- * Clear individual address hash table
- */
- m8xx.scc1p.un.ethernet.iaddr1 = 0;
- m8xx.scc1p.un.ethernet.iaddr2 = 0;
- m8xx.scc1p.un.ethernet.iaddr3 = 0;
- m8xx.scc1p.un.ethernet.iaddr4 = 0;
-
- /*
- * Clear temp address
- */
- m8xx.scc1p.un.ethernet.taddr_l = 0;
- m8xx.scc1p.un.ethernet.taddr_m = 0;
- m8xx.scc1p.un.ethernet.taddr_h = 0;
-
- /*
- * Set up receive buffer descriptors
- */
- for (i = 0 ; i < sc->rxBdCount ; i++) {
- (sc->rxBdBase + i)->status = 0;
- }
-
- /*
- * Set up transmit buffer descriptors
- */
- for (i = 0 ; i < sc->txBdCount ; i++) {
- (sc->txBdBase + i)->status = 0;
- sc->txMbuf[i] = NULL;
- }
- sc->txBdHead = sc->txBdTail = 0;
- sc->txBdActiveCount = 0;
-
- /*
- * Clear any outstanding events
- */
- m8xx.scc1.scce = 0xFFFF;
-
- /*
- * Set up interrupts
- */
- if (!BSP_install_rtems_irq_handler (&ethernetSCC1IrqData)) {
- rtems_panic ("Can't attach M8xx SCC1 interrupt handler\n",0);
- }
- m8xx.scc1.sccm = 0; /* No interrupts unmasked till necessary */
-
- /*
- * Set up General SCC Mode Register
- * Ethernet configuration
- */
- m8xx.scc1.gsmr_h = 0x0;
- m8xx.scc1.gsmr_l = 0x1088000c;
-
- /*
- * Set up data synchronization register
- * Ethernet synchronization pattern
- */
- m8xx.scc1.dsr = 0xd555;
-
- /*
- * Set up protocol-specific mode register
- * No Heartbeat check
- * No force collision
- * Discard short frames
- * Individual address mode
- * Ethernet CRC
- * Not promisuous
- * Ignore/accept broadcast packets as specified
- * Normal backoff timer
- * No loopback
- * No input sample at end of frame
- * 64-byte limit for late collision
- * Wait 22 bits before looking for start of frame delimiter
- * Disable full-duplex operation
- */
- m8xx.scc1.psmr = 0x080A | (sc->acceptBroadcast ? 0 : 0x100);
-
- /*
- * Enable the TENA (RTS1*) pin
- */
- m8xx.pcpar |= 0x1;
- m8xx.pcdir &= ~0x1;
-
- /*
- * Enable receiver and transmitter
- */
- m8xx.scc1.gsmr_l = 0x1088003c;
-}
-static void m8xx_fec_ethernet_on(){};
-static void m8xx_fec_ethernet_off(){};
-static int m8xx_fec_ethernet_isOn (const rtems_irq_connect_data* ptr)
-{
- return BSP_irq_enabled_at_siu (ptr->name);
-}
-
-static rtems_irq_connect_data ethernetFECIrqData = {
- BSP_FAST_ETHERNET_CTRL,
- (rtems_irq_hdl) m860_fec_interrupt_handler,
- (rtems_irq_enable) m8xx_fec_ethernet_on,
- (rtems_irq_disable) m8xx_fec_ethernet_off,
- (rtems_irq_is_enabled)m8xx_fec_ethernet_isOn
-};
-
-static void
-m860_fec_initialize_hardware (struct m860_enet_struct *sc)
-{
- int i;
- unsigned char *hwaddr;
-
- /*
- * Issue reset to FEC
- */
- m8xx.fec.ecntrl=0x1;
-
- /*
- * Put ethernet transciever in reset
- */
- m8xx.pgcra |= 0x80;
-
- /*
- * Configure I/O ports
- */
- m8xx.pdpar = 0x1fff;
- m8xx.pddir = 0x1c58;
-
- /*
- * Take ethernet transciever out of reset
- */
- m8xx.pgcra &= ~0x80;
-
- /*
- * Set SIU interrupt level to LVL2
- *
- */
- m8xx.fec.ivec = ((((unsigned) BSP_FAST_ETHERNET_CTRL)/2) << 29);
-
- /*
- * Set the TX and RX fifo sizes. For now, we'll split it evenly
- */
- /* If you uncomment these, the FEC will not work right.
- m8xx.fec.r_fstart = ((m8xx.fec.r_bound & 0x3ff) >> 2) & 0x3ff;
- m8xx.fec.x_fstart = 0;
- */
-
- /*
- * Set our physical address
- */
- hwaddr = sc->arpcom.ac_enaddr;
-
- m8xx.fec.addr_low = (hwaddr[0] << 24) | (hwaddr[1] << 16) |
- (hwaddr[2] << 8) | (hwaddr[3] << 0);
- m8xx.fec.addr_high = (hwaddr[4] << 24) | (hwaddr[5] << 16);
-
- /*
- * Clear the hash table
- */
- m8xx.fec.hash_table_high = 0;
- m8xx.fec.hash_table_low = 0;
-
- /*
- * Set up receive buffer size
- */
- m8xx.fec.r_buf_size = 0x5f0; /* set to 1520 */
-
- /*
- * Allocate mbuf pointers
- */
- sc->rxMbuf = malloc (sc->rxBdCount * sizeof *sc->rxMbuf,
- M_MBUF, M_NOWAIT);
- sc->txMbuf = malloc (sc->txBdCount * sizeof *sc->txMbuf,
- M_MBUF, M_NOWAIT);
- if (!sc->rxMbuf || !sc->txMbuf)
- rtems_panic ("No memory for mbuf pointers",0);
-
- /*
- * Set receiver and transmitter buffer descriptor bases
- */
- sc->rxBdBase = m8xx_bd_allocate(sc->rxBdCount);
- sc->txBdBase = m8xx_bd_allocate(sc->txBdCount);
- m8xx.fec.r_des_start = (int)sc->rxBdBase;
- m8xx.fec.x_des_start = (int)sc->txBdBase;
-
- /*
- * Set up Receive Control Register:
- * Not promiscuous mode
- * MII mode
- * Half duplex
- * No loopback
- */
- m8xx.fec.r_cntrl = 0x00000006;
-
- /*
- * Set up Transmit Control Register:
- * Half duplex
- * No heartbeat
- */
- m8xx.fec.x_cntrl = 0x00000000;
-
- /*
- * Set up DMA function code:
- * Big-endian
- * DMA functino code = 0
- */
- m8xx.fec.fun_code = 0x78000000;
-
- /*
- * Initialize SDMA configuration register
- * SDMA ignores FRZ
- * FEC not aggressive
- * FEC arbitration ID = 0 => U-bus arbitration = 6
- * RISC arbitration ID = 1 => U-bus arbitration = 5
- */
- m8xx.sdcr = 1;
-
- /*
- * Set MII speed to 2.5 MHz for 25 Mhz system clock
- */
- m8xx.fec.mii_speed = 0x0a;
- m8xx.fec.mii_data = 0x58021000;
-
- /*
- * Set up receive buffer descriptors
- */
- for (i = 0 ; i < sc->rxBdCount ; i++)
- (sc->rxBdBase + i)->status = 0;
-
- /*
- * Set up transmit buffer descriptors
- */
- for (i = 0 ; i < sc->txBdCount ; i++) {
- (sc->txBdBase + i)->status = 0;
- sc->txMbuf[i] = NULL;
- }
- sc->txBdHead = sc->txBdTail = 0;
- sc->txBdActiveCount = 0;
-
- /*
- * Mask all FEC interrupts and clear events
- */
- m8xx.fec.imask = M8xx_FEC_IEVENT_TFINT |
- M8xx_FEC_IEVENT_RFINT;
- m8xx.fec.ievent = ~0;
-
- /*
- * Set up interrupts
- */
- if (!BSP_install_rtems_irq_handler (&ethernetFECIrqData))
- rtems_panic ("Can't attach M860 FEC interrupt handler\n", 0);
-
-}
-
-/*
- * Soak up buffer descriptors that have been sent
- * Note that a buffer descriptor can't be retired as soon as it becomes
- * ready. The MC68360 Errata (May 96) says that, "If an Ethernet frame is
- * made up of multiple buffers, the user should not reuse the first buffer
- * descriptor until the last buffer descriptor of the frame has had its
- * ready bit cleared by the CPM".
- */
-static void
-m860Enet_retire_tx_bd (struct m860_enet_struct *sc)
-{
- uint16_t status;
- int i;
- int nRetired;
- struct mbuf *m, *n;
-
- i = sc->txBdTail;
- nRetired = 0;
- while ((sc->txBdActiveCount != 0)
- && (((status = (sc->txBdBase + i)->status) & M8xx_BD_READY) == 0)) {
- /*
- * See if anything went wrong
- */
- if (status & (M8xx_BD_DEFER |
- M8xx_BD_HEARTBEAT |
- M8xx_BD_LATE_COLLISION |
- M8xx_BD_RETRY_LIMIT |
- M8xx_BD_UNDERRUN |
- M8xx_BD_CARRIER_LOST)) {
- /*
- * Check for errors which stop the transmitter.
- */
- if (status & (M8xx_BD_LATE_COLLISION |
- M8xx_BD_RETRY_LIMIT |
- M8xx_BD_UNDERRUN)) {
- if (status & M8xx_BD_LATE_COLLISION)
- enet_driver[0].txLateCollision++;
- if (status & M8xx_BD_RETRY_LIMIT)
- enet_driver[0].txRetryLimit++;
- if (status & M8xx_BD_UNDERRUN)
- enet_driver[0].txUnderrun++;
-
- /*
- * Restart the transmitter
- */
- /* FIXME: this should get executed only if using the SCC */
- m8xx_cp_execute_cmd (M8xx_CR_OP_RESTART_TX | M8xx_CR_CHAN_SCC1);
- }
- if (status & M8xx_BD_DEFER)
- enet_driver[0].txDeferred++;
- if (status & M8xx_BD_HEARTBEAT)
- enet_driver[0].txHeartbeat++;
- if (status & M8xx_BD_CARRIER_LOST)
- enet_driver[0].txLostCarrier++;
- }
- nRetired++;
- if (status & M8xx_BD_LAST) {
- /*
- * A full frame has been transmitted.
- * Free all the associated buffer descriptors.
- */
- sc->txBdActiveCount -= nRetired;
- while (nRetired) {
- nRetired--;
- m = sc->txMbuf[sc->txBdTail];
- MFREE (m, n);
- if (++sc->txBdTail == sc->txBdCount)
- sc->txBdTail = 0;
- }
- }
- if (++i == sc->txBdCount)
- i = 0;
- }
-}
-
-/*
- * reader task
- */
-static void
-scc_rxDaemon (void *arg)
-{
- struct m860_enet_struct *sc = (struct m860_enet_struct *)arg;
- struct ifnet *ifp = &sc->arpcom.ac_if;
- struct mbuf *m;
- uint16_t status;
- m8xxBufferDescriptor_t *rxBd;
- int rxBdIndex;
-
- /*
- * Allocate space for incoming packets and start reception
- */
- for (rxBdIndex = 0 ; ;) {
- rxBd = sc->rxBdBase + rxBdIndex;
- MGETHDR (m, M_WAIT, MT_DATA);
- MCLGET (m, M_WAIT);
- m->m_pkthdr.rcvif = ifp;
- sc->rxMbuf[rxBdIndex] = m;
- rxBd->buffer = mtod (m, void *);
- rxBd->status = M8xx_BD_EMPTY | M8xx_BD_INTERRUPT;
- if (++rxBdIndex == sc->rxBdCount) {
- rxBd->status |= M8xx_BD_WRAP;
- break;
- }
- }
-
- /*
- * Input packet handling loop
- */
- rxBdIndex = 0;
- for (;;) {
- rxBd = sc->rxBdBase + rxBdIndex;
-
- /*
- * Wait for packet if there's not one ready
- */
- if ((status = rxBd->status) & M8xx_BD_EMPTY) {
- /*
- * Clear old events
- */
- m8xx.scc1.scce = 0x8;
-
- /*
- * Wait for packet
- * Note that the buffer descriptor is checked
- * *before* the event wait -- this catches the
- * possibility that a packet arrived between the
- * `if' above, and the clearing of the event register.
- */
- while ((status = rxBd->status) & M8xx_BD_EMPTY) {
- rtems_event_set events;
-
- /*
- * Unmask RXF (Full frame received) event
- */
- m8xx.scc1.sccm |= 0x8;
-
- rtems_bsdnet_event_receive (INTERRUPT_EVENT,
- RTEMS_WAIT|RTEMS_EVENT_ANY,
- RTEMS_NO_TIMEOUT,
- &events);
- }
- }
-
- /*
- * Check that packet is valid
- */
- if ((status & (M8xx_BD_LAST |
- M8xx_BD_FIRST_IN_FRAME |
- M8xx_BD_LONG |
- M8xx_BD_NONALIGNED |
- M8xx_BD_SHORT |
- M8xx_BD_CRC_ERROR |
- M8xx_BD_OVERRUN |
- M8xx_BD_COLLISION)) ==
- (M8xx_BD_LAST |
- M8xx_BD_FIRST_IN_FRAME)) {
- /*
- * Pass the packet up the chain.
- * FIXME: Packet filtering hook could be done here.
- */
- struct ether_header *eh;
-
- m = sc->rxMbuf[rxBdIndex];
- m->m_len = m->m_pkthdr.len = rxBd->length -
- sizeof(uint32_t) -
- sizeof(struct ether_header);
- eh = mtod (m, struct ether_header *);
- m->m_data += sizeof(struct ether_header);
- ether_input (ifp, eh, m);
-
- /*
- * Allocate a new mbuf
- */
- MGETHDR (m, M_WAIT, MT_DATA);
- MCLGET (m, M_WAIT);
- m->m_pkthdr.rcvif = ifp;
- sc->rxMbuf[rxBdIndex] = m;
- rxBd->buffer = mtod (m, void *);
- }
- else {
- /*
- * Something went wrong with the reception
- */
- if (!(status & M8xx_BD_LAST))
- sc->rxNotLast++;
- if (!(status & M8xx_BD_FIRST_IN_FRAME))
- sc->rxNotFirst++;
- if (status & M8xx_BD_LONG)
- sc->rxGiant++;
- if (status & M8xx_BD_NONALIGNED)
- sc->rxNonOctet++;
- if (status & M8xx_BD_SHORT)
- sc->rxRunt++;
- if (status & M8xx_BD_CRC_ERROR)
- sc->rxBadCRC++;
- if (status & M8xx_BD_OVERRUN)
- sc->rxOverrun++;
- if (status & M8xx_BD_COLLISION)
- sc->rxCollision++;
- }
-
- /*
- * Reenable the buffer descriptor
- */
- rxBd->status = (status & (M8xx_BD_WRAP | M8xx_BD_INTERRUPT)) |
- M8xx_BD_EMPTY;
-
- /*
- * Move to next buffer descriptor
- */
- if (++rxBdIndex == sc->rxBdCount)
- rxBdIndex = 0;
- }
-}
-
-static void
-fec_rxDaemon (void *arg)
-{
- struct m860_enet_struct *sc = (struct m860_enet_struct *)arg;
- struct ifnet *ifp = &sc->arpcom.ac_if;
- struct mbuf *m;
- uint16_t status;
- m8xxBufferDescriptor_t *rxBd;
- int rxBdIndex;
-
- /*
- * Allocate space for incoming packets and start reception
- */
- for (rxBdIndex = 0 ; ;) {
- rxBd = sc->rxBdBase + rxBdIndex;
- MGETHDR (m, M_WAIT, MT_DATA);
- MCLGET (m, M_WAIT);
- m->m_pkthdr.rcvif = ifp;
- sc->rxMbuf[rxBdIndex] = m;
- rxBd->buffer = mtod (m, void *);
- rxBd->status = M8xx_BD_EMPTY;
- m8xx.fec.r_des_active = 0x1000000;
- if (++rxBdIndex == sc->rxBdCount) {
- rxBd->status |= M8xx_BD_WRAP;
- break;
- }
- }
-
- /*
- * Input packet handling loop
- */
- rxBdIndex = 0;
- for (;;) {
- rxBd = sc->rxBdBase + rxBdIndex;
-
- /*
- * Wait for packet if there's not one ready
- */
- if ((status = rxBd->status) & M8xx_BD_EMPTY) {
- /*
- * Clear old events
- */
- m8xx.fec.ievent = M8xx_FEC_IEVENT_RFINT;
-
- /*
- * Wait for packet
- * Note that the buffer descriptor is checked
- * *before* the event wait -- this catches the
- * possibility that a packet arrived between the
- * `if' above, and the clearing of the event register.
- */
- while ((status = rxBd->status) & M8xx_BD_EMPTY) {
- rtems_event_set events;
-
- /*
- * Unmask RXF (Full frame received) event
- */
- m8xx.fec.ievent |= M8xx_FEC_IEVENT_RFINT;
-
- rtems_bsdnet_event_receive (INTERRUPT_EVENT,
- RTEMS_WAIT|RTEMS_EVENT_ANY,
- RTEMS_NO_TIMEOUT,
- &events);
- }
- }
-
- /*
- * Check that packet is valid
- */
- if (status & M8xx_BD_LAST) {
- /*
- * Pass the packet up the chain.
- * FIXME: Packet filtering hook could be done here.
- */
- struct ether_header *eh;
-
- m = sc->rxMbuf[rxBdIndex];
- m->m_len = m->m_pkthdr.len = rxBd->length -
- sizeof(uint32_t) -
- sizeof(struct ether_header);
- eh = mtod (m, struct ether_header *);
- m->m_data += sizeof(struct ether_header);
- ether_input (ifp, eh, m);
-
- /*
- * Allocate a new mbuf
- */
- MGETHDR (m, M_WAIT, MT_DATA);
- MCLGET (m, M_WAIT);
- m->m_pkthdr.rcvif = ifp;
- sc->rxMbuf[rxBdIndex] = m;
- rxBd->buffer = mtod (m, void *);
- }
- else {
- /*
- * Something went wrong with the reception
- */
- if (!(status & M8xx_BD_LAST))
- sc->rxNotLast++;
- if (status & M8xx_BD_LONG)
- sc->rxGiant++;
- if (status & M8xx_BD_NONALIGNED)
- sc->rxNonOctet++;
- if (status & M8xx_BD_SHORT)
- sc->rxRunt++;
- if (status & M8xx_BD_CRC_ERROR)
- sc->rxBadCRC++;
- if (status & M8xx_BD_OVERRUN)
- sc->rxOverrun++;
- if (status & M8xx_BD_COLLISION)
- sc->rxCollision++;
- }
- /*
- * Reenable the buffer descriptor
- */
- rxBd->status = (status & M8xx_BD_WRAP) |
- M8xx_BD_EMPTY;
- m8xx.fec.r_des_active = 0x1000000;
- /*
- * Move to next buffer descriptor
- */
- if (++rxBdIndex == sc->rxBdCount)
- rxBdIndex = 0;
- }
-}
-
-static void
-scc_sendpacket (struct ifnet *ifp, struct mbuf *m)
-{
- struct m860_enet_struct *sc = ifp->if_softc;
- volatile m8xxBufferDescriptor_t *firstTxBd, *txBd;
- struct mbuf *l = NULL;
- uint16_t status;
- int nAdded;
-
- /*
- * Free up buffer descriptors
- */
- m860Enet_retire_tx_bd (sc);
-
- /*
- * Set up the transmit buffer descriptors.
- * No need to pad out short packets since the
- * hardware takes care of that automatically.
- * No need to copy the packet to a contiguous buffer
- * since the hardware is capable of scatter/gather DMA.
- */
- nAdded = 0;
- txBd = firstTxBd = sc->txBdBase + sc->txBdHead;
- for (;;) {
- /*
- * Wait for buffer descriptor to become available.
- */
- if ((sc->txBdActiveCount + nAdded) == sc->txBdCount) {
- /*
- * Clear old events
- */
- m8xx.scc1.scce = 0x12;
-
- /*
- * Wait for buffer descriptor to become available.
- * Note that the buffer descriptors are checked
- * *before* * entering the wait loop -- this catches
- * the possibility that a buffer descriptor became
- * available between the `if' above, and the clearing
- * of the event register.
- * This is to catch the case where the transmitter
- * stops in the middle of a frame -- and only the
- * last buffer descriptor in a frame can generate
- * an interrupt.
- */
- m860Enet_retire_tx_bd (sc);
- while ((sc->txBdActiveCount + nAdded) == sc->txBdCount) {
- rtems_event_set events;
-
- /*
- * Unmask TXB (buffer transmitted) and
- * TXE (transmitter error) events.
- */
- m8xx.scc1.sccm |= 0x12;
- rtems_bsdnet_event_receive (INTERRUPT_EVENT,
- RTEMS_WAIT|RTEMS_EVENT_ANY,
- RTEMS_NO_TIMEOUT,
- &events);
- m860Enet_retire_tx_bd (sc);
- }
- }
-
- /*
- * Don't set the READY flag till the
- * whole packet has been readied.
- */
- status = nAdded ? M8xx_BD_READY : 0;
-
- /*
- * FIXME: Why not deal with empty mbufs at at higher level?
- * The IP fragmentation routine in ip_output
- * can produce packet fragments with zero length.
- * I think that ip_output should be changed to get
- * rid of these zero-length mbufs, but for now,
- * I'll deal with them here.
- */
- if (m->m_len) {
- /*
- * Fill in the buffer descriptor
- */
- txBd->buffer = mtod (m, void *);
- txBd->length = m->m_len;
- sc->txMbuf[sc->txBdHead] = m;
- nAdded++;
- if (++sc->txBdHead == sc->txBdCount) {
- status |= M8xx_BD_WRAP;
- sc->txBdHead = 0;
- }
- l = m;
- m = m->m_next;
- }
- else {
- /*
- * Just toss empty mbufs
- */
- struct mbuf *n;
- MFREE (m, n);
- m = n;
- if (l != NULL)
- l->m_next = m;
- }
-
- /*
- * Set the transmit buffer status.
- * Break out of the loop if this mbuf is the last in the frame.
- */
- if (m == NULL) {
- if (nAdded) {
- status |= M8xx_BD_PAD | M8xx_BD_LAST | M8xx_BD_TX_CRC | M8xx_BD_INTERRUPT;
- txBd->status = status;
- firstTxBd->status |= M8xx_BD_READY;
- sc->txBdActiveCount += nAdded;
- }
- break;
- }
- txBd->status = status;
- txBd = sc->txBdBase + sc->txBdHead;
- }
-}
-
-static void
-fec_sendpacket (struct ifnet *ifp, struct mbuf *m)
-{
- struct m860_enet_struct *sc = ifp->if_softc;
- volatile m8xxBufferDescriptor_t *firstTxBd, *txBd;
- /* struct mbuf *l = NULL; */
- uint16_t status;
- int nAdded;
-
- /*
- * Free up buffer descriptors
- */
- m860Enet_retire_tx_bd (sc);
-
- /*
- * Set up the transmit buffer descriptors.
- * No need to pad out short packets since the
- * hardware takes care of that automatically.
- * No need to copy the packet to a contiguous buffer
- * since the hardware is capable of scatter/gather DMA.
- */
- nAdded = 0;
- txBd = firstTxBd = sc->txBdBase + sc->txBdHead;
- for (;;) {
- /*
- * Wait for buffer descriptor to become available.
- */
- if ((sc->txBdActiveCount + nAdded) == sc->txBdCount) {
- /*
- * Clear old events
- */
- m8xx.fec.ievent = M8xx_FEC_IEVENT_TFINT;
-
- /*
- * Wait for buffer descriptor to become available.
- * Note that the buffer descriptors are checked
- * *before* * entering the wait loop -- this catches
- * the possibility that a buffer descriptor became
- * available between the `if' above, and the clearing
- * of the event register.
- * This is to catch the case where the transmitter
- * stops in the middle of a frame -- and only the
- * last buffer descriptor in a frame can generate
- * an interrupt.
- */
- m860Enet_retire_tx_bd (sc);
- while ((sc->txBdActiveCount + nAdded) == sc->txBdCount) {
- rtems_event_set events;
-
- /*
- * Unmask TXB (buffer transmitted) and
- * TXE (transmitter error) events.
- */
- m8xx.fec.ievent |= M8xx_FEC_IEVENT_TFINT;
- rtems_bsdnet_event_receive (INTERRUPT_EVENT,
- RTEMS_WAIT|RTEMS_EVENT_ANY,
- RTEMS_NO_TIMEOUT,
- &events);
- m860Enet_retire_tx_bd (sc);
- }
- }
-
- /*
- * Don't set the READY flag till the
- * whole packet has been readied.
- */
- status = nAdded ? M8xx_BD_READY : 0;
-
- /*
- * FIXME: Why not deal with empty mbufs at at higher level?
- * The IP fragmentation routine in ip_output
- * can produce packet fragments with zero length.
- * I think that ip_output should be changed to get
- * rid of these zero-length mbufs, but for now,
- * I'll deal with them here.
- */
- if (m->m_len) {
- /*
- * Fill in the buffer descriptor
- */
- txBd->buffer = mtod (m, void *);
- txBd->length = m->m_len;
- sc->txMbuf[sc->txBdHead] = m;
- nAdded++;
- if (++sc->txBdHead == sc->txBdCount) {
- status |= M8xx_BD_WRAP;
- sc->txBdHead = 0;
- }
- /* l = m;*/
- m = m->m_next;
- }
- else {
- /*
- * Just toss empty mbufs
- */
- struct mbuf *n;
- MFREE (m, n);
- m = n;
- /*
- if (l != NULL)
- l->m_next = m;
- */
- }
-
- /*
- * Set the transmit buffer status.
- * Break out of the loop if this mbuf is the last in the frame.
- */
- if (m == NULL) {
- if (nAdded) {
- status |= M8xx_BD_LAST | M8xx_BD_TX_CRC;
- txBd->status = status;
- firstTxBd->status |= M8xx_BD_READY;
- m8xx.fec.x_des_active = 0x1000000;
- sc->txBdActiveCount += nAdded;
- }
- break;
- }
- txBd->status = status;
- txBd = sc->txBdBase + sc->txBdHead;
- }
-}
-
-/*
- * Driver transmit daemon
- */
-void
-scc_txDaemon (void *arg)
-{
- struct m860_enet_struct *sc = (struct m860_enet_struct *)arg;
- struct ifnet *ifp = &sc->arpcom.ac_if;
- struct mbuf *m;
- rtems_event_set events;
-
- for (;;) {
- /*
- * Wait for packet
- */
- rtems_bsdnet_event_receive (START_TRANSMIT_EVENT, RTEMS_EVENT_ANY | RTEMS_WAIT, RTEMS_NO_TIMEOUT, &events);
-
- /*
- * Send packets till queue is empty
- */
- for (;;) {
- /*
- * Get the next mbuf chain to transmit.
- */
- IF_DEQUEUE(&ifp->if_snd, m);
- if (!m)
- break;
- scc_sendpacket (ifp, m);
- }
- ifp->if_flags &= ~IFF_OACTIVE;
- }
-}
-
-void
-fec_txDaemon (void *arg)
-{
- struct m860_enet_struct *sc = (struct m860_enet_struct *)arg;
- struct ifnet *ifp = &sc->arpcom.ac_if;
- struct mbuf *m;
- rtems_event_set events;
-
- for (;;) {
- /*
- * Wait for packet
- */
- rtems_bsdnet_event_receive (START_TRANSMIT_EVENT,
- RTEMS_EVENT_ANY | RTEMS_WAIT,
- RTEMS_NO_TIMEOUT,
- &events);
-
- /*
- * Send packets till queue is empty
- */
- for (;;) {
- /*
- * Get the next mbuf chain to transmit.
- */
- IF_DEQUEUE(&ifp->if_snd, m);
- if (!m)
- break;
- fec_sendpacket (ifp, m);
- }
- ifp->if_flags &= ~IFF_OACTIVE;
- }
-}
-
-/*
- * Send packet (caller provides header).
- */
-static void
-m860_enet_start (struct ifnet *ifp)
-{
- struct m860_enet_struct *sc = ifp->if_softc;
-
- rtems_event_send (sc->txDaemonTid, START_TRANSMIT_EVENT);
- ifp->if_flags |= IFF_OACTIVE;
-}
-
-/*
- * Initialize and start the device
- */
-static void
-scc_init (void *arg)
-{
- struct m860_enet_struct *sc = arg;
- struct ifnet *ifp = &sc->arpcom.ac_if;
-
- if (sc->txDaemonTid == 0) {
-
- /*
- * Set up SCC hardware
- */
- m860_scc_initialize_hardware (sc);
-
- /*
- * Start driver tasks
- */
- sc->txDaemonTid = rtems_bsdnet_newproc ("SCtx", 4096, scc_txDaemon, sc);
- sc->rxDaemonTid = rtems_bsdnet_newproc ("SCrx", 4096, scc_rxDaemon, sc);
-
- }
-
- /*
- * Set flags appropriately
- */
- if (ifp->if_flags & IFF_PROMISC)
- m8xx.scc1.psmr |= 0x200;
- else
- m8xx.scc1.psmr &= ~0x200;
-
- /*
- * Tell the world that we're running.
- */
- ifp->if_flags |= IFF_RUNNING;
-
- /*
- * Enable receiver and transmitter
- */
- m8xx.scc1.gsmr_l |= 0x30;
-}
-
-static void
-fec_init (void *arg)
-{
- struct m860_enet_struct *sc = arg;
- struct ifnet *ifp = &sc->arpcom.ac_if;
-
- if (sc->txDaemonTid == 0) {
-
- /*
- * Set up SCC hardware
- */
- m860_fec_initialize_hardware (sc);
-
- /*
- * Start driver tasks
- */
- sc->txDaemonTid = rtems_bsdnet_newproc ("SCtx", 4096, fec_txDaemon, sc);
- sc->rxDaemonTid = rtems_bsdnet_newproc ("SCrx", 4096, fec_rxDaemon, sc);
-
- }
-
- /*
- * Set flags appropriately
- */
- if (ifp->if_flags & IFF_PROMISC)
- m8xx.fec.r_cntrl |= 0x8;
- else
- m8xx.fec.r_cntrl &= ~0x8;
-
- /*
- * Tell the world that we're running.
- */
- ifp->if_flags |= IFF_RUNNING;
-
- /*
- * Enable receiver and transmitter
- */
- m8xx.fec.ecntrl = 0x2;
-}
-
-/*
- * Stop the device
- */
-static void
-scc_stop (struct m860_enet_struct *sc)
-{
- struct ifnet *ifp = &sc->arpcom.ac_if;
-
- ifp->if_flags &= ~IFF_RUNNING;
-
- /*
- * Shut down receiver and transmitter
- */
- m8xx.scc1.gsmr_l &= ~0x30;
-}
-
-static void
-fec_stop (struct m860_enet_struct *sc)
-{
- struct ifnet *ifp = &sc->arpcom.ac_if;
-
- ifp->if_flags &= ~IFF_RUNNING;
-
- /*
- * Shut down receiver and transmitter
- */
- m8xx.fec.ecntrl = 0x0;
-}
-
-/*
- * Show interface statistics
- */
-static void
-enet_stats (struct m860_enet_struct *sc)
-{
- printf (" Rx Interrupts:%-8lu", sc->rxInterrupts);
- printf (" Not First:%-8lu", sc->rxNotFirst);
- printf (" Not Last:%-8lu\n", sc->rxNotLast);
- printf (" Giant:%-8lu", sc->rxGiant);
- printf (" Runt:%-8lu", sc->rxRunt);
- printf (" Non-octet:%-8lu\n", sc->rxNonOctet);
- printf (" Bad CRC:%-8lu", sc->rxBadCRC);
- printf (" Overrun:%-8lu", sc->rxOverrun);
- printf (" Collision:%-8lu\n", sc->rxCollision);
- printf (" Discarded:%-8lu\n", (unsigned long)m8xx.scc1p.un.ethernet.disfc);
-
- printf (" Tx Interrupts:%-8lu", sc->txInterrupts);
- printf (" Deferred:%-8lu", sc->txDeferred);
- printf (" Missed Hearbeat:%-8lu\n", sc->txHeartbeat);
- printf (" No Carrier:%-8lu", sc->txLostCarrier);
- printf ("Retransmit Limit:%-8lu", sc->txRetryLimit);
- printf (" Late Collision:%-8lu\n", sc->txLateCollision);
- printf (" Underrun:%-8lu", sc->txUnderrun);
- printf (" Raw output wait:%-8lu\n", sc->txRawWait);
-}
-
-/*
- * Driver ioctl handler
- */
-static int
-scc_ioctl (struct ifnet *ifp, int command, caddr_t data)
-{
- struct m860_enet_struct *sc = ifp->if_softc;
- int error = 0;
-
- switch (command) {
- case SIOCGIFADDR:
- case SIOCSIFADDR:
- ether_ioctl (ifp, command, data);
- break;
-
- case SIOCSIFFLAGS:
- switch (ifp->if_flags & (IFF_UP | IFF_RUNNING)) {
- case IFF_RUNNING:
- scc_stop (sc);
- break;
-
- case IFF_UP:
- scc_init (sc);
- break;
-
- case IFF_UP | IFF_RUNNING:
- scc_stop (sc);
- scc_init (sc);
- break;
-
- default:
- break;
- }
- break;
-
- case SIO_RTEMS_SHOW_STATS:
- enet_stats (sc);
- break;
-
- /*
- * FIXME: All sorts of multicast commands need to be added here!
- */
- default:
- error = EINVAL;
- break;
- }
- return error;
-}
-
-static int
-fec_ioctl (struct ifnet *ifp, int command, caddr_t data)
-{
- struct m860_enet_struct *sc = ifp->if_softc;
- int error = 0;
-
- switch (command) {
- case SIOCGIFADDR:
- case SIOCSIFADDR:
- ether_ioctl (ifp, command, data);
- break;
-
- case SIOCSIFFLAGS:
- switch (ifp->if_flags & (IFF_UP | IFF_RUNNING)) {
- case IFF_RUNNING:
- fec_stop (sc);
- break;
-
- case IFF_UP:
- fec_init (sc);
- break;
-
- case IFF_UP | IFF_RUNNING:
- fec_stop (sc);
- fec_init (sc);
- break;
-
- default:
- break;
- }
- break;
-
- case SIO_RTEMS_SHOW_STATS:
- enet_stats (sc);
- break;
-
- /*
- * FIXME: All sorts of multicast commands need to be added here!
- */
- default:
- error = EINVAL;
- break;
- }
- return error;
-}
-
-/*
- * Attach an SCC driver to the system
- */
-int
-rtems_scc1_driver_attach (struct rtems_bsdnet_ifconfig *config)
-{
- struct m860_enet_struct *sc;
- struct ifnet *ifp;
- int mtu;
- int i;
-
- /*
- * Find a free driver
- */
- for (i = 0 ; i < NIFACES ; i++) {
- sc = &enet_driver[i];
- ifp = &sc->arpcom.ac_if;
- if (ifp->if_softc == NULL)
- break;
- }
- if (i >= NIFACES) {
- printf ("Too many SCC drivers.\n");
- return 0;
- }
-
- /*
- * Process options
- */
- if (config->hardware_address) {
- memcpy (sc->arpcom.ac_enaddr, config->hardware_address, ETHER_ADDR_LEN);
- }
- else {
- sc->arpcom.ac_enaddr[0] = 0x44;
- sc->arpcom.ac_enaddr[1] = 0x22;
- sc->arpcom.ac_enaddr[2] = 0x33;
- sc->arpcom.ac_enaddr[3] = 0x33;
- sc->arpcom.ac_enaddr[4] = 0x22;
- sc->arpcom.ac_enaddr[5] = 0x44;
- }
- if (config->mtu)
- mtu = config->mtu;
- else
- mtu = ETHERMTU;
- if (config->rbuf_count)
- sc->rxBdCount = config->rbuf_count;
- else
- sc->rxBdCount = RX_BUF_COUNT;
- if (config->xbuf_count)
- sc->txBdCount = config->xbuf_count;
- else
- sc->txBdCount = TX_BUF_COUNT * TX_BD_PER_BUF;
- sc->acceptBroadcast = !config->ignore_broadcast;
-
- /*
- * Set up network interface values
- */
- ifp->if_softc = sc;
- ifp->if_unit = i + 1;
- ifp->if_name = "eth";
- ifp->if_mtu = mtu;
- ifp->if_init = scc_init;
- ifp->if_ioctl = scc_ioctl;
- ifp->if_start = m860_enet_start;
- ifp->if_output = ether_output;
- ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX;
- if (ifp->if_snd.ifq_maxlen == 0)
- ifp->if_snd.ifq_maxlen = ifqmaxlen;
-
- /*
- * Attach the interface
- */
- if_attach (ifp);
- ether_ifattach (ifp);
- return 1;
-};
-
-int
-rtems_fec_driver_attach (struct rtems_bsdnet_ifconfig *config)
-{
- struct m860_enet_struct *sc;
- struct ifnet *ifp;
- int mtu;
-
- /*
- * Find a free driver
- */
- sc = &enet_driver[0];
- ifp = &sc->arpcom.ac_if;
- if (ifp->if_softc != NULL)
- return 0;
-
- /*
- * Process options
- */
- if (config->hardware_address) {
- memcpy (sc->arpcom.ac_enaddr, config->hardware_address, ETHER_ADDR_LEN);
- }
- else {
- sc->arpcom.ac_enaddr[0] = 0x44;
- sc->arpcom.ac_enaddr[1] = 0x22;
- sc->arpcom.ac_enaddr[2] = 0x33;
- sc->arpcom.ac_enaddr[3] = 0x33;
- sc->arpcom.ac_enaddr[4] = 0x22;
- sc->arpcom.ac_enaddr[5] = 0x44;
- }
- if (config->mtu)
- mtu = config->mtu;
- else
- mtu = ETHERMTU;
- if (config->rbuf_count)
- sc->rxBdCount = config->rbuf_count;
- else
- sc->rxBdCount = RX_BUF_COUNT;
- if (config->xbuf_count)
- sc->txBdCount = config->xbuf_count;
- else
- sc->txBdCount = TX_BUF_COUNT * TX_BD_PER_BUF;
- sc->acceptBroadcast = !config->ignore_broadcast;
-
- /*
- * Set up network interface values
- */
- ifp->if_softc = sc;
- ifp->if_unit = 1;
- ifp->if_name = "eth";
- ifp->if_mtu = mtu;
- ifp->if_init = fec_init;
- ifp->if_ioctl = fec_ioctl;
- ifp->if_start = m860_enet_start;
- ifp->if_output = ether_output;
- ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX;
- if (ifp->if_snd.ifq_maxlen == 0)
- ifp->if_snd.ifq_maxlen = ifqmaxlen;
-
- /*
- * Attach the interface
- */
- if_attach (ifp);
- ether_ifattach (ifp);
- return 1;
-};
-
-int
-rtems_enet_driver_attach (struct rtems_bsdnet_ifconfig *config)
-{
- if ((m8xx.fec.mii_data & 0xffff) == 0x2000) {
-/* rtems_scc1_driver_attach(config);*/
- return rtems_fec_driver_attach(config);
- }
- else {
- return rtems_scc1_driver_attach(config);
- }
-}
diff --git a/c/src/lib/libbsp/powerpc/eth_comm/start/start.S b/c/src/lib/libbsp/powerpc/eth_comm/start/start.S
deleted file mode 100644
index a0a894a7ba..0000000000
--- a/c/src/lib/libbsp/powerpc/eth_comm/start/start.S
+++ /dev/null
@@ -1,153 +0,0 @@
-/* dlentry.s
- *
- * $Id$
- *
- * This file contains the entry veneer for RTEMS programs
- * downloaded to the eth-comm board.
- *
- * This file was written by Jay Monkman (jmonkman@fracsa.com)
- * It was based on the dlentry.s file for the Papyrus BSP,
- * written by:
- *
- * Author: Andrew Bray <andy@i-cubed.co.uk>
- *
- * COPYRIGHT (c) 1995 by i-cubed ltd.
- *
- * To anyone who acknowledges that this file is provided "AS IS"
- * without any express or implied warranty:
- * permission to use, copy, modify, and distribute this file
- * for any purpose is hereby granted without fee, provided that
- * the above copyright notice and this notice appears in all
- * copies, and that the name of i-cubed limited not be used in
- * advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- * i-cubed limited makes no representations about the suitability
- * of this software for any purpose.
- *
- */
-
-#include <rtems/asm.h>
-
-/*
- * The initial stack is set to run BELOW the code base address.
- * (between the vectors and text sections)
- *
- * All the entry veneer has to do is to clear the BSS.
- */
-
-/*
- * GDB likes to have debugging information for the entry veneer.
- * Here is some DWARF information.
- */
-/*
- * There was some debugging info here, but I removed it because I
- * couldn't get it to work. It isn't really necessary as far as I
- * can tell. It should still be in the papyrus BSP. -Jay
- */
-
-/*
- * On entry to download_entry, R3 will hold a pointer to a Board Info
- * Block (boardinfo_t). This should be copied as soon as possible
- * to the global M860_binfo. (The block should be copied, _NOT_
- * the pointer)
- */
-
- .section ".entry" /* This might have to be the first thing in the
- * text section. At one time, it had to be
- * first, but I don't believe it is true
- * andy more. */
- PUBLIC_VAR (start)
-SYM(start):
- bl .startup
-base_addr:
-
-/*
- * Parameters from linker
- */
-toc_pointer:
- .long s.got
-bss_length:
- .long bss.size
-bss_addr:
- .long bss.start
-
-PUBLIC_VAR (text_addr)
-text_addr:
- .long text.start
-
-PUBLIC_VAR (text_length)
-text_length:
- .long text.size
-
-/*
- * Initialization code
- */
-.startup:
- /* Get start address */
- mflr r1
-
- /* clear the bss section */
- bl bssclr
-
-/*
- * Copy the Board Info Block
- */
- .extern SYM(M860_binfo)
- lis r6, SYM(M860_binfo)@ha
- addi r6, r6, SYM(M860_binfo)@l
-
- lhz r4, 0(r3) /* Load the size of the block */
- rlwinm. r4, r4, 30, 0x3fffffff /* get number of words */
-
- mtctr r4
-
-cpy_b: lwz r5, 0(r3) /* In with the old ... */
- stw r5, 0(r6) /* ... Out with the new */
- addi r6, r6, 0x4 /* Go to the next word */
- addi r3, r3, 0x4
- bdnz cpy_b /* decrement counter and loop */
-
-/*
- * C_setup.
- */
-
- /* set toc */
- lwz r2, toc_pointer-base_addr(r1)
-
- /* Set up stack pointer = beginning of text section - 56 */
- addi r1, r1, -56-4
-
- lis r9, 0xff00
- addi r10, 0, -16384
- sth r10, 0x950(r9)
-
- lis r9, 0x0000
- addi r9, r9, 0x0007
- mtspr 0x9e, r9
-
- lis r5,environ@ha
- la r5,environ@l(r5) /* environp */
- li r4, 0 /* argv */
- li r3, 0 /* argc */
- .extern SYM (boot_card)
- bl SYM (boot_card) /* call the first C routine */
-loopstop:
- b loopstop
-
-/*
- * bssclr - zero out bss
- */
-bssclr:
- lwz r4, bss_addr-base_addr(r1) /* Start of bss */
- lwz r5, bss_length-base_addr(r1) /* Length of bss */
-
- rlwinm. r5,r5,30,0x3FFFFFFF /* form length/4 */
- beqlr /* no bss */
- mtctr r5 /* set ctr reg */
- xor r6,r6,r6 /* r6 = 0 */
-clear_bss:
- stswi r6,r4,0x4 /* store r6 */
- addi r4,r4,0x4 /* update r2 */
-
- bdnz clear_bss /* dec counter and loop */
- blr /* return */
diff --git a/c/src/lib/libbsp/powerpc/eth_comm/startup/bspstart.c b/c/src/lib/libbsp/powerpc/eth_comm/startup/bspstart.c
deleted file mode 100644
index ad0cdcc183..0000000000
--- a/c/src/lib/libbsp/powerpc/eth_comm/startup/bspstart.c
+++ /dev/null
@@ -1,215 +0,0 @@
-/* bsp_start()
- *
- * 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.
- *
- * The MPC860 specific stuff was written by Jay Monkman (jmonkman@frasca.com)
- *
- * 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$
- */
-
-#include <string.h>
-
-#include <bsp.h>
-#include <bsp/irq.h>
-#include <rtems/libio.h>
-#include <rtems/libcsupport.h>
-#include <info.h>
-#include <libcpu/cpuIdent.h>
-#include <libcpu/spr.h>
-#include <rtems/bspIo.h>
-
-boardinfo_t M860_binfo;
-
-/*
- * The original table from the application and our copy of it with
- * some changes.
- */
-extern rtems_configuration_table Configuration;
-extern unsigned long intrStackPtr;
-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 *, uint32_t, int );
-
-void BSP_panic(char *s)
-{
- printk("%s PANIC %s\n",_RTEMS_version, s);
- __asm__ __volatile ("sc");
-}
-
-void _BSP_Fatal_error(unsigned int v)
-{
- printk("%s PANIC ERROR %x\n",_RTEMS_version, v);
- __asm__ __volatile ("sc");
-}
-
-/*
- * Function: bsp_pretasking_hook
- * Created: 95/03/10
- *
- * Description:
- * BSP pretasking hook. Called just before drivers are initialized.
- * Used to setup libc and install any BSP extensions.
- *
- * NOTES:
- * Must not use libc (to do io) from here, since drivers are
- * not yet initialized.
- *
- */
-
-void
-bsp_pretasking_hook(void)
-{
- extern int _end;
- uint32_t heap_start;
-
- /*
- * Let's check to see if the size of M860_binfo is what
- * it should be. It might not be if the info.h files
- * for RTEMS and the bootloader define boardinfo_t
- * differently.
- */
-
- /* Oops. printf() won't work yet, since the console is not initialized.
- I should probably find some way of doing this though.
- if (M860_binfo.size != sizeof(boardinfo_t)) {
- printf("The size of the Board Info Block appears to be incorrect.\n");
- printf(" This could occur if the 'info.h' files for RTEMS and the\n");
- printf(" bootloader differ in their definition of boardinfo_t\n");
- }
- */
- heap_start = (uint32_t) &_end;
-
- /* Align the heap on a natural boundary (4 bytes?) */
- if (heap_start & (CPU_ALIGNMENT-1)) {
- heap_start = (heap_start + CPU_ALIGNMENT) & ~(CPU_ALIGNMENT-1);
- }
- /* set up a 256K heap */
- bsp_libc_init((void *) heap_start, 256 * 1024, 0);
-
-#ifdef RTEMS_DEBUG
- rtems_debug_enable( RTEMS_DEBUG_ALL_MASK );
-#endif
-}
-
-SPR_RW(SPRG0)
-SPR_RW(SPRG1)
-
-void bsp_start(void)
-{
- extern int _end;
- uint32_t heap_start;
- uint32_t ws_start;
- ppc_cpu_id_t myCpu;
- ppc_cpu_revision_t myCpuRevision;
- register unsigned char* intrStack;
- extern void cpu_init(void);
-
- /*
- * Get CPU identification dynamically. Note that the get_ppc_cpu_type() function
- * store the result in global variables so that it can be used latter...
- */
- myCpu = get_ppc_cpu_type();
- myCpuRevision = get_ppc_cpu_revision();
-
- cpu_init();
- mmu_init();
- /*
- * Initialize some SPRG registers related to irq handling
- */
-
- intrStack = (((unsigned char*)&intrStackPtr) - CPU_MINIMUM_STACK_FRAME_SIZE);
-
- _write_SPRG1((unsigned int)intrStack);
-
- /* Signal them that this BSP has fixed PR288 - eventually, this should go away */
- _write_SPRG0(PPC_BSP_HAS_FIXED_PR288);
-
- /*
- * Install our own set of exception vectors
- */
- initialize_exceptions();
-
- /*
- * Allocate the memory for the RTEMS Work Space. This can come from
- * a variety of places: hard coded address, malloc'ed from outside
- * RTEMS world (e.g. simulator or primitive memory manager), or (as
- * typically done by stock BSPs) by subtracting the required amount
- * of work space from the last physical address on the CPU board.
- */
-
- /*
- * Need to "allocate" the memory for the RTEMS Workspace and
- * tell the RTEMS configuration where it is. This memory is
- * not malloc'ed. It is just "pulled from the air".
- */
-
- heap_start = (uint32_t) &_end;
- if (heap_start & (CPU_ALIGNMENT-1))
- heap_start = (heap_start + CPU_ALIGNMENT) & ~(CPU_ALIGNMENT-1);
-
- ws_start = heap_start + (256 * 1024);
- if (ws_start & ((512 * 1024) - 1)) { /* align to 512K boundary */
- ws_start = (ws_start + (512 * 1024)) & ~((512 * 1024) - 1);
- }
-
- BSP_Configuration.work_space_start = (void *)ws_start;
- BSP_Configuration.work_space_size = 512 * 1024;
-
- /*
- * initialize the CPU table for this BSP
- */
-
- Cpu_table.pretasking_hook = bsp_pretasking_hook; /* init libc, etc. */
- Cpu_table.postdriver_hook = bsp_postdriver_hook;
- Cpu_table.interrupt_stack_size = CONFIGURE_INTERRUPT_STACK_MEMORY;
-
- Cpu_table.clicks_per_usec = 1; /* for 4MHz extclk */
- Cpu_table.serial_per_sec = 10000000;
- Cpu_table.serial_external_clock = 1;
- Cpu_table.serial_xon_xoff = 0;
- Cpu_table.serial_cts_rts = 1;
- Cpu_table.serial_rate = 9600;
- Cpu_table.timer_average_overhead = 0;
- Cpu_table.timer_least_valid = 0;
- Cpu_table.clock_speed = 40000000;
-
- /*
- * Since we are currently autodetecting whether to use SCC1 or
- * the FEC for ethernet, we set up a register in the ethernet
- * transciever that is used for 10/100 Mbps ethernet now, so that
- * we can attempt to read it later in rtems_enet_driver_attach()
- */
- m8xx.fec.mii_speed = 0x0a;
- m8xx.fec.mii_data = 0x680a0000;
-
- m8xx.scc2.sccm=0;
- m8xx.scc2p.rbase=0;
- m8xx.scc2p.tbase=0;
- m8xx_cp_execute_cmd( M8xx_CR_OP_STOP_TX | M8xx_CR_CHAN_SCC2 );
- /*
- * Initalize RTEMS IRQ system
- */
- BSP_rtems_irq_mng_init(0);
-#ifdef SHOW_MORE_INIT_SETTINGS
- printk("Exit from bspstart\n");
-#endif
-
-}
diff --git a/c/src/lib/libbsp/powerpc/eth_comm/startup/cpuinit.c b/c/src/lib/libbsp/powerpc/eth_comm/startup/cpuinit.c
deleted file mode 100644
index 99355ea11e..0000000000
--- a/c/src/lib/libbsp/powerpc/eth_comm/startup/cpuinit.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * cpuinit.c - this file contains functions for initializing the CPU
- *
- * Written by Jay Monkman (jmonkman@frasca.com)
- *
- * $Id$
- */
-
-#include <bsp.h>
-
-/* Macros for handling all the MMU SPRs */
-#define PUT_IC_CST(r) __asm__ volatile ("mtspr 0x230,%0\n" ::"r"(r))
-#define GET_IC_CST(r) __asm__ volatile ("mfspr %0,0x230\n" :"=r"(r))
-#define PUT_DC_CST(r) __asm__ volatile ("mtspr 0x238,%0\n" ::"r"(r))
-#define GET_DC_CST(r) __asm__ volatile ("mfspr %0,0x238\n" :"=r"(r))
-
-void cpu_init(void)
-{
- register unsigned long t1, t2;
-
- /* Let's clear MSR[IR] and MSR[DR] */
- t2 = PPC_MSR_IR | PPC_MSR_DR;
- __asm__ volatile (
- "mfmsr %0\n"
- "andc %0, %0, %1\n"
- "mtmsr %0\n" :"=r"(t1), "=r"(t2):
- "1"(t2));
-
- t1 = M8xx_CACHE_CMD_UNLOCK;
- /* PUT_DC_CST(t1); */
- PUT_IC_CST(t1);
-
- t1 = M8xx_CACHE_CMD_INVALIDATE;
- /* PUT_DC_CST(t1); */
- PUT_IC_CST(t1);
-
- t1 = M8xx_CACHE_CMD_ENABLE;
- PUT_IC_CST(t1);
-
- t1 = M8xx_CACHE_CMD_SFWT;
- /* PUT_DC_CST(t1); */
- t1 = M8xx_CACHE_CMD_ENABLE;
- /* PUT_DC_CST(t1);*/
-}
diff --git a/c/src/lib/libbsp/powerpc/eth_comm/startup/linkcmds b/c/src/lib/libbsp/powerpc/eth_comm/startup/linkcmds
deleted file mode 100644
index 5b9054af9f..0000000000
--- a/c/src/lib/libbsp/powerpc/eth_comm/startup/linkcmds
+++ /dev/null
@@ -1,207 +0,0 @@
-/*
- * This file contains directives for the GNU linker which are specific
- * to the Ethernet-Comm Board
- *
- * $Id$
- */
-
-OUTPUT_FORMAT("elf32-powerpc", "elf32-powerpc",
- "elf32-powerpc")
-OUTPUT_ARCH(powerpc)
-
-ENTRY(start)
-
-MEMORY
- {
- ram : org = 0x0, l = 4M
- dpram : org = 0xff000000, l = 16K
- canbus : org = 0xff100000, l = 12K
- flash : org = 0xfff00000, l = 512K
- }
-
-
-SECTIONS
-{
- .vectors :
- {
- *(.vectors)
- } >ram
-
- /*
- * The stack will live in this area - between the vectors and
- * the text section.
- */
-
- .text 0x10000:
- {
- text.start = .;
- *(.entry)
- *(.entry2)
- *(.text)
- *(.rodata*)
-
- /*
- * Special FreeBSD sysctl sections.
- */
- . = ALIGN (16);
- __start_set_sysctl_set = .;
- *(set_sysctl_*);
- __stop_set_sysctl_set = ABSOLUTE(.);
- *(set_domain_*);
- *(set_pseudo_*);
-
- *(.eh_frame)
- *(.gnu.linkonce.r*)
- *(.rodata1)
- *(.gnu.linkonce.t.*)
- *(.descriptors)
- /* .gnu.warning sections are handled specially by elf32.em. */
- *(.gnu.warning)
- *(rom_ver)
- etext = ALIGN(0x10);
- _etext = .;
-
- __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)
- _init = .; *(.init)
- _fini = .; *(.fini)
- _endtext = .;
- text.end = .;
- } > ram
-
- /* R/W Data */
- .data :
- {
- *(.data)
- *(.data1)
- *(.gnu.linkonce.d.*)
- PROVIDE (__SDATA_START__ = .);
- *(.sdata)
- *(.gnu.linkonce.s.*)
- } > ram
-
- PROVIDE (__EXCEPT_START__ = .);
- .gcc_except_table : { *(.gcc_except_table) } >ram
- PROVIDE (__EXCEPT_END__ = .);
- __GOT_START__ = .;
- .got :
- {
- s.got = .;
- *(.got.plt) *(.got)
- } > ram
- __GOT_END__ = .;
-
- .got1 : { *(.got1) } >ram
- PROVIDE (__GOT2_START__ = .);
- PROVIDE (_GOT2_START_ = .);
- .got2 : { *(.got2) } >ram
- PROVIDE (__GOT2_END__ = .);
- PROVIDE (_GOT2_END_ = .);
-
- PROVIDE (__FIXUP_START__ = .);
- PROVIDE (_FIXUP_START_ = .);
- .fixup : { *(.fixup) } >ram
- PROVIDE (_FIXUP_END_ = .);
- PROVIDE (__FIXUP_END__ = .);
-
- PROVIDE (__SDATA2_START__ = .);
- .sdata2 : { *(.sdata2) *(.gnu.linkonce.s2.*) } >ram
- .sbss2 : { *(.sbss2) *(.gnu.linkonce.sb2.*) } >ram
- PROVIDE (__SBSS2_END__ = .);
-
- .sbss2 : { *(.sbss2) } >ram
- PROVIDE (__SBSS2_END__ = .);
-
- __SBSS_START__ = .;
- .bss :
- {
- bss.start = .;
- *(.bss) *(.sbss) *(COMMON)
- . = ALIGN(4);
- bss.end = .;
- } > ram
- __SBSS_END__ = .;
-
- bss.size = bss.end - bss.start;
- text.size = text.end - text.start;
- PROVIDE(_end = bss.end);
- /*
- * Interrupt stack setup
- */
-
- IntrStack_start = ALIGN(0x10);
- . += 0x4000;
- intrStack = .;
- PROVIDE(intrStackPtr = intrStack);
-
- dpram :
- {
- m8xx = .;
- _m8xx = .;
- . += (8 * 1024);
- } >dpram
-
- canbus :
- {
- canbus0 = .;
- . += (0x1000);
- canbus1 = .;
- . += (0x1000);
- canbus2 = .;
- . += (0x1000);
- } >canbus
-
-
- /* Stabs debugging sections. */
- .stab 0 : { *(.stab) }
- .stabstr 0 : { *(.stabstr) }
- .stab.excl 0 : { *(.stab.excl) }
- .stab.exclstr 0 : { *(.stab.exclstr) }
- .stab.index 0 : { *(.stab.index) }
- .stab.indexstr 0 : { *(.stab.indexstr) }
- .comment 0 : { *(.comment) }
-
- /* DWARF debug sections.
- Symbols in the DWARF debugging sections are relative to the beginning
- of the section so we begin them at 0. */
- /* DWARF 1 */
- .debug 0 : { *(.debug) }
- .line 0 : { *(.line) }
-
- /* GNU DWARF 1 extensions */
- .debug_srcinfo 0 : { *(.debug_srcinfo) }
- .debug_sfnames 0 : { *(.debug_sfnames) }
-
- /* DWARF 1.1 and DWARF 2 */
- .debug_aranges 0 : { *(.debug_aranges) }
- .debug_pubnames 0 : { *(.debug_pubnames) }
-
- /* DWARF 2 */
- .debug_info 0 : { *(.debug_info) }
- .debug_abbrev 0 : { *(.debug_abbrev) }
- .debug_line 0 : { *(.debug_line) }
- .debug_frame 0 : { *(.debug_frame) }
- .debug_str 0 : { *(.debug_str) }
- .debug_loc 0 : { *(.debug_loc) }
- .debug_macinfo 0 : { *(.debug_macinfo) }
-
- /* SGI/MIPS DWARF 2 extensions */
- .debug_weaknames 0 : { *(.debug_weaknames) }
- .debug_funcnames 0 : { *(.debug_funcnames) }
- .debug_typenames 0 : { *(.debug_typenames) }
- .debug_varnames 0 : { *(.debug_varnames) }
- /* These must appear regardless of . */
-
-}
diff --git a/c/src/lib/libbsp/powerpc/eth_comm/startup/mmutlbtab.c b/c/src/lib/libbsp/powerpc/eth_comm/startup/mmutlbtab.c
deleted file mode 100644
index adc3c0491d..0000000000
--- a/c/src/lib/libbsp/powerpc/eth_comm/startup/mmutlbtab.c
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * mmutlbtab.c
- *
- * This file defines the MMU_TLB_table for the eth_comm board.
- *
- * 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.
- */
-
-#include <bsp.h>
-#include <mpc8xx/mmu.h>
-
-/*
- * This MMU_TLB_table is used to statically initialize the Table Lookaside
- * Buffers in the MMU of the MPC860 processor.
- *
- * We initialize the entries in both the instruction and data TLBs
- * with the same values - a few bits relevant to the data TLB are unused
- * in the instruction TLB.
- *
- * An Effective Page Number (EPN), Tablewalk Control Register (TWC) and
- * Real Page Number (RPN) value are supplied in the table for each TLB entry.
- *
- * The instruction and data TLBs each can hold 32 entries, so _TLB_Table must
- * not have more than 32 lines in it!
- *
- * We set up the virtual memory map so that virtual address of a
- * location is equal to its real address.
- */
-MMU_TLB_table_t MMU_TLB_table[] = {
- /*
- * DRAM: CS1, Start address 0x00000000, 8M,
- * ASID=0x0, APG=0x0, not guarded memory, copyback data cache policy,
- * R/W,X for supervisor, no ASID comparison, not cache-inhibited.
- * EPN TWC RPN
- */
- { 0x00000200, 0x0D, 0x000001FD } /* DRAM - PS=PS=8M */
-};
-
-/*
- * MMU_N_TLB_Table_Entries is defined here because the size of the
- * MMU_TLB_table is only known in this file.
- */
-int MMU_N_TLB_Table_Entries = ( sizeof(MMU_TLB_table) / sizeof(MMU_TLB_table[0]) );
diff --git a/c/src/lib/libbsp/powerpc/eth_comm/times b/c/src/lib/libbsp/powerpc/eth_comm/times
deleted file mode 100644
index 11a94ec6af..0000000000
--- a/c/src/lib/libbsp/powerpc/eth_comm/times
+++ /dev/null
@@ -1,195 +0,0 @@
-#
-# Timing Test Suite Results for the NO_BSP
-#
-# NOTE: This is just a template. The times are irrelevant since this BSP
-# can only be compiled -- not executed.
-#
-# $Id$
-#
-
-Board: eth_comm
-CPU: Motorola MPC860T
-Clock Speed: 40 Mhz
-Memory Configuration: DRAM, 60ns
-Wait States:
-
-Times Reported in: cycles, microseconds, etc
-Timer Source: Time Base register
-
-Column X:
-Column Y:
-
-# DESCRIPTION A B
-== ================================================================= ==== ====
-1 rtems_semaphore_create 56
- rtems_semaphore_delete 35
- rtems_semaphore_obtain: available 13
- rtems_semaphore_obtain: not available -- NO_WAIT 13
- rtems_semaphore_release: no waiting tasks 16
-
-2 rtems_semaphore_obtain: not available -- caller blocks 48
-
-3 rtems_semaphore_release: task readied -- preempts caller 36
-
-4 rtems_task_restart: blocked task -- preempts caller 117
- rtems_task_restart: ready task -- preempts caller 94
- rtems_semaphore_release: task readied -- returns to caller 22
- rtems_task_create 83
- rtems_task_start 30
- rtems_task_restart: suspended task -- returns to caller 36
- rtems_task_delete: suspended task 74
- rtems_task_restart: ready task -- returns to caller 35
- rtems_task_restart: blocked task -- returns to caller 47
- rtems_task_delete: blocked task 76
-
-5 rtems_task_suspend: calling task 37
- rtems_task_resume: task readied -- preempts caller 31
-
-6 rtems_task_restart: calling task 48
- rtems_task_suspend: returns to caller 14
- rtems_task_resume: task readied -- returns to caller 16
- rtems_task_delete: ready task 80
-
-7 rtems_task_restart: suspended task -- preempts caller 56
-
-8 rtems_task_set_priority: obtain current priority 12
- rtems_task_set_priority: returns to caller 23
- rtems_task_mode: obtain current mode 5
- rtems_task_mode: no reschedule 7
- rtems_task_mode: reschedule -- returns to caller 14
- rtems_task_mode: reschedule -- preempts caller 43
- rtems_task_set_note 13
- rtems_task_get_note 12
- rtems_clock_set 28
- rtems_clock_get 0
-
-9 rtems_message_queue_create 110
- rtems_message_queue_send: no waiting tasks 28
- rtems_message_queue_urgent: no waiting tasks 28
- rtems_message_queue_receive: available 26
- rtems_message_queue_flush: no messages flushed 13
- rtems_message_queue_flush: messages flushed 14
- rtems_message_queue_delete 45
-
-10 rtems_message_queue_receive: not available -- NO_WAIT 15
- rtems_message_queue_receive: not available -- caller blocks 48
-
-11 rtems_message_queue_send: task readied -- preempts caller 46
-
-12 rtems_message_queue_send: task readied -- returns to caller 31
-
-13 rtems_message_queue_urgent: task readied -- preempts caller 46
-
-14 rtems_message_queue_urgent: task readied -- returns to caller 31
-
-15 rtems_event_receive: obtain current events 1
- rtems_event_receive: not available -- NO_WAIT 11
- rtems_event_receive: not available -- caller blocks 36
- rtems_event_send: no task readied 12
- rtems_event_receive: available 19
- rtems_event_send: task readied -- returns to caller 21
-
-16 rtems_event_send: task readied -- preempts caller 38
-
-17 rtems_task_set_priority: preempts caller 51
-
-18 rtems_task_delete: calling task 102
-
-19 rtems_signal_catch 31
- rtems_signal_send: returns to caller 21
- rtems_signal_send: signal to self 39
- exit ASR overhead: returns to calling task 30
- exit ASR overhead: returns to preempting task 33
-
-20 rtems_partition_create 59
- rtems_region_create 37
- rtems_partition_get_buffer: available 19
- rtems_partition_get_buffer: not available 12
- rtems_partition_return_buffer 21
- rtems_partition_delete 20
- rtems_region_get_segment: available 20
- rtems_region_get_segment: not available -- NO_WAIT 24
- rtems_region_return_segment: no waiting tasks 21
- rtems_region_get_segment: not available -- caller blocks 76
- rtems_region_return_segment: task readied -- preempts caller 82
- rtems_region_return_segment: task readied -- returns to caller 55
- rtems_region_delete 20
- rtems_io_initialize 1
- rtems_io_open 1
- rtems_io_close 1
- rtems_io_read 1
- rtems_io_write 1
- rtems_io_control 1
-
-21 rtems_task_ident 84
- rtems_message_queue_ident 82
- rtems_semaphore_ident 94
- rtems_partition_ident 82
- rtems_region_ident 84
- rtems_port_ident 82
- rtems_timer_ident 82
- rtems_rate_monotonic_ident 82
-
-22 rtems_message_queue_broadcast: task readied -- returns to caller 81
- rtems_message_queue_broadcast: no waiting tasks 22
- rtems_message_queue_broadcast: task readied -- preempts caller 76
-
-23 rtems_timer_create 11
- rtems_timer_fire_after: inactive 20
- rtems_timer_fire_after: active 22
- rtems_timer_cancel: active 12
- rtems_timer_cancel: inactive 11
- rtems_timer_reset: inactive 18
- rtems_timer_reset: active 21
- rtems_timer_fire_when: inactive 24
- rtems_timer_fire_when: active 24
- rtems_timer_delete: active 16
- rtems_timer_delete: inactive 14
- rtems_task_wake_when 49
-
-24 rtems_task_wake_after: yield -- returns to caller 8
- rtems_task_wake_after: yields -- preempts caller 30
-
-25 rtems_clock_tick 35
-
-26 _ISR_Disable 24
- _ISR_Flash 0
- _ISR_Enable 1
- _Thread_Disable_dispatch 1
- _Thread_Enable_dispatch 7
- _Thread_Set_state 7
- _Thread_Disptach (NO FP) 31
- context switch: no floating point contexts 22
- context switch: self 9
- context switch: to another task 10
- fp context switch: restore 1st FP task 24
- fp context switch: save idle, restore initialized 10
- fp context switch: save idle, restore idle 23
- fp context switch: save initialized, restore initialized 10
- _Thread_Resume 11
- _Thread_Unblock 6
- _Thread_Ready 10
- _Thread_Get 3
- _Semaphore_Get 2
- _Thread_Get: invalid id 0
-
-
-27 interrupt entry overhead: returns to interrupted task 14
- interrupt exit overhead: returns to interrupted task 26
- interrupt entry overhead: returns to nested interrupt 7
- interrupt exit overhead: returns to nested interrupt 10
- interrupt entry overhead: returns to preempting task 14
- interrupt exit overhead: returns to preempting task 45
-
-28 rtems_port_create 23
- rtems_port_external_to_internal 10
- rtems_port_internal_to_external 10
- rtems_port_delete 21
-
-29 rtems_rate_monotonic_create 43
- rtems_rate_monotonic_period: initiate period -- returns to caller 32
- rtems_rate_monotonic_period: obtain status 17
- rtems_rate_monotonic_cancel 22
- rtems_rate_monotonic_delete: inactive 25
- rtems_rate_monotonic_delete: active 28
- rtems_rate_monotonic_period: conclude periods -- caller blocks 30
diff --git a/c/src/lib/libbsp/powerpc/eth_comm/vectors/vectors.S b/c/src/lib/libbsp/powerpc/eth_comm/vectors/vectors.S
deleted file mode 100644
index 50758ca5b4..0000000000
--- a/c/src/lib/libbsp/powerpc/eth_comm/vectors/vectors.S
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- * (c) 1999, Eric Valette valette@crf.canon.fr
- *
- *
- * This file contains the assembly code for the PowerPC
- * exception veneers for RTEMS.
- *
- * $Id$
- */
-
-#include <rtems/asm.h>
-#include <rtems/score/cpu.h>
-#include <bsp/vectors.h>
-
-#define SYNC \
- sync; \
- isync
-
- .text
- .p2align 5
-
-PUBLIC_VAR(default_exception_vector_code_prolog)
-SYM (default_exception_vector_code_prolog):
- /*
- * let room for exception frame
- */
- stwu r1, - (EXCEPTION_FRAME_END)(r1)
- stw r3, GPR3_OFFSET(r1)
- stw r2, GPR2_OFFSET(r1)
- mflr r2
- stw r2, EXC_LR_OFFSET(r1)
- bl 0f
-0: /*
- * r3 = exception vector entry point
- * (256 * vector number) + few instructions
- */
- mflr r3
- /*
- * r3 = r3 >> 8 = vector
- */
- srwi r3,r3,8
- ba push_normalized_frame
-
- PUBLIC_VAR (default_exception_vector_code_prolog_size)
-
- default_exception_vector_code_prolog_size= . - default_exception_vector_code_prolog
-
- .p2align 5
-PUBLIC_VAR (push_normalized_frame)
-SYM (push_normalized_frame):
- stw r3, EXCEPTION_NUMBER_OFFSET(r1)
- stw r0, GPR0_OFFSET(r1)
- mfsrr0 r2
- stw r2, SRR0_FRAME_OFFSET(r1)
- mfsrr1 r3
- stw r3, SRR1_FRAME_OFFSET(r1)
- /*
- * Save general purpose registers
- * Already saved in prolog : R1, R2, R3, LR.
- * Saved a few line above : R0
- *
- * Manual says that "stmw" instruction may be slower than
- * series of individual "stw" but who cares about performance
- * for the DEFAULT exception handler?
- */
- stmw r4, GPR4_OFFSET(r1) /* save R4->R31 */
-
- mfcr r31
- stw r31, EXC_CR_OFFSET(r1)
- mfctr r30
- stw r30, EXC_CTR_OFFSET(r1)
- mfxer r28
- stw r28, EXC_XER_OFFSET(r1)
- /*
- * compute SP at exception entry
- */
- addi r2, r1, EXCEPTION_FRAME_END
- /*
- * store it at the right place
- */
- stw r2, GPR1_OFFSET(r1)
- /*
- * Enable data and instruction address translation, exception nesting
- */
- mfmsr r3
- ori r3,r3, MSR_RI | MSR_IR | MSR_DR
- mtmsr r3
- SYNC
-
- /*
- * Call C exception handler
- */
- /*
- * store the execption frame address in r3 (first param)
- */
- addi r3, r1, 0x8
- /*
- * globalExceptHdl(r3)
- */
- addis r4, 0, globalExceptHdl@ha
- lwz r5, globalExceptHdl@l(r4)
- mtlr r5
- blrl
- /*
- * Restore registers status
- */
- lwz r31, EXC_CR_OFFSET(r1)
- mtcr r31
- lwz r30, EXC_CTR_OFFSET(r1)
- mtctr r30
- lwz r29, EXC_LR_OFFSET(r1)
- mtlr r29
- lwz r28, EXC_XER_OFFSET(r1)
- mtxer r28
-
- lmw r4, GPR4_OFFSET(r1)
- lwz r2, GPR2_OFFSET(r1)
- lwz r0, GPR0_OFFSET(r1)
-
- /*
- * Disable data and instruction translation. Make path non recoverable...
- */
- mfmsr r3
- xori r3, r3, MSR_RI | MSR_IR | MSR_DR
- mtmsr r3
- SYNC
- /*
- * Restore rfi related settings
- */
-
- lwz r3, SRR1_FRAME_OFFSET(r1)
- mtsrr1 r3
- lwz r3, SRR0_FRAME_OFFSET(r1)
- mtsrr0 r3
-
- lwz r3, GPR3_OFFSET(r1)
- addi r1,r1, EXCEPTION_FRAME_END
- SYNC
- rfi
diff --git a/c/src/lib/libbsp/powerpc/eth_comm/vectors/vectors.h b/c/src/lib/libbsp/powerpc/eth_comm/vectors/vectors.h
deleted file mode 100644
index 232c61d9a6..0000000000
--- a/c/src/lib/libbsp/powerpc/eth_comm/vectors/vectors.h
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * vectors.h Exception frame related contant and API.
- *
- * This include file describe the data structure and the functions implemented
- * by rtems to handle exceptions.
- *
- * CopyRight (C) 1999 valette@crf.canon.fr
- *
- * The license and distribution terms for this file may be
- * found in found in the file LICENSE in this distribution or at
- * http://www.rtems.com/license/LICENSE.
- *
- * $Id$
- */
-#ifndef LIBBSP_POWERPC_ETH_COMM_VECTORS_H
-#define LIBBSP_POWERPC_ETH_COMM_VECTORS_H
-
-/*
- * The callee (high level exception code written in C)
- * will store the Link Registers (return address) at entry r1 + 4 !!!.
- * So let room for it!!!.
- */
-#define LINK_REGISTER_CALLEE_UPDATE_ROOM 4
-#define SRR0_FRAME_OFFSET 8
-#define SRR1_FRAME_OFFSET 12
-#define EXCEPTION_NUMBER_OFFSET 16
-#define GPR0_OFFSET 20
-#define GPR1_OFFSET 24
-#define GPR2_OFFSET 28
-#define GPR3_OFFSET 32
-#define GPR4_OFFSET 36
-#define GPR5_OFFSET 40
-#define GPR6_OFFSET 44
-#define GPR7_OFFSET 48
-#define GPR8_OFFSET 52
-#define GPR9_OFFSET 56
-#define GPR10_OFFSET 60
-#define GPR11_OFFSET 64
-#define GPR12_OFFSET 68
-#define GPR13_OFFSET 72
-#define GPR14_OFFSET 76
-#define GPR15_OFFSET 80
-#define GPR16_OFFSET 84
-#define GPR17_OFFSET 88
-#define GPR18_OFFSET 92
-#define GPR19_OFFSET 96
-#define GPR20_OFFSET 100
-#define GPR21_OFFSET 104
-#define GPR22_OFFSET 108
-#define GPR23_OFFSET 112
-#define GPR24_OFFSET 116
-#define GPR25_OFFSET 120
-#define GPR26_OFFSET 124
-#define GPR27_OFFSET 128
-#define GPR28_OFFSET 132
-#define GPR29_OFFSET 136
-#define GPR30_OFFSET 140
-#define GPR31_OFFSET 144
-#define EXC_CR_OFFSET 148
-#define EXC_CTR_OFFSET 152
-#define EXC_XER_OFFSET 156
-#define EXC_LR_OFFSET 160
-#define EXC_DAR_OFFSET 164
-/*
- * maintain the EABI requested 8 bytes aligment
- * As SVR4 ABI requires 16, make it 16 (as some
- * exception may need more registers to be processed...)
- */
-#define EXCEPTION_FRAME_END 176
-
-#ifndef ASM
-/*
- * default raw exception handlers
- */
-
-extern void default_exception_vector_code_prolog();
-extern int default_exception_vector_code_prolog_size;
-
-/* codemove is like memmove, but it also gets the cache line size
- * as 4th parameter to synchronize them. If this last parameter is
- * zero, it performs more or less like memmove. No copy is performed if
- * source and destination addresses are equal. However the caches
- * are synchronized. Note that the size is always rounded up to the
- * next mutiple of 4.
- */
-extern void * codemove(void *, const void *, unsigned int, unsigned long);
-extern void initialize_exceptions();
-
-typedef struct {
- unsigned EXC_SRR0;
- unsigned EXC_SRR1;
- unsigned _EXC_number;
- unsigned GPR0;
- unsigned GPR1;
- unsigned GPR2;
- unsigned GPR3;
- unsigned GPR4;
- unsigned GPR5;
- unsigned GPR6;
- unsigned GPR7;
- unsigned GPR8;
- unsigned GPR9;
- unsigned GPR10;
- unsigned GPR11;
- unsigned GPR12;
- unsigned GPR13;
- unsigned GPR14;
- unsigned GPR15;
- unsigned GPR16;
- unsigned GPR17;
- unsigned GPR18;
- unsigned GPR19;
- unsigned GPR20;
- unsigned GPR21;
- unsigned GPR22;
- unsigned GPR23;
- unsigned GPR24;
- unsigned GPR25;
- unsigned GPR26;
- unsigned GPR27;
- unsigned GPR28;
- unsigned GPR29;
- unsigned GPR30;
- unsigned GPR31;
- unsigned EXC_CR;
- unsigned EXC_CTR;
- unsigned EXC_XER;
- unsigned EXC_LR;
- unsigned EXC_MSR;
- unsigned EXC_DAR;
-}BSP_Exception_frame;
-
-typedef void (*exception_handler_t) (BSP_Exception_frame* excPtr);
-extern exception_handler_t globalExceptHdl;
-/*
- * Compatibility with pc386
- */
-typedef BSP_Exception_frame CPU_Exception_frame;
-typedef exception_handler_t cpuExcHandlerType;
-
-#endif /* ASM */
-
-#endif /* LIBBSP_POWERPC_ETH_COMM_VECTORS_H */
diff --git a/c/src/lib/libbsp/powerpc/eth_comm/vectors/vectors_init.c b/c/src/lib/libbsp/powerpc/eth_comm/vectors/vectors_init.c
deleted file mode 100644
index 489f9d5054..0000000000
--- a/c/src/lib/libbsp/powerpc/eth_comm/vectors/vectors_init.c
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * vectors_init.c Exception hanlding initialisation (and generic handler).
- *
- * This include file describe the data structure and the functions implemented
- * by rtems to handle exceptions.
- *
- * CopyRight (C) 1999 valette@crf.canon.fr
- *
- * The license and distribution terms for this file may be
- * found in found in the file LICENSE in this distribution or at
- * http://www.rtems.com/license/LICENSE.
- *
- * $Id$
- */
-
-#include <bsp/vectors.h>
-#include <libcpu/raw_exception.h>
-#include <bsp.h>
-#include <rtems/bspIo.h>
-
-static rtems_raw_except_global_settings exception_config;
-static rtems_raw_except_connect_data exception_table[LAST_VALID_EXC + 1];
-
-exception_handler_t globalExceptHdl;
-
-void C_exception_handler(BSP_Exception_frame* excPtr)
-{
- int recoverable = 0;
-
- printk("exception handler called for exception %d\n", excPtr->_EXC_number);
- printk("\t Next PC or Address of fault = %x\n", excPtr->EXC_SRR0);
- printk("\t Saved MSR = %x\n", excPtr->EXC_SRR1);
- printk("\t R0 = %x\n", excPtr->GPR0);
- printk("\t R1 = %x\n", excPtr->GPR1);
- printk("\t R2 = %x\n", excPtr->GPR2);
- printk("\t R3 = %x\n", excPtr->GPR3);
- printk("\t R4 = %x\n", excPtr->GPR4);
- printk("\t R5 = %x\n", excPtr->GPR5);
- printk("\t R6 = %x\n", excPtr->GPR6);
- printk("\t R7 = %x\n", excPtr->GPR7);
- printk("\t R8 = %x\n", excPtr->GPR8);
- printk("\t R9 = %x\n", excPtr->GPR9);
- printk("\t R10 = %x\n", excPtr->GPR10);
- printk("\t R11 = %x\n", excPtr->GPR11);
- printk("\t R12 = %x\n", excPtr->GPR12);
- printk("\t R13 = %x\n", excPtr->GPR13);
- printk("\t R14 = %x\n", excPtr->GPR14);
- printk("\t R15 = %x\n", excPtr->GPR15);
- printk("\t R16 = %x\n", excPtr->GPR16);
- printk("\t R17 = %x\n", excPtr->GPR17);
- printk("\t R18 = %x\n", excPtr->GPR18);
- printk("\t R19 = %x\n", excPtr->GPR19);
- printk("\t R20 = %x\n", excPtr->GPR20);
- printk("\t R21 = %x\n", excPtr->GPR21);
- printk("\t R22 = %x\n", excPtr->GPR22);
- printk("\t R23 = %x\n", excPtr->GPR23);
- printk("\t R24 = %x\n", excPtr->GPR24);
- printk("\t R25 = %x\n", excPtr->GPR25);
- printk("\t R26 = %x\n", excPtr->GPR26);
- printk("\t R27 = %x\n", excPtr->GPR27);
- printk("\t R28 = %x\n", excPtr->GPR28);
- printk("\t R29 = %x\n", excPtr->GPR29);
- printk("\t R30 = %x\n", excPtr->GPR30);
- printk("\t R31 = %x\n", excPtr->GPR31);
- printk("\t CR = %x\n", excPtr->EXC_CR);
- printk("\t CTR = %x\n", excPtr->EXC_CTR);
- printk("\t XER = %x\n", excPtr->EXC_XER);
- printk("\t LR = %x\n", excPtr->EXC_LR);
- printk("\t MSR = %x\n", excPtr->EXC_MSR);
- if (excPtr->_EXC_number == ASM_DEC_VECTOR)
- recoverable = 1;
- if (excPtr->_EXC_number == ASM_SYS_VECTOR)
-#ifdef TEST_RAW_EXCEPTION_CODE
- recoverable = 1;
-#else
- recoverable = 0;
-#endif
- if (!recoverable) {
- printk("unrecoverable exception!!! Push reset button\n");
- while(1);
- }
-}
-
-void nop_except_enable(const rtems_raw_except_connect_data* ptr)
-{
-}
-int except_always_enabled(const rtems_raw_except_connect_data* ptr)
-{
- return 1;
-}
-
-void initialize_exceptions()
-{
- int i;
-
- /*
- * Initialize pointer used by low level execption handling
- */
- globalExceptHdl = C_exception_handler;
- /*
- * Put default_exception_vector_code_prolog at relevant exception
- * code entry addresses
- */
- exception_config.exceptSize = LAST_VALID_EXC + 1;
- exception_config.rawExceptHdlTbl = &exception_table[0];
- exception_config.defaultRawEntry.exceptIndex = 0;
- exception_config.defaultRawEntry.hdl.vector = 0;
- exception_config.defaultRawEntry.hdl.raw_hdl = default_exception_vector_code_prolog;
- /*
- * Note that next line the '&' before default_exception_vector_code_prolog_size
- * is not a bug as it is defined a .set directly in asm...
- */
- exception_config.defaultRawEntry.hdl.raw_hdl_size = (unsigned) &default_exception_vector_code_prolog_size;
- for (i=0; i <= exception_config.exceptSize; i++) {
- printk("installing exception number %d\n", i);
- if (!mpc8xx_vector_is_valid (i)) {
- continue;
- }
- exception_table[i].exceptIndex = i;
- exception_table[i].hdl = exception_config.defaultRawEntry.hdl;
- exception_table[i].hdl.vector = i;
- exception_table[i].on = nop_except_enable;
- exception_table[i].off = nop_except_enable;
- exception_table[i].isOn = except_always_enabled;
- }
- if (!mpc8xx_init_exceptions(&exception_config)) {
- /*
- * At this stage we may not call BSP_Panic because it uses exceptions!!!
- */
- printk("Exception handling initialization failed\n");
- printk("System locked\n"); while(1);
- }
- else {
- printk("Exception handling initialization done\n");
- }
-}
diff --git a/c/src/lib/libbsp/powerpc/eth_comm/wrapup/.cvsignore b/c/src/lib/libbsp/powerpc/eth_comm/wrapup/.cvsignore
deleted file mode 100644
index 282522db03..0000000000
--- a/c/src/lib/libbsp/powerpc/eth_comm/wrapup/.cvsignore
+++ /dev/null
@@ -1,2 +0,0 @@
-Makefile
-Makefile.in
diff --git a/c/src/lib/libbsp/powerpc/eth_comm/wrapup/Makefile.am b/c/src/lib/libbsp/powerpc/eth_comm/wrapup/Makefile.am
deleted file mode 100644
index 86e4398d9a..0000000000
--- a/c/src/lib/libbsp/powerpc/eth_comm/wrapup/Makefile.am
+++ /dev/null
@@ -1,35 +0,0 @@
-##
-## $Id$
-##
-
-include $(top_srcdir)/../../../../automake/compile.am
-
-EXTRA_LIBRARIES = ../libbsp.a
-CLEANFILES = ../libbsp.a
-___libbsp_a_SOURCES =
-___libbsp_a_LIBADD = ../startup$(LIB_VARIANT).rel \
- ../canbus$(LIB_VARIANT).rel ../console$(LIB_VARIANT).rel \
- ../irq$(LIB_VARIANT).rel ../pclock$(LIB_VARIANT).rel \
- ../vectors$(LIB_VARIANT).rel
-if HAS_NETWORKING
-___libbsp_a_LIBADD += ../network$(LIB_VARIANT).rel
-endif
-___libbsp_a_LIBADD += \
- ../../../../libcpu/@RTEMS_CPU@/shared/cpuIdent$(LIB_VARIANT).rel \
- ../../../../libcpu/@RTEMS_CPU@/shared/cache$(LIB_VARIANT).rel \
- ../@exceptions@/rtems-cpu$(LIB_VARIANT).rel \
- ../../../../libcpu/@RTEMS_CPU@/@RTEMS_CPU_MODEL@/clock$(LIB_VARIANT).rel \
- ../../../../libcpu/@RTEMS_CPU@/@RTEMS_CPU_MODEL@/cpm$(LIB_VARIANT).rel \
- ../../../../libcpu/@RTEMS_CPU@/@RTEMS_CPU_MODEL@/timer$(LIB_VARIANT).rel \
- ../../../../libcpu/@RTEMS_CPU@/@RTEMS_CPU_MODEL@/console-generic$(LIB_VARIANT).rel \
- ../../../../libcpu/@RTEMS_CPU@/@RTEMS_CPU_MODEL@/exceptions$(LIB_VARIANT).rel \
- ../../../../libcpu/@RTEMS_CPU@/@RTEMS_CPU_MODEL@/mmu$(LIB_VARIANT).rel
-
-EXTRA_LIBRARIES += ../libbsp_g.a
-CLEANFILES += ../libbsp_g.a
-___libbsp_g_a_SOURCES = $(___libbsp_a_SOURCES)
-___libbsp_g_a_LIBADD = $(___libbsp_a_LIBADD)
-
-noinst_DATA = ../libbsp$(LIB_VARIANT).a
-
-include $(top_srcdir)/../../../../automake/local.am