diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2004-11-23 22:20:44 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2004-11-23 22:20:44 +0000 |
commit | 279eb2c2e06a9803021d8fd752f0de575796f1ae (patch) | |
tree | bda5bb60ea9027918675ee9fbaa4a3bb7035215f /c/src/lib | |
parent | Add PR617 as fixed by conversion to new exceptions. (diff) | |
download | rtems-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')
35 files changed, 18 insertions, 7952 deletions
diff --git a/c/src/lib/libbsp/powerpc/ChangeLog b/c/src/lib/libbsp/powerpc/ChangeLog index 1b8e6b8fce..43e6012778 100644 --- a/c/src/lib/libbsp/powerpc/ChangeLog +++ b/c/src/lib/libbsp/powerpc/ChangeLog @@ -1,3 +1,21 @@ +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. + 2004-10-26 Eric Norum <norume@aps.anl.gov> Remove environ common area -- it breaks newlib 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 (ðernetSCC1IrqData)) { - 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 (ðernetFECIrqData)) - 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 |