Remove (Abandoned).

This commit is contained in:
Ralf Corsepius
2011-03-01 17:40:16 +00:00
parent 3d5d192477
commit 8986eb3674
114 changed files with 0 additions and 16513 deletions

View File

@@ -1,8 +0,0 @@
aclocal.m4
autom4te*.cache
config.cache
config.log
config.status
configure
Makefile
Makefile.in

View File

@@ -1,747 +0,0 @@
2011-02-11 Ralf Corsépius <ralf.corsepius@rtems.org>
* include/bsp.h, include/tm27.h, network/network.c:
Use "__asm__" instead of "asm" for improved c99-compliance.
2011-02-09 Ralf Corsépius <ralf.corsepius@rtems.org>
* timer/timer.c: Include <rtems/btimer.h>.
Fix benchmark_timer_read() definition.
2011-02-02 Ralf Corsépius <ralf.corsepius@rtems.org>
* configure.ac: Require autoconf-2.68, automake-1.11.1.
2011-01-28 Joel Sherrill <joel.sherrilL@OARcorp.com>
* console/console.c: Fix typo where license said found in found in.
2010-05-21 Joel Sherrill <joel.sherrill@oarcorp.com>
* Makefile.am: Add bspreset.c
2010-04-30 Sebastian Huber <sebastian.huber@embedded-brains.de>
* Makefile.am, preinstall.am: Update for generic interrupt support
changes.
2009-12-10 Ralf Corsépius <ralf.corsepius@rtems.org>
* console/console.c: Eliminate casts.
2009-11-06 Ralf Corsépius <ralf.corsepius@rtems.org>
* clock/ckinit.c: Fix Clock_isr prototype.
* network/network.c: Use PRI*32 to print uint32_t's.
2009-10-21 Ralf Corsépius <ralf.corsepius@rtems.org>
* make/custom/i386ex.cfg: Remove RTEMS_BSP_FAMILY.
2009-10-20 Ralf Corsépius <ralf.corsepius@rtems.org>
* configure.ac: Don't add -ansi -fasm to CFLAGS.
2009-10-15 Ralf Corsépius <ralf.corsepius@rtems.org>
* make/custom/i386ex.cfg: New (relocated from /make/custom).
2009-09-30 Ralf Corsépius <ralf.corsepius@rtems.org>
* console/console.c: Reflect termios_baud_to_number having been
renamed to rtems_termios_baud_to_number.
2009-09-15 Ralf Corsépius <ralf.corsepius@rtems.org>
* configure.ac: Remove RTEMS_BSP_BOOTCARD_OPTIONS.
2009-08-06 Joel Sherrill <joel.sherrill@oarcorp.com>
* startup/setvec.c: Removed.
2009-08-06 Joel Sherrill <joel.sherrill@oarcorp.com>
* include/tm27.h: Remove references to rtems_interrupt_catch since this
archiecture does not use Simple Vectored Interrupt model.
2009-07-16 Joel Sherrill <joel.sherrill@oarcorp.com>
* configure.ac: Rename BSP_BOOTCARD_OPTIONS to
RTEMS_BSP_BOOTCARD_OPTIONS. Add RTEMS_BSP_CLEANUP_OPTIONS so all BSPs
have the same options.
2009-07-01 Sebastian Huber <sebastian.huber@embedded-brains.de>
* Makefile.am, preinstall.am: Update for generic interrupt support.
2009-04-28 Chris Johns <chrisj@rtems.org>
* start/start.S: Update for boot_card command line change.
2009-02-10 Ralf Corsépius <ralf.corsepius@rtems.org>
* clock/ckinit.c, startup/bspstart.c: Add prototypes.
2008-12-04 Joel Sherrill <joel.sherrill@oarcorp.com>
* bsp_specs: Move -e start from *link to *startfile to avoid warning
for undefined entry symbol when linking relocatables with binutils
2.19.
2008-09-30 Joel Sherrill <joel.sherrill@oarcorp.com>
* timer/timer.c: Eliminate uses of old benchmark timer names.
2008-09-30 Ralf Corsépius <ralf.corsepius@rtems.org>
* Makefile.am: Eliminate bsp.am. Build startup files as side-effect
of building libbspstart.a, using automake-rules.
2008-09-29 Ralf Corsépius <ralf.corsepius@rtems.org>
* Makefile.am: Eliminate *_SOURCES.
2008-09-29 Ralf Corsépius <ralf.corsepius@rtems.org>
* Makefile.am: Move noinst_LIBRARIES = libbsp.a before its
components.
2008-09-26 Ralf Corsépius <ralf.corsepius@rtems.org>
* Makefile.am: Cleanup ../../shared/include/bootcard.h handling.
2008-09-23 Joel Sherrill <joel.sherrill@oarcorp.com>
* configure.ac: Make letting boot_card() handle work area allocation
mandatory. Rename RTEMS_BSP_BOOTCARD_HANDLES_RAM_ALLOCATION to
BSP_BOOTCARD_OPTIONS.
2008-09-18 Joel Sherrill <joel.sherrill@oarcorp.com>
* Makefile.am: Add use of shared bsppost.c
2008-09-18 Joel Sherrill <joel.sherrill@oarcorp.com>
* Makefile.am, configure.ac, startup/bspstart.c, startup/linkcmds: Use
top level shared bsp_get_work_area() implementation.
2008-09-18 Joel Sherrill <joel.sherrill@oarcorp.com>
* include/bsp.h: Remove unnecessary variables and EXTERN magic.
2008-09-18 Joel Sherrill <joel.sherrill@oarcorp.com>
* include/bsp.h: Remove unnecessary boilerplate comments.
2008-09-16 Joel Sherrill <joel.sherrill@oarcorp.com>
* clock/ckinit.c, startup/bspstart.c: Remove unnecessary includes of
rtems/libcsupport.h and rtems/libio.h.
2008-09-05 Joel Sherrill <joel.sherrill@OARcorp.com>
* clock/ckinit.c: The Shared Memory Driver no longer requires the
special IOCTL in Clock_control. This was a hack which has existed
since before the Classic API Timer Manager was implemented. All
implementations of and references to Clock_control were removed.
2008-09-05 Ralf Corsépius <ralf.corsepius@rtems.org>
* timer/timer.c: Convert to "bool".
2008-08-31 Joel Sherrill <joel.sherrill@oarcorp.com>
* timer/timer.c: Eliminate empty function from every benchmark timer
driver. Fix spelling.
2008-08-31 Joel Sherrill <joel.sherrill@oarcorp.com>
* timer/timer.c: Rename timer driver methods to follow RTEMS
programming conventions.
2008-08-16 Ralf Corsépius <ralf.corsepius@rtems.org>
* timer/timer.c: Add missing prototypes.
2008-05-23 Joel Sherrill <joel.sherrill@OARcorp.com>
* console/console.c: Eliminate copies of switches to convert termios
Bxxx constants to xxx as an integer. Use the shared
termios_baud_to_number() routine to do the same conversion.
2008-05-15 Joel Sherrill <joel.sherrill@oarcorp.com>
* network/network.c: Eliminate patterns that look like CVS conflict
markers.
2008-05-15 Joel Sherrill <joel.sherrill@OARcorp.com>
* startup/bspstart.c: Add capability for bootcard.c BSP Initialization
Framework to ask the BSP where it has memory for the RTEMS Workspace
and C Program Heap. These collectively are referred to as work area.
If the BSP supports this, then it does not have to include code to
split the available memory between the two areas. This reduces the
amount of code in the BSP specific bspstart.c file. Additionally, the
shared framework can initialize the C Library, call
rtems_debug_enable(), and dirty the work area memory. Until most/all
BSPs support this new capability, if the BSP supports this, it should
call RTEMS_BSP_BOOTCARD_HANDLES_RAM_ALLOCATION from its configure.ac.
When the transition is complete, this autoconf macro can be removed.
2008-05-14 Joel Sherrill <joel.sherrill@OARcorp.com>
* Makefile.am: Rework to avoid .rel files.
2008-05-12 Joel Sherrill <joel.sherrill@OARcorp.com>
* startup/bspstart.c: Refactored and renamed initialization routines to
rtems_initialize_data_structures, rtems_initialize_before_drivers,
rtems_initialize_device_drivers, and
rtems_initialize_start_multitasking. This opened the sequence up so
that bootcard() could provide a more robust and flexible framework
which is easier to explain and understand. This also lays the
groundwork for sharing the division of available memory between the
RTEMS workspace and heap and the C library initialization across all
BSPs.
2008-03-03 Joel Sherrill <joel.sherrill@OARcorp.com>
* startup/linkcmds: Add wildcard to gcc_except_table section so
programs compiled with gcc 4.3.x can link.
2007-12-11 Joel Sherrill <joel.sherrill@OARcorp.com>
* clock/ckinit.c, include/bsp.h, startup/bspstart.c: Eliminate copies
of the Configuration Table. Use the RTEMS provided accessor macros to
obtain configuration fields.
2007-12-04 Joel Sherrill <joel.sherrill@OARcorp.com>
* include/bsp.h, startup/bspstart.c: Move interrupt_stack_size field
from CPU Table to Configuration Table. Eliminate CPU Table from all
ports. Delete references to CPU Table in all forms.
2007-12-03 Joel Sherrill <joel.sherrill@OARcorp.com>
* Makefile.am, startup/bspstart.c: Moved most of the remaining CPU
Table fields to the Configuration Table. This included
pretasking_hook, predriver_hook, postdriver_hook, idle_task,
do_zero_of_workspace, extra_mpci_receive_server_stack,
stack_allocate_hook, and stack_free_hook. As a side-effect of this
effort some multiprocessing code was made conditional and some style
clean up occurred.
2007-11-26 Joel Sherrill <joel.sherrill@oarcorp.com>
* startup/bspstart.c: Eliminate the interrupt_table_segment and
interrupt_table_offset fields in the i386 CPU Table since they are
never read.
2007-05-03 Joel Sherrill <joel@OARcorp.com>
* startup/linkcmds: Handle .data.* sections
2007-04-12 Ralf Corsépius <ralf.corsepius@rtems.org>
* bsp_specs: Remove qrtems_debug.
2006-12-15 Ralf Corsépius <ralf.corsepius@rtems.org>
* network/network.c (uti596_ioctl): Use ioctl_command_t.
2006-12-02 Ralf Corsépius <ralf.corsepius@rtems.org>
* configure.ac: New BUG-REPORT address.
2006-11-15 Joel Sherrill <joel@OARcorp.com>
* Makefile.am: Merge c_rtems_main() into boot_card(). This eliminated a
file and simplified initialization.
2006-10-17 Ralf Corsépius <ralf.corsepius@rtems.org>
* Makefile.am: Remove superfluous -DASM.
2006-10-17 Ralf Corsépius <ralf.corsepius@rtems.org>
* configure.ac: Require autoconf-2.60. Require automake-1.10.
2006-01-11 Ralf Corsepius <ralf.corsepius@rtems.org>
* configure.ac: Remove explicit ampolish3 support (now in
RTEMS_BSP_CONFIGURE).
2006-01-10 Ralf Corsepius <ralf.corsepius@rtems.org>
* configure.ac: Add ampolish3 support.
* Makefile.am: Add preinstall.am.
2005-10-17 Ralf Corsepius <ralf.corsepius@rtems.org>
* Makefile.am: Add pci.rel.
2005-10-17 Ralf Corsepius <ralf.corsepius@rtems.org>
* Makefile.am: Install/preinstall headers from ../../i386/shared.
2005-09-19 Ralf Corsepius <ralf.corsepius@rtems.org>
* network/network.c: Remove #define KERNEL.
Include <errno.h>.
* Makefile.am: Add -D_KERNEL to network_CPPFLAGS.
2005-05-26 Ralf Corsepius <ralf.corsepius@rtems.org>
* include/bsp.h: New header guard.
2005-05-06 Jennifer Averett <jennifer.averett@oarcorp.com>
* clock/ckinit.c, console/console.c, include/bsp.h, startup/bspstart.c:
Moved irq.h to bsp subdirectory.
2005-05-03 Jennifer Averett <jennifer.averett@oarcorp.com>
* clock/ckinit.c, console/console.c: Added support for
addition of parameter to ISRs.
* network/network.c: Modified parameter list to remove
warnings.
2005-04-15 Joel Sherrill <joel@OARcorp.com>
* network/network.c: Fix warnings.
2005-01-07 Ralf Corsepius <ralf.corsepius@rtems.org>
* Makefile.am: Eliminate CFLAGS_OPTIMIZE_V.
2005-01-02 Ralf Corsepius <ralf.corsepius@rtems.org>
* Makefile.am: Remove build-variant support.
2004-09-24 Ralf Corsepius <ralf.corsepius@rtems.org>
* configure.ac: Require automake > 1.9.
2004-07-28 Joel Sherrill <joel@OARcorp.com>
* startup/linkcmds: Add gnu.linkonce.d and gcc_except_table sections.
2004-07-25 Joel Sherrill <joel@OARcorp.com>
* Makefile.am: Add -D__INSIDE_RTEMS_BSD_TCPIP_STACK__ for network.
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>.
* timer/timerisr.S: Include <rtems/asm.h> instead of <asm.h>.
2004-04-01 Ralf Corsepius <ralf.corsepius@rtems.org>
* network/network.c: 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>.
* include/bsp.h: Include <rtems/iosupp.h> instead of <iosupp.h>.
2004-03-31 Ralf Corsepius <ralf.corsepius@rtems.org>
* clock/ckinit.c, include/bsp.h, startup/bspstart.c, timer/timer.c:
Convert to using c99 fixed size types.
2004-02-19 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* Makefile.am: Reflect changes to bsp.am.
Preinstall dist_project_lib*.
2004-02-14 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* Makefile.am: Reflect changes to bsp.am.
2004-02-12 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* Makefile.am: Use CPPASCOMPILE instead of CCASCOMPILE.
2004-02-06 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* Makefile.am: Pickup files from ../../i386/shared instead of
../shared. Reformat.
2004-01-30 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* Makefile.am: Merge-in clock/Makefile.am, console/Makefile.am,
network/Makefile.am, startup/Makefile.am, timer/Makefile.am,
wrapup/Makefile.am. Use automake compilation rules.
* clock/Makefile.am, console/Makefile.am, network/Makefile.am,
startup/Makefile.am, timer/Makefile.am, wrapup/Makefile.am: Remove.
* configure.ac: Reflect changes above.
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.
* wrapup/Makefile.am: Reflect changes to libcpu.
2004-01-14 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* Makefile.am: Re-add dirstamps to PRE/TMPINSTALL_FILES.
Add PRE/TMPINSTALL_FILES to CLEANFILES.
* startup/Makefile.am: Ditto.
2004-01-07 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* start/Makefile.am: Remove.
* Makefile.am: Merge-in start/Makefile.am.
* configure.ac: Reflect changes above.
2004-01-05 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* wrapup/Makefile.am: Eliminate $(LIB).
Use noinst_DATA to trigger building libbsp.a.
2003-12-13 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* start/Makefile.am: s,${PROJECT_RELEASE}/lib,$(PROJECT_LIB),g.
* startup/Makefile.am: s,${PROJECT_RELEASE}/lib,$(PROJECT_LIB),g.
2003-12-12 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* start/Makefile.am: Use mkdir_p. Remove dirs from PRE/TMPINSTALL_FILES.
* startup/Makefile.am: Use mkdir_p. Remove dirs from PRE/TMPINSTALL_FILES.
2003-12-12 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* configure.ac: Require automake >= 1.8, autoconf >= 2.59.
2003-12-12 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* wrapup/Makefile.am: Cosmetics.
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-02 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* Makefile.am: Add preinstallation dirstamp support.
* clock/Makefile.am: Cosmetics.
* console/Makefile.am: Cosmetics.
* network/Makefile.am: Cosmetics.
* startup/Makefile.am: Cosmetics.
* timer/Makefile.am: Cosmetics.
* wrapup/Makefile.am: Cosmetics
2003-12-02 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* clock/Makefile.am: Remove all-local: $(ARCH).
* console/Makefile.am: Remove all-local: $(ARCH).
* network/Makefile.am: Remove all-local: $(ARCH).
* start/Makefile.am: Remove all-local: $(ARCH).
* startup/Makefile.am: Remove all-local: $(ARCH).
* timer/Makefile.am: Remove all-local: $(ARCH).
* wrapup/Makefile.am: Remove all-local: $(ARCH).
2003-09-29 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* Makefile.am: Merge-in include/Makefile.am.
Reflect changes to bsp.am.
* include/Makefile.am: Remove.
* configure.ac: Reflect changes above.
2003-09-08 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* bsp_specs: Remove *lib:.
2003-09-04 Joel Sherrill <joel@OARcorp.com>
* clock/ckinit.c, console/console.c, include/bsp.h, include/coverhd.h,
start/80386ex.h, start/80386ex.inc, start/macros.inc, start/start.S,
startup/bspstart.c, startup/linkcmds, startup/setvec.c,
timer/timer.c, timer/timerisr.S: 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/.
* clock/Makefile.am: Reflect having moved automake/.
* console/Makefile.am: Reflect having moved automake/.
* include/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/.
* timer/Makefile.am: Reflect having moved automake/.
* wrapup/Makefile.am: Reflect having moved automake/.
2003-08-13 Joel Sherrill <joel@OARcorp.com>
PR 451/bsps
* startup/Makefile.am: Include shared i386 TTY driver in these BSPs.
2003-08-11 Joel Sherrill <joel@OARcorp.com>
PR 450/make_build
* startup/linkcmds: Added .eh_frame
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-05-15 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* startup/Makefile.am: Remove -DBSP_IS_I386EX=1 (unused).
2003-03-06 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* configure.ac: Remove AC_CONFIG_AUX_DIR.
2003-02-11 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* configure.ac: AM_INIT_AUTOMAKE([1.7.2]).
2003-02-11 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* configure.ac: AC_PREREQ(2.57).
2003-01-20 Joel Sherrill <joel@OARcorp.com>
* startup/linkcmds: Add FreeBSD SYSCTL() sections for networking.
2002-12-19 Joel Sherrill <joel@OARcorp.com>
* console/console.c: Removed __assert() which conflicts with newlib.
2002-12-17 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* clock/Makefile.am: Don't include @RTEMS_BSP@.cfg.
* console/Makefile.am: Don't include @RTEMS_BSP@.cfg.
* 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.
* timer/Makefile.am: Don't include @RTEMS_BSP@.cfg.
2002-12-12 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* start/Makefile.am: Use install-data-local to install startfile.
2002-12-10 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* wrapup/Makefile.am: Don't include @RTEMS_BSP@.cfg.
2002-11-04 Joel Sherrill <joel@OARcorp.com>
* network/network.c: Removed warnings.
2002-11-04 Joel Sherrill <joel@OARcorp.com>
* console/console.c, network/network.c: Removed warnings.
2002-11-01 Joel Sherrill <joel@OARcorp.com>
* startup/bspstart.c: Removed warnings.
2002-10-21 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* .cvsignore: Reformat.
Add autom4te*cache.
Remove autom4te.cache.
2002-09-08 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* configure.ac: Remove duplicate timer/Makefile in AC_CONFIG_FILES.
2002-08-21 Joel Sherrill <joel@OARcorp.com>
* bsp_specs: Added support for -nostdlibs.
2002-08-11 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* clock/Makefile.am: Use .$(OBJEXT) instead of .o.
* console/Makefile.am: Use .$(OBJEXT) instead of .o.
* network/Makefile.am: Use .$(OBJEXT) instead of .o.
* start/Makefile.am: Use .$(OBJEXT) instead of .o.
* startup/Makefile.am: Use .$(OBJEXT) instead of .o.
* timer/Makefile.am: Use .$(OBJEXT) instead of .o.
* wrapup/Makefile.am: Use .$(OBJEXT) instead of .o.
2002-07-22 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* startup/bspstart.c: Per PR252 removed hack that tripled size of
RTEMS Workspace when POSIX is configured. This was probably done to
account for confdefs.h missing some application requirements.
2002-07-20 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* start/Makefile.am: Eliminate PGM.
Add bsplib_DATA = $(PROJECT_RELEASE)/lib/start$(LIB_VARIANT).o.
2002-07-19 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* startup/Makefile.am: Add bsplib_DATA = linkcmds.
2002-07-04 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* wrapup/Makefile.am: Eliminate TMPINSTALL_FILES.
Remove $(OBJS) from all-local.
2002-06-29 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* wrapup/Makefile.am: Remove preinstallation of libbsp.a,
2001-05-09 Joel Sherrill <joel@OARcorp.com>
* startup/linkcmds: In support of gcc 3.1, added one of more
of the sections .jcr, .rodata*, .data.*, .gnu.linkonce.s2.*,
.gnu.linkonce.sb2.*, and .gnu.linkonce.s.*. Spacing corrections
and direction of segments to memory regions may also have been
addressed. This was a sweep across all BSPs.
2002-03-27 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* include/bsp.h: include <libcpu/cpu.h>.
2002-03-27 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* configure.ac:
AC_INIT(package,_RTEMS_VERSION,_RTEMS_BUGS).
AM_INIT_AUTOMAKE([no-define foreign 1.6]).
* clock/Makefile.am: Remove AUTOMAKE_OPTIONS.
* Makefile.am: Remove AUTOMAKE_OPTIONS.
* console/Makefile.am: Remove AUTOMAKE_OPTIONS.
* include/Makefile.am: Remove AUTOMAKE_OPTIONS.
* network/Makefile.am: Remove AUTOMAKE_OPTIONS.
* start/Makefile.am: Remove AUTOMAKE_OPTIONS.
* startup/Makefile.am: Remove AUTOMAKE_OPTIONS.
* timer/Makefile.am: Remove AUTOMAKE_OPTIONS.
* wrapup/Makefile.am: Remove AUTOMAKE_OPTIONS.
2002-03-16 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* configure.ac: Remove stray ';', PR 139.
2002-01-03 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* include/bsp.h: Include rtems/bspIo.h instead of bspIo.h.
2001-12-22 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* bsp_specs: Replace -lrtemsall with -lrtemsbsp -lrtemscpu,
replace -lrtemsall_g with -lrtemsbsp_g -lrtemscpu_g.
2001-11-30 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* configure.ac: Introduce RTEMS_BSP_CONFIGURE.
2001-10-25 Joel Sherrill <joel@OARcorp.com>
* startup/linkcmds: Added _init and _fini.
2001-10-11 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* .cvsignore: Add autom4te.cache for autoconf > 2.52.
* configure.in: Remove.
* configure.ac: New file, generated from configure.in by autoupdate.
2001-09-27 Joel Sherrill <joel@OARcorp.com>
* include/bsp.h: Renamed delay() to rtems_bsp_delay().
2001-09-27 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* include/Makefile.am: Use 'PREINSTALL_FILES ='.
2001-05-22 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* configure.in: Add bspopts.h.
* include/bsp.h: Include bspopts.h.
* include/.cvsignore: Add bspopts.h*, stamp-h*.
* include/Makefile.am: Use *_HEADERS instead of *H_FILES.
* start/Makefile.am: Dito.
* network/Makefile.am: Dito.
2001-05-10 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* configure.in: Use RTEMS_PROG_CC_FOR_TARGET([-ansi -fasm]).
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.
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: Invoke BSP_uart_init() with enough arguments
now that more communication parameters are settable.
2000-10-17 Joel Sherrill <joel@OARcorp.com>
* startup/Makefile.am: Added idt.c since it has been moved libcpu/i386
to libbsp/i386/shared/irq.
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-11 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* start/Makefile.am: Remove AM_CPPFLAGS and GAS_CODE16 conditional.
2000-09-04 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* clock/Makefile.am, console/Makefile.am, network/Makefile.am,
start/Makefile.am, startup/Makefile.am, timer/Makefile.am,
wrapup/Makefile.am: Include compile.am
2000-08-10 Joel Sherrill <joel@OARcorp.com>
* ChangeLog: New file.

View File

@@ -1,83 +0,0 @@
##
## $Id$
##
ACLOCAL_AMFLAGS = -I ../../../../aclocal
include $(top_srcdir)/../../../../automake/compile.am
include_bspdir = $(includedir)/bsp
dist_project_lib_DATA = bsp_specs
include_HEADERS = include/bsp.h
include_HEADERS += include/tm27.h
nodist_include_HEADERS = include/bspopts.h
nodist_include_bsp_HEADERS = ../../shared/include/bootcard.h
DISTCLEANFILES = include/bspopts.h
noinst_PROGRAMS =
include_HEADERS += include/coverhd.h
include_bsp_HEADERS = ../../i386/shared/irq/irq.h \
../../i386/shared/irq/irq_asm.h \
../../shared/include/irq-generic.h \
../../shared/include/irq-info.h
noinst_LIBRARIES = libbspstart.a
libbspstart_a_SOURCES = start/start.S start/80386ex.h start/80386ex.inc \
start/macros.inc
project_lib_DATA = start.$(OBJEXT)
dist_project_lib_DATA += startup/linkcmds
noinst_LIBRARIES += libbsp.a
libbsp_a_SOURCES =
include_HEADERS += ../../i386/shared/comm/uart.h
# startup
libbsp_a_SOURCES += ../../shared/bspclean.c ../../shared/bsplibc.c \
../../shared/bsppredriverhook.c ../../shared/bsppretaskinghook.c \
../../shared/bspgetworkarea.c ../../shared/bsppost.c startup/bspstart.c \
../../shared/bootcard.c ../../shared/bspreset.c ../../shared/sbrk.c \
../../i386/shared/irq/idt.c \
../../i386/shared/irq/irq.c ../../i386/shared/irq/irq_init.c \
../../i386/shared/comm/i386-stub.c \
../../i386/shared/comm/i386-stub-glue.c ../../i386/shared/comm/uart.c \
../../shared/gnatinstallhandler.c ../../i386/shared/comm/gdb_glue.c \
../../i386/shared/comm/tty_drv.c ../../i386/shared/irq/irq_asm.S \
../../shared/src/irq-generic.c \
../../shared/src/irq-legacy.c \
../../shared/src/irq-info.c \
../../shared/src/irq-shell.c
# clock
libbsp_a_SOURCES += clock/ckinit.c
# console
libbsp_a_SOURCES += console/console.c
include_HEADERS += ../../i386/shared/pci/pcibios.h
# pci
libbsp_a_SOURCES += ../../i386/shared/pci/pcibios.c \
../../i386/shared/pci/pcibios.h
# timer
libbsp_a_SOURCES += timer/timer.c timer/timerisr.S
if HAS_NETWORKING
network_CPPFLAGS = -D__INSIDE_RTEMS_BSD_TCPIP_STACK__ -D_KERNEL
noinst_PROGRAMS += network.rel
network_rel_SOURCES = network/netexterns.h network/network.c \
network/uti596.h
network_rel_CPPFLAGS = $(AM_CPPFLAGS) $(network_CPPFLAGS)
network_rel_LDFLAGS = $(RTEMS_RELLDFLAGS)
endif
libbsp_a_LIBADD = \
../../../libcpu/@RTEMS_CPU@/cache.rel \
../../../libcpu/@RTEMS_CPU@/score.rel
if HAS_NETWORKING
libbsp_a_LIBADD += network.rel
endif
include $(srcdir)/preinstall.am
include $(top_srcdir)/../../../../automake/local.am

View File

@@ -1,27 +0,0 @@
#
# $Id$
#
This board support package works with the uti386ex, designed and built in
house at the University of Toronto. It should also be compatible the an
Intel Evaluation board.
There are no decisions to be made at link time. The BSP reserves ALL
available space between the end of the bss section and the start of the
RTEMS Workspace for the heap. If you wish to add network support, then
you will not need to modify the heap size.
See startup/linkcmds and bsp_start.c for details.
The clock is generated from an internal i386ex timer counter. The console
uses COMM2 -- configured as 9600 n,8,1. COMM1 is available, also
configured as 9600,n,8,1.
In general, all modification needed to support another i386ex based
platform should be restricted to start.s. Since there is no real-time
clock on the Intel eval board, if RTclock support is required, then adding
rtclock driver support is necessary.
Hope this helps!

View File

@@ -1,10 +0,0 @@
%rename endfile old_endfile
%rename startfile old_startfile
%rename link old_link
*startfile:
%{!qrtems: %(old_startfile)} \
%{!nostdlib: %{qrtems: start.o%s -e reset}}
*link:
%{!qrtems: %(old_link)} %{qrtems: -dc -dp -N}

View File

@@ -1,133 +0,0 @@
/* Clock_initialize
*
* This routine initializes the Timer/Counter on the Intel
* 386ex evaluation board.
*
* The tick frequency is 1 millisecond.
*
* Input parameters: NONE
*
* Output parameters: NONE
*
* COPYRIGHT (c) 1989-1999.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
* http://www.rtems.com/license/LICENSE.
*
* $Id$
*/
#define TMR0 0xF040
#define TMR1 0xF041
#define TMR2 0xF042
#define TMRCON 0xF043
#define TMRCFG 0xF834
#include <bsp.h>
#include <bsp/irq.h>
#include <stdlib.h>
uint32_t Clock_isrs; /* ISRs until next tick */
static uint32_t Clock_initial_isr_value;
volatile uint32_t Clock_driver_ticks;
void Clock_exit( void );
/*
* These are set by clock driver during its init
*/
rtems_device_major_number rtems_clock_major = ~0;
rtems_device_major_number rtems_clock_minor = 0;
/*
* This is the ISR handler.
*/
void Clock_isr(rtems_irq_hdl_param unused)
{
/* enable_tracing(); */
Clock_driver_ticks += 1;
if ( Clock_isrs == 1 ) {
rtems_clock_tick();
Clock_isrs = Clock_initial_isr_value; /* rtems_configuration_get_microseconds_per_tick() / 1000;*/
}
else
Clock_isrs -= 1;
}
void ClockOff(const rtems_irq_connect_data* unused)
{
outport_byte ( TMRCFG , 0x80 ); /* disable the counter timer */
}
void ClockOn(const rtems_irq_connect_data* unused)
{
outport_byte ( TMRCFG , 0x00 ); /* enable the counter timer */
}
int ClockIsOn(const rtems_irq_connect_data* unused)
{
return ((i8259s_cache & 0x1) == 0);
}
static rtems_irq_connect_data clockIrqData = {BSP_PERIODIC_TIMER,
Clock_isr,
0,
ClockOn,
ClockOff,
ClockIsOn};
rtems_device_driver Clock_initialize(
rtems_device_major_number major,
rtems_device_minor_number minor,
void *pargp
)
{
unsigned timer_counter_init_value;
unsigned char clock_lsb, clock_msb;
Clock_driver_ticks = 0;
Clock_isrs =
Clock_initial_isr_value =
rtems_configuration_get_microseconds_per_tick() / 1000; /* ticks per clock_isr */
/*
* configure the counter timer ( should be based on microsecs/tick )
* NB. The divisor(Clock_isrs) resolves the is the same number that appears in confdefs.h
* when setting the microseconds_per_tick value.
*/
ClockOff ( &clockIrqData );
timer_counter_init_value = rtems_configuration_get_microseconds_per_tick() / Clock_isrs;
clock_lsb = (unsigned char)timer_counter_init_value;
clock_msb = timer_counter_init_value >> 8;
outport_byte ( TMRCON , 0x34 );
outport_byte ( TMR0 , clock_lsb ); /* load LSB first */
outport_byte ( TMR0 , clock_msb ); /* then MSB */
if (!BSP_install_rtems_irq_handler (&clockIrqData)) {
printk("Unable to initialize system clock\n");
rtems_fatal_error_occurred(1);
}
/*
* make major/minor avail to others such as shared memory driver
*/
rtems_clock_major = major;
rtems_clock_minor = minor;
return RTEMS_SUCCESSFUL;
}
void Clock_exit()
{
ClockOff(&clockIrqData);
BSP_remove_rtems_irq_handler (&clockIrqData);
}

View File

@@ -1,30 +0,0 @@
## Process this file with autoconf to produce a configure script.
##
## $Id$
AC_PREREQ([2.68])
AC_INIT([rtems-c-src-lib-libbsp-i386-i386ex],[_RTEMS_VERSION],[http://www.rtems.org/bugzilla])
AC_CONFIG_SRCDIR([bsp_specs])
RTEMS_TOP(../../../../../..)
RTEMS_CANONICAL_TARGET_CPU
AM_INIT_AUTOMAKE([no-define nostdinc foreign 1.11.1])
RTEMS_BSP_CONFIGURE
RTEMS_PROG_CC_FOR_TARGET
RTEMS_CANONICALIZE_TOOLS
RTEMS_PROG_CCAS
RTEMS_CHECK_NETWORKING
## if this is an i386, does gas have good code16 support?
RTEMS_I386_GAS_CODE16
AM_CONDITIONAL(RTEMS_GAS_CODE16,test "$RTEMS_GAS_CODE16" = "yes")
AM_CONDITIONAL(HAS_NETWORKING,test "$HAS_NETWORKING" = "yes")
RTEMS_BSP_CLEANUP_OPTIONS(0, 0)
# Explicitly list all Makefiles here
AC_CONFIG_FILES([Makefile])
AC_OUTPUT

View File

@@ -1,302 +0,0 @@
/*-------------------------------------------------------------------------+
| console.c v1.1 - i386ex BSP - 1997/08/07
+--------------------------------------------------------------------------+
| This file contains the i386ex console I/O package. It is just a termios
| wrapper.
+--------------------------------------------------------------------------+
| (C) Copyright 1997 -
| - NavIST Group - Real-Time Distributed Systems and Industrial Automation
|
| http://pandora.ist.utl.pt
|
| Instituto Superior Tecnico * Lisboa * PORTUGAL
+--------------------------------------------------------------------------+
| Disclaimer:
|
| This file is provided "AS IS" without warranty of any kind, either
| expressed or implied.
+--------------------------------------------------------------------------+
| This code is based on:
| console.c,v 1.4 1995/12/19 20:07:23 joel Exp - go32 BSP
| console.c,v 1.15 pc386 BSP
| With the following copyright notice:
| **************************************************************************
| * 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 <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <bsp.h>
#include <bsp/irq.h>
#include <rtems/libio.h>
#include <rtems/error.h>
#include <termios.h>
#include <uart.h>
#include <libcpu/cpuModel.h>
#include <rtems/termiostypes.h>
/*
* Possible value for console input/output :
* BSP_UART_COM1
* BSP_UART_COM2
* BSP_CONSOLE_PORT_CONSOLE is not valid in this BSP.
* All references to either keyboard or video handling have been removed.
*/
int BSPConsolePort = BSP_UART_COM2;
int BSPBaseBaud = 781250;
int BSP_poll_read(int);
extern BSP_polling_getchar_function_type BSP_poll_char;
static int conSetAttr(int minor, const struct termios *);
static void isr_on(const rtems_irq_connect_data *);
static void isr_off(const rtems_irq_connect_data *);
static int isr_is_on(const rtems_irq_connect_data *);
/*
* Change references to com2 if required.
*/
static rtems_irq_connect_data console_isr_data =
{ BSP_UART_COM2_IRQ,
BSP_uart_termios_isr_com2,
0,
isr_on,
isr_off,
isr_is_on};
static void
isr_on(const rtems_irq_connect_data *unused)
{
return;
}
static void
isr_off(const rtems_irq_connect_data *unused)
{
return;
}
static int
isr_is_on(const rtems_irq_connect_data *irq)
{
return BSP_irq_enabled_at_i8259s(irq->name);
}
/*-------------------------------------------------------------------------+
| Console device driver INITIALIZE entry point.
+--------------------------------------------------------------------------+
| Initilizes the I/O console (keyboard + VGA display) driver.
+--------------------------------------------------------------------------*/
rtems_device_driver
console_initialize(rtems_device_major_number major,
rtems_device_minor_number minor,
void *arg)
{
rtems_status_code status;
/*
* Set up TERMIOS
*/
rtems_termios_initialize ();
/*
* Do device-specific initialization
*/
/* 9600-8-N-1, no hardware flow control */
BSP_uart_init(BSPConsolePort, 9600, CHR_8_BITS, 0, 0, 0);
/* Set interrupt handler */
if(BSPConsolePort == BSP_UART_COM1)
{
console_isr_data.name = BSP_UART_COM1_IRQ;
console_isr_data.hdl = BSP_uart_termios_isr_com1;
}
else
{
assert(BSPConsolePort == BSP_UART_COM2);
console_isr_data.name = BSP_UART_COM2_IRQ;
console_isr_data.hdl = BSP_uart_termios_isr_com2;
}
status = BSP_install_rtems_irq_handler(&console_isr_data);
if (!status){
printk("Error installing serial console interrupt handler!\n");
rtems_fatal_error_occurred(status);
}
/*
* Register the device
*/
status = rtems_io_register_name ("/dev/console", major, 0);
if (status != RTEMS_SUCCESSFUL)
{
printk("Error registering console device!\n");
rtems_fatal_error_occurred (status);
}
if(BSPConsolePort == BSP_UART_COM1)
{
printk("Initialized console on port COM1 9600-8-N-1\n\n");
}
else
{
printk("Initialized console on port COM2 9600-8-N-1\n\n");
}
return RTEMS_SUCCESSFUL;
} /* console_initialize */
static int console_last_close(int major, int minor, void *arg)
{
BSP_remove_rtems_irq_handler (&console_isr_data);
return 0;
}
/*-------------------------------------------------------------------------+
| Console device driver OPEN entry point
+--------------------------------------------------------------------------*/
rtems_device_driver
console_open(rtems_device_major_number major,
rtems_device_minor_number minor,
void *arg)
{
rtems_status_code status;
static rtems_termios_callbacks cb =
{
NULL, /* firstOpen */
console_last_close, /* lastClose */
NULL, /* poll read */
BSP_uart_termios_write_com2, /* write */
conSetAttr, /* setAttributes */
NULL, /* stopRemoteTx */
NULL, /* startRemoteTx */
1 /* outputUsesInterrupts */
};
if(BSPConsolePort == BSP_UART_COM2)
{
cb.write = BSP_uart_termios_write_com2;
}
status = rtems_termios_open (major, minor, arg, &cb);
if(status != RTEMS_SUCCESSFUL)
{
printk("Error openning console device\n");
return status;
}
/*
* Pass data area info down to driver
*/
BSP_uart_termios_set(BSPConsolePort,
((rtems_libio_open_close_args_t *)arg)->iop->data1);
/* Enable interrupts on channel */
BSP_uart_intr_ctrl(BSPConsolePort, BSP_UART_INTR_CTRL_TERMIOS);
return RTEMS_SUCCESSFUL;
}
/*-------------------------------------------------------------------------+
| Console device driver CLOSE entry point
+--------------------------------------------------------------------------*/
rtems_device_driver
console_close(rtems_device_major_number major,
rtems_device_minor_number minor,
void *arg)
{
return (rtems_termios_close (arg));
} /* console_close */
/*-------------------------------------------------------------------------+
| Console device driver READ entry point.
+--------------------------------------------------------------------------+
| Read characters from the I/O console. We only have stdin.
+--------------------------------------------------------------------------*/
rtems_device_driver
console_read(rtems_device_major_number major,
rtems_device_minor_number minor,
void *arg)
{
rtems_status_code sc;
printf("read the console\n");
sc = rtems_termios_read (arg);
if ( sc != RTEMS_SUCCESSFUL )
printf("console_read: fails %s\n",rtems_status_text(sc));
return sc;
} /* console_read */
/*-------------------------------------------------------------------------+
| Console device driver WRITE entry point.
+--------------------------------------------------------------------------+
| Write characters to the I/O console. Stderr and stdout are the same.
+--------------------------------------------------------------------------*/
rtems_device_driver
console_write(rtems_device_major_number major,
rtems_device_minor_number minor,
void * arg)
{
return rtems_termios_write (arg);
} /* console_write */
/*
* Handle ioctl request.
*/
rtems_device_driver
console_control(rtems_device_major_number major,
rtems_device_minor_number minor,
void * arg
)
{
return rtems_termios_ioctl (arg);
}
static int
conSetAttr(int minor, const struct termios *t)
{
int baud;
baud = rtems_termios_baud_to_number(t->c_cflag & CBAUD);
if ( baud > 115200 )
rtems_fatal_error_occurred (RTEMS_INTERNAL_ERROR);
BSP_uart_set_baud(BSPConsolePort, baud);
return 0;
}
/*
* BSP initialization
*/
BSP_output_char_function_type BSP_output_char = BSP_output_char_via_serial;
BSP_polling_getchar_function_type BSP_poll_char = BSP_poll_char_via_serial;
int BSP_poll_read(int ttyMinor){
return BSP_poll_char_via_serial();
}

View File

@@ -1,4 +0,0 @@
bspopts.h
bspopts.h.in
stamp-h
stamp-h.in

View File

@@ -1,67 +0,0 @@
/*
* This include file definitions related to an Intel i386ex board.
*
* 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 _BSP_H
#define _BSP_H
#ifdef __cplusplus
extern "C" {
#endif
#include <bspopts.h>
#include <rtems.h>
#include <rtems/iosupp.h>
#include <rtems/console.h>
#include <rtems/clockdrv.h>
#include <rtems/bspIo.h>
#include <libcpu/cpu.h>
#include <bsp/irq.h>
/*
* Simple spin delay in microsecond units for device drivers.
* This is very dependent on the clock speed of the target.
*/
#define rtems_bsp_delay( _microseconds ) \
{ \
uint32_t _counter; \
\
_counter = (_microseconds); \
\
__asm__ volatile ( "0: nop;" \
" mov %0,%0 ;" \
" loop 0b" : "=c" (_counter) \
: "0" (_counter) \
); \
\
}
/* Constants */
#define RAM_START 0
/* replaced the earlier EI kludge of 0xfffff */
#define RAM_END 0x100000
#define IDT_SIZE 256
#define GDT_SIZE 8192
extern interrupt_gate_descriptor Interrupt_descriptor_table[IDT_SIZE];
#ifdef __cplusplus
}
#endif
#endif

View File

@@ -1,102 +0,0 @@
/* coverhd.h
*
* This include file has defines to represent the overhead associated
* with calling a particular directive from C on this target.
*
* 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 3
#define CALLING_OVERHEAD_SHUTDOWN_EXECUTIVE 3
#define CALLING_OVERHEAD_TASK_CREATE 4
#define CALLING_OVERHEAD_TASK_IDENT 4
#define CALLING_OVERHEAD_TASK_START 4
#define CALLING_OVERHEAD_TASK_RESTART 3
#define CALLING_OVERHEAD_TASK_DELETE 3
#define CALLING_OVERHEAD_TASK_SUSPEND 3
#define CALLING_OVERHEAD_TASK_RESUME 3
#define CALLING_OVERHEAD_TASK_SET_PRIORITY 4
#define CALLING_OVERHEAD_TASK_MODE 4
#define CALLING_OVERHEAD_TASK_GET_NOTE 4
#define CALLING_OVERHEAD_TASK_SET_NOTE 4
#define CALLING_OVERHEAD_TASK_WAKE_WHEN 7
#define CALLING_OVERHEAD_TASK_WAKE_AFTER 3
#define CALLING_OVERHEAD_INTERRUPT_CATCH 4
#define CALLING_OVERHEAD_CLOCK_GET 7
#define CALLING_OVERHEAD_CLOCK_SET 7
#define CALLING_OVERHEAD_CLOCK_TICK 2
#define CALLING_OVERHEAD_TIMER_CREATE 3
#define CALLING_OVERHEAD_TIMER_IDENT 3
#define CALLING_OVERHEAD_TIMER_DELETE 3
#define CALLING_OVERHEAD_TIMER_FIRE_AFTER 4
#define CALLING_OVERHEAD_TIMER_FIRE_WHEN 8
#define CALLING_OVERHEAD_TIMER_RESET 3
#define CALLING_OVERHEAD_TIMER_CANCEL 3
#define CALLING_OVERHEAD_SEMAPHORE_CREATE 4
#define CALLING_OVERHEAD_SEMAPHORE_DELETE 3
#define CALLING_OVERHEAD_SEMAPHORE_IDENT 4
#define CALLING_OVERHEAD_SEMAPHORE_OBTAIN 4
#define CALLING_OVERHEAD_SEMAPHORE_RELEASE 3
#define CALLING_OVERHEAD_MESSAGE_QUEUE_CREATE 4
#define CALLING_OVERHEAD_MESSAGE_QUEUE_IDENT 4
#define CALLING_OVERHEAD_MESSAGE_QUEUE_DELETE 3
#define CALLING_OVERHEAD_MESSAGE_QUEUE_SEND 3
#define CALLING_OVERHEAD_MESSAGE_QUEUE_URGENT 3
#define CALLING_OVERHEAD_MESSAGE_QUEUE_BROADCAST 4
#define CALLING_OVERHEAD_MESSAGE_QUEUE_RECEIVE 4
#define CALLING_OVERHEAD_MESSAGE_QUEUE_FLUSH 3
#define CALLING_OVERHEAD_EVENT_SEND 4
#define CALLING_OVERHEAD_EVENT_RECEIVE 4
#define CALLING_OVERHEAD_SIGNAL_CATCH 3
#define CALLING_OVERHEAD_SIGNAL_SEND 3
#define CALLING_OVERHEAD_PARTITION_CREATE 4
#define CALLING_OVERHEAD_PARTITION_IDENT 4
#define CALLING_OVERHEAD_PARTITION_DELETE 3
#define CALLING_OVERHEAD_PARTITION_GET_BUFFER 4
#define CALLING_OVERHEAD_PARTITION_RETURN_BUFFER 4
#define CALLING_OVERHEAD_REGION_CREATE 4
#define CALLING_OVERHEAD_REGION_IDENT 3
#define CALLING_OVERHEAD_REGION_DELETE 3
#define CALLING_OVERHEAD_REGION_GET_SEGMENT 4
#define CALLING_OVERHEAD_REGION_RETURN_SEGMENT 4
#define CALLING_OVERHEAD_PORT_CREATE 4
#define CALLING_OVERHEAD_PORT_IDENT 3
#define CALLING_OVERHEAD_PORT_DELETE 3
#define CALLING_OVERHEAD_PORT_EXTERNAL_TO_INTERNAL 4
#define CALLING_OVERHEAD_PORT_INTERNAL_TO_EXTERNAL 4
#define CALLING_OVERHEAD_IO_INITIALIZE 4
#define CALLING_OVERHEAD_IO_OPEN 4
#define CALLING_OVERHEAD_IO_CLOSE 4
#define CALLING_OVERHEAD_IO_READ 4
#define CALLING_OVERHEAD_IO_WRITE 4
#define CALLING_OVERHEAD_IO_CONTROL 4
#define CALLING_OVERHEAD_FATAL_ERROR_OCCURRED 3
#define CALLING_OVERHEAD_RATE_MONOTONIC_CREATE 3
#define CALLING_OVERHEAD_RATE_MONOTONIC_IDENT 3
#define CALLING_OVERHEAD_RATE_MONOTONIC_DELETE 3
#define CALLING_OVERHEAD_RATE_MONOTONIC_CANCEL 3
#define CALLING_OVERHEAD_RATE_MONOTONIC_PERIOD 3
#define CALLING_OVERHEAD_MULTIPROCESSING_ANNOUNCE 2
#ifdef __cplusplus
}
#endif
#endif

View File

@@ -1,34 +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
/*
* Define the interrupt mechanism for Time Test 27
*
* NOTE: Use a software interrupt for the i386.
*/
#define MUST_WAIT_FOR_INTERRUPT 0
#define Install_tm27_vector(handler)
#define Cause_tm27_intr() __asm__ volatile( "int $0x90" : : );
#define Clear_tm27_intr() /* empty */
#define Lower_tm27_intr() /* empty */
#endif

View File

@@ -1,25 +0,0 @@
#
# Config file for the i386ex BSP
#
# $Id$
#
include $(RTEMS_ROOT)/make/custom/default.cfg
RTEMS_CPU=i386
RTEMS_CPU_MODEL=i386_nofp
# This contains the compiler options necessary to select the CPU model
# and (hopefully) optimize for it.
#
CPU_CFLAGS = -msoft-float
# optimize flag: typically -O2
CFLAGS_OPTIMIZE_V = -O2 -g
define bsp-post-link
$(OBJCOPY) -O srec $(basename $@).exe $(basename $@).srec
sed -e 's/.$$//' -e '/^S0/d' $(basename $@).srec | \
$(PACKHEX) > $(basename $@)$(DOWNEXT)
$(default-bsp-post-link)
endef

View File

@@ -1,18 +0,0 @@
/*
* $Id$
*/
#ifndef NET_EXTERNS_H
#define NET_EXTERNS_H
/*
* External entry points
*/
extern int uti596_attach(struct rtems_bsdnet_ifconfig *);
extern int uti596dump(char * );
extern void uti596reset(void);
extern void uti596Diagnose(int);
extern void uti596_request_reset(void);
#endif

File diff suppressed because it is too large Load Diff

View File

@@ -1,284 +0,0 @@
/* uti596.h: Contains the defines and structures used by the uti596 driver */
/*
* EII: March 11: Created v. 0.0
* Jan 12/98 Added STAT bits, s11-=s5 and max_colls.
*
* $Id$
*/
#ifndef UTI596_H
#define UTI596_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 <net/if.h>
#include <netinet/in.h>
#include <netinet/if_ether.h>
/* Ethernet statistics */
struct enet_statistics{
int rx_packets; /* total packets received */
int tx_packets; /* total packets transmitted */
int rx_errors; /* bad packets received */
int tx_errors; /* packet transmit problems */
int rx_dropped; /* no space in buffers */
int tx_dropped; /* */
int tx_retries_exceeded; /* excessive retries */
int multicast; /* multicast packets received */
int collisions;
/* detailed rx_errors: */
int rx_length_errors;
int rx_over_errors; /* receiver ring buff overflow */
int rx_crc_errors; /* recved pkt with crc error */
int rx_frame_errors; /* recv'd frame alignment error */
int rx_fifo_errors; /* recv'r fifo overrun */
int rx_missed_errors; /* receiver missed packet */
/* detailed tx_errors */
int tx_aborted_errors;
int tx_carrier_errors;
int tx_fifo_errors;
int tx_heartbeat_errors;
int tx_window_errors;
/* NIC reset errors */
int nic_reset_count; /* The number of times uti596reset() has been called. */
};
enum commands {
CmdNOp = 0,
CmdSASetup = 1,
CmdConfigure = 2,
CmdMulticastList = 3,
CmdTx = 4,
CmdTDR = 5,
CmdDump = 6,
CmdDiagnose = 7
};
#define UTI596_MUTEX 1
#define CMD_EOL 0x8000 /* The last command of the list, stop. */
#define CMD_SUSP 0x4000 /* Suspend after doing cmd. */
#define CMD_INTR 0x2000 /* Interrupt after doing cmd. */
#define CMD_FLEX 0x0008 /* Enable flexible memory model */
#define SCB_STAT_CX 0x8000 /* Cmd completes with 'I' bit set */
#define SCB_STAT_FR 0x4000 /* Frame Received */
#define SCB_STAT_CNA 0x2000 /* Cmd unit Not Active */
#define SCB_STAT_RNR 0x1000 /* Receiver Not Ready */
#define SCB_CUS_SUSPENDED 0x0100
#define SCB_CUS_ACTIVE 0x0200
#define STAT_C 0x8000 /* Set to 1 after execution */
#define STAT_B 0x4000 /* 1 : Cmd being executed, 0 : Cmd done. */
#define STAT_OK 0x2000 /* 1: Command executed ok 0 : Error */
#define STAT_A 0x1000 /* command has been aborted */
#define STAT_S11 0x0800
#define STAT_S10 0x0400
#define STAT_S9 0x0200
#define STAT_S8 0x0100
#define STAT_S7 0x0080
#define STAT_S6 0x0040
#define STAT_S5 0x0020
#define STAT_MAX_COLLS 0x000F
#define RBD_STAT_P 0x4000 /* prefetch */
#define RBD_STAT_F 0x4000 /* used */
#define CUC_START 0x0100
#define CUC_RESUME 0x0200
#define CUC_SUSPEND 0x0300
#define CUC_ABORT 0x0400
#define RX_START 0x0010
#define RX_RESUME 0x0020
#define RX_SUSPEND 0x0030
#define RX_ABORT 0x0040
#define RU_SUSPENDED 0x0010
#define RU_NO_RESOURCES 0x0020
#define RU_READY 0x0040
#define IO_ADDR 0x360
#define PORT_ADDR IO_ADDR
#define CHAN_ATTN PORT_ADDR + 4
#define NIC_ADDR PORT_ADDR + 8
struct i596_cmd {
volatile unsigned short status;
volatile unsigned short command;
struct i596_cmd *next;
};
#define I596_NULL ( ( void * ) 0xffffffff)
#define UTI_596_END_OF_FRAME 0x8000
#define SIZE_MASK 0x3fff
/*
* Transmit buffer Descriptor
*/
struct i596_tbd {
unsigned short size;
unsigned short pad;
struct i596_tbd *next;
char *data;
};
/*
* Receive buffer Descriptor
*/
struct i596_rbd {
unsigned short count;
unsigned short offset;
struct i596_rbd *next;
char *data;
unsigned short size;
unsigned short pad;
};
/*
* Transmit Command Structure
*/
struct tx_cmd {
struct i596_cmd cmd;
struct i596_tbd *pTbd;
unsigned short size;
unsigned short pad;
} ;
/*
* Receive Frame Descriptor
*/
struct i596_rfd {
volatile unsigned short stat;
volatile unsigned short cmd;
struct i596_rfd *next;
struct i596_rbd *pRbd;
unsigned short count;
unsigned short size;
char data [1532 ];
} ;
struct i596_dump {
struct i596_cmd cmd;
char * pData;
};
struct i596_set_add {
struct i596_cmd cmd;
char data[8];
};
struct i596_configure {
struct i596_cmd cmd;
char data[16];
};
struct i596_nop {
struct i596_cmd cmd;
};
struct i596_tdr {
struct i596_cmd cmd;
unsigned int data;
};
#define RX_RING_SIZE 8
/*
* System Control Block
*/
struct i596_scb {
volatile unsigned short status;
volatile unsigned short command;
struct i596_cmd *pCmd;
struct i596_rfd *pRfd;
volatile unsigned long crc_err;
volatile unsigned long align_err;
volatile unsigned long resource_err;
volatile unsigned long over_err;
volatile unsigned long rcvdt_err;
volatile unsigned long short_err;
volatile unsigned short t_on;
volatile unsigned short t_off;
};
/*
* Intermediate System Control Block
*/
struct i596_iscp {
volatile unsigned long stat;
struct i596_scb *scb;
} ;
/*
* System Control Parameters
*/
struct i596_scp {
unsigned long sysbus;
unsigned long pad;
struct i596_iscp *iscp;
} ;
struct uti596_softc {
struct arpcom arpcom;
rtems_irq_connect_data irqInfo;
struct i596_scp *pScp;
struct i596_iscp iscp;
struct i596_scb scb;
struct i596_set_add set_add;
struct i596_configure set_conf;
struct i596_tdr tdr;
struct i596_nop nop;
unsigned long stat;
struct tx_cmd *pTxCmd;
struct i596_tbd *pTbd;
int ioAddr;
struct i596_rfd *pBeginRFA;
struct i596_rfd *pEndRFA;
struct i596_rfd *pLastUnkRFD;
struct i596_rbd *pLastUnkRBD;
struct i596_rfd *pEndSavedQueue;
struct i596_cmd *pCmdHead;
struct i596_cmd *pCmdTail; /* unneeded, as chaining not used, but implemented */
rtems_id rxDaemonTid;
rtems_id txDaemonTid;
rtems_id resetDaemonTid;
struct enet_statistics stats;
int started;
unsigned long rxInterrupts;
unsigned long txInterrupts;
volatile int cmdOk;
int resetDone;
unsigned long txRawWait;
struct i596_rfd *pInboundFrameQueue;
short int rxBdCount;
short int txBdCount;
short int countRFD;
short int savedCount;
struct i596_rfd *pSavedRfdQueue;
rtems_name semaphore_name;
rtems_id semaphore_id;
char zeroes[64];
unsigned long rawsndcnt;
int nic_reset; /* flag is for requesting that ISR issue a reset quest */
} ;
#endif

View File

@@ -1,91 +0,0 @@
## Automatically generated by ampolish3 - Do not edit
if AMPOLISH3
$(srcdir)/preinstall.am: Makefile.am
$(AMPOLISH3) $(srcdir)/Makefile.am > $(srcdir)/preinstall.am
endif
PREINSTALL_DIRS =
DISTCLEANFILES += $(PREINSTALL_DIRS)
all-local: $(TMPINSTALL_FILES)
TMPINSTALL_FILES =
CLEANFILES = $(TMPINSTALL_FILES)
all-am: $(PREINSTALL_FILES)
PREINSTALL_FILES =
CLEANFILES += $(PREINSTALL_FILES)
$(PROJECT_LIB)/$(dirstamp):
@$(MKDIR_P) $(PROJECT_LIB)
@: > $(PROJECT_LIB)/$(dirstamp)
PREINSTALL_DIRS += $(PROJECT_LIB)/$(dirstamp)
$(PROJECT_INCLUDE)/$(dirstamp):
@$(MKDIR_P) $(PROJECT_INCLUDE)
@: > $(PROJECT_INCLUDE)/$(dirstamp)
PREINSTALL_DIRS += $(PROJECT_INCLUDE)/$(dirstamp)
$(PROJECT_INCLUDE)/bsp/$(dirstamp):
@$(MKDIR_P) $(PROJECT_INCLUDE)/bsp
@: > $(PROJECT_INCLUDE)/bsp/$(dirstamp)
PREINSTALL_DIRS += $(PROJECT_INCLUDE)/bsp/$(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/bootcard.h: ../../shared/include/bootcard.h $(PROJECT_INCLUDE)/bsp/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/bootcard.h
PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/bootcard.h
$(PROJECT_INCLUDE)/coverhd.h: include/coverhd.h $(PROJECT_INCLUDE)/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/coverhd.h
PREINSTALL_FILES += $(PROJECT_INCLUDE)/coverhd.h
$(PROJECT_INCLUDE)/bsp/irq.h: ../../i386/shared/irq/irq.h $(PROJECT_INCLUDE)/bsp/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/irq.h
PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/irq.h
$(PROJECT_INCLUDE)/bsp/irq_asm.h: ../../i386/shared/irq/irq_asm.h $(PROJECT_INCLUDE)/bsp/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/irq_asm.h
PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/irq_asm.h
$(PROJECT_INCLUDE)/bsp/irq-generic.h: ../../shared/include/irq-generic.h $(PROJECT_INCLUDE)/bsp/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/irq-generic.h
PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/irq-generic.h
$(PROJECT_INCLUDE)/bsp/irq-info.h: ../../shared/include/irq-info.h $(PROJECT_INCLUDE)/bsp/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/irq-info.h
PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/irq-info.h
$(PROJECT_LIB)/start.$(OBJEXT): start.$(OBJEXT) $(PROJECT_LIB)/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_LIB)/start.$(OBJEXT)
TMPINSTALL_FILES += $(PROJECT_LIB)/start.$(OBJEXT)
$(PROJECT_LIB)/linkcmds: startup/linkcmds $(PROJECT_LIB)/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_LIB)/linkcmds
PREINSTALL_FILES += $(PROJECT_LIB)/linkcmds
$(PROJECT_INCLUDE)/uart.h: ../../i386/shared/comm/uart.h $(PROJECT_INCLUDE)/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/uart.h
PREINSTALL_FILES += $(PROJECT_INCLUDE)/uart.h
$(PROJECT_INCLUDE)/pcibios.h: ../../i386/shared/pci/pcibios.h $(PROJECT_INCLUDE)/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/pcibios.h
PREINSTALL_FILES += $(PROJECT_INCLUDE)/pcibios.h

View File

@@ -1,252 +0,0 @@
/*
* Submitted by:
*
* Erik Ivanenko
* University of Toronto
* erik.ivanenko@utoronto.ca
*
* 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$
*/
/* REMAP ADDRESSING Registers */
#define REMAPCFGH 0x0023
#define REMAPCFGL 0x0022
#define REMAPCFG 0x0022
/* INTERRUPT CONTROL REGISTERS -- SLOT 15 ADDRESSES */
#define ICW1M 0xF020
#define ICW1S 0xF0A0
#define ICW2M 0xF021
#define ICW2S 0xF0A1
#define ICW3M 0xF021
#define ICW3S 0xF0A1
#define ICW4M 0xF021
#define ICW4S 0xF0A1
#define OCW1M 0xF021
#define OCW1S 0xF0A1
#define OCW2M 0xF020
#define OCW2S 0xF0A0
#define OCW3M 0xF020
#define OCW3S 0xF0A0
/* INTERRUPT CONTROL REGISTERS -- SLOT 0 ADDRESSES */
#define ICW1MDOS 0x0020
#define ICW1SDOS 0x00A0
#define ICW2MDOS 0x0021
#define ICW2SDOS 0x00A1
#define ICW3MDOS 0x0021
#define ICW3SDOS 0x00A1
#define ICW4MDOS 0x0021
#define ICW4SDOS 0x00A1
#define OCW1MDOS 0x0021
#define OCW1SDOS 0x00A1
#define OCW2MDOS 0x0020
#define OCW2SDOS 0x00A0
#define OCW3MDOS 0x0020
#define OCW3SDOS 0x00A0
/* CONFIGURATION Registers */
#define DMACFG 0xF830
#define INTCFG 0xF832
#define TMRCFG 0xF834
#define SIOCFG 0xF836
#define P1CFG 0xF820
#define P2CFG 0xF822
#define P3CFG 0xF824
#define PINCFG 0xF826
/* WATCHDOG TIMER Registers */
#define WDTRLDH 0xF4C0
#define WDTRLDL 0xF4C2
#define WDTCNTH 0xF4C4
#define WDTCNTL 0xF4C6
#define WDTCLR 0xF4C8
#define WDTSTATUS 0xF4CA
/* TIMER CONTROL REGISTERS -- SLOT 15 ADDRESSES */
#define TMR0 0xF040
#define TMR1 0xF041
#define TMR2 0xF042
#define TMRCON 0xF043
/* TIMER CONTROL REGISTERS -- SLOT 0 ADDRESSES */
#define TMR0DOS 0x0040
#define TMR1DOS 0x0041
#define TMR2DOS 0x0042
#define TMRCONDOS 0x0043
/* INPUT/OUTPUT PORT UNIT Registers */
#define P1PIN 0xF860
#define P1LTC 0xF862
#define P1DIR 0xF864
#define P2PIN 0xF868
#define P2LTC 0xF86A
#define P2DIR 0xF86C
#define P3PIN 0xF870
#define P3LTC 0xF872
#define P3DIR 0xF874
/* ASYNCHRONOUS SERIAL CHANNEL 0 -- SLOT 15 ADDRESSES */
#define RBR0 0xF4F8
#define THR0 0xF4F8
#define TBR0 0xF4F8
#define DLL0 0xF4F8
#define IER0 0xF4F9
#define DLH0 0xF4F9
#define IIR0 0xF4FA
#define LCR0 0xF4FB
#define MCR0 0xF4FC
#define LSR0 0xF4FD
#define MSR0 0xF4FE
#define SCR0 0xF4FF
/* ASYNCHRONOUS SERIAL CHANNEL 0 -- SLOT 0 ADDRESSES */
#define RBR0DOS 0x03F8
#define THR0DOS 0x03F8
#define TBR0DOS 0x03F8
#define DLL0DOS 0x03F8
#define IER0DOS 0x03F9
#define DLH0DOS 0x03F9
#define IIR0DOS 0x03FA
#define LCR0DOS 0x03FB
#define MCR0DOS 0x03FC
#define LSR0DOS 0x03FD
#define MSR0DOS 0x03FE
#define SCR0DOS 0x03FF
/* ASYNCHRONOUS SERIAL CHANNEL 1 -- SLOT 15 ADDRESSES */
#define RBR1 0xF8F8
#define THR1 0xF8F8
#define TBR1 0XF8F8
#define DLL1 0xF8F8
#define IER1 0xF8F9
#define DLH1 0xF8F9
#define IIR1 0xF8FA
#define LCR1 0xF8FB
#define MCR1 0xF8FC
#define LSR1 0xF8FD
#define MSR1 0xF8FE
#define SCR1 0xF8FF
/* ASYNCHRONOUS SERIAL CHANNEL 1 -- SLOT 0 ADDRESSES */
#define RBR1DOS 0x02F8
#define THR1DOS 0x02F8
#define TBR1DOS 0x02F8
#define DLL1DOS 0x02F8
#define IER1DOS 0x02F9
#define DLH1DOS 0x02F9
#define IIR1DOS 0x02FA
#define LCR1DOS 0x02FB
#define MCR1DOS 0x02FC
#define LSR1DOS 0x02FD
#define MSR1DOS 0x02FE
#define SCR1DOS 0x02FF
/* SYNCHRONOUS SERIAL CHANNEL REGISTERS */
#define SSIOTBUF 0xF480
#define SSIORBUF 0xF482
#define SSIOBAUD 0xF484
#define SSIOCON1 0xF486
#define SSIOCON2 0xF488
#define SSIOCTR 0xF48A
/* CHIP SELECT UNIT Registers */
#define CS0ADL 0xF400
#define CS0ADH 0xF402
#define CS0MSKL 0xF404
#define CS0MSKH 0xF406
#define CS1ADL 0xF408
#define CS1ADH 0xF40A
#define CS1MSKL 0xF40C
#define CS1MSKH 0xF40E
#define CS2ADL 0xF410
#define CS2ADH 0xF412
#define CS2MSKL 0xF414
#define CS2MSKH 0xF416
#define CS3ADL 0xF418
#define CS3ADH 0xF41A
#define CS3MSKL 0xF41C
#define CS3MSKH 0xF41E
#define CS4ADL 0xF420
#define CS4ADH 0xF422
#define CS4MSKL 0xF424
#define CS4MSKH 0xF426
#define CS5ADL 0xF428
#define CS5ADH 0xF42A
#define CS5MSKL 0xF42C
#define CS5MSKH 0xF42E
#define CS6ADL 0xF430
#define CS6ADH 0xF432
#define CS6MSKL 0xF434
#define CS6MSKH 0xF436
#define UCSADL 0xF438
#define UCSADH 0xF43A
#define UCSMSKL 0xF43C
#define UCSMSKH 0xF43E
/* REFRESH CONTROL UNIT Registers */
#define RFSBAD 0xF4A0
#define RFSCIR 0xF4A2
#define RFSCON 0xF4A4
#define RFSADD 0xF4A6
/* POWER MANAGEMENT CONTROL Registers */
#define PWRCON 0xF800
#define CLKPRS 0xF804
/* DMA UNIT REGISTERS -- SLOT 15 ADDRESSES */
#define DMA0TAR 0xF000
#define DMA0BYC 0xF001
#define DMA1TAR 0xF002
#define DMA1BYC 0xF003
#define DMACMD1 0xF008
#define DMASTS 0xF008
#define DMASRR 0xF009
#define DMAMSK 0xF00A
#define DMAMOD1 0xF00B
#define DMACLRBP 0xF00C
#define DMACLR 0xF00D
#define DMACLRMSK 0xF00E
#define DMAGRPMSK 0xF00F
#define DMA0REQL 0xF010
#define DMA0REQH 0xF011
#define DMA1REQL 0xF012
#define DMA1REQH 0xF013
#define DMABSR 0xF018
#define DMACHR 0xF019
#define DMAIS 0xF019
#define DMACMD2 0xF01A
#define DMAMOD2 0xF01B
#define DMAIEN 0xF01C
#define DMAOVFE 0xF01D
#define DMACLRTC 0xF01E
#define DMA1TARPL 0xF083
#define DMA1TARPH 0xF085
#define DMA0TARPH 0xF086
#define DMA0TARPL 0xF087
#define DMA0BYCH 0xF098
#define DMA1BYCH 0xF099
/* DMA UNIT REGISTERS -- SLOT 0 ADDRESSES */
#define DMA0TARDOS 0x0000
#define DMA0BYCDOS 0x0001
#define DMA1TARDOS 0x0002
#define DMA1BYCDOS 0x0003
#define DMACMD1DOS 0x0008
#define DMASTSDOS 0x0008
#define DMASRRDOS 0x0009
#define DMAMSKDOS 0x000A
#define DMAMOD1DOS 0x000B
#define DMACLRBPDOS 0x000C
#define DMACLRDOS 0x000D
#define DMACLRMSKDOS 0x000E
#define DMAGRPMSKDOS 0x000F
#define DMA1TARPLDOS 0x0083
#define DMA0TARPLDOS 0x0087
/* A20GATE AND FAST CPU RESET -- SLOT 15 ADDRESS */
#define PORT92 0xF092
/* A20GATE AND FAST CPU RESET -- SLOT 0 ADDRESS */
#define PORT92DOS 0x0092

View File

@@ -1,252 +0,0 @@
/*
* Submitted by:
*
* Erik Ivanenko
* University of Toronto
* erik.ivanenko@utoronto.ca
*
* 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$
*/
/* REMAP ADDRESSING Registers */
.set REMAPCFGH , 0x0023
.set REMAPCFGL , 0x0022
.set REMAPCFG , 0x0022
/* INTERRUPT CONTROL REGISTERS -- SLOT 15 ADDRESSES */
.set ICW1M , 0xF020
.set ICW1S , 0xF0A0
.set ICW2M , 0xF021
.set ICW2S , 0xF0A1
.set ICW3M , 0xF021
.set ICW3S , 0xF0A1
.set ICW4M , 0xF021
.set ICW4S , 0xF0A1
.set OCW1M , 0xF021
.set OCW1S , 0xF0A1
.set OCW2M , 0xF020
.set OCW2S , 0xF0A0
.set OCW3M , 0xF020
.set OCW3S , 0xF0A0
/* INTERRUPT CONTROL REGISTERS -- SLOT 0 ADDRESSES */
.set ICW1MDOS , 0x0020
.set ICW1SDOS , 0x00A0
.set ICW2MDOS , 0x0021
.set ICW2SDOS , 0x00A1
.set ICW3MDOS , 0x0021
.set ICW3SDOS , 0x00A1
.set ICW4MDOS , 0x0021
.set ICW4SDOS , 0x00A1
.set OCW1MDOS , 0x0021
.set OCW1SDOS , 0x00A1
.set OCW2MDOS , 0x0020
.set OCW2SDOS , 0x00A0
.set OCW3MDOS , 0x0020
.set OCW3SDOS , 0x00A0
/* CONFIGURATION Registers */
.set DMACFG , 0xF830
.set INTCFG , 0xF832
.set TMRCFG , 0xF834
.set SIOCFG , 0xF836
.set P1CFG , 0xF820
.set P2CFG , 0xF822
.set P3CFG , 0xF824
.set PINCFG , 0xF826
/* WATCHDOG TIMER Registers */
.set WDTRLDH , 0xF4C0
.set WDTRLDL , 0xF4C2
.set WDTCNTH , 0xF4C4
.set WDTCNTL , 0xF4C6
.set WDTCLR , 0xF4C8
.set WDTSTATUS , 0xF4CA
/* TIMER CONTROL REGISTERS -- SLOT 15 ADDRESSES */
.set TMR0 , 0xF040
.set TMR1 , 0xF041
.set TMR2 , 0xF042
.set TMRCON , 0xF043
/* TIMER CONTROL REGISTERS -- SLOT 0 ADDRESSES */
.set TMR0DOS , 0x0040
.set TMR1DOS , 0x0041
.set TMR2DOS , 0x0042
.set TMRCONDOS , 0x0043
/* INPUT/OUTPUT PORT UNIT Registers */
.set P1PIN , 0xF860
.set P1LTC , 0xF862
.set P1DIR , 0xF864
.set P2PIN , 0xF868
.set P2LTC , 0xF86A
.set P2DIR , 0xF86C
.set P3PIN , 0xF870
.set P3LTC , 0xF872
.set P3DIR , 0xF874
/* ASYNCHRONOUS SERIAL CHANNEL 0 -- SLOT 15 ADDRESSES */
.set RBR0 , 0xF4F8
.set THR0 , 0xF4F8
.set TBR0 , 0xF4F8
.set DLL0 , 0xF4F8
.set IER0 , 0xF4F9
.set DLH0 , 0xF4F9
.set IIR0 , 0xF4FA
.set LCR0 , 0xF4FB
.set MCR0 , 0xF4FC
.set LSR0 , 0xF4FD
.set MSR0 , 0xF4FE
.set SCR0 , 0xF4FF
/* ASYNCHRONOUS SERIAL CHANNEL 0 -- SLOT 0 ADDRESSES */
.set RBR0DOS , 0x03F8
.set THR0DOS , 0x03F8
.set TBR0DOS , 0x03F8
.set DLL0DOS , 0x03F8
.set IER0DOS , 0x03F9
.set DLH0DOS , 0x03F9
.set IIR0DOS , 0x03FA
.set LCR0DOS , 0x03FB
.set MCR0DOS , 0x03FC
.set LSR0DOS , 0x03FD
.set MSR0DOS , 0x03FE
.set SCR0DOS , 0x03FF
/* ASYNCHRONOUS SERIAL CHANNEL 1 -- SLOT 15 ADDRESSES */
.set RBR1 , 0xF8F8
.set THR1 , 0xF8F8
.set TBR1 , 0XF8F8
.set DLL1 , 0xF8F8
.set IER1 , 0xF8F9
.set DLH1 , 0xF8F9
.set IIR1 , 0xF8FA
.set LCR1 , 0xF8FB
.set MCR1 , 0xF8FC
.set LSR1 , 0xF8FD
.set MSR1 , 0xF8FE
.set SCR1 , 0xF8FF
/* ASYNCHRONOUS SERIAL CHANNEL 1 -- SLOT 0 ADDRESSES */
.set RBR1DOS , 0x02F8
.set THR1DOS , 0x02F8
.set TBR1DOS , 0x02F8
.set DLL1DOS , 0x02F8
.set IER1DOS , 0x02F9
.set DLH1DOS , 0x02F9
.set IIR1DOS , 0x02FA
.set LCR1DOS , 0x02FB
.set MCR1DOS , 0x02FC
.set LSR1DOS , 0x02FD
.set MSR1DOS , 0x02FE
.set SCR1DOS , 0x02FF
/* SYNCHRONOUS SERIAL CHANNEL REGISTERS */
.set SSIOTBUF , 0xF480
.set SSIORBUF , 0xF482
.set SSIOBAUD , 0xF484
.set SSIOCON1 , 0xF486
.set SSIOCON2 , 0xF488
.set SSIOCTR , 0xF48A
/* CHIP SELECT UNIT Registers */
.set CS0ADL , 0xF400
.set CS0ADH , 0xF402
.set CS0MSKL , 0xF404
.set CS0MSKH , 0xF406
.set CS1ADL , 0xF408
.set CS1ADH , 0xF40A
.set CS1MSKL , 0xF40C
.set CS1MSKH , 0xF40E
.set CS2ADL , 0xF410
.set CS2ADH , 0xF412
.set CS2MSKL , 0xF414
.set CS2MSKH , 0xF416
.set CS3ADL , 0xF418
.set CS3ADH , 0xF41A
.set CS3MSKL , 0xF41C
.set CS3MSKH , 0xF41E
.set CS4ADL , 0xF420
.set CS4ADH , 0xF422
.set CS4MSKL , 0xF424
.set CS4MSKH , 0xF426
.set CS5ADL , 0xF428
.set CS5ADH , 0xF42A
.set CS5MSKL , 0xF42C
.set CS5MSKH , 0xF42E
.set CS6ADL , 0xF430
.set CS6ADH , 0xF432
.set CS6MSKL , 0xF434
.set CS6MSKH , 0xF436
.set UCSADL , 0xF438
.set UCSADH , 0xF43A
.set UCSMSKL , 0xF43C
.set UCSMSKH , 0xF43E
/* REFRESH CONTROL UNIT Registers */
.set RFSBAD , 0xF4A0
.set RFSCIR , 0xF4A2
.set RFSCON , 0xF4A4
.set RFSADD , 0xF4A6
/* POWER MANAGEMENT CONTROL Registers */
.set PWRCON , 0xF800
.set CLKPRS , 0xF804
/* DMA UNIT REGISTERS -- SLOT 15 ADDRESSES */
.set DMA0TAR , 0xF000
.set DMA0BYC , 0xF001
.set DMA1TAR , 0xF002
.set DMA1BYC , 0xF003
.set DMACMD1 , 0xF008
.set DMASTS , 0xF008
.set DMASRR , 0xF009
.set DMAMSK , 0xF00A
.set DMAMOD1 , 0xF00B
.set DMACLRBP , 0xF00C
.set DMACLR , 0xF00D
.set DMACLRMSK , 0xF00E
.set DMAGRPMSK , 0xF00F
.set DMA0REQL , 0xF010
.set DMA0REQH , 0xF011
.set DMA1REQL , 0xF012
.set DMA1REQH , 0xF013
.set DMABSR , 0xF018
.set DMACHR , 0xF019
.set DMAIS , 0xF019
.set DMACMD2 , 0xF01A
.set DMAMOD2 , 0xF01B
.set DMAIEN , 0xF01C
.set DMAOVFE , 0xF01D
.set DMACLRTC , 0xF01E
.set DMA1TARPL , 0xF083
.set DMA1TARPH , 0xF085
.set DMA0TARPH , 0xF086
.set DMA0TARPL , 0xF087
.set DMA0BYCH , 0xF098
.set DMA1BYCH , 0xF099
/* DMA UNIT REGISTERS -- SLOT 0 ADDRESSES */
.set DMA0TARDOS , 0x0000
.set DMA0BYCDOS , 0x0001
.set DMA1TARDOS , 0x0002
.set DMA1BYCDOS , 0x0003
.set DMACMD1DOS , 0x0008
.set DMASTSDOS , 0x0008
.set DMASRRDOS , 0x0009
.set DMAMSKDOS , 0x000A
.set DMAMOD1DOS , 0x000B
.set DMACLRBPDOS , 0x000C
.set DMACLRDOS , 0x000D
.set DMACLRMSKDOS , 0x000E
.set DMAGRPMSKDOS , 0x000F
.set DMA1TARPLDOS , 0x0083
.set DMA0TARPLDOS , 0x0087
/* A20GATE AND FAST CPU RESET -- SLOT 15 ADDRESS */
.set PORT92 , 0xF092
/* A20GATE AND FAST CPU RESET -- SLOT 0 ADDRESS */
.set PORT92DOS , 0x0092

View File

@@ -1,115 +0,0 @@
/* macros.inc
*
* This file assists the board independent startup code
* by initializing the chip-select channels to
* reflect the proper memory configuration.
*
* NOTE: No stack has been established when this routine
* is invoked. It returns to start.s through ldsegs
*
* Submitted by:
*
* Erik Ivanenko
* University of Toronto
* erik.ivanenko@utoronto.ca
*
* 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$
*/
.set GDT_CODE_PTR , 0x10
.set GDT_DATA_PTR , 0x18
.set BOARD_SELECT , 0x301
.set BOARD_DATA , 0x302
.set BOARD_LATCH , 0x303
#define SetExRegByte(_register,_value) \
movb $ ## _value, al; \
movw $ ## _register, dx; \
outb al, dx
#define SetExRegWord(_register,_value) \
movw $ ## _value, ax; \
movw $ ## _register, dx ; \
outw ax, dx
#define DESC2(lim_0_15, bas_0_15, bas_16_23, access, gran, bas_24_31) \
.word lim_0_15 ; \
.word bas_0_15 ; \
.byte bas_16_23 ; \
.byte access ; \
.byte gran ; \
.byte bas_24_31
#define DESC3( _base, _limit) \
.word _limit ; \
.long _base
/* THE GET_ACCESS IS CHANGED FROM 8E TO 9E */
#define INTERRUPT_GATE( _vector ) \
.word _vector ; \
.word GDT_CODE_PTR ; \
.byte 0x0 ; \
.byte 0x8E ; \
.word 0x0
#define rLOAD_INDEX( _selector, _segment_register) \
movl _selector , _segment_register ; \
addb al, ( eax )
#define rLOAD_SEGMENT( _reg, _segment_register) \
mov _reg , _segment_register ; \
/* #define rLOAD_SEGMENT( _reg, _segment_register) \
.code16 ; \
mov _reg , _segment_register ; \
.code32
*/
#define pLOAD_SEGMENT( _selector, _segment_register) \
movl $ ## _selector , eax ; .code16 ; \
mov ax, _segment_register ; .code32
/* #define MOVE_WORD( _immed32, _reg ) \
data16 ; \
movl _immed32, _reg
*/
#define MOVE_WORD( _immed32, _reg ) \
movw _immed32, _reg
/* #define MOVE_IMMED_WORD( _immed32, _reg ) \
data16 ; \
mov $ ## _immed32, _reg
#define CS_OFF( _cs_symbol, _reg ) \
data16 ; \
mov _cs_symbol, _reg ; \
data16 ;\
andl $0x000ffff, _reg
#define _16_NOPS \
nop ; \
nop ; \
nop ; \
nop ; \
nop ; \
nop ; \
nop ; \
nop ; \
nop ; \
nop ; \
nop ; \
nop ; \
nop ; \
nop ; \
nop ; \
nop ;
*/

View File

@@ -1,480 +0,0 @@
/*
* This file is the main boot and configuration file for the i386ex. It is
* solely responsible for initializing the internal register set to reflect
* the proper board configuration. This version is the "generic" i386ex
* startup:
*
* 1) 512K flask ROM @3f80000
* 2) 1 Mb RAM @ 0x0
* 3) Timer0 used as RTEMS clock ticker, 1 msec tick rate.
* 4) READY# is generated by CPU
*
* The file is a multi-section file, with sections as follows:
* 1) interrupt gates, in section "ints"
* 2) interrupt descriptor table, in section "idt"
* 3) global descriptor table, in section "gdt"
* 4) reset in section "reset"
* 5) and initial boot code in section " initial"
*
* Submitted by:
*
* Erik Ivanenko
* University of Toronto
* erik.ivanenko@utoronto.ca
*
* 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$
changes:
SetExRegByte(ICW3S , 0x02 ) # MUST be 0x02 according to intel
SetExRegByte(ICW3M , 0x04 ) # IR2 is cascaded internally: was 0x02 => IR1 is cascaded
*/
#include <rtems/asm.h>
#include "macros.inc"
#include "80386ex.inc"
/*
* NEW_GAS Needed for binutils 2.9.1.0.7 and higher
*/
EXTERN (boot_card) /* exits to bspstart */
EXTERN (stack_start) /* defined in startup/linkcmds */
EXTERN (Clock_exit)
PUBLIC (Interrupt_descriptor_table)
PUBLIC ( SYM(IDTR) )
/* PUBLIC( SYM(_initInternalRegisters) ) */
BEGIN_DATA
SYM(IDTR): DESC3( SYM(Interrupt_descriptor_table), 0x07ff );
SYM(Interrupt_descriptor_table): /* Now in data section */
.rept 256
.word 0,0,0,0
.endr
END_DATA
BEGIN_DATA
PUBLIC (_Global_descriptor_table)
SYM(GDTR): DESC3( GDT_TABLE, 0x1f ); # one less than the size
SYM (_Global_descriptor_table):
SYM(GDT_TABLE): DESC2(0,0,0,0,0,0);
SYM(GDT_ALIAS): DESC2(32,0x1000,0x0,0x93,0,0x0);
SYM(GDT_CODE): DESC2(0xffff,0,0x0,0x9B,0xDF,0x00);
SYM(GDT_DATA): DESC2(0xffff,0,0x0,0x92,0xDF,0x00); # was CF
SYM(GDT_END):
END_DATA
/* This section is the section that is used by the interrupt
descriptor table. It is used to provide the IDT with the
correct vector offsets. It is for symbol definition only.
*/
.code16
.section .reset, "ax"
PUBLIC ( SYM(reset) )
SYM(reset):
nop
cli
#ifdef NEW_GAS
data32 addr32 jmp SYM(_initInternalRegisters) /* different section in this file */
#else
jmp SYM(_initInternalRegisters) /* different section in this file */
#endif
/* .code32 in case this section moves */
nop /* required by CHIP LAB to pad out size */
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
.section .initial, "ax"
/* nop */ /* required for linker -- initial jump is to "label - 2" */
/* nop */ /* ie. _initInternalRegisters -2 ( which now == .initial ) */
/*
* Enable access to peripheral register at expanded I/O addresses
*/
SYM(_initInternalRegisters):
/* .code16 */
movw $0x8000 , ax
outb al , $REMAPCFGH
xchg al , ah
outb al,$REMAPCFGL
outw ax, $REMAPCFG ;
/*
* Configure operation of the A20 Address Line
*/
SYM(A20):
movw $PORT92 , dx
inb dx , al # clear A20 port reset
andb $0xfe , al # b0 Fast Reset(0)=disabled,(1)=reset triggered
orb $0x02 , al # Bit 1 Fast A20 = 0 (always 0) else enabled.
outb al , dx
SYM(Watchdog):
movw $WDTSTATUS , dx # address the WDT status port
inb dx , al # get the WDT status
orb $0x01 , al # set the CLKDIS bit
outb al , dx # disable the clock to the WDT
/*
* Initialize Refresh Control Unit for:
* Refresh Address = 0x0000
* Refresh gate between rows is 15.6 uSec
* Using a CLK2 frequency of 50Mhz ( 25Mhz CPU )
* The refresh unit is enabled
* The refresh pin is not used.
*/
SYM(InitRCU):
SetExRegWord( RFSCIR , 390) # refresh interval was 390, tried 312
SetExRegWord( RFSBAD , 0x0) # base address
SetExRegWord( RFSADD , 0x0) # address register
SetExRegWord( RFSCON , 0x8000) # enable bit
/*
* Initialize clock and power mgmt unit for:
* Clock Frequency = 50 Mhz
* Prescaled clock output = 1 Mhz
* Normal halt instructions
*/
SYM(InitClk):
SetExRegByte( PWRCON, 0x0 )
SetExRegWord( CLKPRS, 0x17) # 0x13 for 1.19318 MHz. 0x17 for 1MHz.
/**************************************************************
* Initialize the Pin Configurations
*************************************************************/
/*
* Initialize I/O port 1 for:
* PIN 0 = 1, DCD0# to package pin
* PIN 1 = 1, RTS0# to package pin
* PIN 2 = 1, DTR0# to package pin
* PIN 3 = 1, DSR0# to package pin
* PIN 4 = 1, RI0# to package pin
* PIN 5 = 0, Outport (FLASH Vpp Enable, 0=Enable 1=Disable)
* PIN 6 = 0, Outport (P16_HOLD to 386ex option header JP7 pin 5)
* PIN 7 = 0, Outport (P17_HOLD to 386ex option header JP7 pin 3)
*/
SYM(InitPort1):
SetExRegByte( P1LTC , 0xff )
SetExRegByte( P1DIR , 0x0 )
SetExRegByte( P1CFG , 0x1f)
/*
* Initialize I/O port 2 for:
* PIN 0 = 0, Outport (P20_CS0# to 386ex option header JP7 pin 11)
* PIN 1 = 0, Outport (P21_CS1# to 386ex option header JP7 pin 9)
* PIN 2 = 1, CS2# (SMRAM) If not using CS2 can be configured as.?
* PIN 3 = 0, Outport ( no connect )
* PIN 4 = 1, CS#4 (DRAM)
* PIN 5 = 1, RXD0 input. See not for I/0 port 1 pins 1-4
* PIN 6 = 1, TXD0 output.
* PIN 7 = 1, CTS0# input.
*/
SYM(InitPort2):
SetExRegByte( P2LTC , 0xff )
SetExRegByte( P2DIR , 0x0 )
SetExRegByte( P2CFG , 0xfe)
/*
* Initialize I/O port 3 P3CFG
* PIN 0 = 1, TMROUT0 to package pin
* PIN 1 = 0, (TMROUT1 to 386ex option header JP7 pin 23)
* PIN 2 = 0, INT0 (IR1) disabled, (P3.2 out to JP7 pin 21)
* PIN 3 = 0, INT1 (IR5) disbled (P3.3 to option header JP7 pin 19)
* PIN 4 = 0, INT2 (IR6) disbled (P3.4 to option header JP7 pin 17)
* PIN 5 = 0, INT2 (IR7) disabled (P3.5 to 386ex header JP7 pin 15)
* PIN 6 = 0, Inport (Debugger Break P3.6/PWRD to package pin )
* P3.6 selected
* PIN 7 = 0, COMCLK output disabled, 1.8432 Mhz OSC1 oscillator.
* ( Debbugger uses COMCLK as the clocking source )
* P3.7 connected to package pin.
*/
SYM(InitPort3):
SetExRegByte( P3LTC , 0xff )
SetExRegByte( P3DIR , 0x41 )
SetExRegByte( P3CFG , 0x09 ) # can check TMROUT0
/*
* Initialize Peripheral Pin Configurations:
* PIN 0 = 1, RTS1# to package pin
* PIN 1 = 1, DTR1# to package pin
* PIN 2 = 1, TXD1 out to package pin
* PIN 3 = 0, EOP#/TC
* PIN 4 = 0, DACK0#
* PIN 5 = 1, Timer2
* PIN 6 = 0, 0 => CS6# connected to package pin
* PIN 7 = 0, Don't care
*/
SYM(InitPeriph):
SetExRegByte( PINCFG , 0x24)
/*
* Initialize the Asynchronous Serial Ports:
* BIT 7 = 1, Internal SIO1 modem signals
* BIT 6 = 1, Internal SIO0 modem signals
* BIT 2 = 0, PSCLK for SSIO clock
* BIT 1 = 1, SERCLK for SIO1 clock
* BIT 0 = 1, SERCLK for SIO0 clock
*/
SYM(InitSIO):
SetExRegByte( SIOCFG, 0xC3 ) # SIOn clocked internally
SetExRegByte( LCR0, 0x80 ) # latch DLL0, DLH0
SetExRegByte( DLL0, 0x51 ) # 0x51 sets to 9600 baud, 0x28=19.2k, 0x7 -> 115.2k
SetExRegByte( DLH0, 0x00 ) # 0x145 is 2400 baud
SetExRegByte( LCR0, 0x03 ) # enable r/w buffers, IER0 accessible
# mode 8-n-1
SetExRegByte( IER0, 0x00 ) # was 0x0f All interrupts detected
SetExRegByte( LCR1, 0x80 ) # latch DLL0, DLH0
SetExRegByte( DLL1, 0x51 ) # 0x51 set to 9600 baud, 0x7 = 115200
SetExRegByte( DLH1, 0x00 ) # 0x145 is 2400 baud
SetExRegByte( LCR1, 0x03 ) # enable r/w buffers, IER1 accessible
# reg 8-n-1
SetExRegByte( IER1, 0x00 ) # was 0x0f - All interrupts detected
SYM(InitMCR):
/*
* Initialize Timer for:
* BIT 7 = 1, Timer clocks disabled
* BIT 6 = 0, Reserved
* BIT 5 = 1, TMRCLK2 instead of Vcc to Gate2
* BIT 4 = 0, PSCLK to CLK2
* BIT 3 = 1, TMRCLK1 instead of Vcc to Gate1
* BIT 2 = 0, PSCLK to Gate1
* BIT 1 = 0, Vcc to Gate0
* BIT 0 = 0, PSCLK to Gate0
*/
SYM(InitTimer):
SetExRegByte(TMRCFG , 0x80 ) # All counters disabled, Gates 0,1
# and 2 are set to Vcc
SetExRegByte(TMRCON , 0x34 ) # prepare to write counter 0 LSB,MSB
SetExRegByte(TMR0 , 0x00 ) # sfa
SetExRegByte(TMR0 , 0x00 ) # sfa
SetExRegByte(TMRCON , 0x70 ) # mode 0 disables on Gate= Vcc
SetExRegByte(TMR1 , 0x00 ) # sfa
SetExRegByte(TMR1 , 0x00 ) # sfa
SetExRegByte(TMRCON , 0xB0 ) # mode 0 disables on gate =Vcc
SetExRegByte(TMR2 , 0x00 ) #
SetExRegByte(TMR2 , 0x00 ) #
SetExRegByte(TMRCFG , 0x80 ) # Enable = 0x00
/*
* Initialize the DMACFG register for:
* BIT 7 = 1 , Disable DACK#1
* BITs 6:4 = 100, TMROUT2 connected to DRQ1
* BIT 3 = 1 , Disable DACK0#
* BIT 2:0 = 000, Pin is connected to DRQ0
*/
SetExRegByte(DMACFG , 0xC0 )
SetExRegByte(DMACMD1, 0x00 ) # disable both DMA channels
SetExRegByte(DMAMOD1, 0x40 )
/*
* Initialize the INTCFG register for:
* BIT 7 = 0, 8259 cascade disabled
* BIT 3 = 0, SLAVE IR6 connected to Vss
* BIT 2 = 0, SLAVE IR5 connected to Vss
* BIT 1 = 0, SLAVE IR1 connected to SSIOINT
* BIT 0 = 0, SLAVE IR0 connected to Vss
*/
SYM(InitInt):
cli # !
/* SetExRegByte(OCW3S, 0x20) # address the Slave status port
movw $OCW3S , dx
inb dx , al # Read the IRR.
SetExRegByte(OCW3M, 0x20) # address the Master status port
movw $OCW3M , dx
inb dx , al # Read the IRR.
*/
SetExRegByte(ICW1S , 0x11 ) # EDGE TRIGGERED
SetExRegByte(ICW2S , 0x28 ) # Slave base vector after Master
SetExRegByte(ICW3S , 0x02 ) # slave cascaded to IR2 on master
SetExRegByte(ICW4S , 0x01 ) # must be 0x01
SetExRegByte(ICW1M , 0x11 ) # edge triggered
SetExRegByte(ICW2M , 0x20 ) # base vector starts at byte 32
SetExRegByte(ICW3M , 0x04) # IR2 is cascaded internally
SetExRegByte(ICW4M , 0x01 ) # fully nested mode
SetExRegByte(OCW1M , 0xde ) # IR0 only = 0xfe.
# for IR5 and IR0 active use 0xde
# for IR0 and IR2 use 0xfa
SetExRegByte(INTCFG , 0x00 )
SYM(SetCS4):
SetExRegWord(CS4ADL , 0x702) #Configure chip select 4
SetExRegWord(CS4ADH , 0x00)
SetExRegWord(CS4MSKH, 0x03F)
SetExRegWord(CS4MSKL, 0xFC01)
SYM(SetUCS1):
SetExRegWord(UCSADL , 0x0304) # 512K block starting at 0x80000 until 0x3f80000
SetExRegWord(UCSADH , 0x03F8)
SetExRegWord(UCSMSKH, 0x03F7)
SetExRegWord(UCSMSKL, 0xFC01) # configure upper chip select
/******************************************************
* The GDT must be in RAM since it must be writeable,
* So, move the whole data section down.
********************************************************/
movw $ _ram_data_offset , di
movw $ _ram_data_segment, cx
mov cx , es
movw $ _data_size , cx
movw $ _rom_data_segment, ax
movw $ _rom_data_offset , si
mov ax , ds
repne
movsb
/*****************************
* Load the Global Descriptor
* Table Register
****************************/
#ifdef NEW_GAS
data32 addr32 lgdt SYM(GDTR) # location of GDT
#else
lgdt SYM(GDTR) # location of GDT
#endif
SYM(SetUCS):
SetExRegWord(UCSADL, 0x0702) # now 512K starting at 0x3f80000.
SetExRegWord(UCSADH, 0x03f8)
SetExRegWord(UCSMSKH, 0x0007)
SetExRegWord(UCSMSKL, 0xFC01) # configure upper chip select
/*
* SRAM chip select: 16 bit bus size,starting 16Mb, size 512k,
* 4 waits
*/
#ifdef UT_I386EX
SYM(SetCS1):
SetExRegWord(CS1ADL, 0x0000)
SetExRegWord(CS1ADH, 0x000E)
SetExRegWord(CS1MSKH, 0x0000)
SetExRegWord(CS1MSKL, 0x0001)
SYM(SetCS2):
SetExRegWord(CS2ADL, 0x0704)
SetExRegWord(CS2ADH, 0x0100)
SetExRegWord(CS2MSKH, 0x0003)
SetExRegWord(CS2MSKL, 0xfc01)
/*
* Real-time clock: 8 bit bus size, starting@16Mb+512K, size 32k
* 4 waits
*/
SYM(SetCS3):
SetExRegWord(CS3ADL, 0x0504)
SetExRegWord(CS3ADH, 0x0108)
SetExRegWord(CS3MSKH, 0x0000)
SetExRegWord(CS3MSKL, 0x7c01)
#endif
/***************************
* Switch to Protected Mode
***************************/
mov cr0, eax
orw $0x1, ax
mov eax, cr0
/**************************
* Flush prefetch queue,
* and load CS selector
*********************/
ljmpl $ GDT_CODE_PTR , $ SYM(_load_segment_registers) # sets the code selector
/*
* Load the segment registers
*/
SYM(_load_segment_registers):
.code32
pLOAD_SEGMENT( GDT_DATA_PTR, fs)
pLOAD_SEGMENT( GDT_DATA_PTR, gs)
pLOAD_SEGMENT( GDT_DATA_PTR, ss)
pLOAD_SEGMENT( GDT_DATA_PTR, ds)
pLOAD_SEGMENT( GDT_DATA_PTR, es)
/*
* Set up the stack
*/
SYM(lidtr):
lidt SYM(IDTR)
SYM (_establish_stack):
movl $end, eax # stack starts right after bss
movl $stack_origin, esp # this is the high starting address
movl $stack_origin, ebp
/*
* Zero out the BSS segment
*/
SYM (zero_bss):
cld # make direction flag count up
movl $ SYM (end),ecx # find end of .bss
movl $ SYM (_bss_start),edi # edi = beginning of .bss
subl edi,ecx # ecx = size of .bss in bytes
shrl ecx # size of .bss in longs
shrl ecx
xorl eax,eax # value to clear out memory
repne # while ecx != 0
stosl # clear a long in the bss
/*
* Transfer control to User's Board Support Package
*/
pushl $0 # command line
movw $0xFFFB, SYM(i8259s_cache) # ICU mask values reflect
# initial ICU state
call SYM(boot_card)
addl $12,esp
cli # stops interrupts from being processed after hlt!
hlt # shutdown
END

View File

@@ -1,17 +0,0 @@
#
# $Id$
#
The requirements for this BSP are only that the GAS used supports the
.code16 directive. The GAS released with any GCC version 2.8.0 or better
is required. The BSP was built with an egcs snapshot pre-1.0.2 and
post-1.0.1. However, any egcs should work.
The only "real" differences are in bspstart.c, where the initialization now
configures all available RAM, (after setting up the Workspaces) as heap.
The location of the stack was changed so that the heap was not trapped
between low memory and the stack; the stack comes before the heap.

View File

@@ -1,39 +0,0 @@
/*
* This routine starts the application. It includes application,
* board, and monitor specific initialization and configuration.
* The generic CPU dependent initialization has been performed
* before this routine is invoked.
*
* COPYRIGHT (c) 1989-1999.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
* http://www.rtems.com/license/LICENSE.
*
* Ported to the i386ex and submitted by:
*
* Erik Ivanenko
* University of Toronto
* erik.ivanenko@utoronto.ca
*
* $Id$
*/
#include <bsp.h>
#include <bsp/irq.h>
extern void rtems_irq_mngt_init(void);
/*
* bsp_start
*
* This routine does the bulk of the system initialization.
*/
void bsp_start( void )
{
/*
* Init rtems_interrupt_management
*/
rtems_irq_mngt_init();
}

View File

@@ -1,210 +0,0 @@
/*
* This file contains directives for the GNU linker which are specific
* to the Intel 386ex evaluation board.
*
* 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$
*
* Memory layout:
*
* 0x3f80000 -> 0x3ff0000 : text section
* 0x3ff0000 -> 0x3ff0028 : global descriptor table in ROM
* 0x3ff0028 -> 0x3fff000 : data section ( copied by start.s to RAM )
* 0x3fff000 -> 0x3fffff0 : initial section ( init 386ex, goto protected mode, copy ROM-RAM )
* 0x3fffff0 -> 0x4000000 : reset section ( jmp to initial only )
*/
ENTRY(reset) ;
SECTIONS
{
/****************************************************************************************
* data section:
*
* This section defines the locations of the data section in ROM as well as in RAM.
* start.s copies the data section to RAM in real mode. This is done PRIOR to the lgdt
* instruction since the data section contains the Global_descriptor_table and GDTR.
***********************************************************************************/
_rom_data_start = 0x3ff0000;
_rom_data_segment = 0xF000;
_rom_data_offset = 0x0;
_ram_data_segment = 0x0000 ;
_ram_data_offset = 0x0;
_ram_data_location = _ram_data_segment * 16 + _ram_data_offset;
RamBase = DEFINED(RamBase) ? RamBase : _ram_data_location;
RamSize = DEFINED(RamSize) ? RamSize : 1M;
HeapSize = DEFINED(HeapSize) ? HeapSize : 0x0;
.init : { _init = .; *(.init) } = 0x9090
.fini : { _fini = .; *(.fini) } = 0x9090
.data :
AT ( _rom_data_start )
{
_sdata = .;
*(.data*);
*(.gnu.linkonce.d*)
*(.gcc_except_table*)
_edata = .;
}
_data_start = ADDR(.data) ;
data_start = _data_start ;
_data_size = _edata - _sdata ;
/**************************************************************************************
* bss section:
*
* The bss section is the last section in RAM.
*************************************************************************************/
_edata = ALIGN( 0x10 );
.bss :
{
_bss_start = .;
*(.bss);
*(COMMON);
_ebss = ALIGN(0x10);
end = _ebss;
_end = end;
__end = end;
}
_bss_size = _ebss - _bss_start ;
. = ALIGN(0x10);
WorkAreaBase = .;
/**************************************************************************************
* General variables:
*
* The stack_size variable is customizable here. The heap is located directly after
* The stack in RAM. A routine within bspstart.c uses these variables to ensure that
* the heap used by RTEMS is as large as the RAM remaining after all workspace configurations
* are complete.
*************************************************************************************/
stack_size = 0x8000 ;
stack_origin = end + stack_size ;
heap_bottom = stack_origin + 4 ;
/***************************************************************************************
* text section:
*
* This section is NOT copied into RAM. It is left in ROM, as the flash ROM is quick enough.
***************************************************************************************/
.text ( 0x3f80000 ):
{
CREATE_OBJECT_SYMBOLS
text_start = . ;
_text_start = . ;
*(.text ) ;
/*
* Special FreeBSD sysctl sections.
*/
. = ALIGN (16);
__start_set_sysctl_set = .;
*(set_sysctl_*);
__stop_set_sysctl_set = ABSOLUTE(.);
*(set_domain_*);
*(set_pseudo_*);
*(.eh_fram)
. = ALIGN (16);
/*
* C++ constructors
*/
__CTOR_LIST__ = .;
LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2)
*(.ctors)
LONG(0)
__CTOR_END__ = .;
. = ALIGN (4) ;
__DTOR_LIST__ = .;
LONG((__DTOR_END__ - __DTOR_LIST__) / 4 - 2)
*(.dtors)
LONG(0)
__DTOR_END__ = .;
_rodata_start = . ;
*(.rodata*)
*(.eh_frame)
*(.gnu.linkonce.r*)
_erodata = ALIGN( 0x10 ) ;
_etext = ALIGN( 0x10 );
_endtext = . ;
}
/*******************************************************************************************
* initial section:
*
* This section is defined after the data section. It must be in the top 64K of memory
* to enable the initial short jmp from the reset section while still in real-mode. It
* initializes the i386ex, moves the gdt from ROM to RAM,loads the gdt,
* jumps to protected mode, copies the data section from ROM to RAM and loads the idt.
******************************************************************************************/
.initial _rom_data_start + _data_size :
{
*(.initial);
}
/*******************************************************************************************
* board reset section:
*
* This section contains the short jmp from the reset section to the initial section. It is
* the first code executed on reset/power on.
******************************************************************************************/
.reset 0x3fffff0:
{
*(.reset);
}
/* 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 . */
}

View File

@@ -1,129 +0,0 @@
/*
* 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 <rtems.h>
#include <bsp.h>
#include <rtems/btimer.h>
#include <stdlib.h>
int Ttimer_val;
bool benchmark_timer_find_average_overhead;
extern void timerisr(void);
extern int ClockIsOn(const rtems_raw_irq_connect_data*);
#define TMR0 0xF040
#define TMR1 0xF041
#define TMR2 0xF042
#define TMRCON 0xF043
#define TMRCFG 0xF834
void TimerOn(const rtems_raw_irq_connect_data* used)
{
Ttimer_val = 0; /* clear timer ISR count */
outport_byte ( TMRCON , 0xb0 ); /* select tmr2, stay in mode 0 */
outport_byte ( TMR1 , 0xfa ); /* set to 250 usec interval */
outport_byte ( TMR1 , 0x00 );
outport_byte ( TMRCON , 0x64 ); /* change to mode 2 ( starts timer ) */
/* interrupts ARE enabled */
/* outport_byte( IERA, 0x41 ); enable interrupt */
/*
* enable interrrupt at i8259 level
*/
BSP_irq_enable_at_i8259s(used->idtIndex - BSP_IRQ_VECTOR_BASE);
}
void TimerOff(const rtems_raw_irq_connect_data* used)
{
/*
* disable interrrupt at i8259 level
*/
BSP_irq_disable_at_i8259s(used->idtIndex - BSP_IRQ_VECTOR_BASE);
/* reset timer mode to standard (DOS) value */
}
static rtems_raw_irq_connect_data timer_raw_irq_data = {
BSP_RT_TIMER3 + BSP_IRQ_VECTOR_BASE,
timerisr,
TimerOn,
TimerOff,
ClockIsOn
};
void Timer_exit(void)
{
if (!i386_delete_idt_entry(&timer_raw_irq_data)) {
printk("Timer_exit:Timer raw handler removal failed\n");
rtems_fatal_error_occurred(1);
}
}
void benchmark_timer_initialize(void)
{
static bool First = true;
if (First)
{
First = false;
atexit(Timer_exit); /* Try not to hose the system at exit. */
if (!i386_set_idt_entry (&timer_raw_irq_data)) {
printk("benchmark_timer_initialize: raw handler installation failed\n");
rtems_fatal_error_occurred(1);
}
}
/* wait for ISR to be called at least once */
Ttimer_val = 0;
while (Ttimer_val == 0)
continue;
Ttimer_val = 0;
}
#define AVG_OVERHEAD 3 /* It typically takes 3.0 microseconds */
/* (3 ticks) to start/stop the timer. */
#define LEAST_VALID 4 /* Don't trust a value lower than this */
uint32_t benchmark_timer_read(void)
{
register uint32_t clicks;
register uint32_t total;
/* outport_byte( TBCR, 0x00 ); stop the timer -- not needed on intel */
outport_byte ( TMRCON, 0x40 ); /* latch the count */
inport_byte ( TMR1, clicks ); /* read the count */
total = Ttimer_val + 250 - clicks;
/* outport_byte( TBCR, 0x00 ); initial value */
/* outport_byte( IERA, 0x40 ); disable interrupt */
/* ??? Is "do not restore old vector" causing problems? */
if ( benchmark_timer_find_average_overhead == true )
return total; /* in one microsecond units */
else {
if ( total < LEAST_VALID )
return 0; /* below timer resolution */
return (total - AVG_OVERHEAD);
}
}
void benchmark_timer_disable_subtracting_average_overhead(
bool find_flag
)
{
benchmark_timer_find_average_overhead = find_flag;
}

View File

@@ -1,39 +0,0 @@
/* timer_isr()
*
* This routine provides the ISR for the Z8036 timer on the MVME136
* board. The timer is set up to generate an interrupt at maximum
* intervals.
*
* Input parameters: NONE
*
* Output parameters: NONE
*
* COPYRIGHT (c) 1989-1999.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
* http://www.rtems.com/license/LICENSE.
*
* $Id$
*/
#include <rtems/asm.h>
BEGIN_CODE
EXTERN (Ttimer_val)
PUBLIC (timerisr)
SYM (timerisr):
addl $250, SYM (Ttimer_val) # another 250 microseconds
pushl eax
movb 0xa0,al /* signal generic End Of Interrupt (EOI) to slave PIC */
outb al, $0x20
movb $0x20, al
outb al, $0x20 /* signal generic EOI to Master PIC */
popl eax
iret
END_CODE
END

View File

@@ -1,8 +0,0 @@
aclocal.m4
autom4te*.cache
config.cache
config.log
config.status
configure
Makefile
Makefile.in

View File

@@ -1,720 +0,0 @@
2011-02-11 Ralf Corsépius <ralf.corsepius@rtems.org>
* include/bsp.h, include/tm27.h, tools/debug_c/serial_gdb.h:
Use "__asm__" instead of "asm" for improved c99-compliance.
2011-02-09 Ralf Corsépius <ralf.corsepius@rtems.org>
* timer/timer.c: Include <rtems/btimer.h>.
Fix benchmark_timer_read() definition.
2011-02-02 Ralf Corsépius <ralf.corsepius@rtems.org>
* configure.ac: Require autoconf-2.68, automake-1.11.1.
2011-01-28 Joel Sherrill <joel.sherrilL@OARcorp.com>
* clock/rtc.c, console/console.c, network/ne2000.c: Fix typo where
license said found in found in.
2010-05-21 Joel Sherrill <joel.sherrill@oarcorp.com>
* Makefile.am: Add bspreset.c
2010-04-30 Sebastian Huber <sebastian.huber@embedded-brains.de>
* Makefile.am, preinstall.am: Update for generic interrupt support
changes.
2009-11-06 Ralf Corsépius <ralf.corsepius@rtems.org>
* clock/ckinit.c: Remove nested externs.
Add missing prototypes.
Fix Clock_isr prototype.
2009-10-21 Ralf Corsépius <ralf.corsepius@rtems.org>
* make/custom/ts_386ex.cfg: Remove RTEMS_BSP_FAMILY.
2009-10-20 Ralf Corsépius <ralf.corsepius@rtems.org>
* configure.ac: Don't add -ansi -fasm to CFLAGS.
2009-10-15 Ralf Corsépius <ralf.corsepius@rtems.org>
* make/custom/ts_386ex.cfg: New (relocated from /make/custom).
2009-09-30 Ralf Corsépius <ralf.corsepius@rtems.org>
* console/console.c: Reflect termios_baud_to_number having been
renamed to rtems_termios_baud_to_number.
2009-09-15 Ralf Corsépius <ralf.corsepius@rtems.org>
* configure.ac: Remove RTEMS_BSP_BOOTCARD_OPTIONS.
2009-08-06 Joel Sherrill <joel.sherrill@oarcorp.com>
* startup/setvec.c: Removed.
2009-08-06 Joel Sherrill <joel.sherrill@oarcorp.com>
* include/tm27.h: Remove references to rtems_interrupt_catch since this
archiecture does not use Simple Vectored Interrupt model.
2009-07-16 Joel Sherrill <joel.sherrill@oarcorp.com>
* configure.ac: Rename BSP_BOOTCARD_OPTIONS to
RTEMS_BSP_BOOTCARD_OPTIONS. Add RTEMS_BSP_CLEANUP_OPTIONS so all BSPs
have the same options.
2009-07-01 Sebastian Huber <sebastian.huber@embedded-brains.de>
* Makefile.am, preinstall.am: Update for generic interrupt support.
2009-04-28 Chris Johns <chrisj@rtems.org>
* start/start.S: Update for boot_card command line change.
2008-12-04 Joel Sherrill <joel.sherrill@oarcorp.com>
* bsp_specs: Move -e start from *link to *startfile to avoid warning
for undefined entry symbol when linking relocatables with binutils
2.19.
2008-09-30 Joel Sherrill <joel.sherrill@oarcorp.com>
* timer/timer.c: Eliminate uses of old benchmark timer names.
2008-09-30 Ralf Corsépius <ralf.corsepius@rtems.org>
* Makefile.am: Eliminate bsp.am. Build startup files as side-effect
of building libbspstart.a, using automake-rules.
2008-09-29 Ralf Corsépius <ralf.corsepius@rtems.org>
* Makefile.am: Eliminate *_SOURCES.
2008-09-29 Ralf Corsépius <ralf.corsepius@rtems.org>
* Makefile.am: Move noinst_LIBRARIES = libbsp.a before its
components.
2008-09-26 Ralf Corsépius <ralf.corsepius@rtems.org>
* Makefile.am: Cleanup ../../shared/include/bootcard.h handling.
2008-09-23 Joel Sherrill <joel.sherrill@oarcorp.com>
* configure.ac: Make letting boot_card() handle work area allocation
mandatory. Rename RTEMS_BSP_BOOTCARD_HANDLES_RAM_ALLOCATION to
BSP_BOOTCARD_OPTIONS.
2008-09-18 Joel Sherrill <joel.sherrill@oarcorp.com>
* Makefile.am, configure.ac, startup/bspstart.c, startup/linkcmds: Use
top level shared bsp_get_work_area() implementation.
2008-09-18 Joel Sherrill <joel.sherrill@oarcorp.com>
* include/bsp.h: Remove unnecessary variables and EXTERN magic.
2008-09-18 Joel Sherrill <joel.sherrill@oarcorp.com>
* include/bsp.h: Remove unnecessary boilerplate comments.
2008-09-16 Joel Sherrill <joel.sherrill@oarcorp.com>
* clock/ckinit.c, startup/bspstart.c: Remove unnecessary includes of
rtems/libcsupport.h and rtems/libio.h.
2008-09-05 Joel Sherrill <joel.sherrill@OARcorp.com>
* clock/ckinit.c: The Shared Memory Driver no longer requires the
special IOCTL in Clock_control. This was a hack which has existed
since before the Classic API Timer Manager was implemented. All
implementations of and references to Clock_control were removed.
2008-09-05 Ralf Corsépius <ralf.corsepius@rtems.org>
* timer/timer.c: Convert to "bool".
2008-09-02 Ralf Corsépius <ralf.corsepius@rtems.org>
* clock/rtc.c, network/ne2000.c: Eliminate rtems_boolean.
2008-08-31 Joel Sherrill <joel.sherrill@oarcorp.com>
* timer/timer.c: Eliminate empty function from every benchmark timer
driver. Fix spelling.
2008-08-31 Joel Sherrill <joel.sherrill@oarcorp.com>
* timer/timer.c: Rename timer driver methods to follow RTEMS
programming conventions.
2008-08-18 Ralf Corsépius <ralf.corsepius@rtems.org>
* clock/ckinit.c, startup/bspstart.c, timer/timer.c:
Add missing prototypes.
2008-05-23 Joel Sherrill <joel.sherrill@OARcorp.com>
* console/console.c: Eliminate copies of switches to convert termios
Bxxx constants to xxx as an integer. Use the shared
termios_baud_to_number() routine to do the same conversion.
2008-05-15 Joel Sherrill <joel.sherrill@OARcorp.com>
* startup/bspstart.c: Add capability for bootcard.c BSP Initialization
Framework to ask the BSP where it has memory for the RTEMS Workspace
and C Program Heap. These collectively are referred to as work area.
If the BSP supports this, then it does not have to include code to
split the available memory between the two areas. This reduces the
amount of code in the BSP specific bspstart.c file. Additionally, the
shared framework can initialize the C Library, call
rtems_debug_enable(), and dirty the work area memory. Until most/all
BSPs support this new capability, if the BSP supports this, it should
call RTEMS_BSP_BOOTCARD_HANDLES_RAM_ALLOCATION from its configure.ac.
When the transition is complete, this autoconf macro can be removed.
2008-05-14 Joel Sherrill <joel.sherrill@OARcorp.com>
* Makefile.am: Rework to avoid .rel files.
2008-05-12 Joel Sherrill <joel.sherrill@OARcorp.com>
* startup/bspstart.c: Refactored and renamed initialization routines to
rtems_initialize_data_structures, rtems_initialize_before_drivers,
rtems_initialize_device_drivers, and
rtems_initialize_start_multitasking. This opened the sequence up so
that bootcard() could provide a more robust and flexible framework
which is easier to explain and understand. This also lays the
groundwork for sharing the division of available memory between the
RTEMS workspace and heap and the C library initialization across all
BSPs.
2008-05-07 Joel Sherrill <joel.sherrill@OARcorp.com>
PR 649/bsps
* clock/ckinit.c, console/console.c: Add missing structure element.
2008-03-03 Joel Sherrill <joel.sherrill@OARcorp.com>
* startup/linkcmds: Add wildcard to gcc_except_table section so
programs compiled with gcc 4.3.x can link.
2007-12-11 Joel Sherrill <joel.sherrill@OARcorp.com>
* clock/ckinit.c, include/bsp.h, startup/bspstart.c: Eliminate copies
of the Configuration Table. Use the RTEMS provided accessor macros to
obtain configuration fields.
2007-12-04 Joel Sherrill <joel.sherrill@OARcorp.com>
* include/bsp.h, startup/bspstart.c: Move interrupt_stack_size field
from CPU Table to Configuration Table. Eliminate CPU Table from all
ports. Delete references to CPU Table in all forms.
2007-12-03 Joel Sherrill <joel.sherrill@OARcorp.com>
* Makefile.am, startup/bspstart.c: Moved most of the remaining CPU
Table fields to the Configuration Table. This included
pretasking_hook, predriver_hook, postdriver_hook, idle_task,
do_zero_of_workspace, extra_mpci_receive_server_stack,
stack_allocate_hook, and stack_free_hook. As a side-effect of this
effort some multiprocessing code was made conditional and some style
clean up occurred.
2007-11-26 Joel Sherrill <joel.sherrill@oarcorp.com>
* startup/bspstart.c: Eliminate the interrupt_table_segment and
interrupt_table_offset fields in the i386 CPU Table since they are
never read.
2007-05-28 Joel Sherrill <joel.sherrill@OARcorp.com>
* startup/bspstart.c: Eliminate maximum_drivers configuration parameter
since it was used to configure a no longer used feature. Device names
are now part of the filesystem not in a table.
2007-04-12 Ralf Corsépius <ralf.corsepius@rtems.org>
* bsp_specs: Remove qrtems_debug.
2006-12-15 Ralf Corsépius <ralf.corsepius@rtems.org>
* network/ne2000.c: Use ioctl_command_t as arg in ioctl-functions.
2006-12-02 Ralf Corsépius <ralf.corsepius@rtems.org>
* configure.ac: New BUG-REPORT address.
2006-11-15 Joel Sherrill <joel@OARcorp.com>
* Makefile.am: Merge c_rtems_main() into boot_card(). This eliminated a
file and simplified initialization.
2006-10-17 Ralf Corsépius <ralf.corsepius@rtems.org>
* Makefile.am: Remove superfluous -DASM.
2006-10-17 Ralf Corsépius <ralf.corsepius@rtems.org>
* configure.ac: Require autoconf-2.60. Require automake-1.10.
2006-01-11 Ralf Corsepius <ralf.corsepius@rtems.org>
* configure.ac: Remove explicit ampolish3 support (now in
RTEMS_BSP_CONFIGURE).
2006-01-10 Ralf Corsepius <ralf.corsepius@rtems.org>
* configure.ac: Add ampolish3 support.
* Makefile.am: Add preinstall.am.
2005-10-17 Ralf Corsepius <ralf.corsepius@rtems.org>
* Makefile.am: Add pci.rel.
2005-10-17 Ralf Corsepius <ralf.corsepius@rtems.org>
* Makefile.am: Install/preinstall headers from ../../i386/shared.
2005-09-19 Ralf Corsepius <ralf.corsepius@rtems.org>
* network/ne2000.c: Include <errno.h> instead of <sys/errno.h>.
2005-05-26 Ralf Corsepius <ralf.corsepius@rtems.org>
* include/bsp.h: New header guard.
2005-05-06 Jennifer Averett <jennifer.averett@oarcorp.com>
* clock/ckinit.c, console/console.c, include/bsp.h, network/ne2000.c:
Moved irq.h to bsp subdirectory.
2005-01-07 Ralf Corsepius <ralf.corsepius@rtems.org>
* Makefile.am: Eliminate CFLAGS_OPTIMIZE_V.
2005-01-02 Ralf Corsepius <ralf.corsepius@rtems.org>
* Makefile.am: Remove build-variant support.
2004-09-24 Ralf Corsepius <ralf.corsepius@rtems.org>
* configure.ac: Require automake > 1.9.
2004-07-25 Joel Sherrill <joel@OARcorp.com>
* Makefile.am: Add -D__INSIDE_RTEMS_BSD_TCPIP_STACK__ for network.
* network/ne2000.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>.
* timer/timerisr.S: Include <rtems/asm.h> instead of <asm.h>.
2004-04-01 Ralf Corsepius <ralf.corsepius@rtems.org>
* include/bsp.h: Include <rtems/clockdrv.h> instead of <clockdrv.h>.
* include/bsp.h: Include <rtems/console.h> instead of <console.h>.
* include/bsp.h: Include <rtems/iosupp.h> instead of <iosupp.h>.
2004-03-31 Ralf Corsepius <ralf.corsepius@rtems.org>
* clock/ckinit.c, clock/rtc.c, include/bsp.h, startup/bspstart.c,
timer/timer.c: Convert to using c99 fixed size types.
2004-02-19 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* Makefile.am: Reflect changes to bsp.am.
Preinstall dist_project_lib*.
2004-02-14 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* Makefile.am: Reflect changes to bsp.am.
2004-02-12 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* Makefile.am: Use CPPASCOMPILE instead of CCASCOMPILE.
2004-02-06 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* Makefile.am: Pickup files from ../../i386/shared instead of
../shared. Reformat.
2004-01-30 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* Makefile.am: Merge-in clock/Makefile.am, console/Makefile.am,
network/Makefile.am, startup/Makefile.am, timer/Makefile.am,
wrapup/Makefile.am. Use automake compilation rules.
* clock/Makefile.am, console/Makefile.am, network/Makefile.am,
startup/Makefile.am, timer/Makefile.am, wrapup/Makefile.am: Remove.
* configure.ac: Reflect changes above.
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.
* wrapup/Makefile.am: Reflect changes to libcpu.
2004-01-14 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* Makefile.am: Re-add dirstamps to PRE/TMPINSTALL_FILES.
Add PRE/TMPINSTALL_FILES to CLEANFILES.
* startup/Makefile.am: Ditto.
2004-01-07 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* start/Makefile.am: Remove.
* Makefile.am: Merge-in start/Makefile.am.
* configure.ac: Reflect changes above.
2004-01-05 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* wrapup/Makefile.am: Eliminate $(LIB).
Use noinst_DATA to trigger building libbsp.a.
2003-12-13 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* start/Makefile.am: s,${PROJECT_RELEASE}/lib,$(PROJECT_LIB),g.
* startup/Makefile.am: s,${PROJECT_RELEASE}/lib,$(PROJECT_LIB),g.
2003-12-12 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* start/Makefile.am: Use mkdir_p. Remove dirs from PRE/TMPINSTALL_FILES.
* startup/Makefile.am: Use mkdir_p. Remove dirs from PRE/TMPINSTALL_FILES.
2003-12-12 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* configure.ac: Require automake >= 1.8, autoconf >= 2.59.
2003-12-12 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* wrapup/Makefile.am: Cosmetics.
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-02 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* Makefile.am: Add preinstallation dirstamp support.
* clock/Makefile.am: Cosmetics.
* console/Makefile.am: Cosmetics.
* network/Makefile.am: Cosmetics.
* startup/Makefile.am: Cosmetics.
* timer/Makefile.am: Cosmetics.
* wrapup/Makefile.am: Cosmetics.
2003-12-02 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* clock/Makefile.am: Remove all-local: $(ARCH).
* console/Makefile.am: Remove all-local: $(ARCH).
* network/Makefile.am: Remove all-local: $(ARCH).
* start/Makefile.am: Remove all-local: $(ARCH).
* startup/Makefile.am: Remove all-local: $(ARCH).
* timer/Makefile.am: Remove all-local: $(ARCH).
* wrapup/Makefile.am: Remove all-local: $(ARCH).
2003-09-29 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* Makefile.am: Merge-in include/Makefile.am.
Reflect changes to bsp.am.
* include/Makefile.am: Remove.
* configure.ac: Reflect changes above.
2003-09-08 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* bsp_specs: Remove *lib:.
2003-09-04 Joel Sherrill <joel@OARcorp.com>
* clock/ckinit.c, clock/rtc.c, console/console.c, include/bsp.h,
include/coverhd.h, network/ne2000.c, start/80386ex.h,
start/80386ex.inc, start/macros.inc, start/start.S,
startup/bspstart.c, startup/linkcmds, startup/setvec.c,
timer/timer.c, timer/timerisr.S, tools/debug_ada/init.c,
tools/debug_c/init.c, tools/debug_c/serial_gdb.c,
tools/debug_c/system.h, tools/network_ada/listener/init.c,
tools/network_ada/tcprelay/init.c, tools/ts_1325_ada/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/.
* clock/Makefile.am: Reflect having moved automake/.
* console/Makefile.am: Reflect having moved automake/.
* include/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/.
* timer/Makefile.am: Reflect having moved automake/.
* wrapup/Makefile.am: Reflect having moved automake/.
2003-08-13 Joel Sherrill <joel@OARcorp.com>
PR 451/bsps
* startup/Makefile.am: Include shared i386 TTY driver in these BSPs.
2003-08-11 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
PR 452/bsps
* startup/Makefile.am: Remove USE_INIT_FINI.
2003-08-11 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* configure.ac: Use rtems-bugs@rtems.com as bug report email address.
2003-08-06 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
PR 445/bsps
* bsp_specs: Remove -D__embedded__ -Asystem(embedded) from cpp.
Remove cpp, old_cpp (now unused).
2003-03-06 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* configure.ac: Remove AC_CONFIG_AUX_DIR.
2003-02-11 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* configure.ac: AM_INIT_AUTOMAKE([1.7.2]).
2003-02-11 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* configure.ac: AC_PREREQ(2.57).
2003-01-20 Joel Sherrill <joel@OARcorp.com>
* startup/linkcmds: Add FreeBSD SYSCTL() sections for networking.
2002-12-19 Joel Sherrill <joel@OARcorp.com>
* console/console.c: Removed __assert() which conflicts with newlib.
2002-12-17 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* clock/Makefile.am: Don't include @RTEMS_BSP@.cfg.
* console/Makefile.am: Don't include @RTEMS_BSP@.cfg.
* 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.
* timer/Makefile.am: Don't include @RTEMS_BSP@.cfg.
2002-12-12 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* start/Makefile.am: Use install-data-local to install startfile.
2002-12-10 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* wrapup/Makefile.am: Don't include @RTEMS_BSP@.cfg.
2002-11-04 Joel Sherrill <joel@OARcorp.com>
* console/console.c, network/ne2000.c: Removed warnings.
2002-11-01 Joel Sherrill <joel@OARcorp.com>
* startup/bspstart.c: Removed warnings.
2002-10-21 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* .cvsignore: Reformat.
Add autom4te*cache.
Remove autom4te.cache.
2002-09-08 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* configure.ac: Remove duplicate timer/Makefile in AC_CONFIG_FILES.
2002-08-21 Joel Sherrill <joel@OARcorp.com>
* bsp_specs: Added support for -nostdlibs.
2002-08-11 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* clock/Makefile.am: Use .$(OBJEXT) instead of .o.
* console/Makefile.am: Use .$(OBJEXT) instead of .o.
* network/Makefile.am: Use .$(OBJEXT) instead of .o.
* start/Makefile.am: Use .$(OBJEXT) instead of .o.
* startup/Makefile.am: Use .$(OBJEXT) instead of .o.
* timer/Makefile.am: Use .$(OBJEXT) instead of .o.
* wrapup/Makefile.am: Use .$(OBJEXT) instead of .o.
2002-07-20 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* start/Makefile.am: Eliminate PGM.
Add bsplib_DATA = $(PROJECT_RELEASE)/lib/start$(LIB_VARIANT).o.
2002-07-19 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* startup/Makefile.am: Add bsplib_DATA = linkcmds.
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-17 Joel Sherrill <joel@OARcorp.com>
* startup/linkcmds: Per PR224, added wild card math to .rodata.
2002-03-27 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* include/bsp.h: include <libcpu/cpu.h>.
* console/console.c: Remove unused variable console_open_count.
2002-03-27 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* configure.ac:
AC_INIT(package,_RTEMS_VERSION,_RTEMS_BUGS).
AM_INIT_AUTOMAKE([no-define foreign 1.6]).
* clock/Makefile.am: Remove AUTOMAKE_OPTIONS.
* Makefile.am: Remove AUTOMAKE_OPTIONS.
* console/Makefile.am: Remove AUTOMAKE_OPTIONS.
* include/Makefile.am: Remove AUTOMAKE_OPTIONS.
* network/Makefile.am: Remove AUTOMAKE_OPTIONS.
* start/Makefile.am: Remove AUTOMAKE_OPTIONS.
* startup/Makefile.am: Remove AUTOMAKE_OPTIONS.
* timer/Makefile.am: Remove AUTOMAKE_OPTIONS.
* wrapup/Makefile.am: Remove AUTOMAKE_OPTIONS.
2002-03-16 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* configure.ac: Remove stray ';', PR 139.
2002-01-03 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* include/bsp.h: Include rtems/bspIo.h instead of bspIo.h.
2001-12-22 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* bsp_specs: Replace -lrtemsall with -lrtemsbsp -lrtemscpu,
replace -lrtemsall_g with -lrtemsbsp_g -lrtemscpu_g.
2001-11-30 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* configure.ac: Introduce RTEMS_BSP_CONFIGURE.
2001-11-14 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* configure.ac: Add RTEMS_BSPOPTS_*(LOAD_RTC_AT_START),
RTEMS_BSPOPTS_*(BSP_DEBUG), RTEMS_BSPOPTS_*(UARTDEBUG),
remove RTEMS_OUTPUT_BUILD_SUBDIRS.
2001-10-12 Joel Sherrill <joel@OARcorp.com>
* startup/linkcmds: 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 Joel Sherrill <joel@OARcorp.com>
* include/bsp.h: Renamed delay() to rtems_bsp_delay().
2001-09-27 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* include/Makefile.am: Use 'PREINSTALL_FILES ='.
2001-05-26 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* configure.in: Add bspopts.h.
* include/.cvsignore: Add bspopts.h*, stamp-h*.
* include/Makefile.am: Use *_HEADERS instead of *H_FILES.
* include/bsp.h: Include bspopts.h.
2001-05-10 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* configure.in: Use RTEMS_PROG_CC_FOR_TARGET([-ansi -fasm]).
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.
2000-10-27 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* configure.in, Makefile.am: ACLOCAL_AMFLAGS= -I $(RTEMS_TOPdir)/macros.
Switch to GNU canonicalization.
2000-10-19 Joel Sherrill <joel@OARcorp.com>
* console/console.c: Invoke BSP_uart_init() with all arguments
now that it takes more parameters.
2000-10-17 Joel Sherrill <joel@OARcorp.com>
* startup/Makefile.am: Added idt.c since it has been moved libcpu/i386
to libbsp/i386/shared/irq.
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-11 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* start/Makefile.am: Remove AM_CPPFLAGS and GAS_CODE16 conditional.
* startup/Makefile.am: Cleanup comments.
2000-09-04 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* clock/Makefile.am, console/Makefile.am, network/Makefile.am,
start/Makefile.am, startup/Makefile.am, timer/Makefile.am,
wrapup/Makefile.am: Include compile.am
2000-08-10 Joel Sherrill <joel@OARcorp.com>
* ChangeLog: New file.

View File

@@ -1,90 +0,0 @@
##
## $Id$
##
ACLOCAL_AMFLAGS = -I ../../../../aclocal
include $(top_srcdir)/../../../../automake/compile.am
include_bspdir = $(includedir)/bsp
dist_project_lib_DATA = bsp_specs
include_HEADERS = include/bsp.h
include_HEADERS += include/tm27.h
nodist_include_HEADERS = include/bspopts.h
nodist_include_bsp_HEADERS = ../../shared/include/bootcard.h
DISTCLEANFILES = include/bspopts.h
noinst_PROGRAMS =
# wrapup is the one that actually builds and installs the library
# from the individual .rel files built in other directories
SUBDIRS = . tools
include_HEADERS += include/coverhd.h
include_bsp_HEADERS = ../../i386/shared/irq/irq.h \
../../i386/shared/irq/irq_asm.h \
../../shared/include/irq-generic.h \
../../shared/include/irq-info.h
noinst_LIBRARIES = libbspstart.a
libbspstart_a_SOURCES = start/start.S start/80386ex.h \
start/80386ex.inc start/macros.inc start/ts_1325.inc
project_lib_DATA = start.$(OBJEXT)
dist_project_lib_DATA += startup/linkcmds
noinst_LIBRARIES += libbsp.a
libbsp_a_SOURCES =
include_HEADERS += ../../i386/shared/comm/uart.h
# startup
libbsp_a_SOURCES += ../../shared/bspclean.c ../../shared/bsplibc.c \
../../shared/bsppredriverhook.c ../../shared/bsppretaskinghook.c \
../../shared/bspgetworkarea.c ../../shared/bspreset.c \
../../shared/bsppost.c startup/bspstart.c ../../shared/bootcard.c \
../../shared/sbrk.c ../../i386/shared/irq/idt.c \
../../i386/shared/irq/irq.c ../../i386/shared/irq/irq_init.c \
../../i386/shared/comm/i386-stub.c \
../../i386/shared/comm/i386-stub-glue.c ../../i386/shared/comm/uart.c \
../../shared/gnatinstallhandler.c ../../i386/shared/comm/gdb_glue.c \
../../i386/shared/comm/tty_drv.c ../../i386/shared/irq/irq_asm.S \
../../shared/src/irq-generic.c \
../../shared/src/irq-legacy.c \
../../shared/src/irq-info.c \
../../shared/src/irq-shell.c
# clock
libbsp_a_SOURCES += clock/ckinit.c clock/rtc.c
# console
libbsp_a_SOURCES += console/console.c
include_HEADERS += ../../i386/shared/pci/pcibios.h
# pci
libbsp_a_SOURCES += ../../i386/shared/pci/pcibios.c \
../../i386/shared/pci/pcibios.h
# timer
libbsp_a_SOURCES += timer/timer.c timer/timerisr.S
if HAS_NETWORKING
include_HEADERS += include/wd80x3.h
# dec21140 is supported via libchip
# FIXME: Do we really need these flags?
network_CPPFLAGS = -D__INSIDE_RTEMS_BSD_TCPIP_STACK__
noinst_PROGRAMS += network.rel
network_rel_SOURCES = network/ne2000.c network/wd80x3.h
network_rel_CPPFLAGS = $(AM_CPPFLAGS) $(network_CPPFLAGS)
network_rel_LDFLAGS = $(RTEMS_RELLDFLAGS)
endif
libbsp_a_LIBADD = \
../../../libcpu/@RTEMS_CPU@/cache.rel \
../../../libcpu/@RTEMS_CPU@/score.rel
if HAS_NETWORKING
libbsp_a_LIBADD += network.rel
endif
include $(srcdir)/preinstall.am
include $(top_srcdir)/../../../../automake/local.am

View File

@@ -1,44 +0,0 @@
#
# $Id$
#
This BSP is for the Technologic Systems TS-1325, an i386EX PC/AT
compatible SBC equipped with 2 standard serial ports and a parallel
port suitable for general digital I/O. It comes with 2MB RAM and 1MB
Flash ROM. Additional information is available at the TS web site:
http://www.t-systems.com.
The BSP uses software floating-point emulation, so one must build the
cross-compilation tools with this support. The BSP also supports the
on-board RTC, and an NE2000 compatible network card. It has been used
successfully with C/C++ (egcs-1.1.2) and Ada95 (gnat-3.11p), including
networking applications.
The TS-1325 runs a version of DOS, and should be configured with a RAM
disk and Zmodem software (see WWW site). RTEMS executables are loaded
and run in DOS conventional memory, giving a 600K file-size limit. The
1MB extended memory is used for the RTEMS workspace, heap, stack and
BSS. Console output is to COM2 @ 115200 baud, 8-N-1. The high baud
rate is needed to speed up serial-line Zmodem file transfers. The
TS-1325 DOS console I/O is by default 9600 baud, and should be changed
to 115200 baud (see WWW site).
A typical development cycle involves these steps:
1. Cross-compile the application, yielding an ELF executable. Convert
this to raw binary format, using objcopy or the elf2exe script (see
the tools subdirectory in the BSP).
2. Use Zmodem to download the raw executable to the TS-1325's ram-disk
(faster than the A: flash disk). A terminal program supporting
Zmodem is needed on the host e.g. minicom under Linux.
3. Use the DOS-based RTEMS loader "loader.com" (see tools
subdirectory) to load and run the executable on the TS-1325.
Additional documentation and support software is in the tools subdirectory
of the BSP.
Happy Coding!
Tony Ambardar, 8/8/99

View File

@@ -1,13 +0,0 @@
%rename endfile old_endfile
%rename startfile old_startfile
%rename link old_link
*startfile:
%{!qrtems: %(old_startfile)} \
%{!nostdlib: %{qrtems: start.o%s crti.o%s crtbegin.o%s -e _init_i386ex}}
*link:
%{!qrtems: %(old_link)} %{qrtems: -dc -dp -N}
*endfile:
%{!qrtems: %(old_endfile)} %{qrtems: crtend.o%s crtn.o%s}

View File

@@ -1,153 +0,0 @@
/* Clock_initialize
*
* This routine initializes the Timer/Counter on the Intel
* 386ex evaluation board.
*
* The tick frequency is 1 millisecond.
*
* Input parameters: NONE
*
* Output parameters: NONE
*
* COPYRIGHT (c) 1989-1999.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
* http://www.rtems.com/license/LICENSE.
*
* $Id$
*/
#include <bsp.h>
#include <bsp/irq.h>
#include <stdlib.h>
uint32_t Clock_isrs; /* ISRs until next tick */
static uint32_t Clock_initial_isr_value;
volatile uint32_t Clock_driver_ticks;
extern void Clock_exit( void );
/* External Prototypes */
extern void init_rtc(void); /* defined in 'rtc.c' */
extern long rtc_read(rtems_time_of_day *); /* defined in 'rtc.c' */
/*
* These are set by clock driver during its init
*/
rtems_device_major_number rtems_clock_major = ~0;
rtems_device_major_number rtems_clock_minor = 0;
/*
* This is the ISR handler.
*/
void Clock_isr(rtems_irq_hdl_param unused)
{
/* enable_tracing(); */
Clock_driver_ticks += 1;
if ( Clock_isrs == 1 ) {
rtems_clock_tick();
Clock_isrs = Clock_initial_isr_value; /* rtems_configuration_get_microseconds_per_tick() / 1000;*/
}
else
Clock_isrs -= 1;
}
void ClockOff(const rtems_irq_connect_data* unused)
{
outport_byte (TIMER_CONFIG, 0x80 ); /* disable the counter timer */
}
void ClockOn(const rtems_irq_connect_data* unused)
{
outport_byte (TIMER_CONFIG, 0x00 ); /* enable the counter timer */
}
int ClockIsOn(const rtems_irq_connect_data* unused)
{
return ((i8259s_cache & 0x1) == 0);
}
static rtems_irq_connect_data clockIrqData = {BSP_PERIODIC_TIMER,
Clock_isr,
0,
ClockOn,
ClockOff,
ClockIsOn};
rtems_device_driver Clock_initialize(
rtems_device_major_number major,
rtems_device_minor_number minor,
void *pargp
)
{
unsigned timer_counter_init_value;
unsigned char clock_lsb, clock_msb;
#ifdef BSP_DEBUG
printk("Initializing clock driver in Clock_initialize().\n");
#endif
#ifdef LOAD_RTC_AT_START
/* Initialize clock from on-board real time clock. This breaks the */
/* test code which assumes which assumes the application will do it. */
{
rtems_time_of_day now;
#ifdef BSP_DEBUG
printk("Loading clock from on-board real-time clock.\n");
#endif
init_rtc();
if (rtc_read(&now) >= 0)
rtems_clock_set(&now);
}
#endif
Clock_driver_ticks = 0;
Clock_isrs =
Clock_initial_isr_value =
rtems_configuration_get_microseconds_per_tick() / 1000; /* ticks per clock_isr */
/*
* configure the counter timer ( should be based on microsecs/tick )
* NB. The divisor(Clock_isrs) resolves the is the same number that appears in confdefs.h
* when setting the microseconds_per_tick value.
*/
ClockOff ( &clockIrqData );
timer_counter_init_value = rtems_configuration_get_microseconds_per_tick() / Clock_isrs;
clock_lsb = (unsigned char)timer_counter_init_value;
clock_msb = timer_counter_init_value >> 8;
outport_byte (TIMER_MODE, TIMER_SEL0|TIMER_16BIT|TIMER_RATEGEN);
outport_byte (TIMER_CNTR0, clock_lsb ); /* load LSB first */
outport_byte (TIMER_CNTR0, clock_msb ); /* then MSB */
if (!BSP_install_rtems_irq_handler (&clockIrqData)) {
printk("Unable to initialize system clock\n");
rtems_fatal_error_occurred(1);
}
/*
* make major/minor avail to others such as shared memory driver
*/
rtems_clock_major = major;
rtems_clock_minor = minor;
return RTEMS_SUCCESSFUL;
}
void Clock_exit(void)
{
ClockOff(&clockIrqData);
BSP_remove_rtems_irq_handler (&clockIrqData);
}

View File

@@ -1,218 +0,0 @@
/*-------------------------------------------------------------------------+
| rtc.c v1.1 - PC386 BSP - 1997/08/07
+--------------------------------------------------------------------------+
| This file contains the real time clock manipulation package for the
| PC386 board.
+--------------------------------------------------------------------------+
| (C) Copyright 1997 -
| - NavIST Group - Real-Time Distributed Systems and Industrial Automation
|
| http://pandora.ist.utl.pt
|
| Instituto Superior Tecnico * Lisboa * PORTUGAL
+--------------------------------------------------------------------------+
| Disclaimer:
|
| This file is provided "AS IS" without warranty of any kind, either
| expressed or implied.
+--------------------------------------------------------------------------+
| This code is based on:
| rtc.c,v 1.4 1995/12/19 20:07:15 joel Exp - go32 BSP
| With the following copyright notice:
| **************************************************************************
| * 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>
/*-------------------------------------------------------------------------+
| Constants
+--------------------------------------------------------------------------*/
#define IO_RTC 0x70 /* RTC */
#define RTC_SEC 0x00 /* seconds */
#define RTC_SECALRM 0x01 /* seconds alarm */
#define RTC_MIN 0x02 /* minutes */
#define RTC_MINALRM 0x03 /* minutes alarm */
#define RTC_HRS 0x04 /* hours */
#define RTC_HRSALRM 0x05 /* hours alarm */
#define RTC_WDAY 0x06 /* week day */
#define RTC_DAY 0x07 /* day of month */
#define RTC_MONTH 0x08 /* month of year */
#define RTC_YEAR 0x09 /* month of year */
#define RTC_STATUSA 0x0a /* status register A */
#define RTCSA_TUP 0x80 /* time update, don't look now */
#define RTC_STATUSB 0x0b /* status register B */
#define RTC_INTR 0x0c /* status register C (R) interrupt source */
#define RTCIR_UPDATE 0x10 /* update intr */
#define RTCIR_ALARM 0x20 /* alarm intr */
#define RTCIR_PERIOD 0x40 /* periodic intr */
#define RTCIR_INT 0x80 /* interrupt output signal */
#define RTC_STATUSD 0x0d /* status register D (R) Lost Power */
#define RTCSD_PWR 0x80 /* clock lost power */
#define RTC_DIAG 0x0e /* status register E - bios diagnostic */
#define RTCDG_BITS "\020\010clock_battery\007ROM_cksum\006config_unit\005memory_size\004fixed_disk\003invalid_time"
#define RTC_CENTURY 0x32 /* current century - increment in Dec99 */
/*-------------------------------------------------------------------------+
| Auxiliary Functions
+--------------------------------------------------------------------------*/
/*-------------------------------------------------------------------------+
| Function: bcd
| Description: Convert 2 digit number to its BCD representation.
| Global Variables: None.
| Arguments: i - Number to convert.
| Returns: BCD representation of number.
+--------------------------------------------------------------------------*/
static inline uint8_t
bcd(uint8_t i)
{
return ((i / 16) * 10 + (i % 16));
} /* bcd */
#define QUICK_READ /* Quick read of the RTC: don't return number of seconds. */
#ifndef QUICK_READ
#define SECS_PER_DAY (24 * 60 * 60)
#define SECS_PER_REG_YEAR (365 * SECS_PER_DAY)
/*-------------------------------------------------------------------------+
| Function: ytos
| Description: Convert years to seconds (since 1970).
| Global Variables: None.
| Arguments: y - year to convert (1970 <= y <= 2100).
| Returns: number of seconds since 1970.
+--------------------------------------------------------------------------*/
static inline uint32_t
ytos(uint16_t y)
{ /* v NUM LEAP YEARS v */
return ((y - 1970) * SECS_PER_REG_YEAR + (y - 1970 + 1) / 4 * SECS_PER_DAY);
} /* ytos */
/*-------------------------------------------------------------------------+
| Function: mtos
| Description: Convert months to seconds since January.
| Global Variables: None.
| Arguments: m - month to convert, leap - is this a month of a leap year.
| Returns: number of seconds since January.
+--------------------------------------------------------------------------*/
static inline uint32_t
mtos(uint8_t m, bool leap)
{
static uint16_t daysMonth[] = { 0, 0, 31, 59, 90, 120, 151, 181,
212, 243, 273, 304, 334, 365 };
/* Days since beginning of year until beginning of month. */
return ((daysMonth[m] + (leap ? 1 : 0)) * SECS_PER_DAY);
} /* mtos */
#endif /* QUICK_READ */
/*-------------------------------------------------------------------------+
| Function: rtcin
| Description: Perform action on RTC and return its result.
| Global Variables: None.
| Arguments: what - what to write to RTC port (what to do).
| Returns: result received from RTC port after action performed.
+--------------------------------------------------------------------------*/
static inline uint8_t
rtcin(uint8_t what)
{
uint8_t r;
outport_byte(IO_RTC, what);
inport_byte (IO_RTC+1, r);
return r;
} /* rtcin */
/*-------------------------------------------------------------------------+
| Functions
+--------------------------------------------------------------------------*/
/*-------------------------------------------------------------------------+
| Function: init_rtc
| Description: Initialize real-time clock (RTC).
| Global Variables: None.
| Arguments: None.
| Returns: Nothing.
+--------------------------------------------------------------------------*/
void
init_rtc(void)
{
uint8_t s;
/* initialize brain-dead battery powered clock */
outport_byte(IO_RTC, RTC_STATUSA);
outport_byte(IO_RTC+1, 0x26);
outport_byte(IO_RTC, RTC_STATUSB);
outport_byte(IO_RTC+1, 2);
outport_byte(IO_RTC, RTC_DIAG);
inport_byte (IO_RTC+1, s);
if (s)
printk("RTC BIOS diagnostic error %b\n", s);
/* FIXME: This was last line's original version. How was it supposed to work?
printf("RTC BIOS diagnostic error %b\n", s, RTCDG_BITS); */
} /* init_rtc */
/*-------------------------------------------------------------------------+
| Function: rtc_read
| Description: Read present time from RTC and return it.
| Global Variables: None.
| Arguments: tod - to return present time in 'rtems_time_of_day' format.
| Returns: number of seconds from 1970/01/01 corresponding to 'tod'.
+--------------------------------------------------------------------------*/
long int
rtc_read(rtems_time_of_day *tod)
{
uint8_t sa;
uint32_t sec = 0;
memset(tod, 0, sizeof *tod); /* zero tod structure */
/* do we have a realtime clock present? (otherwise we loop below) */
sa = rtcin(RTC_STATUSA);
if (sa == 0xff || sa == 0)
return -1;
/* ready for a read? */
while ((sa&RTCSA_TUP) == RTCSA_TUP)
sa = rtcin(RTC_STATUSA);
tod->year = bcd(rtcin(RTC_YEAR)) + 1900; /* year */
if (tod->year < 1970) tod->year += 100;
tod->month = bcd(rtcin(RTC_MONTH)); /* month */
tod->day = bcd(rtcin(RTC_DAY)); /* day */
(void) bcd(rtcin(RTC_WDAY)); /* weekday */
tod->hour = bcd(rtcin(RTC_HRS)); /* hour */
tod->minute = bcd(rtcin(RTC_MIN)); /* minutes */
tod->second = bcd(rtcin(RTC_SEC)); /* seconds */
tod->ticks = 0;
#ifndef QUICK_READ /* Quick read of the RTC: don't return number of seconds. */
sec = ytos(tod->year);
sec += mtos(tod->month, (tod->year % 4) == 0);
sec += tod->day * SECS_PER_DAY;
sec += tod->hour * 60 * 60; /* hour */
sec += tod->minute * 60; /* minutes */
sec += tod->second; /* seconds */
#endif /* QUICK_READ */
return (long int)sec;
} /* rtc_read */

View File

@@ -1,46 +0,0 @@
## Process this file with autoconf to produce a configure script.
##
## $Id$
AC_PREREQ([2.68])
AC_INIT([rtems-c-src-lib-libbsp-i386-ts_386ex],[_RTEMS_VERSION],[http://www.rtems.org/bugzilla])
AC_CONFIG_SRCDIR([bsp_specs])
RTEMS_TOP(../../../../../..)
RTEMS_CANONICAL_TARGET_CPU
AM_INIT_AUTOMAKE([no-define nostdinc foreign 1.11.1])
RTEMS_BSP_CONFIGURE
RTEMS_PROG_CC_FOR_TARGET
RTEMS_CANONICALIZE_TOOLS
RTEMS_PROG_CCAS
RTEMS_CHECK_NETWORKING
## if this is an i386, does gas have good code16 support?
RTEMS_I386_GAS_CODE16
AM_CONDITIONAL(RTEMS_GAS_CODE16,test "$RTEMS_GAS_CODE16" = "yes")
AM_CONDITIONAL(HAS_NETWORKING,test "$HAS_NETWORKING" = "yes")
RTEMS_CONFIG_BUILD_SUBDIRS(tools)
# bsp-specific options
RTEMS_BSPOPTS_SET([LOAD_RTC_AT_START],[*],[1])
RTEMS_BSPOPTS_HELP([LOAD_RTC_AT_START],
[Initialize RTC and load into system clock at startup. This will break
some tests.])
RTEMS_BSPOPTS_SET([BSP_DEBUG],[*],[])
RTEMS_BSPOPTS_HELP([BSP_DEBUG],
[Enables some debugging in the BSP package.])
RTEMS_BSPOPTS_SET([UARTDEBUG],[*],[])
RTEMS_BSPOPTS_HELP([UARTDEBUG],
[Enables some debugging in the BSP's uart.])
RTEMS_BSP_CLEANUP_OPTIONS(0, 0)
# Explicitly list all Makefiles here
AC_CONFIG_FILES([Makefile])
AC_OUTPUT

View File

@@ -1,303 +0,0 @@
/*-------------------------------------------------------------------------+
| console.c v1.1 - i386ex BSP - 1997/08/07
+--------------------------------------------------------------------------+
| This file contains the i386ex console I/O package. It is just a termios
| wrapper.
+--------------------------------------------------------------------------+
| (C) Copyright 1997 -
| - NavIST Group - Real-Time Distributed Systems and Industrial Automation
|
| http://pandora.ist.utl.pt
|
| Instituto Superior Tecnico * Lisboa * PORTUGAL
+--------------------------------------------------------------------------+
| Disclaimer:
|
| This file is provided "AS IS" without warranty of any kind, either
| expressed or implied.
+--------------------------------------------------------------------------+
| This code is based on:
| console.c,v 1.4 1995/12/19 20:07:23 joel Exp - go32 BSP
| console.c,v 1.15 pc386 BSP
| With the following copyright notice:
| **************************************************************************
| * 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 <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <rtems/error.h>
#include <bsp.h>
#include <bsp/irq.h>
#include <rtems/libio.h>
#include <termios.h>
#include <uart.h>
#include <libcpu/cpuModel.h>
#include <rtems/termiostypes.h>
/*
* Possible value for console input/output :
* BSP_UART_COM1
* BSP_UART_COM2
* BSP_CONSOLE_PORT_CONSOLE is not valid in this BSP.
* All references to either keyboard or video handling have been removed.
*/
int BSPConsolePort = BSP_UART_COM2;
int BSPBaseBaud = 115200;
int BSP_poll_read(int);
extern BSP_polling_getchar_function_type BSP_poll_char;
static int conSetAttr(int minor, const struct termios *);
static void isr_on(const rtems_irq_connect_data *);
static void isr_off(const rtems_irq_connect_data *);
static int isr_is_on(const rtems_irq_connect_data *);
/*
* Change references to com2 if required.
*/
static rtems_irq_connect_data console_isr_data =
{ BSP_UART_COM2_IRQ,
BSP_uart_termios_isr_com2,
0,
isr_on,
isr_off,
isr_is_on};
static void
isr_on(const rtems_irq_connect_data *unused)
{
return;
}
static void
isr_off(const rtems_irq_connect_data *unused)
{
return;
}
static int
isr_is_on(const rtems_irq_connect_data *irq)
{
return BSP_irq_enabled_at_i8259s(irq->name);
}
/*-------------------------------------------------------------------------+
| Console device driver INITIALIZE entry point.
+--------------------------------------------------------------------------+
| Initilizes the I/O console (keyboard + VGA display) driver.
+--------------------------------------------------------------------------*/
rtems_device_driver
console_initialize(rtems_device_major_number major,
rtems_device_minor_number minor,
void *arg)
{
rtems_status_code status;
/*
* Set up TERMIOS
*/
rtems_termios_initialize ();
/*
* Do device-specific initialization
*/
/* 115200-8-N-1, without hardware flow control */
BSP_uart_init(BSPConsolePort, 115200, CHR_8_BITS, 0, 0, 0);
/* Set interrupt handler */
if(BSPConsolePort == BSP_UART_COM1)
{
console_isr_data.name = BSP_UART_COM1_IRQ;
console_isr_data.hdl = BSP_uart_termios_isr_com1;
}
else
{
assert(BSPConsolePort == BSP_UART_COM2);
console_isr_data.name = BSP_UART_COM2_IRQ;
console_isr_data.hdl = BSP_uart_termios_isr_com2;
}
status = BSP_install_rtems_irq_handler(&console_isr_data);
if (!status){
printk("Error installing serial console interrupt handler!\n");
rtems_fatal_error_occurred(status);
}
/*
* Register the device
*/
status = rtems_io_register_name ("/dev/console", major, 0);
if (status != RTEMS_SUCCESSFUL)
{
printk("Error registering console device!\n");
rtems_fatal_error_occurred (status);
}
if(BSPConsolePort == BSP_UART_COM1)
{
printk("Initialized console on port COM1 115200-8-N-1\n\n");
}
else
{
printk("Initialized console on port COM2 115200-8-N-1\n\n");
}
return RTEMS_SUCCESSFUL;
} /* console_initialize */
static int console_last_close(int major, int minor, void *arg)
{
BSP_remove_rtems_irq_handler (&console_isr_data);
return 0;
}
/*-------------------------------------------------------------------------+
| Console device driver OPEN entry point
+--------------------------------------------------------------------------*/
rtems_device_driver
console_open(rtems_device_major_number major,
rtems_device_minor_number minor,
void *arg)
{
rtems_status_code status;
static rtems_termios_callbacks cb =
{
NULL, /* firstOpen */
console_last_close, /* lastClose */
NULL, /* poll read */
BSP_uart_termios_write_com1, /* write */
conSetAttr, /* setAttributes */
NULL, /* stopRemoteTx */
NULL, /* startRemoteTx */
1 /* outputUsesInterrupts */
};
if(BSPConsolePort == BSP_UART_COM2)
{
cb.write = BSP_uart_termios_write_com2;
}
status = rtems_termios_open (major, minor, arg, &cb);
if(status != RTEMS_SUCCESSFUL)
{
printk("Error openning console device\n");
return status;
}
/*
* Pass data area info down to driver
*/
BSP_uart_termios_set(BSPConsolePort,
((rtems_libio_open_close_args_t *)arg)->iop->data1);
/* Enable interrupts on channel */
BSP_uart_intr_ctrl(BSPConsolePort, BSP_UART_INTR_CTRL_TERMIOS);
return RTEMS_SUCCESSFUL;
}
/*-------------------------------------------------------------------------+
| Console device driver CLOSE entry point
+--------------------------------------------------------------------------*/
rtems_device_driver
console_close(rtems_device_major_number major,
rtems_device_minor_number minor,
void *arg)
{
return (rtems_termios_close (arg));
} /* console_close */
/*-------------------------------------------------------------------------+
| Console device driver READ entry point.
+--------------------------------------------------------------------------+
| Read characters from the I/O console. We only have stdin.
+--------------------------------------------------------------------------*/
rtems_device_driver
console_read(rtems_device_major_number major,
rtems_device_minor_number minor,
void *arg)
{
rtems_status_code sc;
sc = rtems_termios_read (arg);
if ( sc != RTEMS_SUCCESSFUL )
printk("console_read: fails %s\n",rtems_status_text(sc));
return sc;
} /* console_read */
/*-------------------------------------------------------------------------+
| Console device driver WRITE entry point.
+--------------------------------------------------------------------------+
| Write characters to the I/O console. Stderr and stdout are the same.
+--------------------------------------------------------------------------*/
rtems_device_driver
console_write(rtems_device_major_number major,
rtems_device_minor_number minor,
void * arg)
{
return rtems_termios_write (arg);
} /* console_write */
/*
* Handle ioctl request.
*/
rtems_device_driver
console_control(rtems_device_major_number major,
rtems_device_minor_number minor,
void * arg
)
{
return rtems_termios_ioctl (arg);
}
static int
conSetAttr(int minor, const struct termios *t)
{
rtems_termios_baud_t baud;
baud = rtems_termios_baud_to_number(t->c_cflag & CBAUD);
if ( baud > 115200 )
rtems_fatal_error_occurred (RTEMS_INTERNAL_ERROR);
BSP_uart_set_baud(BSPConsolePort, baud);
return 0;
}
/*
* BSP initialization
*/
BSP_output_char_function_type BSP_output_char =
(BSP_output_char_function_type) BSP_output_char_via_serial;
BSP_polling_getchar_function_type BSP_poll_char =
(BSP_polling_getchar_function_type) BSP_poll_char_via_serial;
int BSP_poll_read(int ttyMinor){
return BSP_poll_char_via_serial();
}

View File

@@ -1,4 +0,0 @@
bspopts.h
bspopts.h.in
stamp-h
stamp-h.in

View File

@@ -1,111 +0,0 @@
/*
* This include file definitions related to an Intel i386ex board.
*
* 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 _BSP_H
#define _BSP_H
#ifdef __cplusplus
extern "C" {
#endif
#include <bspopts.h>
#include <rtems.h>
#include <rtems/iosupp.h>
#include <rtems/console.h>
#include <rtems/clockdrv.h>
#include <rtems/bspIo.h>
#include <libcpu/cpu.h>
#include <bsp/irq.h>
/*
* Network driver configuration
*/
struct rtems_bsdnet_ifconfig;
extern int rtems_ne_driver_attach (struct rtems_bsdnet_ifconfig *config);
extern void Wait_X_ms (unsigned);
#define RTEMS_BSP_NETWORK_DRIVER_NAME "ne1"
#define RTEMS_BSP_NETWORK_DRIVER_ATTACH rtems_ne_driver_attach
#define NE2000_BYTE_TRANSFERS
/*
* Constants relating to the 8254 (or 8253) programmable interval timers.
*/
#define TIMER_CONFIG 0xF834
#define IO_TIMER1 0xF040
/* Port address of the control port and timer channels */
#define TIMER_CNTR0 (IO_TIMER1 + 0) /* timer 0 counter port */
#define TIMER_CNTR1 (IO_TIMER1 + 1) /* timer 1 counter port */
#define TIMER_CNTR2 (IO_TIMER1 + 2) /* timer 2 counter port */
#define TIMER_MODE (IO_TIMER1 + 3) /* timer mode port */
#define TIMER_SEL0 0x00 /* select counter 0 */
#define TIMER_SEL1 0x40 /* select counter 1 */
#define TIMER_SEL2 0x80 /* select counter 2 */
#define TIMER_INTTC 0x00 /* mode 0, intr on terminal cnt */
#define TIMER_ONESHOT 0x02 /* mode 1, one shot */
#define TIMER_RATEGEN 0x04 /* mode 2, rate generator */
#define TIMER_SQWAVE 0x06 /* mode 3, square wave */
#define TIMER_SWSTROBE 0x08 /* mode 4, s/w triggered strobe */
#define TIMER_HWSTROBE 0x0a /* mode 5, h/w triggered strobe */
#define TIMER_LATCH 0x00 /* latch counter for reading */
#define TIMER_LSB 0x10 /* r/w counter LSB */
#define TIMER_MSB 0x20 /* r/w counter MSB */
#define TIMER_16BIT 0x30 /* r/w counter 16 bits, LSB first */
#define TIMER_BCD 0x01 /* count in BCD */
/*
* Simple spin delay in microsecond units for device drivers.
* This is very dependent on the clock speed of the target.
*/
#define rtems_bsp_delay( _microseconds ) \
{ \
uint32_t _counter; \
\
_counter = (_microseconds); \
\
__asm__ volatile ( "0: nop;" \
" mov %0,%0 ;" \
" loop 0b" : "=c" (_counter) \
: "0" (_counter) \
); \
\
}
/* Constants */
#define RAM_START 0
/* replaced the earlier EI kludge of 0xfffff */
#define RAM_END 0x200000
/* Structures */
#define IDT_SIZE 256
#define GDT_SIZE 3
extern interrupt_gate_descriptor Interrupt_descriptor_table[IDT_SIZE];
#ifdef __cplusplus
}
#endif
#endif

View File

@@ -1,102 +0,0 @@
/* coverhd.h
*
* This include file has defines to represent the overhead associated
* with calling a particular directive from C on this target.
*
* 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 3
#define CALLING_OVERHEAD_SHUTDOWN_EXECUTIVE 3
#define CALLING_OVERHEAD_TASK_CREATE 4
#define CALLING_OVERHEAD_TASK_IDENT 4
#define CALLING_OVERHEAD_TASK_START 4
#define CALLING_OVERHEAD_TASK_RESTART 3
#define CALLING_OVERHEAD_TASK_DELETE 3
#define CALLING_OVERHEAD_TASK_SUSPEND 3
#define CALLING_OVERHEAD_TASK_RESUME 3
#define CALLING_OVERHEAD_TASK_SET_PRIORITY 4
#define CALLING_OVERHEAD_TASK_MODE 4
#define CALLING_OVERHEAD_TASK_GET_NOTE 4
#define CALLING_OVERHEAD_TASK_SET_NOTE 4
#define CALLING_OVERHEAD_TASK_WAKE_WHEN 7
#define CALLING_OVERHEAD_TASK_WAKE_AFTER 3
#define CALLING_OVERHEAD_INTERRUPT_CATCH 4
#define CALLING_OVERHEAD_CLOCK_GET 7
#define CALLING_OVERHEAD_CLOCK_SET 7
#define CALLING_OVERHEAD_CLOCK_TICK 2
#define CALLING_OVERHEAD_TIMER_CREATE 3
#define CALLING_OVERHEAD_TIMER_IDENT 3
#define CALLING_OVERHEAD_TIMER_DELETE 3
#define CALLING_OVERHEAD_TIMER_FIRE_AFTER 4
#define CALLING_OVERHEAD_TIMER_FIRE_WHEN 8
#define CALLING_OVERHEAD_TIMER_RESET 3
#define CALLING_OVERHEAD_TIMER_CANCEL 3
#define CALLING_OVERHEAD_SEMAPHORE_CREATE 4
#define CALLING_OVERHEAD_SEMAPHORE_DELETE 3
#define CALLING_OVERHEAD_SEMAPHORE_IDENT 4
#define CALLING_OVERHEAD_SEMAPHORE_OBTAIN 4
#define CALLING_OVERHEAD_SEMAPHORE_RELEASE 3
#define CALLING_OVERHEAD_MESSAGE_QUEUE_CREATE 4
#define CALLING_OVERHEAD_MESSAGE_QUEUE_IDENT 4
#define CALLING_OVERHEAD_MESSAGE_QUEUE_DELETE 3
#define CALLING_OVERHEAD_MESSAGE_QUEUE_SEND 3
#define CALLING_OVERHEAD_MESSAGE_QUEUE_URGENT 3
#define CALLING_OVERHEAD_MESSAGE_QUEUE_BROADCAST 4
#define CALLING_OVERHEAD_MESSAGE_QUEUE_RECEIVE 4
#define CALLING_OVERHEAD_MESSAGE_QUEUE_FLUSH 3
#define CALLING_OVERHEAD_EVENT_SEND 4
#define CALLING_OVERHEAD_EVENT_RECEIVE 4
#define CALLING_OVERHEAD_SIGNAL_CATCH 3
#define CALLING_OVERHEAD_SIGNAL_SEND 3
#define CALLING_OVERHEAD_PARTITION_CREATE 4
#define CALLING_OVERHEAD_PARTITION_IDENT 4
#define CALLING_OVERHEAD_PARTITION_DELETE 3
#define CALLING_OVERHEAD_PARTITION_GET_BUFFER 4
#define CALLING_OVERHEAD_PARTITION_RETURN_BUFFER 4
#define CALLING_OVERHEAD_REGION_CREATE 4
#define CALLING_OVERHEAD_REGION_IDENT 3
#define CALLING_OVERHEAD_REGION_DELETE 3
#define CALLING_OVERHEAD_REGION_GET_SEGMENT 4
#define CALLING_OVERHEAD_REGION_RETURN_SEGMENT 4
#define CALLING_OVERHEAD_PORT_CREATE 4
#define CALLING_OVERHEAD_PORT_IDENT 3
#define CALLING_OVERHEAD_PORT_DELETE 3
#define CALLING_OVERHEAD_PORT_EXTERNAL_TO_INTERNAL 4
#define CALLING_OVERHEAD_PORT_INTERNAL_TO_EXTERNAL 4
#define CALLING_OVERHEAD_IO_INITIALIZE 4
#define CALLING_OVERHEAD_IO_OPEN 4
#define CALLING_OVERHEAD_IO_CLOSE 4
#define CALLING_OVERHEAD_IO_READ 4
#define CALLING_OVERHEAD_IO_WRITE 4
#define CALLING_OVERHEAD_IO_CONTROL 4
#define CALLING_OVERHEAD_FATAL_ERROR_OCCURRED 3
#define CALLING_OVERHEAD_RATE_MONOTONIC_CREATE 3
#define CALLING_OVERHEAD_RATE_MONOTONIC_IDENT 3
#define CALLING_OVERHEAD_RATE_MONOTONIC_DELETE 3
#define CALLING_OVERHEAD_RATE_MONOTONIC_CANCEL 3
#define CALLING_OVERHEAD_RATE_MONOTONIC_PERIOD 3
#define CALLING_OVERHEAD_MULTIPROCESSING_ANNOUNCE 2
#ifdef __cplusplus
}
#endif
#endif

View File

@@ -1,34 +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
/*
* Define the interrupt mechanism for Time Test 27
*
* NOTE: Use a software interrupt for the i386.
*/
#define MUST_WAIT_FOR_INTERRUPT 0
#define Install_tm27_vector(handler)
#define Cause_tm27_intr() __asm__ volatile( "int $0x90" : : );
#define Clear_tm27_intr() /* empty */
#define Lower_tm27_intr() /* empty */
#endif

View File

@@ -1,122 +0,0 @@
/* Register descriptions */
/* Controller DP8390. */
#define DATAPORT 0x10 /* Port Window. */
#define RESET 0x1f /* Issue a read for reset */
#define W83CREG 0x00 /* I/O port definition */
#define ADDROM 0x08
/* page 0 read or read/write registers */
#define CMDR 0x00+RO
#define CLDA0 0x01+RO /* current local dma addr 0 for read */
#define CLDA1 0x02+RO /* current local dma addr 1 for read */
#define BNRY 0x03+RO /* boundary reg for rd and wr */
#define TSR 0x04+RO /* tx status reg for rd */
#define NCR 0x05+RO /* number of collision reg for rd */
#define FIFO 0x06+RO /* FIFO for rd */
#define ISR 0x07+RO /* interrupt status reg for rd and wr */
#define CRDA0 0x08+RO /* current remote dma address 0 for rd */
#define CRDA1 0x09+RO /* current remote dma address 1 for rd */
#define RSR 0x0C+RO /* rx status reg for rd */
#define CNTR0 0x0D+RO /* tally cnt 0 for frm alg err for rd */
#define CNTR1 RO+0x0E /* tally cnt 1 for crc err for rd */
#define CNTR2 0x0F+RO /* tally cnt 2 for missed pkt for rd */
/* page 0 write registers */
#define PSTART 0x01+RO /* page start register */
#define PSTOP 0x02+RO /* page stop register */
#define TPSR 0x04+RO /* tx start page start reg */
#define TBCR0 0x05+RO /* tx byte count 0 reg */
#define TBCR1 0x06+RO /* tx byte count 1 reg */
#define RSAR0 0x08+RO /* remote start address reg 0 */
#define RSAR1 0x09+RO /* remote start address reg 1 */
#define RBCR0 0x0A+RO /* remote byte count reg 0 */
#define RBCR1 0x0B+RO /* remote byte count reg 1 */
#define RCR 0x0C+RO /* rx configuration reg */
#define TCR 0x0D+RO /* tx configuration reg */
#define DCR RO+0x0E /* data configuration reg */
#define IMR 0x0F+RO /* interrupt mask reg */
/* page 1 registers */
#define PAR 0x01+RO /* physical addr reg base for rd and wr */
#define CURR 0x07+RO /* current page reg for rd and wr */
#define MAR 0x08+RO /* multicast addr reg base fro rd and WR */
#define MARsize 8 /* size of multicast addr space */
/*-----W83CREG command bits-----*/
#define MSK_RESET 0x80 /* W83CREG masks */
#define MSK_ENASH 0x40
#define MSK_DECOD 0x3F /* memory decode bits, corresponding */
/* to SA 18-13. SA 19 assumed to be 1 */
/*-----CMDR command bits-----*/
#define MSK_STP 0x01 /* stop the chip */
#define MSK_STA 0x02 /* start the chip */
#define MSK_TXP 0x04 /* initial txing of a frm */
#define MSK_RRE 0x08 /* remote read */
#define MSK_RWR 0x10 /* remote write */
#define MSK_RD2 0x20 /* no DMA used */
#define MSK_PG0 0x00 /* select register page 0 */
#define MSK_PG1 0x40 /* select register page 1 */
#define MSK_PG2 0x80 /* select register page 2 */
/*-----ISR and TSR status bits-----*/
#define MSK_PRX 0x01 /* rx with no error */
#define MSK_PTX 0x02 /* tx with no error */
#define MSK_RXE 0x04 /* rx with error */
#define MSK_TXE 0x08 /* tx with error */
#define MSK_OVW 0x10 /* overwrite warning */
#define MSK_CNT 0x20 /* MSB of one of the tally counters is set */
#define MSK_RDC 0x40 /* remote dma completed */
#define MSK_RST 0x80 /* reset state indicator */
/*-----DCR command bits-----*/
#define MSK_WTS 0x01 /* word transfer mode selection */
#define MSK_BOS 0x02 /* byte order selection */
#define MSK_LAS 0x04 /* long addr selection */
#define MSK_BMS 0x08 /* burst mode selection */
#define MSK_ARM 0x10 /* autoinitialize remote */
#define MSK_FT00 0x00 /* burst lrngth selection */
#define MSK_FT01 0x20 /* burst lrngth selection */
#define MSK_FT10 0x40 /* burst lrngth selection */
#define MSK_FT11 0x60 /* burst lrngth selection */
/*-----RCR command bits-----*/
#define MSK_SEP 0x01 /* save error pkts */
#define MSK_AR 0x02 /* accept runt pkt */
#define MSK_AB 0x04 /* 8390 RCR */
#define MSK_AM 0x08 /* accept multicast */
#define MSK_PRO 0x10 /* accept all pkt with physical adr */
#define MSK_MON 0x20 /* monitor mode */
/*-----TCR command bits-----*/
#define MSK_CRC 0x01 /* inhibit CRC, do not append crc */
#define MSK_LOOP 0x02 /* set loopback mode */
#define MSK_BCST 0x04 /* Accept broadcasts */
#define MSK_LB01 0x06 /* encoded loopback control */
#define MSK_ATD 0x08 /* auto tx disable */
#define MSK_OFST 0x10 /* collision offset enable */
/*-----receive status bits-----*/
#define SMK_PRX 0x01 /* rx without error */
#define SMK_CRC 0x02 /* CRC error */
#define SMK_FAE 0x04 /* frame alignment error */
#define SMK_FO 0x08 /* FIFO overrun */
#define SMK_MPA 0x10 /* missed pkt */
#define SMK_PHY 0x20 /* physical/multicase address */
#define SMK_DIS 0x40 /* receiver disable. set in monitor mode */
#define SMK_DEF 0x80 /* deferring */
/*-----transmit status bits-----*/
#define SMK_PTX 0x01 /* tx without error */
#define SMK_DFR 0x02 /* non deferred tx */
#define SMK_COL 0x04 /* tx collided */
#define SMK_ABT 0x08 /* tx abort because of excessive collisions */
#define SMK_CRS 0x10 /* carrier sense lost */
#define SMK_FU 0x20 /* FIFO underrun */
#define SMK_CDH 0x40 /* collision detect heartbeat */
#define SMK_OWC 0x80 /* out of window collision */

View File

@@ -1,24 +0,0 @@
#
# Config file for the ts-386ex BSP
#
# $Id$
#
include $(RTEMS_ROOT)/make/custom/default.cfg
RTEMS_CPU=i386
RTEMS_CPU_MODEL=i386_nofp
# This contains the compiler options necessary to select the CPU model
# and (hopefully) optimize for it. Enables software floating-point
# emulation since we don't have a i387 co-processor.
#
CPU_CFLAGS =-msoft-float -mno-fp-ret-in-387
# optimize flag: typically -O2
CFLAGS_OPTIMIZE_V = -O2 -g
define bsp-post-link
$(default-bsp-post-link)
$(OBJCOPY) -O binary $(basename $@).exe $(basename $@)$(DOWNEXT)
endef

File diff suppressed because it is too large Load Diff

View File

@@ -1,96 +0,0 @@
## Automatically generated by ampolish3 - Do not edit
if AMPOLISH3
$(srcdir)/preinstall.am: Makefile.am
$(AMPOLISH3) $(srcdir)/Makefile.am > $(srcdir)/preinstall.am
endif
PREINSTALL_DIRS =
DISTCLEANFILES += $(PREINSTALL_DIRS)
all-local: $(TMPINSTALL_FILES)
TMPINSTALL_FILES =
CLEANFILES = $(TMPINSTALL_FILES)
all-am: $(PREINSTALL_FILES)
PREINSTALL_FILES =
CLEANFILES += $(PREINSTALL_FILES)
$(PROJECT_LIB)/$(dirstamp):
@$(MKDIR_P) $(PROJECT_LIB)
@: > $(PROJECT_LIB)/$(dirstamp)
PREINSTALL_DIRS += $(PROJECT_LIB)/$(dirstamp)
$(PROJECT_INCLUDE)/$(dirstamp):
@$(MKDIR_P) $(PROJECT_INCLUDE)
@: > $(PROJECT_INCLUDE)/$(dirstamp)
PREINSTALL_DIRS += $(PROJECT_INCLUDE)/$(dirstamp)
$(PROJECT_INCLUDE)/bsp/$(dirstamp):
@$(MKDIR_P) $(PROJECT_INCLUDE)/bsp
@: > $(PROJECT_INCLUDE)/bsp/$(dirstamp)
PREINSTALL_DIRS += $(PROJECT_INCLUDE)/bsp/$(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/bootcard.h: ../../shared/include/bootcard.h $(PROJECT_INCLUDE)/bsp/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/bootcard.h
PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/bootcard.h
$(PROJECT_INCLUDE)/coverhd.h: include/coverhd.h $(PROJECT_INCLUDE)/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/coverhd.h
PREINSTALL_FILES += $(PROJECT_INCLUDE)/coverhd.h
$(PROJECT_INCLUDE)/bsp/irq.h: ../../i386/shared/irq/irq.h $(PROJECT_INCLUDE)/bsp/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/irq.h
PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/irq.h
$(PROJECT_INCLUDE)/bsp/irq_asm.h: ../../i386/shared/irq/irq_asm.h $(PROJECT_INCLUDE)/bsp/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/irq_asm.h
PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/irq_asm.h
$(PROJECT_INCLUDE)/bsp/irq-generic.h: ../../shared/include/irq-generic.h $(PROJECT_INCLUDE)/bsp/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/irq-generic.h
PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/irq-generic.h
$(PROJECT_INCLUDE)/bsp/irq-info.h: ../../shared/include/irq-info.h $(PROJECT_INCLUDE)/bsp/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/irq-info.h
PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/irq-info.h
$(PROJECT_LIB)/start.$(OBJEXT): start.$(OBJEXT) $(PROJECT_LIB)/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_LIB)/start.$(OBJEXT)
TMPINSTALL_FILES += $(PROJECT_LIB)/start.$(OBJEXT)
$(PROJECT_LIB)/linkcmds: startup/linkcmds $(PROJECT_LIB)/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_LIB)/linkcmds
PREINSTALL_FILES += $(PROJECT_LIB)/linkcmds
$(PROJECT_INCLUDE)/uart.h: ../../i386/shared/comm/uart.h $(PROJECT_INCLUDE)/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/uart.h
PREINSTALL_FILES += $(PROJECT_INCLUDE)/uart.h
$(PROJECT_INCLUDE)/pcibios.h: ../../i386/shared/pci/pcibios.h $(PROJECT_INCLUDE)/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/pcibios.h
PREINSTALL_FILES += $(PROJECT_INCLUDE)/pcibios.h
if HAS_NETWORKING
$(PROJECT_INCLUDE)/wd80x3.h: include/wd80x3.h $(PROJECT_INCLUDE)/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/wd80x3.h
PREINSTALL_FILES += $(PROJECT_INCLUDE)/wd80x3.h
endif

View File

@@ -1,252 +0,0 @@
/*
* Submitted by:
*
* Erik Ivanenko
* University of Toronto
* erik.ivanenko@utoronto.ca
*
* 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$
*/
/* REMAP ADDRESSING Registers */
#define REMAPCFGH 0x0023
#define REMAPCFGL 0x0022
#define REMAPCFG 0x0022
/* INTERRUPT CONTROL REGISTERS -- SLOT 15 ADDRESSES */
#define ICW1M 0xF020
#define ICW1S 0xF0A0
#define ICW2M 0xF021
#define ICW2S 0xF0A1
#define ICW3M 0xF021
#define ICW3S 0xF0A1
#define ICW4M 0xF021
#define ICW4S 0xF0A1
#define OCW1M 0xF021
#define OCW1S 0xF0A1
#define OCW2M 0xF020
#define OCW2S 0xF0A0
#define OCW3M 0xF020
#define OCW3S 0xF0A0
/* INTERRUPT CONTROL REGISTERS -- SLOT 0 ADDRESSES */
#define ICW1MDOS 0x0020
#define ICW1SDOS 0x00A0
#define ICW2MDOS 0x0021
#define ICW2SDOS 0x00A1
#define ICW3MDOS 0x0021
#define ICW3SDOS 0x00A1
#define ICW4MDOS 0x0021
#define ICW4SDOS 0x00A1
#define OCW1MDOS 0x0021
#define OCW1SDOS 0x00A1
#define OCW2MDOS 0x0020
#define OCW2SDOS 0x00A0
#define OCW3MDOS 0x0020
#define OCW3SDOS 0x00A0
/* CONFIGURATION Registers */
#define DMACFG 0xF830
#define INTCFG 0xF832
#define TMRCFG 0xF834
#define SIOCFG 0xF836
#define P1CFG 0xF820
#define P2CFG 0xF822
#define P3CFG 0xF824
#define PINCFG 0xF826
/* WATCHDOG TIMER Registers */
#define WDTRLDH 0xF4C0
#define WDTRLDL 0xF4C2
#define WDTCNTH 0xF4C4
#define WDTCNTL 0xF4C6
#define WDTCLR 0xF4C8
#define WDTSTATUS 0xF4CA
/* TIMER CONTROL REGISTERS -- SLOT 15 ADDRESSES */
#define TMR0 0xF040
#define TMR1 0xF041
#define TMR2 0xF042
#define TMRCON 0xF043
/* TIMER CONTROL REGISTERS -- SLOT 0 ADDRESSES */
#define TMR0DOS 0x0040
#define TMR1DOS 0x0041
#define TMR2DOS 0x0042
#define TMRCONDOS 0x0043
/* INPUT/OUTPUT PORT UNIT Registers */
#define P1PIN 0xF860
#define P1LTC 0xF862
#define P1DIR 0xF864
#define P2PIN 0xF868
#define P2LTC 0xF86A
#define P2DIR 0xF86C
#define P3PIN 0xF870
#define P3LTC 0xF872
#define P3DIR 0xF874
/* ASYNCHRONOUS SERIAL CHANNEL 0 -- SLOT 15 ADDRESSES */
#define RBR0 0xF4F8
#define THR0 0xF4F8
#define TBR0 0xF4F8
#define DLL0 0xF4F8
#define IER0 0xF4F9
#define DLH0 0xF4F9
#define IIR0 0xF4FA
#define LCR0 0xF4FB
#define MCR0 0xF4FC
#define LSR0 0xF4FD
#define MSR0 0xF4FE
#define SCR0 0xF4FF
/* ASYNCHRONOUS SERIAL CHANNEL 0 -- SLOT 0 ADDRESSES */
#define RBR0DOS 0x03F8
#define THR0DOS 0x03F8
#define TBR0DOS 0x03F8
#define DLL0DOS 0x03F8
#define IER0DOS 0x03F9
#define DLH0DOS 0x03F9
#define IIR0DOS 0x03FA
#define LCR0DOS 0x03FB
#define MCR0DOS 0x03FC
#define LSR0DOS 0x03FD
#define MSR0DOS 0x03FE
#define SCR0DOS 0x03FF
/* ASYNCHRONOUS SERIAL CHANNEL 1 -- SLOT 15 ADDRESSES */
#define RBR1 0xF8F8
#define THR1 0xF8F8
#define TBR1 0XF8F8
#define DLL1 0xF8F8
#define IER1 0xF8F9
#define DLH1 0xF8F9
#define IIR1 0xF8FA
#define LCR1 0xF8FB
#define MCR1 0xF8FC
#define LSR1 0xF8FD
#define MSR1 0xF8FE
#define SCR1 0xF8FF
/* ASYNCHRONOUS SERIAL CHANNEL 1 -- SLOT 0 ADDRESSES */
#define RBR1DOS 0x02F8
#define THR1DOS 0x02F8
#define TBR1DOS 0x02F8
#define DLL1DOS 0x02F8
#define IER1DOS 0x02F9
#define DLH1DOS 0x02F9
#define IIR1DOS 0x02FA
#define LCR1DOS 0x02FB
#define MCR1DOS 0x02FC
#define LSR1DOS 0x02FD
#define MSR1DOS 0x02FE
#define SCR1DOS 0x02FF
/* SYNCHRONOUS SERIAL CHANNEL REGISTERS */
#define SSIOTBUF 0xF480
#define SSIORBUF 0xF482
#define SSIOBAUD 0xF484
#define SSIOCON1 0xF486
#define SSIOCON2 0xF488
#define SSIOCTR 0xF48A
/* CHIP SELECT UNIT Registers */
#define CS0ADL 0xF400
#define CS0ADH 0xF402
#define CS0MSKL 0xF404
#define CS0MSKH 0xF406
#define CS1ADL 0xF408
#define CS1ADH 0xF40A
#define CS1MSKL 0xF40C
#define CS1MSKH 0xF40E
#define CS2ADL 0xF410
#define CS2ADH 0xF412
#define CS2MSKL 0xF414
#define CS2MSKH 0xF416
#define CS3ADL 0xF418
#define CS3ADH 0xF41A
#define CS3MSKL 0xF41C
#define CS3MSKH 0xF41E
#define CS4ADL 0xF420
#define CS4ADH 0xF422
#define CS4MSKL 0xF424
#define CS4MSKH 0xF426
#define CS5ADL 0xF428
#define CS5ADH 0xF42A
#define CS5MSKL 0xF42C
#define CS5MSKH 0xF42E
#define CS6ADL 0xF430
#define CS6ADH 0xF432
#define CS6MSKL 0xF434
#define CS6MSKH 0xF436
#define UCSADL 0xF438
#define UCSADH 0xF43A
#define UCSMSKL 0xF43C
#define UCSMSKH 0xF43E
/* REFRESH CONTROL UNIT Registers */
#define RFSBAD 0xF4A0
#define RFSCIR 0xF4A2
#define RFSCON 0xF4A4
#define RFSADD 0xF4A6
/* POWER MANAGEMENT CONTROL Registers */
#define PWRCON 0xF800
#define CLKPRS 0xF804
/* DMA UNIT REGISTERS -- SLOT 15 ADDRESSES */
#define DMA0TAR 0xF000
#define DMA0BYC 0xF001
#define DMA1TAR 0xF002
#define DMA1BYC 0xF003
#define DMACMD1 0xF008
#define DMASTS 0xF008
#define DMASRR 0xF009
#define DMAMSK 0xF00A
#define DMAMOD1 0xF00B
#define DMACLRBP 0xF00C
#define DMACLR 0xF00D
#define DMACLRMSK 0xF00E
#define DMAGRPMSK 0xF00F
#define DMA0REQL 0xF010
#define DMA0REQH 0xF011
#define DMA1REQL 0xF012
#define DMA1REQH 0xF013
#define DMABSR 0xF018
#define DMACHR 0xF019
#define DMAIS 0xF019
#define DMACMD2 0xF01A
#define DMAMOD2 0xF01B
#define DMAIEN 0xF01C
#define DMAOVFE 0xF01D
#define DMACLRTC 0xF01E
#define DMA1TARPL 0xF083
#define DMA1TARPH 0xF085
#define DMA0TARPH 0xF086
#define DMA0TARPL 0xF087
#define DMA0BYCH 0xF098
#define DMA1BYCH 0xF099
/* DMA UNIT REGISTERS -- SLOT 0 ADDRESSES */
#define DMA0TARDOS 0x0000
#define DMA0BYCDOS 0x0001
#define DMA1TARDOS 0x0002
#define DMA1BYCDOS 0x0003
#define DMACMD1DOS 0x0008
#define DMASTSDOS 0x0008
#define DMASRRDOS 0x0009
#define DMAMSKDOS 0x000A
#define DMAMOD1DOS 0x000B
#define DMACLRBPDOS 0x000C
#define DMACLRDOS 0x000D
#define DMACLRMSKDOS 0x000E
#define DMAGRPMSKDOS 0x000F
#define DMA1TARPLDOS 0x0083
#define DMA0TARPLDOS 0x0087
/* A20GATE AND FAST CPU RESET -- SLOT 15 ADDRESS */
#define PORT92 0xF092
/* A20GATE AND FAST CPU RESET -- SLOT 0 ADDRESS */
#define PORT92DOS 0x0092

View File

@@ -1,252 +0,0 @@
/*
* Submitted by:
*
* Erik Ivanenko
* University of Toronto
* erik.ivanenko@utoronto.ca
*
* 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$
*/
/* REMAP ADDRESSING Registers */
.set REMAPCFGH , 0x0023
.set REMAPCFGL , 0x0022
.set REMAPCFG , 0x0022
/* INTERRUPT CONTROL REGISTERS -- SLOT 15 ADDRESSES */
.set ICW1M , 0xF020
.set ICW1S , 0xF0A0
.set ICW2M , 0xF021
.set ICW2S , 0xF0A1
.set ICW3M , 0xF021
.set ICW3S , 0xF0A1
.set ICW4M , 0xF021
.set ICW4S , 0xF0A1
.set OCW1M , 0xF021
.set OCW1S , 0xF0A1
.set OCW2M , 0xF020
.set OCW2S , 0xF0A0
.set OCW3M , 0xF020
.set OCW3S , 0xF0A0
/* INTERRUPT CONTROL REGISTERS -- SLOT 0 ADDRESSES */
.set ICW1MDOS , 0x0020
.set ICW1SDOS , 0x00A0
.set ICW2MDOS , 0x0021
.set ICW2SDOS , 0x00A1
.set ICW3MDOS , 0x0021
.set ICW3SDOS , 0x00A1
.set ICW4MDOS , 0x0021
.set ICW4SDOS , 0x00A1
.set OCW1MDOS , 0x0021
.set OCW1SDOS , 0x00A1
.set OCW2MDOS , 0x0020
.set OCW2SDOS , 0x00A0
.set OCW3MDOS , 0x0020
.set OCW3SDOS , 0x00A0
/* CONFIGURATION Registers */
.set DMACFG , 0xF830
.set INTCFG , 0xF832
.set TMRCFG , 0xF834
.set SIOCFG , 0xF836
.set P1CFG , 0xF820
.set P2CFG , 0xF822
.set P3CFG , 0xF824
.set PINCFG , 0xF826
/* WATCHDOG TIMER Registers */
.set WDTRLDH , 0xF4C0
.set WDTRLDL , 0xF4C2
.set WDTCNTH , 0xF4C4
.set WDTCNTL , 0xF4C6
.set WDTCLR , 0xF4C8
.set WDTSTATUS , 0xF4CA
/* TIMER CONTROL REGISTERS -- SLOT 15 ADDRESSES */
.set TMR0 , 0xF040
.set TMR1 , 0xF041
.set TMR2 , 0xF042
.set TMRCON , 0xF043
/* TIMER CONTROL REGISTERS -- SLOT 0 ADDRESSES */
.set TMR0DOS , 0x0040
.set TMR1DOS , 0x0041
.set TMR2DOS , 0x0042
.set TMRCONDOS , 0x0043
/* INPUT/OUTPUT PORT UNIT Registers */
.set P1PIN , 0xF860
.set P1LTC , 0xF862
.set P1DIR , 0xF864
.set P2PIN , 0xF868
.set P2LTC , 0xF86A
.set P2DIR , 0xF86C
.set P3PIN , 0xF870
.set P3LTC , 0xF872
.set P3DIR , 0xF874
/* ASYNCHRONOUS SERIAL CHANNEL 0 -- SLOT 15 ADDRESSES */
.set RBR0 , 0xF4F8
.set THR0 , 0xF4F8
.set TBR0 , 0xF4F8
.set DLL0 , 0xF4F8
.set IER0 , 0xF4F9
.set DLH0 , 0xF4F9
.set IIR0 , 0xF4FA
.set LCR0 , 0xF4FB
.set MCR0 , 0xF4FC
.set LSR0 , 0xF4FD
.set MSR0 , 0xF4FE
.set SCR0 , 0xF4FF
/* ASYNCHRONOUS SERIAL CHANNEL 0 -- SLOT 0 ADDRESSES */
.set RBR0DOS , 0x03F8
.set THR0DOS , 0x03F8
.set TBR0DOS , 0x03F8
.set DLL0DOS , 0x03F8
.set IER0DOS , 0x03F9
.set DLH0DOS , 0x03F9
.set IIR0DOS , 0x03FA
.set LCR0DOS , 0x03FB
.set MCR0DOS , 0x03FC
.set LSR0DOS , 0x03FD
.set MSR0DOS , 0x03FE
.set SCR0DOS , 0x03FF
/* ASYNCHRONOUS SERIAL CHANNEL 1 -- SLOT 15 ADDRESSES */
.set RBR1 , 0xF8F8
.set THR1 , 0xF8F8
.set TBR1 , 0XF8F8
.set DLL1 , 0xF8F8
.set IER1 , 0xF8F9
.set DLH1 , 0xF8F9
.set IIR1 , 0xF8FA
.set LCR1 , 0xF8FB
.set MCR1 , 0xF8FC
.set LSR1 , 0xF8FD
.set MSR1 , 0xF8FE
.set SCR1 , 0xF8FF
/* ASYNCHRONOUS SERIAL CHANNEL 1 -- SLOT 0 ADDRESSES */
.set RBR1DOS , 0x02F8
.set THR1DOS , 0x02F8
.set TBR1DOS , 0x02F8
.set DLL1DOS , 0x02F8
.set IER1DOS , 0x02F9
.set DLH1DOS , 0x02F9
.set IIR1DOS , 0x02FA
.set LCR1DOS , 0x02FB
.set MCR1DOS , 0x02FC
.set LSR1DOS , 0x02FD
.set MSR1DOS , 0x02FE
.set SCR1DOS , 0x02FF
/* SYNCHRONOUS SERIAL CHANNEL REGISTERS */
.set SSIOTBUF , 0xF480
.set SSIORBUF , 0xF482
.set SSIOBAUD , 0xF484
.set SSIOCON1 , 0xF486
.set SSIOCON2 , 0xF488
.set SSIOCTR , 0xF48A
/* CHIP SELECT UNIT Registers */
.set CS0ADL , 0xF400
.set CS0ADH , 0xF402
.set CS0MSKL , 0xF404
.set CS0MSKH , 0xF406
.set CS1ADL , 0xF408
.set CS1ADH , 0xF40A
.set CS1MSKL , 0xF40C
.set CS1MSKH , 0xF40E
.set CS2ADL , 0xF410
.set CS2ADH , 0xF412
.set CS2MSKL , 0xF414
.set CS2MSKH , 0xF416
.set CS3ADL , 0xF418
.set CS3ADH , 0xF41A
.set CS3MSKL , 0xF41C
.set CS3MSKH , 0xF41E
.set CS4ADL , 0xF420
.set CS4ADH , 0xF422
.set CS4MSKL , 0xF424
.set CS4MSKH , 0xF426
.set CS5ADL , 0xF428
.set CS5ADH , 0xF42A
.set CS5MSKL , 0xF42C
.set CS5MSKH , 0xF42E
.set CS6ADL , 0xF430
.set CS6ADH , 0xF432
.set CS6MSKL , 0xF434
.set CS6MSKH , 0xF436
.set UCSADL , 0xF438
.set UCSADH , 0xF43A
.set UCSMSKL , 0xF43C
.set UCSMSKH , 0xF43E
/* REFRESH CONTROL UNIT Registers */
.set RFSBAD , 0xF4A0
.set RFSCIR , 0xF4A2
.set RFSCON , 0xF4A4
.set RFSADD , 0xF4A6
/* POWER MANAGEMENT CONTROL Registers */
.set PWRCON , 0xF800
.set CLKPRS , 0xF804
/* DMA UNIT REGISTERS -- SLOT 15 ADDRESSES */
.set DMA0TAR , 0xF000
.set DMA0BYC , 0xF001
.set DMA1TAR , 0xF002
.set DMA1BYC , 0xF003
.set DMACMD1 , 0xF008
.set DMASTS , 0xF008
.set DMASRR , 0xF009
.set DMAMSK , 0xF00A
.set DMAMOD1 , 0xF00B
.set DMACLRBP , 0xF00C
.set DMACLR , 0xF00D
.set DMACLRMSK , 0xF00E
.set DMAGRPMSK , 0xF00F
.set DMA0REQL , 0xF010
.set DMA0REQH , 0xF011
.set DMA1REQL , 0xF012
.set DMA1REQH , 0xF013
.set DMABSR , 0xF018
.set DMACHR , 0xF019
.set DMAIS , 0xF019
.set DMACMD2 , 0xF01A
.set DMAMOD2 , 0xF01B
.set DMAIEN , 0xF01C
.set DMAOVFE , 0xF01D
.set DMACLRTC , 0xF01E
.set DMA1TARPL , 0xF083
.set DMA1TARPH , 0xF085
.set DMA0TARPH , 0xF086
.set DMA0TARPL , 0xF087
.set DMA0BYCH , 0xF098
.set DMA1BYCH , 0xF099
/* DMA UNIT REGISTERS -- SLOT 0 ADDRESSES */
.set DMA0TARDOS , 0x0000
.set DMA0BYCDOS , 0x0001
.set DMA1TARDOS , 0x0002
.set DMA1BYCDOS , 0x0003
.set DMACMD1DOS , 0x0008
.set DMASTSDOS , 0x0008
.set DMASRRDOS , 0x0009
.set DMAMSKDOS , 0x000A
.set DMAMOD1DOS , 0x000B
.set DMACLRBPDOS , 0x000C
.set DMACLRDOS , 0x000D
.set DMACLRMSKDOS , 0x000E
.set DMAGRPMSKDOS , 0x000F
.set DMA1TARPLDOS , 0x0083
.set DMA0TARPLDOS , 0x0087
/* A20GATE AND FAST CPU RESET -- SLOT 15 ADDRESS */
.set PORT92 , 0xF092
/* A20GATE AND FAST CPU RESET -- SLOT 0 ADDRESS */
.set PORT92DOS , 0x0092

View File

@@ -1,115 +0,0 @@
/* macros.inc
*
* This file assists the board independent startup code
* by initializing the chip-select channels to
* reflect the proper memory configuration.
*
* NOTE: No stack has been established when this routine
* is invoked. It returns to start.s through ldsegs
*
* Submitted by:
*
* Erik Ivanenko
* University of Toronto
* erik.ivanenko@utoronto.ca
*
* 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$
*/
.set GDT_CODE_PTR , 0x08
.set GDT_DATA_PTR , 0x10
.set BOARD_SELECT , 0x301
.set BOARD_DATA , 0x302
.set BOARD_LATCH , 0x303
#define SetExRegByte(_register,_value) \
movb $ ## _value, al; \
movw $ ## _register, dx; \
outb al, dx
#define SetExRegWord(_register,_value) \
movw $ ## _value, ax; \
movw $ ## _register, dx ; \
outw ax, dx
#define DESC2(lim_0_15, bas_0_15, bas_16_23, access, gran, bas_24_31) \
.word lim_0_15 ; \
.word bas_0_15 ; \
.byte bas_16_23 ; \
.byte access ; \
.byte gran ; \
.byte bas_24_31
#define DESC3( _base, _limit) \
.word _limit ; \
.long _base
/* THE GET_ACCESS IS CHANGED FROM 8E TO 9E */
#define INTERRUPT_GATE( _vector ) \
.word _vector ; \
.word GDT_CODE_PTR ; \
.byte 0x0 ; \
.byte 0x8E ; \
.word 0x0
#define rLOAD_INDEX( _selector, _segment_register) \
movl _selector , _segment_register ; \
addb al, ( eax )
#define rLOAD_SEGMENT( _reg, _segment_register) \
mov _reg , _segment_register ; \
/* #define rLOAD_SEGMENT( _reg, _segment_register) \
.code16 ; \
mov _reg , _segment_register ; \
.code32
*/
#define pLOAD_SEGMENT( _selector, _segment_register) \
movl $ ## _selector , eax ; .code16 ; \
mov ax, _segment_register ; .code32
/* #define MOVE_WORD( _immed32, _reg ) \
data16 ; \
movl _immed32, _reg
*/
#define MOVE_WORD( _immed32, _reg ) \
movw _immed32, _reg
/* #define MOVE_IMMED_WORD( _immed32, _reg ) \
data16 ; \
mov $ ## _immed32, _reg
#define CS_OFF( _cs_symbol, _reg ) \
data16 ; \
mov _cs_symbol, _reg ; \
data16 ;\
andl $0x000ffff, _reg
#define _16_NOPS \
nop ; \
nop ; \
nop ; \
nop ; \
nop ; \
nop ; \
nop ; \
nop ; \
nop ; \
nop ; \
nop ; \
nop ; \
nop ; \
nop ; \
nop ; \
nop ;
*/

View File

@@ -1,498 +0,0 @@
/*
* This file is the main boot and configuration file for the TS-1325. It is
* solely responsible for initializing the internal register set to reflect
* the proper board configuration. This version is modified from the i386ex
* BSP startup:
*
* 1) 1 MB RAM @ 0x0100000
* 2) 1 MB RAM @ 0x0 but with standard DOS memory usage.
* 3) Timer0 used as RTEMS clock ticker, 1 msec tick rate.
* 4) READY# is generated by CPU
*
* The file describes the ".initial" section, which contains:
* 1) device configuration code
* 2) interrupt descriptor table
* 3) global descriptor table
* 4) and initial boot code
*
* Modified by:
*
* Tony Ambardar
* University of British Columbia
* tonya@ece.ubc.ca
*
* 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 <rtems/asm.h>
#include "macros.inc"
#include "80386ex.inc"
#include "ts_1325.inc" /* controls for LED and button */
/*
* NEW_GAS Needed for binutils 2.9.1.0.7 and higher
*/
EXTERN (boot_card) /* exits to bspstart */
EXTERN (_DOS_seg_base) /* defined in startup/linkcmds */
EXTERN (Clock_exit)
PUBLIC (Interrupt_descriptor_table)
PUBLIC ( SYM(IDTR) )
PUBLIC (_Global_descriptor_table)
PUBLIC ( SYM(GDTR) )
PUBLIC( SYM(_init_i386ex) )
.section .initial, "ax"
/*
* Enable access to peripheral register at expanded I/O addresses
*/
SYM(_init_i386ex):
.code16
/*
LED_GREEN
WAIT_BUTTON
*/
# cli Move this up for now for debug.
movw $0x8000 , ax
outb al , $REMAPCFGH
xchg al , ah
outb al , $REMAPCFGL
outw ax , $REMAPCFG ;
/*
LED_OFF
WAIT_BUTTON
*/
/*
* Configure operation of the A20 Address Line
*/
SYM(A20):
movw $PORT92 , dx
inb dx , al # clear A20 port reset
andb $0xfe , al # b0 Fast Reset(0)=disabled,(1)=reset triggered
orb $0x02 , al # Bit 1 Fast A20 = 0 (always 0) else enabled.
outb al , dx
/*
LED_YELLOW
WAIT_BUTTON
*/
SYM(Watchdog):
movw $WDTSTATUS , dx # address the WDT status port
inb dx , al # get the WDT status
orb $0x01 , al # set the CLKDIS bit
outb al , dx # disable the clock to the WDT
/*
LED_GREEN
WAIT_BUTTON
*/
/*
* Initialize Refresh Control Unit for:
* Refresh Address = 0x0000
* Refresh gate between rows is 20.0 (???) uSec
* Using a CLK2 frequency of 50Mhz ( 25Mhz CPU )
* The refresh unit is enabled
* The refresh pin is not used.
*
* Different TS units might have different refresh intervals, so
* comment out. Will be set up anyway after booting to DOS.
*/
/*
SYM(InitRCU):
SetExRegWord( RFSCIR , 0x1F4) # refresh interval 500
SetExRegWord( RFSBAD , 0x0) # base address
SetExRegWord( RFSADD , 0x0) # address register
SetExRegWord( RFSCON , 0x8000) # enable bit
*/
/*
LED_OFF
WAIT_BUTTON
*/
/*
* Initialize clock and power mgmt unit for:
* Clock Frequency = 50 Mhz
* Prescaled clock output = 1 Mhz
* Normal halt instructions
*
* NOTE: Hope this doesn't change the COMCLK frequency
*/
SYM(InitClk):
SetExRegByte( PWRCON, 0x0 )
SetExRegWord( CLKPRS, 0x17) # 0x13 for 1.19318 MHz. 0x17 for 1MHz.
/**************************************************************
* Initialize the Pin Configurations
*************************************************************/
/*
LED_YELLOW
WAIT_BUTTON
*/
/*
* Initialize I/O port 1 for:
* PIN 0 = 0, Inport for external push-button switch
* PIN 1 = 1, RTS0# to package pin
* PIN 2 = 1, DTR0# to package pin
* PIN 3 = 1, DSR0# to package pin
* PIN 4 = 0, Inport ???
* PIN 5 = 0, Outport (Green LED, 1 = ON)
* PIN 6 = 0, Outport (Red LED, 1 = OFF)
* PIN 7 = 0, Inport ???
*/
SYM(InitPort1):
SetExRegByte( P1LTC , 0xd1 )
SetExRegByte( P1DIR , 0x91)
SetExRegByte( P1CFG , 0x0e)
/*
LED_GREEN
WAIT_BUTTON
*/
/*
* Initialize I/O port 2 for:
* PIN 0 = 0, Outport ???
* PIN 1 = 0, Outport ???
* PIN 2 = 0, Outport ???
* PIN 3 = 0, Outport ???
* PIN 4 = 0, Outport ???
* PIN 5 = 1, Int. periph, RXD0
* PIN 6 = 1, Int. periph, TXD0
* PIN 7 = 0, Outport ???
*/
SYM(InitPort2):
SetExRegByte( P2LTC , 0x1f )
SetExRegByte( P2DIR , 0x00 )
SetExRegByte( P2CFG , 0x60)
/*
LED_OFF
WAIT_BUTTON
*/
/*
* Initialize I/O port 3 P3CFG
* PIN 0 = 1, Int. periph, TMROUT0
* PIN 1 = 1, Int. periph, TMROUT1
* PIN 2 = 1, Int. periph, INT0 (IR1)
* PIN 3 = 1, Int. periph, INT1 (IR5)
* PIN 4 = 1, Int. periph, INT2 (IR6)
* PIN 5 = 1, Int. periph, INT2 (IR7)
* PIN 6 = 0, Outport ???
* PIN 7 = 1, Int. periph, COMCLK used for serial I/O
*/
SYM(InitPort3):
SetExRegByte( P3LTC , 0x00 )
SetExRegByte( P3DIR , 0xbf )
SetExRegByte( P3CFG , 0xbf ) # can check TMROUT0
/*
LED_YELLOW
WAIT_BUTTON
*/
/*
* Initialize Peripheral Pin Configurations:
* PIN 0 = 1, Select RTS1#
* PIN 1 = 1, Select DTR1#
* PIN 2 = 1, Select TXD1#
* PIN 3 = 1, Select CTS1#
* PIN 4 = 1, CS5
* PIN 5 = 1, Timer2 pins enabled
* PIN 6 = 0, Select CS6#
* PIN 7 = 0, Don't care
*/
SYM(InitPeriph):
SetExRegByte( PINCFG , 0x3f)
/*
LED_GREEN
WAIT_BUTTON
*/
/*
* Initialize the Asynchronous Serial Ports:
* BIT 7 = 1, Internal SIO1 modem signals
* BIT 6 = 1, Internal SIO0 modem signals
* BIT 2 = 0, PSCLK for SSIO clock
* BIT 1 = 1, SERCLK for SIO1 clock
* BIT 0 = 1, SERCLK for SIO0 clock
*/
SYM(InitSIO):
SetExRegByte( SIOCFG, 0x00 ) # COMCLK -> baud-rate generator
# modem signals -> package pins
SetExRegByte( LCR0, 0x80 ) # latch DLL0, DLH0
SetExRegByte( DLL0, 0x01 ) # 0x0C sets to 9600 baud 0x6 = 19.2K
SetExRegByte( DLH0, 0x00 ) # 0x4 is 28.8K baud, 0x1 is 115K baud
SetExRegByte( LCR0, 0x03 ) # enable r/w buffers, IER0 accessible
# mode 8-n-1
SetExRegByte( IER0, 0x00 ) # no generated interrupts
SetExRegByte( LCR1, 0x80 ) # latch DLL0, DLH0
SetExRegByte( DLL1, 0x01 ) # 0x0C set to 9600 baud, 0x6 = 19.2K
SetExRegByte( DLH1, 0x00 ) # 0x4 is 28.8K baud
SetExRegByte( LCR1, 0x03 ) # enable r/w buffers, IER1 accessible
# reg 8-n-1
SetExRegByte( IER1, 0x00 ) # no generated intrrupts
/*
LED_OFF
WAIT_BUTTON
*/
SYM(InitMCR):
SetExRegByte( MCR0, 0x03 ) # standard mode, RTS,DTR activated
SetExRegByte( MCR1, 0x03 ) # standard mode, RTS,DTR activated
/*
* Initialize Timer for:
* BIT 7 = 1, Timer clocks disabled
* BIT 6 = 0, Reserved
* BIT 5 = 1, TMRCLK2 instead of Vcc to Gate2
* BIT 4 = 0, PSCLK to CLK2
* BIT 3 = 1, TMRCLK1 instead of Vcc to Gate1
* BIT 2 = 0, PSCLK to Gate1
* BIT 1 = 0, Vcc to Gate0
* BIT 0 = 0, PSCLK to Gate0
*/
/*
LED_YELLOW
WAIT_BUTTON
*/
SYM(InitTimer):
SetExRegByte(TMRCFG , 0x80 ) # All counters disabled, Gates 0,1
# and 2 are set to Vcc
SetExRegByte(TMRCON , 0x34 ) # prepare to write counter 0 LSB,MSB
SetExRegByte(TMR0 , 0x00 ) # sfa
SetExRegByte(TMR0 , 0x00 ) # sfa
SetExRegByte(TMRCON , 0x70 ) # mode 0 disables on Gate= Vcc
SetExRegByte(TMR1 , 0x00 ) # sfa
SetExRegByte(TMR1 , 0x00 ) # sfa
SetExRegByte(TMRCON , 0xB0 ) # mode 0 disables on gate =Vcc
SetExRegByte(TMR2 , 0x00 ) #
SetExRegByte(TMR2 , 0x00 ) #
/*
LED_GREEN
WAIT_BUTTON
*/
/*
* Initialize the DMACFG register for:
* BIT 7 = 1 , Disable DACK#1
* BITs 6:4 = 100, TMROUT2 connected to DRQ1
* BIT 3 = 1 , Disable DACK0#
* BIT 2:0 = 000, Pin is connected to DRQ0
*
* NOTE: not 100% sure of this...
*/
SetExRegByte(DMACFG , 0xC0 )
SetExRegByte(DMACMD1, 0x00 ) # disable both DMA channels
SetExRegByte(DMAMOD1, 0x40 ) # DMA0 single transer mode
/*
LED_OFF
WAIT_BUTTON
*/
/*
* Initialize the INTCFG register for:
* BIT 7 = 0, 8259 cascade disabled
* BIT 3 = 0, SLAVE IR6 connected to Vss
* BIT 2 = 0, SLAVE IR5 connected to Vss
* BIT 1 = 0, SLAVE IR1 connected to SSIOINT
* BIT 0 = 0, SLAVE IR0 connected to Vss
*
* NOTE: not 100% sure of this either... Why IR5 active?
*/
SYM(InitInt):
cli # !
/*
LED_YELLOW
WAIT_BUTTON
*/
SetExRegByte(ICW1S , 0x11 ) # EDGE TRIGGERED
SetExRegByte(ICW2S , 0x28 ) # Slave base vector after Master
SetExRegByte(ICW3S , 0x02 ) # slave cascaded to IR2 on master
SetExRegByte(ICW4S , 0x01 ) # fully nested mode, no EOI
SetExRegByte(ICW1M , 0x11 ) # edge triggered
SetExRegByte(ICW2M , 0x20 ) # base vector starts at byte 32
SetExRegByte(ICW3M , 0x04) # internal slave cascaded from master IR2
SetExRegByte(ICW4M , 0x01 ) # idem
SetExRegByte(OCW1M , 0xfb ) # mask master IRQs, but not IR2 (cascade)
SetExRegByte(OCW1S , 0xff ) # mask all slave IRQs
SetExRegByte(INTCFG , 0x00 ) # slave IRs -> Vss or SSIOINT
/* The i8259s_cache (IRQ mask) location is in BSS, which is zeroed later!
* So to initialize the cache we should do the following command after
* the BSS is zeroed, and in 32-bit protected mode.
*
* movw $0xFFFB, SYM(i8259s_cache)
*
*/
/*
NOTE: not sure about this so comment out...
SYM(SetCS4):
SetExRegWord(CS4ADL , 0x702) #Configure chip select 4
SetExRegWord(CS4ADH , 0x00)
SetExRegWord(CS4MSKH, 0x03F)
SetExRegWord(CS4MSKL, 0xFC01)
*/
/*
LED_GREEN
WAIT_BUTTON
*/
/*****************************
* Load the Global Descriptor
* Table Register
****************************/
movl $SYM(GDTR), eax
andl $0xFFFF, eax
#ifdef NEW_GAS
addr32
data32
#endif
#if 0
lgdt (eax) # location of GDT in segment
#endif
lgdt SYM(GDTR) # location of GDT
/*
NOTE: not sure about this either so comment out for now...
SYM(SetUCS):
SetExRegWord(UCSADL, 0xC503) # values taken from TS-1325 memory
SetExRegWord(UCSADH, 0x000D)
SetExRegWord(UCSMSKH, 0x0000)
SetExRegWord(UCSMSKL, 0x3C01) # configure upper chip select
*/
/*
LED_OFF
WAIT_BUTTON
*/
/***************************
* Switch to Protected Mode
***************************/
mov cr0, eax
orw $0x1, ax
mov eax, cr0
/**************************
* Flush prefetch queue,
* and load CS selector
*********************/
/*
LED_YELLOW
WAIT_BUTTON
*/
ljmpl $ GDT_CODE_PTR , $ SYM(_load_segment_registers) # sets the code selector
/*
* Load the segment registers
*/
SYM(_load_segment_registers):
.code32
/*
LED_GREEN
WAIT_BUTTON
*/
pLOAD_SEGMENT( GDT_DATA_PTR, fs)
pLOAD_SEGMENT( GDT_DATA_PTR, gs)
pLOAD_SEGMENT( GDT_DATA_PTR, ss)
pLOAD_SEGMENT( GDT_DATA_PTR, ds)
pLOAD_SEGMENT( GDT_DATA_PTR, es)
/*
* Set up the stack
*/
/*
LED_OFF
WAIT_BUTTON
*/
SYM(lidtr):
lidt SYM(IDTR)
/*
LED_YELLOW
WAIT_BUTTON
*/
SYM (_establish_stack):
movl $_ebss, eax # stack starts right after bss
movl $stack_origin, esp # this is the high starting address
movl $stack_origin, ebp
/*
LED_GREEN
WAIT_BUTTON
*/
/*
* Zero out the BSS segment
*/
SYM (zero_bss):
cld # make direction flag count up
movl $ SYM (_ebss),ecx # find end of .bss
movl $ SYM (_bss_start),edi # edi = beginning of .bss
subl edi,ecx # ecx = size of .bss in bytes
shrl ecx # size of .bss in longs
shrl ecx
xorl eax,eax # value to clear out memory
repne # while ecx != 0
stosl # clear a long in the bss
/*
* Now we can initialize the IRQ mask in i8259s_cache
*/
movw $0xFFFB, SYM(i8259s_cache)
/*
LED_YELLOW # Indicate ready to run
WAIT_BUTTON
*/
LED_GREEN # Indicate RTEMS running!
/*
* Transfer control to User's Board Support Package
*/
pushl $0 # command line
call SYM(boot_card)
addl $4,esp
LED_RED # Indicate RTEMS exited
/*
WAIT_BUTTON
*/
cli # stops interrupts after hlt!
hlt # shutdown
.balign 4 # align tables to 4 byte boundary
SYM(IDTR): DESC3( SYM(Interrupt_descriptor_table), 0x07ff );
SYM(Interrupt_descriptor_table): /* Now in data section */
.rept 256
.word 0,0,0,0
.endr
/*
* Use the first (null) entry in the the GDT as a self-pointer for the GDTR.
* (looks like a common trick)
*/
SYM (_Global_descriptor_table):
SYM(GDTR): DESC3( GDTR, 0x17 ); # one less than the size
.word 0 # padding to DESC2 size
SYM(GDT_CODE): DESC2(0xffff,0,0x0,0x9B,0xDF,0x00);
SYM(GDT_DATA): DESC2(0xffff,0,0x0,0x92,0xDF,0x00); # was CF
SYM(GDT_END):
END

View File

@@ -1,50 +0,0 @@
/*
These are just some useful macros that control the TS-1325's
LEDs and push-button switch. Useful for debugging.
NOTE: This *must* be 16-bit compatible code to work in start.s
Tony Ambardar
*/
.macro LED_OFF
movw $P1LTC, dx
inb dx, al
orb $0b01000000, al
andb $0b11011111, al
outb al, dx
.endm
.macro LED_GREEN
movw $P1LTC, dx
inb dx, al
orb $0b01100000, al
outb al, dx
.endm
.macro LED_YELLOW
movw $P1LTC, dx
inb dx, al
orb $0b00100000, al
andb $0b10111111, al
outb al, dx
.endm
.macro LED_RED
movw $P1LTC, dx
inb dx, al
andb $0b10011111, al
outb al, dx
.endm
.macro WAIT_BUTTON # Wait till the button is pressed for a bit.
movw $P1PIN, dx # ~25-30 cycles per loop, 25MHz -> 1 sec.
movl $300000,ecx # "Timer" count determines how long.
0: inb dx, al
andb $0b00000001,al
jnz 0b # Button pressed?
decl ecx
jnz 0b # CX count expired?
.endm

View File

@@ -1,17 +0,0 @@
#
# $Id$
#
The requirements for this BSP are only that the GAS used supports the
.code16 directive. The GAS released with any GCC version 2.8.0 or better
is required. The BSP was built with an egcs snapshot pre-1.0.2 and
post-1.0.1. However, any egcs should work.
The only "real" differences are in bspstart.c, where the initialization now
configures all available RAM, (after setting up the Workspaces) as heap.
The location of the stack was changed so that the heap was not trapped
between low memory and the stack; the stack comes before the heap.

View File

@@ -1,44 +0,0 @@
/*
* This routine starts the application. It includes application,
* board, and monitor specific initialization and configuration.
* The generic CPU dependent initialization has been performed
* before this routine is invoked.
*
* COPYRIGHT (c) 1989-2008.
* 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.
*
* Ported to the i386ex and submitted by:
*
* Erik Ivanenko
* University of Toronto
* erik.ivanenko@utoronto.ca
*
* $Id$
*/
#include <bsp.h>
extern void rtems_irq_mngt_init(void);
/*
* bsp_start
*
* This routine does the bulk of the system initialization.
*/
void bsp_start( void )
{
/*
* Init rtems_interrupt_management
*/
rtems_irq_mngt_init();
/*
* Init rtems exceptions management
*/
rtems_exception_init_mngt();
}

View File

@@ -1,220 +0,0 @@
/*
* This file contains directives for the GNU linker which are specific
* to the Technologic Systems TS-1325 (i386ex) board.
*
* Copyright (c) 1989-1998.
* 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$
*
* Memory layout:
*
* 0x0008000 -> ... : initial section ( init 386ex, goto protected mode)
* ... -> ... : text section ( executable code )
* ... -> 0x00A0000 : data section ( initialized storage )
* 0x0100000 -> 0x0200000 : bss section, stack space, heap storage
*/
RamBase = DEFINED(RamBase) ? RamBase : 0x00100000;
RamSize = DEFINED(RamSize) ? RamSize : 512K;
HeapSize = DEFINED(HeapSize) ? HeapSize : 0x0;
ENTRY(_init_i386ex);
SECTIONS
{
/***************************************************************************
* initial section:
*
* This subsection of ".text" is the first in memory, and executed by the DOS
* loader. It initializes the i386ex, sets up the gdt in RAM, loads the gdt,
* jumps to protected mode, loads the idt, zeros the bss section, sets up
* the stack and calls the rest of the RTEMS initialization.
***************************************************************************/
_DOS_ld_addr = 0x0008000 ;
/***************************************************************************
* text section:
*
* Nobody here but us opcodes.
***************************************************************************/
.text _DOS_ld_addr :
{
CREATE_OBJECT_SYMBOLS
text_start = . ;
_text_start = . ;
*(.initial);
. = ALIGN(0x20);
*(.text );
. = ALIGN (0x20);
/*
* Special FreeBSD sysctl sections.
*/
. = ALIGN (16);
__start_set_sysctl_set = .;
*(set_sysctl_*);
__stop_set_sysctl_set = ABSOLUTE(.);
*(set_domain_*);
*(set_pseudo_*);
*(.eh_frame)
. = ALIGN (0x20);
*(.gnu.linkonce.t*)
. = ALIGN(0x20);
/*
* C++ constructors
*/
__CTOR_LIST__ = .;
LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2)
*(.ctors)
LONG(0)
__CTOR_END__ = .;
. = ALIGN (4) ;
__DTOR_LIST__ = .;
LONG((__DTOR_END__ - __DTOR_LIST__) / 4 - 2)
*(.dtors)
LONG(0)
__DTOR_END__ = .;
_rodata_start = . ;
*(.rodata*)
. = ALIGN(0x20);
_erodata = .;
*(.gnu.linkonce.r*)
. = ALIGN(0x20);
_endtext = . ;
}
/***************************************************************************
* ctor/dtor sections:
*
* These sections house the global constructors and destructors.
***************************************************************************/
.init BLOCK(0x20) :
{
*(.init)
} = 0x9090
.fini BLOCK(0x20) :
{
*(.fini)
} = 0x9090
/***************************************************************************
* data section:
*
* This section defines the location of the data section in RAM.
***************************************************************************/
.data BLOCK(0x20) :
{
_sdata = .;
*(.data);
. = ALIGN(0x20);
*(.gnu.linkonce.d*)
. = ALIGN(0x20);
*(.gcc_except_table*)
. = ALIGN(0x20);
_edata = .;
}
_data_size = _edata - _sdata ;
/***************************************************************************
* bss section:
*
* The bss section is the first section in extended RAM ( > 1MB).
***************************************************************************/
.bss 0x100000 (NOLOAD) :
{
_bss_start = .;
*(.bss);
*(COMMON);
_ebss = ALIGN(0x20);
}
_bss_size = _ebss - _bss_start ;
/***************************************************************************
* discard section:
*
* This section is used to throw away stuff we don't want.
***************************************************************************/
/DISCARD/ :
{
*(.comment);
*(.note);
}
/***************************************************************************
* General variables:
*
* The stack_size variable is customizable here. The heap is located directly
* after the stack in RAM. A routine within bspstart.c uses these variables
* to ensure that the heap used by RTEMS is as large as the RAM remaining
* after all workspace configurations are complete.
***************************************************************************/
stack_size = 0x8000 ;
stack_origin = _ebss + stack_size ;
heap_bottom = stack_origin + 4 ;
. = ALIGN(0x10);
WorkAreaBase = .;
/* 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 . */
}

View File

@@ -1,174 +0,0 @@
/*
* 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 <rtems.h>
#include <bsp.h>
#include <rtems/btimer.h>
#include <stdlib.h>
volatile uint32_t Ttimer_val; /* Updated from ISR!!! */
bool benchmark_timer_find_average_overhead;
extern void timerisr(void);
/*
* Number of us per timer interrupt. Note: 1 us == 1 tick.
*/
#define US_PER_ISR 250
void TimerOn(const rtems_raw_irq_connect_data* used)
{
Ttimer_val = 0; /* clear timer ISR count */
/* Select timer, stay in mode 0 */
outport_byte (TIMER_MODE, TIMER_SEL0|TIMER_16BIT|TIMER_RATEGEN);
/* Set to 250 usec interval */
outport_byte (TIMER_CNTR0, US_PER_ISR & 0xFF );
outport_byte (TIMER_CNTR0, (US_PER_ISR >> 8) & 0xFF );
/* Enable all timers */
outport_byte (TIMER_CONFIG, 0x00);
/*
* enable interrrupt at i8259 level
*/
BSP_irq_enable_at_i8259s(used->idtIndex - BSP_IRQ_VECTOR_BASE);
}
static int TimerIsOn (const rtems_raw_irq_connect_data *used)
{
return BSP_irq_enabled_at_i8259s(used->idtIndex - BSP_IRQ_VECTOR_BASE);
}
void TimerOff(const rtems_raw_irq_connect_data* used)
{
/* Disable all timers */
outport_byte (TIMER_CONFIG, 0x80);
/*
* disable interrrupt at i8259 level
*/
BSP_irq_disable_at_i8259s(used->idtIndex - BSP_IRQ_VECTOR_BASE);
/* reset timer mode to standard (DOS) value */
}
static rtems_raw_irq_connect_data timer_raw_irq_data = {
BSP_PERIODIC_TIMER + BSP_IRQ_VECTOR_BASE,
timerisr,
TimerOn,
TimerOff,
TimerIsOn
};
static rtems_raw_irq_connect_data old_raw_irq_data = {
BSP_PERIODIC_TIMER + BSP_IRQ_VECTOR_BASE,
};
void Timer_exit(void)
{
if (!i386_delete_idt_entry(&timer_raw_irq_data)) {
printk("Timer_exit:Timer raw handler removal failed\n");
rtems_fatal_error_occurred(1);
}
}
void benchmark_timer_initialize(void)
{
static bool First = true;
if (First)
{
First = false;
if (!i386_get_current_idt_entry (&old_raw_irq_data)) {
printk("benchmark_timer_initialize: failed to get old raw irq entry.\n");
rtems_fatal_error_occurred(1);
}
if (!i386_delete_idt_entry (&old_raw_irq_data)) {
printk("benchmark_timer_initialize: failed to delete old raw irq entry.\n");
rtems_fatal_error_occurred(1);
}
atexit(Timer_exit); /* Try not to hose the system at exit. */
if (!i386_set_idt_entry (&timer_raw_irq_data)) {
printk("benchmark_timer_initialize: raw handler installation failed.\n");
rtems_fatal_error_occurred(1);
}
}
/* wait for ISR to be called at least once */
Ttimer_val = 0;
while (Ttimer_val == 0)
continue;
Ttimer_val = 0;
}
#define AVG_OVERHEAD 3 /* It typically takes 3.0 microseconds */
/* (3 ticks) to start/stop the timer. */
#define LEAST_VALID 4 /* Don't trust a value lower than this */
uint32_t benchmark_timer_read(void)
{
register uint32_t clicks, total;
register uint8_t lsb, msb;
/* latch the count */
outport_byte (TIMER_MODE, TIMER_SEL0|TIMER_LATCH );
/* read the count */
inport_byte (TIMER_CNTR0, lsb );
inport_byte (TIMER_CNTR0, msb );
/*
* Timer ISR increments Ttimer_val every US_PER_ISR clock ticks,
* where 1 tick == 1 us. Below, 'click' is in microseconds.
*
* This assumes the timer input clocks are sourced from the system's
* prescaled clock (PSCLK), which is set to be at 1MHz.
*/
clicks = (msb << 8) | lsb;
total = Ttimer_val * US_PER_ISR + (US_PER_ISR - clicks);
if ( benchmark_timer_find_average_overhead == true )
return total; /* in one microsecond units */
else if ( total < LEAST_VALID )
return 0; /* below timer resolution */
else
return (total - AVG_OVERHEAD);
}
void benchmark_timer_disable_subtracting_average_overhead(
bool find_flag
)
{
benchmark_timer_find_average_overhead = find_flag;
}
/*
* Wait_X_ms: a delay loop used by the network driver...
*/
#define SLOW_DOWN_IO 0x80 /* I/O port which does nothing */
#define LOOP1MS 320 /* Just a guess.... */
void Wait_X_ms (unsigned timeToWait)
{
unsigned i, j;
for (j=0; j<timeToWait; j++)
for (i=0; i<LOOP1MS; i++)
outport_byte (SLOW_DOWN_IO, 0);
}

View File

@@ -1,39 +0,0 @@
/* timer_isr()
*
* This routine provides the ISR for the Z8036 timer on the MVME136
* board. The timer is set up to generate an interrupt at maximum
* intervals.
*
* Input parameters: NONE
*
* Output parameters: NONE
*
* COPYRIGHT (c) 1989-1999.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
* http://www.rtems.com/license/LICENSE.
*
* $Id$
*/
#include <rtems/asm.h>
BEGIN_CODE
EXTERN (Ttimer_val)
PUBLIC (timerisr)
SYM (timerisr):
incl SYM (Ttimer_val) # add another tick
pushl eax
movb 0xa0,al /* signal generic End Of Interrupt (EOI) to slave PIC */
outb al, $0x20
movb $0x20, al
outb al, $0x20 /* signal generic EOI to Master PIC */
popl eax
iret
END_CODE
END

View File

@@ -1,8 +0,0 @@
aclocal.m4
autom4te*.cache
config.cache
config.log
config.status
configure
Makefile
Makefile.in

View File

@@ -1,151 +0,0 @@
2011-02-25 Ralf Corsépius <ralf.corsepius@rtems.org>
* configure.ac: Remove RTEMS_CANONICAL_TARGET_CPU.
2011-02-02 Ralf Corsépius <ralf.corsepius@rtems.org>
* configure.ac: Require autoconf-2.68, automake-1.11.1.
2007-08-02 Joel Sherrill <joel.sherrill@OARcorp.com>
* debug_ada/cmds, debug_c/cmds: Remove RDBG.
2006-12-02 Ralf Corsépius <ralf.corsepius@rtems.org>
* configure.ac: New BUG-REPORT address.
2006-10-17 Ralf Corsépius <ralf.corsepius@rtems.org>
* configure.ac: Require autoconf-2.60. Require automake-1.10.
2006-10-15 Ralf Corsepius <ralf.corsepius@rtems.org>
* network_ada/adasockets/AUTHORS,
network_ada/adasockets/sockets-link.ads,
network_ada/adasockets/sockets-multicast.adb,
network_ada/adasockets/sockets-multicast.ads,
network_ada/adasockets/sockets-utils.adb,
network_ada/adasockets/sockets-utils.ads,
network_ada/adasockets/sockets.adb,
network_ada/adasockets/sockets.ads,
network_ada/listener/listener.adb,
network_ada/tcprelay/tcprelay.adb: Convert to utf-8.
2004-09-24 Ralf Corsepius <ralf_corsepius@rtems.org>
* configure.ac: Require automake > 1.9.
2004-01-30 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* Makefile.am: Merge-in debug_ada/Makefile.am, debug_c/Makefile.am,
dos_sup/Makefile.am, network_ada/adasockets/Makefile.am,
network_ada/Makefile.am, network_ada/listener/Makefile.am,
network_ada/tcprelay/Makefile.am, ts_1325_ada/Makefile.am. Use automake
compilation rules.
* debug_ada/Makefile.am, debug_c/Makefile.am, dos_sup/Makefile.am,
network_ada/adasockets/Makefile.am, network_ada/Makefile.am,
network_ada/listener/Makefile.am, network_ada/tcprelay/Makefile.am,
ts_1325_ada/Makefile.am: Remove.
* configure.ac: Reflect changes above.
2003-12-12 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* configure.ac: Require automake >= 1.8, autoconf >= 2.59.
2003-12-04 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* Makefile.am: Cosmetics.
* debug_ada/Makefile.am: Cosmetics.
* debug_c/Makefile.am: Cosmetics.
* dos_sup/Makefile.am: Cosmetics.
* network_ada/Makefile.am: Cosmetics.
* network_ada/adasockets/Makefile.am: Cosmetics.
* network_ada/listener/Makefile.am: Cosmetics.
* network_ada/tcprelay/Makefile.am: Cosmetics.
* ts_1325_ada/Makefile.am: Cosmetics.
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/.
* debug_ada/Makefile.am: Reflect having moved automake/.
* debug_c/Makefile.am: Reflect having moved automake/.
* dos_sup/Makefile.am: Reflect having moved automake/.
* network_ada/Makefile.am: Reflect having moved automake/.
* network_ada/adasockets/Makefile.am: Reflect having moved automake/.
* network_ada/listener/Makefile.am: Reflect having moved automake/.
* network_ada/tcprelay/Makefile.am: Reflect having moved automake/.
* ts_1325_ada/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-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).
2002-11-19 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* configure.ac: Remove duplicate
AC_CONFIG_FILES(ts_1325_ada/Makefile).
2002-10-21 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* .cvsignore: Reformat.
Add autom4te*cache.
Remove autom4te.cache.
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]).
* debug_ada/Makefile.am: Remove AUTOMAKE_OPTIONS.
* Makefile.am: Remove AUTOMAKE_OPTIONS.
* debug_c/Makefile.am: Remove AUTOMAKE_OPTIONS.
* dos_sup/Makefile.am: Remove AUTOMAKE_OPTIONS.
* network_ada/adasockets/Makefile.am: Remove AUTOMAKE_OPTIONS.
* network_ada/Makefile.am: Remove AUTOMAKE_OPTIONS.
* network_ada/listener/Makefile.am: Remove AUTOMAKE_OPTIONS.
* network_ada/tcprelay/Makefile.am: Remove AUTOMAKE_OPTIONS.
* ts_1325_ada/Makefile.am: Remove AUTOMAKE_OPTIONS.
2001-10-12 Joel Sherrill <joel@OARcorp.com>
* debug_ada/init.c, network_ada/listener/init.c,
network_ada/tcprelay/init.c, ts_1325_ada/init.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.
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-10-27 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* configure.in, Makefile.am: ACLOCAL_AMFLAGS= -I $(RTEMS_TOPdir)/macros.
Switch to GNU canonicalization.
2000-08-10 Joel Sherrill <joel@OARcorp.com>
* ChangeLog: New file.

View File

@@ -1,51 +0,0 @@
##
## $Id$
##
ACLOCAL_AMFLAGS = -I ../../../../../aclocal
dist_noinst_SCRIPTS = coff2bin elf2exe
EXTRA_DIST = README
EXTRA_DIST += debug_ada/Makefile.ts_386ex debug_ada/cmds debug_ada/ddd-rtems \
debug_ada/debug.adb debug_ada/init.c debug_ada/serial_debug.adb \
debug_ada/serial_debug.ads
EXTRA_DIST += debug_c/cmds debug_c/ddd-rtems debug_c/debug_test.c \
debug_c/init.c debug_c/serial_gdb.c debug_c/serial_gdb.h \
debug_c/system.h
EXTRA_DIST += dos_sup/loader.com dos_sup/loader_hybrid_com.asm \
dos_sup/ts1325.inc
EXTRA_DIST += network_ada/adasockets/AUTHORS network_ada/adasockets/COPYING \
network_ada/adasockets/NEWS network_ada/adasockets/README \
network_ada/adasockets/sockets-constants.ads \
network_ada/adasockets/sockets-link.ads \
network_ada/adasockets/sockets-multicast.adb \
network_ada/adasockets/sockets-multicast.ads \
network_ada/adasockets/sockets-naming.adb \
network_ada/adasockets/sockets-naming.ads \
network_ada/adasockets/sockets-thin.ads \
network_ada/adasockets/sockets-utils.adb \
network_ada/adasockets/sockets-utils.ads \
network_ada/adasockets/sockets.adb network_ada/adasockets/sockets.ads
EXTRA_DIST += network_ada/README network_ada/networkconfig.h
EXTRA_DIST += network_ada/listener/Makefile.ts_386ex \
network_ada/listener/init.c network_ada/listener/listener.adb
EXTRA_DIST += network_ada/tcprelay/Makefile.ts_386ex \
network_ada/tcprelay/init.c network_ada/tcprelay/print_error.c \
network_ada/tcprelay/tcprelay.adb
EXTRA_DIST += ts_1325_ada/Makefile.ts_386ex ts_1325_ada/README \
ts_1325_ada/i386_ports.adb ts_1325_ada/i386_ports.ads ts_1325_ada/init.c \
ts_1325_ada/ts1325-button.adb ts_1325_ada/ts1325-button.ads \
ts_1325_ada/ts1325-led.adb ts_1325_ada/ts1325-led.ads \
ts_1325_ada/ts1325-parallel.adb ts_1325_ada/ts1325-parallel.ads \
ts_1325_ada/ts1325.ads ts_1325_ada/ts1325_test.adb
include $(top_srcdir)/../../../../../automake/host.am

View File

@@ -1,113 +0,0 @@
This directory contains various support software for using RTEMS on
the TS-1325. Descriptions follow.
DOS Loader
==========
The dos_sup directory contains a DOS-based loader (loader.com) for
RTEMS executables on the TS-1325. Fully commented source code is
included.
Once an application has been compiled and the resulting ELF format
executable converted to raw binary format and transferred to the
TS-1325, the DOS loader program must be used to load and execute
it. The loader is simply invoked as "loader filename", where the
filename cannot contain an explicit path.
The loader will work with files stored either on the C: ram disk or
the A: flash disk. Since Zmodem transfers to the C: ram disk are much
faster than to the A: disk, most development work will be done using
the C: disk. Once completed, an application may copied to the
(non-volatile) A: disk. Additionally, one may add the line "loader
filename" to the AUTOEXEC.BAT file, allowing the application to be
run automatically at boot time.
Note that the DOS loader will abort and exit if it detects that the
push-button switch is pressed, thus allowing one to break out of a
pathological "boot loop" situation i.e. abort an automatic load from
the AUTOEXEC.BAT file.
elf2exe
========
The elf2exe script is just a convenient wrapper for the objcopy
command. It can convert a list of RTEMS-generated ELF files to raw
binary images that can be loaded on the TS-1325. The converted files
are saved in the current directory with a ".exe" extension.
TS-1325 Ada95 Support
=====================
The TS-1325 includes a few peripherals which are very useful for
embedded development: a push-button switch, an LED, and a parallel
port which may be used for digital I/O. Note that the pin-out for the
parallel port is given in the TS-1325 manual.
These devices are all supported by Ada packages allowing easy access;
they may be found in the ts_1325_ada directory. Doing a make command
here will build a program that tests and exercises all these support
packages. Plugging in some kind of parallel-port "loop-back" connector
would be useful during this test.
Brief descriptions of the main packages are as follows:
* ts1325-button: allows one to check or wait for a button press.
* ts1325-led: allows safe reading and setting of the LED colour.
* ts1325-parallel: used to read and write byte date to the parallel
port.
* i386_ports: code to access the I/O address space, using Ada
inline assembly.
Serial Debugging Support
========================
RTEMS supports an Ada95 and RTEMS aware version of the GNU gdb
debugger, which can be configured to debug targets over a serial
line.
The port COM2 on the TS-1325 is normally used for console I/O, leaving
COM1 for use by gdb; an appropriate cable should be connected from the
development host to the TS-1325's COM1. The serial port used on the host
should match the line "target remote /dev/tty??" in the "cmds" file.
Sample C and Ada95 applications showing how to add debugging support
are given in the debug_c and debug_ada sub-directories. Once the
debugging-enabled executable is running on the TS-1325, gdb must be
started on the Linux host, taking as argument the RTEMS ELF executable.
Using a graphical front end to gdb such as the program ddd is highly
recommended. The script ddd-rtems shows how to invoke gdb using ddd as
a front end.
Ada95 Networking Support
========================
The sub-directory network_ada contains code and examples for an Ada95
binding to BSD network sockets. The code is based on Samuel Tardieu's
adasockets-0.1.3 package, but has been modified to work under RTEMS.
The binding itself is in the adasockets sub-directory. Edit the
Makefile to reflect your choice of installation directory, then type
the command "make install" to compile and install the binding. The
file networkconfig.h should also be edited according to the RTEMS
networking document.
The directories listener and tcprelay contain networking examples that
use the binding. The listener application simply accepts connections
on a certain port and echoes back any received data. The tcprelay
program accepts connections on a port and then relays all subsequent
data to and from another remote host. The makefiles in both
directories should be edited to reflect the installation point of the
adasockets binding.
Tony Ambardar, 8/8/99

View File

@@ -1,23 +0,0 @@
#!/bin/sh
# Just a Q&D prog to convert a bunch of RTEMS generated COFF files to raw
# binary images that can be loaded on the TS-1325. The converted files are
# saved in the current directory.
#
# Tony Ambardar
OBJCOPY=/usr/local/rtems/bin/i386-rtems-objcopy
if [ $# = 0 ]
then
echo "Description: Convert RTEMS coff files to raw binary files."
echo "Usage: coff2bin <list-of-coff-files>"
echo
exit 1
fi
for i in $*
do
OUTFILE=$(basename `echo $i | sed 's/\.[a-zA-Z0-9]*$//g'`.bin)
$OBJCOPY -O binary $i $OUTFILE
done

View File

@@ -1,18 +0,0 @@
## Process this file with autoconf to produce a configure script.
##
## $Id$
AC_PREREQ([2.68])
AC_INIT([rtems-c-src-lib-libbsp-i386-ts_386ex-tools],[_RTEMS_VERSION],[http://www.rtems.org/bugzilla])
AC_CONFIG_SRCDIR([coff2bin])
RTEMS_TOP(../../../../../../..)
AM_INIT_AUTOMAKE([no-define foreign 1.11.1])
AM_MAINTAINER_MODE
RTEMS_PROJECT_ROOT
RTEMS_TOOLPATHS
# Explicitly list all Makefiles here
AC_CONFIG_FILES([Makefile])
AC_OUTPUT

View File

@@ -1,42 +0,0 @@
#
# Makefile for debug example
#
MAIN=debug
# Tool paths
tooldir=/usr/local/rtems
rtemsdir=${tooldir}/ts_386ex
# Tool names
GCC=${tooldir}/bin/i386-rtemself-gcc
GNATMAKE=${tooldir}/bin/i386-rtemself-gnatmake
SIZE=${tooldir}/bin/i386-rtemself-size
SIS=${tooldir}/bin/sis
GDB=${tooldir}/bin/sis-gdb
CINCLUDES=
AINCLUDES=-i -I../ts_1325_ada
CARGS=-B${rtemsdir}/lib/ -specs bsp_specs -qrtems \
-msoft-float -mno-fp-ret-in-387
all: init.o
$(GNATMAKE) -O2 -g -gnata -gnatE -gnato -gnatn $(AINCLUDES) $(MAIN) \
-bargs -r \
-cargs $(CARGS) \
-largs $(CARGS) init.o
$(SIZE) $(MAIN)
init.o: init.c
$(GCC) -O2 -g -Wall -ansi -fasm $(CARGS) $(CINCLUDES) -c init.c
run:
$(SIS) $(MAIN)
gdb:
$(GDB) $(MAIN)
clean:
rm -f b_$(MAIN).c b_$(MAIN).o *.o *.ali $(MAIN)

View File

@@ -1,290 +0,0 @@
dir /usr/local/rtems/tools/rtems-19990709/c/src/
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/sapi
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/sapi/src
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/sapi/include
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/sapi/include/wrap
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/sapi/include/rtems
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/sapi/inline
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/sapi/inline/rtems
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/sapi/macros
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/sapi/macros/rtems
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/sapi/optman
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/posix
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/posix/src
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/posix/include
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/posix/include/sys
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/posix/include/rtems
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/posix/include/rtems/posix
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/posix/include/wrap
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/posix/inline
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/posix/inline/rtems
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/posix/inline/rtems/posix
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/posix/macros
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/posix/macros/rtems
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/posix/macros/rtems/posix
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/posix/optman
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/rtems
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/rtems/src
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/rtems/include
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/rtems/include/wrap
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/rtems/include/rtems
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/rtems/include/rtems/rtems
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/rtems/inline
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/rtems/inline/rtems
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/rtems/inline/rtems/rtems
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/rtems/macros
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/rtems/macros/rtems
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/rtems/macros/rtems/rtems
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/rtems/optman
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/score
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/score/cpu
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/score/cpu/i386
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/score/cpu/i386/wrap
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/score/cpu/i386/rtems
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/score/cpu/i386/rtems/score
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/score/include
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/score/include/rtems
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/score/include/rtems/wrap
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/score/include/rtems/score
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/score/inline
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/score/inline/rtems
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/score/inline/rtems/score
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/score/macros
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/score/macros/rtems
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/score/macros/rtems/score
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/score/src
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/score/tools
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/score/tools/sh
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/score/tools/generic
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/score/tools/hppa1.1
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/score/tools/unix
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/wrapup
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/wrapup/posix
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/wrapup/rtems
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libc
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/include
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/include/rdbg
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/include/rdbg/i386
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/include/rpc
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/include/rtems++
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/include/sys
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libbsp
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libbsp/bare
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libbsp/bare/include
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libbsp/bare/wrapup
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libbsp/i386
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libbsp/i386/shared
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libbsp/i386/shared/comm
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libbsp/i386/shared/io
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libbsp/i386/shared/irq
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libbsp/i386/shared/pci
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libbsp/i386/ts_386ex
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libbsp/i386/ts_386ex/clock
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libbsp/i386/ts_386ex/console
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libbsp/i386/ts_386ex/include
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libbsp/i386/ts_386ex/network
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libbsp/i386/ts_386ex/start
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libbsp/i386/ts_386ex/startup
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libbsp/i386/ts_386ex/timer
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libbsp/i386/ts_386ex/tools
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libbsp/i386/ts_386ex/tools/dos_sup
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libbsp/i386/ts_386ex/tools/ts_1325_ada
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libbsp/i386/ts_386ex/wrapup
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libchip
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libchip/rtc
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libchip/network
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libchip/serial
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libcpu
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libcpu/i386
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libcpu/i386/wrapup
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libmisc
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libmisc/assoc
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libmisc/cpuuse
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libmisc/dumpbuf
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libmisc/error
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libmisc/monitor
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libmisc/rtmonuse
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libmisc/stackchk
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libmisc/untar
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libmisc/wrapup
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libnetworking
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libnetworking/arpa
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libnetworking/include
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libnetworking/kern
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libnetworking/lib
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libnetworking/libc
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libnetworking/machine
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libnetworking/net
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libnetworking/netinet
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libnetworking/nfs
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libnetworking/rtems
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libnetworking/rtems_servers
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libnetworking/sys
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libnetworking/vm
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libnetworking/wrapup
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/librpc
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/librtems++
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/start
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/wrapup
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/libtests
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/libtests/cpuuse
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/libtests/malloctest
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/libtests/monitor
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/libtests/rtems++
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/libtests/rtmonuse
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/libtests/stackchk
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/libtests/termios
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp01
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp01/node1
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp01/node2
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp02
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp02/node1
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp02/node2
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp03
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp03/node1
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp03/node2
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp04
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp04/node1
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp04/node2
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp05
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp05/node1
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp05/node2
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp06
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp06/node1
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp06/node2
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp07
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp07/node1
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp07/node2
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp08
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp08/node1
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp08/node2
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp09
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp09/node1
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp09/node2
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp10
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp10/node1
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp10/node2
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp11
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp11/node1
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp11/node2
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp12
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp12/node1
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp12/node2
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp13
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp13/node1
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp13/node2
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp14
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp14/node1
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp14/node2
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/psxtests
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/psxtests/filesupp
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/psxtests/psx01
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/psxtests/psx02
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/psxtests/psx03
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/psxtests/psx04
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/psxtests/psx05
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/psxtests/psx06
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/psxtests/psx07
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/psxtests/psx08
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/psxtests/psx09
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/psxtests/psx10
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/psxtests/psx11
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/psxtests/psx12
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/psxtests/psx13
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/psxtests/psxfile01
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/psxtests/psxfile02
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/psxtests/psxhdrs
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/psxtests/psxmount
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/psxtests/psxreaddir
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/psxtests/psxstat
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/psxtests/psxtime
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/psxtests/psxtimer
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/psxtests/support
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/psxtests/support/include
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/samples
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/samples/base_mp
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/samples/base_mp/node1
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/samples/base_mp/node2
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/samples/base_sp
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/samples/cdtest
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/samples/hello
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/samples/paranoia
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/samples/ticker
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/samples/unlimited
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/samples/minimum
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/sptests
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/sptests/sp01
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/sptests/sp02
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/sptests/sp03
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/sptests/sp04
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/sptests/sp05
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/sptests/sp06
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/sptests/sp07
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/sptests/sp08
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/sptests/sp09
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/sptests/sp11
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/sptests/sp12
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/sptests/sp13
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/sptests/sp14
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/sptests/sp15
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/sptests/sp16
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/sptests/sp17
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/sptests/sp19
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/sptests/sp20
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/sptests/sp21
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/sptests/sp22
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/sptests/sp23
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/sptests/sp24
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/sptests/sp25
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/sptests/spfatal
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/sptests/spsize
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/support
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/support/include
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/support/stubdr
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/support/wrapup
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/tm01
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/include
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/tm02
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/tm03
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/tm04
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/tm05
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/tm06
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/tm07
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/tm08
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/tm09
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/tm10
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/tm11
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/tm12
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/tm13
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/tm14
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/tm15
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/tm16
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/tm17
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/tm18
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/tm19
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/tm20
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/tm21
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/tm22
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/tm23
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/tm24
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/tm25
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/tm26
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/tm27
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/tm28
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/tm29
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/tmck
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/tmoverhd
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tools
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tools/generic
dir /usr/local/rtems/include
dir /usr/local/rtems/include/g++
dir /usr/local/rtems/include/g++/std
set remotebaud 38400
target remote /dev/ttyS0

View File

@@ -1 +0,0 @@
ddd --debugger "i386-rtemself-gdb --nx --command=./cmds" $*

View File

@@ -1,32 +0,0 @@
with Ada.Text_IO; use Ada.Text_IO;
with Ada.Numerics.Discrete_Random;
with TS1325.LED; use TS1325.LED;
with Serial_Debug; use Serial_Debug;
procedure Debug is
package Random_LED_Colour is
new Ada.Numerics.Discrete_Random (LED_Colour);
use Random_LED_Colour;
Colour_Gen: Random_LED_Colour.Generator;
New_Colour: LED_Colour;
Count: Integer := 0;
begin
Breakpoint;
Put_Line ("******* Starting Random LED Debug Test *******");
for I in 1 .. 10_000 loop
Count := Count + 1;
New_Colour := Random_LED_Colour.Random (Colour_Gen);
LED_State.Set (New_Colour);
end loop;
Put_Line ("******* Finished Random LED Debug Test *******");
end Debug;

View File

@@ -1,83 +0,0 @@
/*
* COPYRIGHT (c) 1989-1997.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be found in
* the file LICENSE in this distribution or at
* http://www.rtems.com/license/LICENSE.
*
* $Id$
*/
#include <bsp.h>
#include <assert.h>
#include <pthread.h>
#include <stdio.h>
#ifdef GNAT_PID
#include <unistd.h>
pid_t getpid()
{
return GNAT_PID;
}
#endif
/*
* By having the POSIX_Init thread create a second thread just
* to invoke gnat_main, we can override all default attributes
* of the "Ada environment task". Otherwise, we would be
* stuck with the defaults set by RTEMS.
*/
void *start_gnat_main( void * argument )
{
extern int gnat_main ( int argc, char **argv, char **envp );
(void) gnat_main ( 0, 0, 0 );
exit( 0 );
return 0;
}
void *POSIX_Init( void *argument )
{
pthread_t thread_id;
pthread_attr_t attr;
int status;
status = pthread_attr_init( &attr );
assert( !status );
#ifdef GNAT_MAIN_STACKSPACE
status = pthread_attr_setstacksize( &attr, GNAT_MAIN_STACKSPACE );
assert( !status );
#endif
status = pthread_create( &thread_id, &attr, start_gnat_main, NULL );
assert( !status );
pthread_exit( 0 );
return 0;
}
/* configuration information */
#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
#define CONFIGURE_POSIX_INIT_THREAD_TABLE
#define CONFIGURE_MICROSECONDS_PER_TICK RTEMS_MILLISECONDS_TO_MICROSECONDS(1)
#define CONFIGURE_MAXIMUM_POSIX_THREADS 20
#define CONFIGURE_MAXIMUM_POSIX_KEYS 20
#define CONFIGURE_MAXIMUM_POSIX_MUTEXES 30
#define CONFIGURE_MAXIMUM_POSIX_CONDITION_VARIABLES 20
#define CONFIGURE_INIT
#include <confdefs.h>

View File

@@ -1,65 +0,0 @@
with Ada.Text_IO; use Ada.Text_IO;
with System.Machine_Code; use System.Machine_Code;
package body Serial_Debug is
----------------
-- Breakpoint --
----------------
procedure Breakpoint is
begin
Asm ("int $3",
No_Output_Operands,
No_Input_Operands,
Volatile => True);
end Breakpoint;
-- This type is from uart.h
-- Equivalent to an int, with (COM1, COM2) => (0, 1)
type BSP_Uart is (COM1, COM2);
pragma Convention (C, BSP_Uart);
-- The serial port currently used for console I/O
BSP_Console_Port: BSP_Uart;
pragma Import (C, BSP_Console_Port, "BSPConsolePort");
-- C utility routines to set up serial-port debugging
procedure I386_Stub_Glue_Init (Debug_Port: in BSP_Uart);
pragma Import (C, I386_Stub_Glue_Init, "i386_stub_glue_init");
procedure Set_Debug_Traps;
pragma Import (C, Set_Debug_Traps, "set_debug_traps");
procedure I386_Stub_Glue_Init_Breakin;
pragma Import (C, I386_Stub_Glue_Init_Breakin,
"i386_stub_glue_init_breakin");
begin
if BSP_Console_Port /= COM2
then
I386_Stub_Glue_Init (COM2);
Put_Line ("Remote GDB using COM2...");
else
I386_Stub_Glue_Init (COM1);
Put_Line ("Remote GDB using COM1...");
end if;
Put_Line ("Remote GDB setting traps...");
Set_Debug_Traps;
Put_Line ("Remote GDB waiting for connection...");
I386_Stub_Glue_Init_Breakin;
end Serial_Debug;

View File

@@ -1,17 +0,0 @@
-- This package allows one to easily add serial debugging support to any
-- Ada program by simply adding "with Serial_Debug; use Serial_Debug".
-- Debugging will be automatically initialized when the program is run,
-- and it should be possible to interrupt the running program from ddd/gdb.
--
-- Additionally, one can place explicit breakpoints for the debugger using
-- the procedure Breakpoint
package Serial_Debug is
procedure Breakpoint;
private
pragma Inline (Breakpoint);
end Serial_Debug;

View File

@@ -1,290 +0,0 @@
dir /usr/local/rtems/tools/rtems-19990709/c/src/
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/sapi
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/sapi/src
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/sapi/include
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/sapi/include/wrap
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/sapi/include/rtems
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/sapi/inline
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/sapi/inline/rtems
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/sapi/macros
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/sapi/macros/rtems
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/sapi/optman
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/posix
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/posix/src
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/posix/include
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/posix/include/sys
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/posix/include/rtems
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/posix/include/rtems/posix
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/posix/include/wrap
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/posix/inline
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/posix/inline/rtems
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/posix/inline/rtems/posix
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/posix/macros
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/posix/macros/rtems
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/posix/macros/rtems/posix
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/posix/optman
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/rtems
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/rtems/src
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/rtems/include
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/rtems/include/wrap
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/rtems/include/rtems
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/rtems/include/rtems/rtems
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/rtems/inline
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/rtems/inline/rtems
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/rtems/inline/rtems/rtems
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/rtems/macros
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/rtems/macros/rtems
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/rtems/macros/rtems/rtems
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/rtems/optman
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/score
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/score/cpu
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/score/cpu/i386
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/score/cpu/i386/wrap
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/score/cpu/i386/rtems
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/score/cpu/i386/rtems/score
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/score/include
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/score/include/rtems
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/score/include/rtems/wrap
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/score/include/rtems/score
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/score/inline
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/score/inline/rtems
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/score/inline/rtems/score
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/score/macros
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/score/macros/rtems
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/score/macros/rtems/score
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/score/src
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/score/tools
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/score/tools/sh
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/score/tools/generic
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/score/tools/hppa1.1
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/score/tools/unix
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/wrapup
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/wrapup/posix
dir /usr/local/rtems/tools/rtems-19990709/c/src/exec/wrapup/rtems
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libc
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/include
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/include/rdbg
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/include/rdbg/i386
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/include/rpc
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/include/rtems++
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/include/sys
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libbsp
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libbsp/bare
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libbsp/bare/include
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libbsp/bare/wrapup
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libbsp/i386
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libbsp/i386/shared
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libbsp/i386/shared/comm
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libbsp/i386/shared/io
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libbsp/i386/shared/irq
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libbsp/i386/shared/pci
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libbsp/i386/ts_386ex
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libbsp/i386/ts_386ex/clock
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libbsp/i386/ts_386ex/console
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libbsp/i386/ts_386ex/include
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libbsp/i386/ts_386ex/network
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libbsp/i386/ts_386ex/start
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libbsp/i386/ts_386ex/startup
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libbsp/i386/ts_386ex/timer
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libbsp/i386/ts_386ex/tools
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libbsp/i386/ts_386ex/tools/dos_sup
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libbsp/i386/ts_386ex/tools/ts_1325_ada
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libbsp/i386/ts_386ex/wrapup
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libchip
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libchip/rtc
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libchip/network
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libchip/serial
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libcpu
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libcpu/i386
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libcpu/i386/wrapup
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libmisc
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libmisc/assoc
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libmisc/cpuuse
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libmisc/dumpbuf
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libmisc/error
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libmisc/monitor
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libmisc/rtmonuse
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libmisc/stackchk
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libmisc/untar
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libmisc/wrapup
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libnetworking
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libnetworking/arpa
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libnetworking/include
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libnetworking/kern
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libnetworking/lib
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libnetworking/libc
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libnetworking/machine
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libnetworking/net
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libnetworking/netinet
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libnetworking/nfs
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libnetworking/rtems
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libnetworking/rtems_servers
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libnetworking/sys
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libnetworking/vm
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/libnetworking/wrapup
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/librpc
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/librtems++
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/start
dir /usr/local/rtems/tools/rtems-19990709/c/src/lib/wrapup
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/libtests
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/libtests/cpuuse
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/libtests/malloctest
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/libtests/monitor
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/libtests/rtems++
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/libtests/rtmonuse
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/libtests/stackchk
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/libtests/termios
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp01
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp01/node1
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp01/node2
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp02
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp02/node1
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp02/node2
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp03
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp03/node1
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp03/node2
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp04
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp04/node1
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp04/node2
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp05
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp05/node1
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp05/node2
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp06
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp06/node1
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp06/node2
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp07
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp07/node1
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp07/node2
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp08
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp08/node1
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp08/node2
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp09
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp09/node1
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp09/node2
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp10
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp10/node1
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp10/node2
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp11
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp11/node1
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp11/node2
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp12
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp12/node1
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp12/node2
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp13
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp13/node1
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp13/node2
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp14
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp14/node1
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/mptests/mp14/node2
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/psxtests
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/psxtests/filesupp
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/psxtests/psx01
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/psxtests/psx02
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/psxtests/psx03
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/psxtests/psx04
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/psxtests/psx05
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/psxtests/psx06
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/psxtests/psx07
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/psxtests/psx08
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/psxtests/psx09
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/psxtests/psx10
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/psxtests/psx11
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/psxtests/psx12
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/psxtests/psx13
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/psxtests/psxfile01
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/psxtests/psxfile02
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/psxtests/psxhdrs
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/psxtests/psxmount
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/psxtests/psxreaddir
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/psxtests/psxstat
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/psxtests/psxtime
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/psxtests/psxtimer
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/psxtests/support
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/psxtests/support/include
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/samples
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/samples/base_mp
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/samples/base_mp/node1
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/samples/base_mp/node2
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/samples/base_sp
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/samples/cdtest
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/samples/hello
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/samples/paranoia
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/samples/ticker
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/samples/unlimited
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/samples/minimum
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/sptests
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/sptests/sp01
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/sptests/sp02
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/sptests/sp03
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/sptests/sp04
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/sptests/sp05
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/sptests/sp06
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/sptests/sp07
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/sptests/sp08
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/sptests/sp09
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/sptests/sp11
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/sptests/sp12
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/sptests/sp13
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/sptests/sp14
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/sptests/sp15
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/sptests/sp16
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/sptests/sp17
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/sptests/sp19
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/sptests/sp20
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/sptests/sp21
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/sptests/sp22
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/sptests/sp23
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/sptests/sp24
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/sptests/sp25
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/sptests/spfatal
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/sptests/spsize
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/support
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/support/include
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/support/stubdr
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/support/wrapup
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/tm01
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/include
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/tm02
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/tm03
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/tm04
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/tm05
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/tm06
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/tm07
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/tm08
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/tm09
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/tm10
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/tm11
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/tm12
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/tm13
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/tm14
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/tm15
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/tm16
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/tm17
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/tm18
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/tm19
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/tm20
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/tm21
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/tm22
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/tm23
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/tm24
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/tm25
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/tm26
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/tm27
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/tm28
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/tm29
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/tmck
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tmtests/tmoverhd
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tools
dir /usr/local/rtems/tools/rtems-19990709/c/src/tests/tools/generic
dir /usr/local/rtems/include
dir /usr/local/rtems/include/g++
dir /usr/local/rtems/include/g++/std
set remotebaud 38400
target remote /dev/ttyS0

View File

@@ -1 +0,0 @@
ddd --debugger "i386-rtemself-gdb --nx --command=./cmds" $*

View File

@@ -1,24 +0,0 @@
/*
* Simple debug test program.
*/
#include <stdio.h>
#include "serial_gdb.h"
void debug_test(void)
{
unsigned i, sum;
/* Initialize debugging support and insert breakpoint. */
init_serial_gdb();
breakpoint();
sum = 1;
for(i=1; i <= 100; i++) {
sum += sum % i;
printf("Current sum = %d\n", sum);
}
}

View File

@@ -1,39 +0,0 @@
/* Init
*
* This routine is the initialization task for this test program.
* It is called from init_exec and has the responsibility for creating
* and starting the tasks that make up the test. If the time of day
* clock is required for the test, it should also be set to a known
* value by this function.
*
* Input parameters: NONE
*
* Output parameters: NONE
*
* COPYRIGHT (c) 1989-1999.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
* http://www.rtems.com/license/LICENSE.
*
* $Id$
*/
#define TEST_INIT
#include "system.h"
extern void debug_test(void);
rtems_task Init(
rtems_task_argument ignored
)
{
printf( "\n\n*** C DEBUG TEST ***\n" );
debug_test();
printf( "\n*** END OF C DEBUG TEST ***\n" );
exit( 0 );
}

View File

@@ -1,59 +0,0 @@
/* serial_gdb
*
* Interface to initialize the GDB.
*
* 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 <uart.h>
#include <rtems/bspIo.h>
extern int BSPConsolePort;
void i386_stub_glue_init(int);
void i386_stub_glue_init_breakin(void);
void set_debug_traps(void);
/* Init GDB glue */
void init_serial_gdb( void )
{
if(BSPConsolePort != BSP_UART_COM2)
{
/*
* If com2 is not used as console use it for
* debugging
*/
i386_stub_glue_init(BSP_UART_COM2);
printk( "Remote GDB using COM2...\n" );
}
else
{
/* Otherwise use com1 */
i386_stub_glue_init(BSP_UART_COM1);
printk( "Remote GDB using COM1...\n" );
}
printk( "Remote GDB: setting traps...\n" );
/* Init GDB stub itself */
set_debug_traps();
printk( "Remote GDB: waiting for remote connection...\n" );
/*
* Init GDB break in capability,
* has to be called after
* set_debug_traps
*/
i386_stub_glue_init_breakin();
}

View File

@@ -1,17 +0,0 @@
/* serial_gdb.h
*
* Interface to invoke and initialize GDB support.
*
*/
#ifdef __cplusplus
extern "C" {
#endif
void init_serial_gdb( void );
#define breakpoint() __asm__ ("int $3")
#ifdef __cplusplus
}
#endif

View File

@@ -1,36 +0,0 @@
/* system.h
*
* This include file contains information that is included in every
* function in the test set.
*
* 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 <tmacros.h>
/* functions */
rtems_task Init(
rtems_task_argument argument
);
/* configuration information */
#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
#include <confdefs.h>
/* global variables */
TEST_EXTERN rtems_id Global_variable; /* example global variable */
/* end of include file */

View File

@@ -1,575 +0,0 @@
; loader_hybrid_com.asm
;
; This is a DOS command-line loader for RTEMS executables running on
; the Technologic Systems TS-1325 Embedded PC.
;
; It loads a DOS file given on the command line to the address `KernelBase',
; and then transfers control there. It uses DOS file I/O commands to read from
; the A: flash disk, and direct memory access to read from the C: ramdisk.
;
; Copying uses protected flat mode, so kernelbase could be above 1MB.
; It does not initialize protected mode before transferring control
; to the RTEMS executable image.
;
; Compile with: nasm -o loader.com loader_hybrid_com.asm
;
; Tony Ambardar (c) 1999
; E.C.E. Department
; University of British Columbia
%include "ts1325.inc" ; Some useful LED and button macros
; IMPORTANT: [org xxx] MUST be the same as RelocAddr below.
[org E000h]
[bits 16]
; Only these three definitions may need to change
KernelBase equ 08000h ; Where (32-bit) to locate and run RTEMS executable
RelocSeg equ 9000h ; Segment to relocate code.
RelocAddr equ 0E000h ; Address to relocate code, same as "org" above
; Next three used in GDT
RelocBase equ RelocSeg*16
Reloc15 equ RelocBase & 0FFFFh
Reloc23 equ RelocBase / 10000h
Buffer equ RelocAddr+400h ; In same segment as RelocSeg
BuffSiz equ 200h ; Size of disk read + copy
StackSeg equ RelocSeg
StackSiz equ 40h
StackAddr equ Buffer+BuffSiz+StackSiz
; Used to jump to kernel in real mode
KernelAddr equ KernelBase & 0FFFFh
KernelSeg equ (KernelBase - KernelAddr) / 16
; Used to load from the ramdisk
Extended equ 100000h ; Start of extended memory / C: ramdisk
OffsetBPB equ 0Bh ; Start of BIOS param block in bootsector
; Command-line parameters
ParamLen equ 80h ; Byte length of command line params
ParamStr equ 82h ; Start of param string
; The ORG address above means pre-relocation addresses are wrong. The
; following macro fixes these up.
%define PRE_RELOC_ADDR(addr) (addr-CodeStart+100h)
CodeStart:
mov dx, PRE_RELOC_ADDR(Greet)
mov ah, 9h
int 21h
mov ax, 0b021h ; Exit to DOS if push-button switch pressed
int 15h
and al, 01h ; Bit 0 == 0 if button pressed
jz ButtonExit
xor cx, cx
mov cl, [ParamLen] ; See if there is a command line arg
jcxz NameError
dec cx ; Nix leading space. Is this standard?
cmp cx, 12 ; Limit to 12 chars: e.g. ABCDEFGH.IJK
jg NameError
; Damn. Should make sure of no ':' or '\' chars too.
; Required by "relocated" [org] statement above
mov di, PRE_RELOC_ADDR(FName)
mov si, ParamStr
repne
movsb ; Copy command line arg
; Make sure no ':' in filename. This forces using the default dir.
mov di, PRE_RELOC_ADDR(FName)
mov al, ':'
mov cx, 12
repne
scasb
je NameError
jmp Relocate
ButtonExit:
mov dx, PRE_RELOC_ADDR(Button)
jmp short DosPrint
NameError:
mov dx, PRE_RELOC_ADDR(FError)
jmp short DosPrint
DosError: ; Only call this AFTER relocation
mov dx, RError
DosPrint:
mov ah, 9h
int 21h
DosExit:
mov ax, 04C00h ; DOS Function: Exit program
int 21h ; Call DOS. Terminate Program
Relocate: ; Move this code down to RelocAddr
cld
mov ax, RelocSeg
mov es, ax ; Set destination = RelocSeg:RelocAddr
mov di, RelocAddr
mov si, 100h ; Source is ds:0100h i.e. a COM file
mov cx, CodeEnd - CodeStart ; Size of all code
repne
movsb
; continue in copied code
jmp RelocSeg:RelocAddr + (RelocStart - CodeStart)
RelocStart:
cli
mov ax, StackSeg
mov ss, ax
mov sp, StackAddr
mov ax, cs
mov ds, ax
mov es, ax ; Setup segments and stack
sti
mov ah, 19h
int 21h
mov [DDrive], al ; Save current default drive
mov ax, 3d00h ; DOS Function: Open the file for reading
mov dx, FName ; Presume DS points at filename segment
int 21h
jc DosError
GoodOpen:
mov [FHndl], ax ; Save file handle
mov al, [DDrive] ; Check if loading from C: drive (ramdisk)
cmp al, 2
je LoadRamdisk
LoadDosdisk:
; Here we are loading from A: drive. Use DOS calls to load the file into
; extended memory. Then copy from extended memory to `KernelBase'. This way
; we avoid overwriting DOS file I/O structures if reading directly into
; conventional (<640K) memory.
mov edi, Extended ; Destination for code read @ 1 Meg
ReadLoop:
mov ah,3fh ; DOS Function: Read data from the file
mov bx, [FHndl]
mov dx, Buffer ; Address of data buffer
mov cx, BuffSiz ; Request BuffSiz bytes
int 21h
jc DosError
GoodRead:
cmp ax, cx ; EOF reached? AX = # bytes read
pushf
add ax, 3
shr ax, 2 ; Copy buffer by dwords, # = (ax + 3)/4
movzx ecx, ax
mov esi, RelocBase + Buffer ; Source for copy, destination is in edi
call CopyData32 ; Do protected-mode copy
popf
je ReadLoop ; Still data left, so read next chunk
mov esi, Extended ; Source for copy @ 1 Meg
mov ecx, edi ; Make count in dwords
sub ecx, esi
add ecx, 3
shr ecx, 2
mov edi, KernelBase ; Destination copy
call CopyData32 ; Move code into conventional memory
jmp RunKernel
LoadRamdisk:
; Here we are loading from C: drive. Use protected mode to directly access
; the virtual disk sectors in extended memory and copy to `KernelBase'.
; This way we avoid using DOS file I/O calls, except for an `open' earlier
; which tells us the file exists.
; Copy C: "bootsector" to buffer and save the BIOS parameter block
mov esi, Extended
mov edi, RelocBase + Buffer ; Must be a 32-but address...
mov ecx, 80h
call CopyData32
mov si, Buffer + OffsetBPB
mov di, SavBPB
mov cx, EndBPB - SavBPB
repne
movsb
; Calculate FAT, root dir, and data start addresses for the ramdisk
xor eax, eax
mov ebx, eax
mov ecx, ebx
mov ax, [ResSec]
mov bl, [NumFAT]
imul bx, [SecFAT]
mov cx, [NRoot]
shr cx, 4 ; 10h directory entries per sector
add bx, ax
add cx, bx
mov dx, [BpSect]
imul ax, dx
imul bx, dx
imul cx, dx
add eax, Extended
add ebx, Extended
add ecx, Extended
mov [BegFAT], eax
mov [BegRoot], ebx
mov [BegData], ecx
; Convert the saved filename to format used in directory entry. Assume
; there's a `.' in it. Hopefully this won't haunt us later...
mov di, FName ; Find the `.'
mov al, '.'
mov cx, 12
repne
scasb
mov bx, di ; di points to filename extension
mov di, DirName
mov si, FName
mov cx, bx ; Make count
sub cx, si
dec cx
repne ; Copy initial part of filename
movsb
mov di, bx ; Find the terminating zero
xor al,al
mov cx, 4
repne
scasb
mov cx, di ; Make count
sub cx, bx
dec cx
mov si, bx
mov di, DirName + 8
repne ; Copy filename extension
movsb
mov si, DirName ; Convert the stupid thing to upper case
mov di, si
mov cx, 11
Cvt2Upper:
lodsb
cmp al, 'a'
jb NotLow
cmp al, 'z'
ja NotLow
xor al, 20h
NotLow:
stosb
loop Cvt2Upper
; Now load in the root directory (temporarily) to find the first cluster
; of our file. Use KernelSeg:KernelAddr as temporary storage.
mov esi, [BegRoot]
mov edi, KernelBase
xor ecx, ecx
mov cx, [NRoot]
shl cx, 3 ; Each root entry is 8 dwords
call CopyData32
mov dx, [NRoot] ; Max # of dir entries
mov cx, KernelSeg ; Setup segment selector for comparison
mov es, cx
mov di, KernelAddr
FindEntry:
mov cx, 11
mov si, DirName
push di
rep cmpsb
pop di
je GotEntry
add di, 20h ; Point to next dir entry
dec dx
jnz FindEntry
int 3h ; Should never get here...
GotEntry:
mov eax, KernelBase ; Setup initial address for copy
mov [CurrDst], eax
add di, 32 - 6 ; Load first cluster number
mov ax, [es:di]
mov cx, ds ; Fix `es' selector just in case
mov es, cx
LoadKernel:
call LoadCluster ; Load cluster `ax' to [CurrDst], update [CurrDst]
call NextCluster ; Get next cluster number in ax
cmp ax, 0FF8h ; Repeat until EOF
jb LoadKernel
RunKernel:
mov ax, KernelSeg ; Setup data segment and transfer control
mov ds, ax
jmp KernelSeg:KernelAddr ; Huzzah!!
; Load cluster `ax' to [CurrDst], update [CurrDst]
LoadCluster:
push ax
sub ax, 2 ; Cluster numbers start at 2
movzx eax, ax
xor ecx, ecx ; Calculate bytes in a cluster
mov cl, [SpClst]
imul cx, [BpSect]
imul eax, ecx
add eax, [BegData] ; Start of cluster
shr ecx, 2 ; Cluster size in dwords
mov esi, eax ; Copy source
mov edi, [CurrDst] ; Copy destination
call CopyData32
mov [CurrDst], edi ; Update dest
pop ax ; Restore cluster number
ret
; Search FAT (FAT12 format) for next cluster in file after `ax'.
NextCluster:
movzx ecx, ax ; Calculate offset into FAT
shr ax, 1
pushf
add cx, ax
mov esi, [BegFAT] ; Copy word containing next cluster to buffer
add esi, ecx
mov edi, RelocBase + Buffer
xor ecx, ecx
inc ecx
call CopyData32
mov ax, [Buffer] ; Handle odd/even cluster numbers
popf
jnc EvenCluster
shr ax, 4
EvenCluster:
and ax, 0FFFh
ret
; Enable the A20 line for accesses to extended memory.
EnableA20:
in al,92h
or al,2
jmp short $+2
jmp short $+2
jmp short $+2
out 92h,al
ret
; The CopyData32 routine copies ecx dwords from esi to edi. Both esi
; and edi hold 32-bit values. CopyData32 runs in 32-bit protected mode.
CopyData32:
cli
call EnableA20 ; Put here in case file I/O screws with this
; or with the GDTR
lgdt [GDTStart] ; Initialize GDTR for 32-bit protected mode
mov eax, cr0
or al, 1
mov cr0, eax ;go to real flat mode
; LED_GRN
; PSW_WAIT
jmp dword 8h : RelocBase+ProtJmp
[bits 32]
ProtJmp:
; LED_YEL
; PSW_WAIT
mov ax, 10h
mov ds, ax
mov es, ax
mov ss, ax
rep movsd ;copy the sector to where it should be
mov ax, 20h
mov ds, ax
mov es, ax
mov ss, ax
; LED_RED
; PSW_WAIT
jmp 18h : RealJmp1 ;use code segment with 64K limit
[bits 16]
RealJmp1:
; LED_OFF
; PSW_WAIT
mov eax, cr0 ;back to real segmented mode
and eax, 0fffffffeh
mov cr0, eax
jmp RelocSeg : RealJmp2
RealJmp2:
; LED_GRN
; PSW_WAIT
mov ax, cs
mov es, ax
mov ds, ax
mov ss, ax
sti
ret
; Storage for a Dos 3+ BIOS Parameter Block (for the C: ramdisk)
SavBPB:
BpSect dw 0h ; Bytes per sector, always 512
SpClst db 0h ; Sectors per cluster
ResSec dw 0h ; Num of reserved sectors
NumFAT db 0h ; Num of FATs
NRoot dw 0h ; Num of root directory entries
TotSec dw 0h ; Total sectors
Media db 0h ; Media descriptor byte
SecFAT dw 0h ; Sectors per FAT
EndBPB:
CurrDst dd 0h ; Current destination address for copying RTEMS exec
; Important (32-bit) address for the C: ramdisk
BegFAT dd 0h ; Start of the FAT
BegRoot dd 0h ; Start of root directory
BegData dd 0h ; Start of data clusters
DDrive db 0h ; Default drive: 0h = A:, 2h = C:
DirName times 11 db 32 ; Room for 8.3 directory entry name
FName times 13 db 0 ; Room for a 12 character null-terminated string
FHndl dw 0000h
Greet db "RTEMS DOS Loader (c) 1999 Tony R. Ambardar",13,10,"$"
Button db "Button pressed -- Aborting.",13,10,"$"
FError db "Missing or incorrect file name.",13,10,"$"
RError db "Error opening or reading file.",13,10,"$"
; Global Descriptor Table used for protectd mode.
; Store the GDTR in the first null GDT entry
GDTStart:
dw GDTEnd - GDTStart - 1
dd RelocBase + GDTStart
dw 0
; base=0h, limit=4Gb, present, code, exec/read, conform, 32-bit
dw 0ffffh ;seg. lim. [15:0]
dw 0 ;base[15:0]
db 0 ;base[23:16]
db 9eh ;p=1,dpl=0,s=1 ; code: execute/read, conforming
db 0cfh ;c: gran=4K, D/B=1(32-bit) ; f: seg. lim. [19:16]
db 0 ;base[31:24]
; base=0h, limit=4Gb, present, data, read/write exp. up, 32-bit SP
dw 0ffffh ;seg. lim. [15:0]
dw 0 ;base[15:0]
db 0 ;base[23:16]
db 92h ;p=1,dpl=0,s=1 ; data: read/write expand-up
db 0cfh ;c: gran=4K, D/B=1(32-bit) ; f: seg. lim. [19:16]
db 0 ;base[31:24]
; base=0h, limit=ffffh, present, code, exec/read, conform, 16-bit
; NOTE: this descriptor is used to change back to real mode.
dw 0ffffh ;seg. lim. [15:0]
dw Reloc15 ;base[15:0]
db Reloc23 ;base[23:16]
db 9eh ;p=1,dpl=0,s=1 ; code: execute/read, conforming
db 000h ;4: gran=1 byte, D/B=0(16-bit) ; 0: seg. lim. [19:16]
db 0 ;base[31:24]
; base=0h, limit=ffffh, present, data, read/write exp. up, 16-bit SP
; NOTE: this descriptor is used to change back to real mode.
dw 0ffffh ;seg. lim. [15:0]
dw Reloc15 ;base[15:0]
db Reloc23 ;base[23:16]
db 92h ;p=1,dpl=0,s=1 ; data: read/write expand-up
db 000h ;0: gran=1 byte, D/B=0(16-bit) ; 0: seg. lim. [19:16]
db 0 ;base[31:24]
GDTEnd:
CodeEnd: ; end-of-code marker for copy

View File

@@ -1,48 +0,0 @@
; Some nasm macros to turn on TS-1325 LEDs and wait for button presses.
; This should be '%include'ed in your nasm source file.
;
; Tony Ambardar
P1LTC equ 0F862h
P1PIN equ 0F860h
%macro LED_OFF 0
mov dx, P1LTC
in al, dx
or al, 01000000b ; turn off red
and al, 11011111b ; turn off green
out dx, al
%endmacro
%macro LED_GRN 0
mov dx, P1LTC
in al, dx
or al, 01100000b ; turn off red, turn on green
out dx, al
%endmacro
%macro LED_YEL 0
mov dx, P1LTC
in al, dx
or al, 00100000b ; turn on green
and al, 10111111b ; turn on red
out dx, al
%endmacro
%macro LED_RED 0
mov dx, P1LTC
in al, dx
and al, 10011111b ; turn on red, turn off green
out dx, al
%endmacro
%macro PSW_WAIT 0
mov dx, P1PIN ; Get PSW state
mov ecx, 80000h
%%read in al, dx
test al, 00000001b ; is PSW asserted?
jnz %%read ; if not, we're done
dec ecx
jnz %%read
%endmacro

View File

@@ -1,23 +0,0 @@
#!/bin/sh
# Just a Q&D prog to convert a bunch of RTEMS generated ELF files to raw
# binary images that can be loaded on the TS-1325. The converted files are
# saved in the current directory.
#
# Tony Ambardar
OBJCOPY=/usr/local/rtems/bin/i386-rtemself-objcopy
if [ $# = 0 ]
then
echo "Description: Convert RTEMS elf files to raw binary files."
echo "Usage: elf2exe <list-of-elf-files>"
echo
exit 1
fi
for i in $*
do
OUTFILE=$(basename `echo $i | sed 's/\.[a-zA-Z0-9]*$//g'`.exe)
$OBJCOPY -O binary $i $OUTFILE
done

View File

@@ -1,8 +0,0 @@
The code and examples in this sub-directory have been adapted from
Samuel Tardieu's adasockets-0.1.3 library to work with RTEMS and
FreeBSD sockets.
The Ada source files which were modified are sockets-multicast.adb,
sockets-thin.ads, sockets-constants.ads, and sockets-naming.adb
Tony Ambardar, 8/8/99

View File

@@ -1,7 +0,0 @@
Samuel Tardieu
ENST -- Département Informatique
46, rue Barrault
75634 Paris Cedex 13
E-mail: sam@inf.enst.fr
URL: http://www.inf.enst.fr/~tardieu/

View File

@@ -1,340 +0,0 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) 19yy <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) 19yy name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.

View File

@@ -1,44 +0,0 @@
-*- outline -*-
* New in AdaSockets 0.1.3
** Support for IP multicast
The package Sockets.Multicast can be used to create Multicast
interfaces on machine that support it.
** Interface changes
Some functions have been transformed into procedures to ease the
addition of multicast sockets.
** New example
The multi example can be used as both a multicast sender and receiver.
* New in AdaSockets 0.1.2
** Warning suppressed
Some versions of GNAT were detecting incorrectly a missing raise in
some cases. Signaled by Nicolas Ollinger <Nicolas.Ollinger@ens-lyon.fr>.
** New example
A listener example which is only a server has been added to avoid any
confusion between clients and servers. Suggestion by Scott Moody
<scott@plato.ds.boeing.com>.
* New in AdaSockets 0.1.1
** `aux' -> `support'
The subdirectory `aux' in the distribution has been renamed into
`support' to avoid a name clash on Windows NT with the standard
peripherical `aux'. Suggestion from Juanma Barranquero
<barranquero@laley-actualidad.es>.
** Better error messages
Exception raised during the connection now have messages in many cases
explaining why the connexion could not be made.

View File

@@ -1,35 +0,0 @@
README file for adasockets version 0.1.3 (beta)
AdaSockets is a medium binding (it is not a thin binding because it uses Ada
types and not a thick binding because you have the same subprogram names as
in C) for using BSD-style sockets in Ada.
This package is in no way complete! This is a half-day work that will be
extended in the future. If there is an extension that you would like to see in,
drop a note to the author (Samuel Tardieu <sam@inf.enst.fr>).
As you may have noticed, the name is not really original. If you have a better
name, send me a note with your suggestion.
AdaSockets is free software; you can redistribute it and/or modify it
under terms of the GNU General Public License as published by the Free
Software Foundation; either version 2, or (at your option) any later
version. AdaSockets is distributed in the hope that it will be
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details. You should have received a
copy of the GNU General Public License distributed with AdaSockets;
see file COPYING. If not, write to the Free Software Foundation, 59
Temple Place - Suite 330, Boston, MA 02111-1307, USA.
As a special exception, if other files instantiate generics from this
unit, or you link this unit with other files to produce an executable,
this unit does not by itself cause the resulting executable to be
covered by the GNU General Public License. This exception does not
however invalidate any other reasons why the executable file might be
covered by the GNU Public License.
The main repository for this software is located at:
http://www-inf.enst.fr/ANC/
The author, Samuel Tardieu <sam@inf.enst.fr>

View File

@@ -1,50 +0,0 @@
-- This package has been generated automatically on:
-- Linux wasp 2.0.36 #1 Tue Dec 29 13:11:13 EST 1998 i586
-- unknown
-- Generation date: Fri Mar 5 00:03:14 PST 1999
-- Any change you make here is likely to be lost !
package Sockets.Constants is
Tcp_Nodelay : constant := 16#0001#;
Af_Inet : constant := 16#0002#;
Sock_Stream : constant := 16#0001#;
Sock_Dgram : constant := 16#0002#;
Eintr : constant := 16#0004#;
Eagain : constant := 16#000B#;
Ewouldblock : constant := 16#000B#;
Einprogress : constant := 16#0077#;
Ealready : constant := 16#0078#;
Eisconn : constant := 16#007F#;
Econnrefused : constant := 16#006F#;
Fndelay : constant := 16#0004#;
Fasync : constant := 16#0040#;
F_Getfl : constant := 16#0003#;
F_Setfl : constant := 16#0004#;
F_Setown : constant := 16#0006#;
So_Rcvbuf : constant := 16#1002#;
So_Reuseaddr : constant := 16#0004#;
Sol_Socket : constant := 16#FFFF#;
Sigterm : constant := 16#000F#;
Sigkill : constant := 16#0009#;
O_Rdonly : constant := 16#0000#;
O_Wronly : constant := 16#0001#;
O_Rdwr : constant := 16#0002#;
Host_Not_Found : constant := 16#0001#;
Try_Again : constant := 16#0002#;
No_Recovery : constant := 16#0003#;
No_Data : constant := 16#0004#;
No_Address : constant := 16#0004#;
Pollin : constant := 16#0001#;
Pollpri : constant := 16#0002#;
Pollout : constant := 16#0004#;
Pollerr : constant := 16#0008#;
Pollhup : constant := 16#0010#;
Pollnval : constant := 16#0020#;
I_Setsig : constant := -1;
S_Rdnorm : constant := -1;
S_Wrnorm : constant := -1;
Ipproto_Ip : constant := 16#0000#;
Ip_Add_Membership : constant := 16#000C#;
Ip_Multicast_Loop : constant := 16#000B#;
Ip_Multicast_Ttl : constant := 16#000A#;
Ip_Drop_Membership : constant := 16#000D#;
end Sockets.Constants;

View File

@@ -1,42 +0,0 @@
-----------------------------------------------------------------------------
-- --
-- ADASOCKETS COMPONENTS --
-- --
-- S O C K E T S . L I N K --
-- --
-- S p e c --
-- --
-- $ReleaseVersion: 0.1.3 $ --
-- --
-- Copyright (C) 1998 École Nationale Supérieure des Télécommunications --
-- --
-- AdaSockets is free software; you can redistribute it and/or modify --
-- it under terms of the GNU General Public License as published by --
-- the Free Software Foundation; either version 2, or (at your option) --
-- any later version. AdaSockets is distributed in the hope that it --
-- will be useful, but WITHOUT ANY WARRANTY; without even the implied --
-- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. --
-- See the GNU General Public License for more details. You should --
-- have received a copy of the GNU General Public License distributed --
-- with AdaSockets; see file COPYING. If not, write to the Free --
-- Software Foundation, 59 Temple Place - Suite 330, Boston, MA --
-- 02111-1307, USA. --
-- --
-- As a special exception, if other files instantiate generics from --
-- this unit, or you link this unit with other files to produce an --
-- executable, this unit does not by itself cause the resulting --
-- executable to be covered by the GNU General Public License. This --
-- exception does not however invalidate any other reasons why the --
-- executable file might be covered by the GNU Public License. --
-- --
-- The main repository for this software is located at: --
-- http://www-inf.enst.fr/ANC/ --
-- --
-----------------------------------------------------------------------------
private package Sockets.Link is
-- pragma Linker_Options ("-lnsl");
-- pragma Linker_Options ("-lsocket");
end Sockets.Link;

View File

@@ -1,130 +0,0 @@
-----------------------------------------------------------------------------
-- --
-- ADASOCKETS COMPONENTS --
-- --
-- S O C K E T S . M U L T I C A S T --
-- --
-- B o d y --
-- --
-- $ReleaseVersion: 0.1.3 $ --
-- --
-- Copyright (C) 1998 École Nationale Supérieure des Télécommunications --
-- --
-- AdaSockets is free software; you can redistribute it and/or modify --
-- it under terms of the GNU General Public License as published by --
-- the Free Software Foundation; either version 2, or (at your option) --
-- any later version. AdaSockets is distributed in the hope that it --
-- will be useful, but WITHOUT ANY WARRANTY; without even the implied --
-- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. --
-- See the GNU General Public License for more details. You should --
-- have received a copy of the GNU General Public License distributed --
-- with AdaSockets; see file COPYING. If not, write to the Free --
-- Software Foundation, 59 Temple Place - Suite 330, Boston, MA --
-- 02111-1307, USA. --
-- --
-- As a special exception, if other files instantiate generics from --
-- this unit, or you link this unit with other files to produce an --
-- executable, this unit does not by itself cause the resulting --
-- executable to be covered by the GNU General Public License. This --
-- exception does not however invalidate any other reasons why the --
-- executable file might be covered by the GNU Public License. --
-- --
-- The main repository for this software is located at: --
-- http://www-inf.enst.fr/ANC/ --
-- --
-----------------------------------------------------------------------------
with Ada.Exceptions; use Ada.Exceptions;
with Interfaces.C; use Interfaces.C;
with Sockets.Constants; use Sockets.Constants;
with Sockets.Naming; use Sockets.Naming;
with Sockets.Thin; use Sockets.Thin;
with Sockets.Utils; use Sockets.Utils;
package body Sockets.Multicast is
use Ada.Streams;
procedure Setsockopt_Add_Membership is
new Customized_Setsockopt (IPPROTO_IP, IP_ADD_MEMBERSHIP, Ip_Mreq);
-----------------------------
-- Create_Multicast_Socket --
-----------------------------
function Create_Multicast_Socket
(Group : String;
Port : Positive;
TTL : Positive := 16;
Self_Loop : Boolean := True)
return Multicast_Socket_FD
is
Result : Multicast_Socket_FD;
Mreq : aliased Ip_Mreq;
C_Self_Loop : Integer;
begin
Socket (Socket_FD (Result), AF_INET, SOCK_DGRAM);
if Self_Loop then
C_Self_Loop := 1;
else
C_Self_Loop := 0;
end if;
Setsockopt (Result, SOL_SOCKET, SO_REUSEADDR, 1);
Bind (Result, Port);
Mreq.Imr_Multiaddr := To_In_Addr (Address_Of (Group));
Setsockopt_Add_Membership (Result, Mreq);
Setsockopt (Result, IPPROTO_IP, IP_MULTICAST_TTL, TTL);
Setsockopt (Result, IPPROTO_IP, IP_MULTICAST_LOOP, C_Self_Loop);
Result.Target := (Result.Target'Size / 8,
Constants.Af_Inet,
Port_To_Network (unsigned_short (Port)),
To_In_Addr (Address_Of (Group)),
(others => char'Val (0)));
return Result;
end Create_Multicast_Socket;
----------
-- Send --
----------
procedure Send (Socket : in Multicast_Socket_FD;
Data : in Stream_Element_Array)
is
Sin : aliased Sockaddr_In := Socket.Target;
Index : Stream_Element_Offset := Data'First;
Rest : Stream_Element_Count := Data'Length;
Count : int;
begin
while Rest > 0 loop
Count := C_Sendto (Socket.FD,
Data (Index) 'Address,
int (Rest),
0,
Sin'Address,
Sin'Size / 8);
if Count < 0 then
Raise_With_Message ("Send failed");
elsif Count = 0 then
raise Connection_Closed;
end if;
Index := Index + Stream_Element_Count (Count);
Rest := Rest - Stream_Element_Count (Count);
end loop;
end Send;
------------
-- Socket --
------------
procedure Socket
(Sock : out Multicast_Socket_FD;
Domain : in Socket_Domain := AF_INET;
Typ : in Socket_Type := SOCK_STREAM)
is
begin
Raise_Exception (Program_Error'Identity,
"Use Create_Multicast_Socket instead");
Sock := Sock; -- To keep the compiler happy
end Socket;
end Sockets.Multicast;

View File

@@ -1,71 +0,0 @@
-----------------------------------------------------------------------------
-- --
-- ADASOCKETS COMPONENTS --
-- --
-- S O C K E T S . M U L T I C A S T --
-- --
-- S p e c --
-- --
-- $ReleaseVersion: 0.1.3 $ --
-- --
-- Copyright (C) 1998 École Nationale Supérieure des Télécommunications --
-- --
-- AdaSockets is free software; you can redistribute it and/or modify --
-- it under terms of the GNU General Public License as published by --
-- the Free Software Foundation; either version 2, or (at your option) --
-- any later version. AdaSockets is distributed in the hope that it --
-- will be useful, but WITHOUT ANY WARRANTY; without even the implied --
-- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. --
-- See the GNU General Public License for more details. You should --
-- have received a copy of the GNU General Public License distributed --
-- with AdaSockets; see file COPYING. If not, write to the Free --
-- Software Foundation, 59 Temple Place - Suite 330, Boston, MA --
-- 02111-1307, USA. --
-- --
-- As a special exception, if other files instantiate generics from --
-- this unit, or you link this unit with other files to produce an --
-- executable, this unit does not by itself cause the resulting --
-- executable to be covered by the GNU General Public License. This --
-- exception does not however invalidate any other reasons why the --
-- executable file might be covered by the GNU Public License. --
-- --
-- The main repository for this software is located at: --
-- http://www-inf.enst.fr/ANC/ --
-- --
-----------------------------------------------------------------------------
with Sockets.Thin;
package Sockets.Multicast is
pragma Elaborate_Body;
-- This package aims at helping the creation of multicast sockets
type Multicast_Socket_FD is new Socket_FD with private;
function Create_Multicast_Socket
(Group : String;
Port : Positive;
TTL : Positive := 16;
Self_Loop : Boolean := True)
return Multicast_Socket_FD;
-- Create a multicast socket
procedure Send (Socket : in Multicast_Socket_FD;
Data : in Ada.Streams.Stream_Element_Array);
-- Send data over a multicast socket
private
procedure Socket
(Sock : out Multicast_Socket_FD;
Domain : in Socket_Domain := AF_INET;
Typ : in Socket_Type := SOCK_STREAM);
-- Do not call this one, it will raise Program_Error
type Multicast_Socket_FD is new Socket_FD with record
Target : Sockets.Thin.Sockaddr_In;
end record;
end Sockets.Multicast;

View File

@@ -1,411 +0,0 @@
-----------------------------------------------------------------------------
-- --
-- ADASOCKETS COMPONENTS --
-- --
-- S O C K E T S . N A M I N G --
-- --
-- B o d y --
-- --
-- $ReleaseVersion: 0.1.3 $ --
-- --
-- Copyright (C) 1996-1998 Free Software Foundation --
-- --
-- AdaSockets is free software; you can redistribute it and/or modify --
-- it under terms of the GNU General Public License as published by --
-- the Free Software Foundation; either version 2, or (at your option) --
-- any later version. AdaSockets is distributed in the hope that it --
-- will be useful, but WITHOUT ANY WARRANTY; without even the implied --
-- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. --
-- See the GNU General Public License for more details. You should --
-- have received a copy of the GNU General Public License distributed --
-- with AdaSockets; see file COPYING. If not, write to the Free --
-- Software Foundation, 59 Temple Place - Suite 330, Boston, MA --
-- 02111-1307, USA. --
-- --
-- As a special exception, if other files instantiate generics from --
-- this unit, or you link this unit with other files to produce an --
-- executable, this unit does not by itself cause the resulting --
-- executable to be covered by the GNU General Public License. This --
-- exception does not however invalidate any other reasons why the --
-- executable file might be covered by the GNU Public License. --
-- --
-- The main repository for this software is located at: --
-- http://www-inf.enst.fr/ANC/ --
-- --
-----------------------------------------------------------------------------
with Ada.Exceptions;
with Interfaces.C; use Interfaces.C;
with Interfaces.C.Strings; use Interfaces.C.Strings;
with Sockets.Constants; use Sockets.Constants;
with Ada.Unchecked_Conversion;
with Ada.Unchecked_Deallocation;
package body Sockets.Naming is
use Sockets.Constants, Sockets.Thin;
Default_Buffer_Size : constant := 16384;
procedure Free is
new Ada.Unchecked_Deallocation (String, String_Access);
procedure Free is
new Ada.Unchecked_Deallocation (char_array, char_array_access);
function Allocate (Size : Positive := Default_Buffer_Size)
return char_array_access;
-- Allocate a buffer
function Parse_Entry (Host : Hostent)
return Host_Entry;
-- Parse an entry
procedure Raise_Naming_Error
(Errno : in C.int;
Message : in String);
-- Raise the exception Naming_Error with an appropriate error message
C_Errno : C.int;
pragma Import (C, C_Errno, "h_errno");
----------------
-- Address_Of --
----------------
function Address_Of (Something : String)
return Address
is
begin
if Is_IP_Address (Something) then
return Value (Something);
else
return Info_Of (Something) .Addresses (1);
end if;
end Address_Of;
------------
-- Adjust --
------------
procedure Adjust (Object : in out Host_Entry)
is
Aliases : String_Array renames Object.Aliases;
begin
Object.Name := new String'(Object.Name.all);
for I in Aliases'Range loop
Aliases (I) := new String'(Aliases (I) .all);
end loop;
end Adjust;
--------------
-- Allocate --
--------------
function Allocate
(Size : Positive := Default_Buffer_Size)
return char_array_access
is
begin
return new char_array (1 .. size_t (Size));
end Allocate;
-----------------
-- Any_Address --
-----------------
function Any_Address return Address
is
begin
return To_Address (Inaddr_Any);
end Any_Address;
--------------
-- Finalize --
--------------
procedure Finalize (Object : in out Host_Entry)
is
Aliases : String_Array renames Object.Aliases;
begin
Free (Object.Name);
for I in Aliases'Range loop
Free (Aliases (I));
end loop;
end Finalize;
---------------
-- Host_Name --
---------------
function Host_Name return String
is
Buff : char_array_access := Allocate;
Buffer : constant chars_ptr := To_Chars_Ptr (Buff);
Res : constant int := C_Gethostname (Buffer, Buff'Length);
begin
if Res = Failure then
Free (Buff);
Raise_Naming_Error (C_Errno, "");
end if;
declare
Result : constant String := Value (Buffer);
begin
Free (Buff);
return Result;
end;
end Host_Name;
-----------
-- Image --
-----------
function Image (Add : Address) return String
is
function Image (A : Address_Component) return String;
-- Return the string corresponding to its argument without
-- the leading space.
-----------
-- Image --
-----------
function Image (A : Address_Component)
return String
is
Im : constant String := Address_Component'Image (A);
begin
return Im (Im'First + 1 .. Im'Last);
end Image;
begin
return Image (Add.H1) & "." & Image (Add.H2) & "." &
Image (Add.H3) & "." & Image (Add.H4);
end Image;
-----------
-- Image --
-----------
function Image (Add : Thin.In_Addr) return String is
begin
return Image (To_Address (Add));
end Image;
-------------
-- Info_Of --
-------------
function Info_Of (Name : String)
return Host_Entry
is
Res : Hostent_Access;
C_Name : chars_ptr := New_String (Name);
begin
Res := C_Gethostbyname (C_Name);
Free (C_Name);
if Res = null then
Raise_Naming_Error (C_Errno, Name);
end if;
declare
Result : constant Host_Entry := Parse_Entry (Res.all);
begin
return Result;
end;
end Info_Of;
-------------
-- Info_Of --
-------------
function Info_Of (Addr : Address)
return Host_Entry
is
function Convert is
new Ada.Unchecked_Conversion (Source => In_Addr_Access,
Target => chars_ptr);
Temp : aliased In_Addr := To_In_Addr (Addr);
C_Addr : constant chars_ptr := Convert (Temp'Unchecked_Access);
Res : Hostent_Access;
begin
Res := C_Gethostbyaddr (C_Addr,
C.int (Temp'Size / CHAR_BIT),
Constants.Af_Inet);
if Res = null then
Raise_Naming_Error (C_Errno, Image (Addr));
end if;
declare
Result : constant Host_Entry := Parse_Entry (Res.all);
begin
return Result;
end;
end Info_Of;
------------------------
-- Info_Of_Name_Or_IP --
------------------------
function Info_Of_Name_Or_IP (Something : String)
return Host_Entry
is
begin
if Is_IP_Address (Something) then
return Info_Of (Value (Something));
else
return Info_Of (Something);
end if;
end Info_Of_Name_Or_IP;
-------------------
-- Is_Ip_Address --
-------------------
function Is_IP_Address (Something : String)
return Boolean
is
begin
for Index in Something'Range loop
declare
Current : Character renames Something (Index);
begin
if (Current < '0'
or else Current > '9')
and then Current /= '.' then
return False;
end if;
end;
end loop;
return True;
end Is_IP_Address;
-------------
-- Name_Of --
-------------
function Name_Of (Something : String)
return String
is
Hostent : constant Host_Entry := Info_Of_Name_Or_IP (Something);
begin
if Hostent.Name = null then
Ada.Exceptions.Raise_Exception (Naming_Error'Identity,
"No name for " & Something);
end if;
return Hostent.Name.all;
end Name_Of;
-----------------
-- Parse_Entry --
-----------------
function Parse_Entry (Host : Hostent)
return Host_Entry
is
C_Aliases : constant Thin.Chars_Ptr_Array :=
Chars_Ptr_Pointers.Value (Host.H_Aliases);
C_Addr : constant In_Addr_Access_Array :=
In_Addr_Access_Pointers.Value
(Host.H_Addr_List);
Result : Host_Entry (N_Aliases => C_Aliases'Length - 1,
N_Addresses => C_Addr'Length - 1);
begin
Result.Name := new String'(Value (Host.H_Name));
for I in 1 .. Result.Aliases'Last loop
declare
Index : Natural := I - 1 + Natural (C_Aliases'First);
Current : chars_ptr renames C_Aliases (size_t (Index));
begin
Result.Aliases (I) := new String'(Value (Current));
end;
end loop;
for I in Result.Addresses'Range loop
declare
Index : Natural := I - 1 + Natural (C_Addr'First);
Current : In_Addr_Access renames C_Addr (Index);
begin
Result.Addresses (I) := To_Address (Current.all);
end;
end loop;
return Result;
end Parse_Entry;
------------------------
-- Raise_Naming_Error --
------------------------
procedure Raise_Naming_Error
(Errno : in C.int;
Message : in String)
is
function Error_Message return String;
-- Return the message according to Errno.
-------------------
-- Error_Message --
-------------------
function Error_Message return String is
begin
case Errno is
when Host_Not_Found => return "Host not found";
when Try_Again => return "Try again";
when No_Recovery => return "No recovery";
when No_Address => return "No address";
when others => return "Unknown error" &
C.int'Image (Errno);
end case;
end Error_Message;
begin
Ada.Exceptions.Raise_Exception (Naming_Error'Identity,
Error_Message & ": " & Message);
end Raise_Naming_Error;
----------------
-- To_Address --
----------------
function To_Address (Addr : In_Addr) return Address
is
begin
return (H1 => Address_Component (Addr.S_B1),
H2 => Address_Component (Addr.S_B2),
H3 => Address_Component (Addr.S_B3),
H4 => Address_Component (Addr.S_B4));
end To_Address;
----------------
-- To_In_Addr --
----------------
function To_In_Addr (Addr : Address) return In_Addr
is
begin
return (S_B1 => unsigned_char (Addr.H1),
S_B2 => unsigned_char (Addr.H2),
S_B3 => unsigned_char (Addr.H3),
S_B4 => unsigned_char (Addr.H4));
end To_In_Addr;
-----------
-- Value --
-----------
function Value (Add : String) return Address
is
function Convert is
new Ada.Unchecked_Conversion (Source => Interfaces.Unsigned_32,
Target => In_Addr);
C_Add : chars_ptr := New_String (Add);
Converted : constant In_Addr := Convert (C_Inet_Addr (C_Add));
begin
Free (C_Add);
return (H1 => Address_Component (Converted.S_B1),
H2 => Address_Component (Converted.S_B2),
H3 => Address_Component (Converted.S_B3),
H4 => Address_Component (Converted.S_B4));
end Value;
end Sockets.Naming;

View File

@@ -1,113 +0,0 @@
-----------------------------------------------------------------------------
-- --
-- ADASOCKETS COMPONENTS --
-- --
-- S O C K E T S . N A M I N G --
-- --
-- S p e c --
-- --
-- $ReleaseVersion: 0.1.3 $ --
-- --
-- Copyright (C) 1996-1998 Free Software Foundation --
-- --
-- AdaSockets is free software; you can redistribute it and/or modify --
-- it under terms of the GNU General Public License as published by --
-- the Free Software Foundation; either version 2, or (at your option) --
-- any later version. AdaSockets is distributed in the hope that it --
-- will be useful, but WITHOUT ANY WARRANTY; without even the implied --
-- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. --
-- See the GNU General Public License for more details. You should --
-- have received a copy of the GNU General Public License distributed --
-- with AdaSockets; see file COPYING. If not, write to the Free --
-- Software Foundation, 59 Temple Place - Suite 330, Boston, MA --
-- 02111-1307, USA. --
-- --
-- As a special exception, if other files instantiate generics from --
-- this unit, or you link this unit with other files to produce an --
-- executable, this unit does not by itself cause the resulting --
-- executable to be covered by the GNU General Public License. This --
-- exception does not however invalidate any other reasons why the --
-- executable file might be covered by the GNU Public License. --
-- --
-- The main repository for this software is located at: --
-- http://www-inf.enst.fr/ANC/ --
-- --
-----------------------------------------------------------------------------
with Ada.Finalization;
with Sockets.Thin;
package Sockets.Naming is
type String_Access is access String;
type String_Array is array (Positive range <>) of String_Access;
subtype Address_Component is Natural range 0 .. 255;
type Address is record
H1, H2, H3, H4 : Address_Component;
end record;
-- An IPv4 address such as 137.194.160.12
type Address_Array is array (Positive range <>) of Address;
type Host_Entry (N_Aliases, N_Addresses : Natural) is
new Ada.Finalization.Controlled with record
Name : String_Access;
Aliases : String_Array (1 .. N_Aliases);
Addresses : Address_Array (1 .. N_Addresses);
end record;
-- A complete host structure. A host may have several IP addresses as
-- well as several aliases.
procedure Adjust (Object : in out Host_Entry);
procedure Finalize (Object : in out Host_Entry);
Naming_Error : exception;
-- This exception is raised when a name cannot be resolved
function Image (Add : Address) return String;
-- The dotted form corresponding to an IP address
function Image (Add : Thin.In_Addr) return String;
-- The dotted form corresponding to the packed form of an IP address
function Value (Add : String) return Address;
-- The IP address corresponding to a dotted form
function Info_Of (Name : String)
return Host_Entry;
-- Host entry of an IP name
function Info_Of (Addr : Address)
return Host_Entry;
-- Host entry of an IP address
function Is_IP_Address (Something : String)
return Boolean;
-- Return True if the name looks like an IP address, False otherwise
function Info_Of_Name_Or_IP (Something : String)
return Host_Entry;
-- Host entry of an IP name or a dotted form
function Address_Of (Something : String) return Address;
-- Address of an IP name or a dotted form
function Host_Name return String;
-- Return the name of the current host
function Name_Of (Something : String) return String;
-- Return the official name of an IP name or a dotted form
function To_In_Addr (Addr : Address) return Thin.In_Addr;
-- Convert an IP address to a In_Addr structure
function To_Address (Addr : Thin.In_Addr) return Address;
-- Convert a In_Addr structure to an IP address
function Any_Address return Address;
-- Return the value of inaddr_any
end Sockets.Naming;

View File

@@ -1,440 +0,0 @@
-----------------------------------------------------------------------------
-- --
-- ADASOCKETS COMPONENTS --
-- --
-- S O C K E T S . T H I N --
-- --
-- S p e c --
-- --
-- $ReleaseVersion: 0.1.3 $ --
-- --
-- Copyright (C) 1996-1998 Free Software Foundation --
-- --
-- AdaSockets is free software; you can redistribute it and/or modify --
-- it under terms of the GNU General Public License as published by --
-- the Free Software Foundation; either version 2, or (at your option) --
-- any later version. AdaSockets is distributed in the hope that it --
-- will be useful, but WITHOUT ANY WARRANTY; without even the implied --
-- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. --
-- See the GNU General Public License for more details. You should --
-- have received a copy of the GNU General Public License distributed --
-- with AdaSockets; see file COPYING. If not, write to the Free --
-- Software Foundation, 59 Temple Place - Suite 330, Boston, MA --
-- 02111-1307, USA. --
-- --
-- As a special exception, if other files instantiate generics from --
-- this unit, or you link this unit with other files to produce an --
-- executable, this unit does not by itself cause the resulting --
-- executable to be covered by the GNU General Public License. This --
-- exception does not however invalidate any other reasons why the --
-- executable file might be covered by the GNU Public License. --
-- --
-- The main repository for this software is located at: --
-- http://www-inf.enst.fr/ANC/ --
-- --
-----------------------------------------------------------------------------
with Interfaces.C.Pointers;
with Interfaces.C.Strings;
with System;
package Sockets.Thin is
package C renames Interfaces.C;
package Strings renames C.Strings;
generic package Pointers renames C.Pointers;
use type C.int;
-- This is an ugly hack to be able to declare the Failure constant
-- below.
Success : constant C.int := 0;
Failure : constant C.int := -1;
type Int_Access is access all C.int;
pragma Convention (C, Int_Access);
-- Access to C integers
type pid_t is new C.int;
pragma Convention (C, pid_t);
type mode_t is new C.int;
pragma Convention (C, mode_t);
type key_t is new C.int;
pragma Convention (C, key_t);
type Chars_Ptr_Array is array (C.size_t range <>) of
aliased Strings.chars_ptr;
package Chars_Ptr_Pointers is
new Pointers (C.size_t, Strings.chars_ptr, Chars_Ptr_Array,
Strings.Null_Ptr);
-- Arrays of C (char *)
type In_Addr is record
S_B1, S_B2, S_B3, S_B4 : C.unsigned_char;
end record;
pragma Convention (C, In_Addr);
-- Internet address
type In_Addr_Access is access all In_Addr;
pragma Convention (C, In_Addr_Access);
-- Access to internet address
Inaddr_Any : aliased constant In_Addr := (others => 0);
-- Any internet address (all the interfaces)
type In_Addr_Access_Array is array (Positive range <>)
of aliased In_Addr_Access;
pragma Convention (C, In_Addr_Access_Array);
package In_Addr_Access_Pointers is
new Pointers (Positive, In_Addr_Access, In_Addr_Access_Array,
null);
-- Array of internet addresses
type Sockaddr is record
Sa_Len : C.unsigned_char;
Sa_Family : C.unsigned_char;
Sa_Data : C.char_array (1 .. 14);
end record;
pragma Convention (C, Sockaddr);
-- Socket address
type Sockaddr_Access is access all Sockaddr;
pragma Convention (C, Sockaddr_Access);
-- Access to socket address
type Sockaddr_In is record
Sin_Len : C.unsigned_char;
Sin_Family : C.unsigned_char;
Sin_Port : C.unsigned_short := 0;
Sin_Addr : In_Addr := Inaddr_Any;
Sin_Zero : C.char_array (1 .. 8) := (others => C.char'Val (0));
end record;
pragma Convention (C, Sockaddr_In);
-- Internet socket address
type Sockaddr_In_Access is access all Sockaddr_In;
pragma Convention (C, Sockaddr_In_Access);
-- Access to internet socket address
type Ip_Mreq is record
Imr_Multiaddr : In_Addr;
Imr_Interface : In_Addr := Inaddr_Any;
end record;
pragma Convention (C, Ip_Mreq);
-- Multicast structure
type Hostent is record
H_Name : Strings.chars_ptr;
H_Aliases : Chars_Ptr_Pointers.Pointer;
H_Addrtype : C.int;
H_Length : C.int;
H_Addr_List : In_Addr_Access_Pointers.Pointer;
end record;
pragma Convention (C, Hostent);
-- Host entry
type Hostent_Access is access all Hostent;
pragma Convention (C, Hostent_Access);
-- Access to host entry
type Caddr_T is new Strings.chars_ptr;
-- Type Caddr_T is in fact a (char *)
type Iovec is record
Iov_Base : Caddr_T;
Iov_Len : C.int;
end record;
pragma Convention (C, Iovec);
-- Iovec C type
type Iovec_Access is access all Iovec;
pragma Convention (C, Iovec_Access);
-- Access to Iovec structure
type Msghdr is record
Msg_Name : Caddr_T;
Msg_Namelen : C.int;
Msg_Iov : Iovec_Access;
Msg_Iovlen : C.int;
Msg_Accrights : Caddr_T;
Msg_Accrightslen : C.int;
end record;
pragma Convention (C, Msghdr);
-- Message header
type Msghdr_Access is access all Msghdr;
pragma Convention (C, Msghdr_Access);
-- Access to message header.
type Two_Int is array (0 .. 1) of C.int;
pragma Convention (C, Two_Int);
-- Used with pipe()
type Pollfd is record
Fd : C.int;
Events : C.short;
Revents : C.short;
end record;
pragma Convention (C, Pollfd);
type Pollfd_Array is array (Positive range <>) of Pollfd;
pragma Convention (C, Pollfd_Array);
function C_Accept
(S : C.int;
Addr : System.Address;
Addrlen : access C.int)
return C.int;
function C_Bind
(S : C.int;
Name : System.Address;
Namelen : C.int)
return C.int;
procedure C_Close (Fildes : C.int);
function C_Connect
(S : C.int;
Name : System.Address;
Namelen : C.int)
return C.int;
function C_Dup2 (Fildes, Fildes2 : C.int) return C.int;
function C_Fcntl
(Fildes : C.int;
Cmd : C.int;
Arg : C.int := 0)
return C.int;
function C_Getenv
(Name : Strings.chars_ptr)
return Strings.chars_ptr;
function C_Gethostbyaddr
(Addr : Strings.chars_ptr;
Length : C.int;
Typ : C.int)
return Hostent_Access;
function C_Gethostbyname
(Name : Strings.chars_ptr)
return Hostent_Access;
function C_Gethostname
(Name : Strings.chars_ptr;
Namelen : C.int)
return C.int;
function C_Getpeername
(S : C.int;
Name : Sockaddr_Access;
Namelen : access C.int)
return C.int;
function C_Getpid return pid_t;
function C_Getsockname
(S : C.int;
Name : Sockaddr_Access;
Namelen : access C.int)
return C.int;
function C_Getsockopt
(S : C.int;
Level : C.int;
Optname : C.int;
Optval : Strings.chars_ptr;
Optlen : access C.int)
return C.int;
function C_Inet_Addr
(Cp : Strings.chars_ptr)
return Interfaces.Unsigned_32;
function C_Inet_Network
(Cp : Strings.chars_ptr)
return Interfaces.Unsigned_32;
function C_Inet_Makeaddr
(Net : C.int;
Lna : C.int)
return In_Addr;
function C_Inet_Lnaof (I : In_Addr) return C.int;
function C_Inet_Netof (I : In_Addr) return C.int;
function C_Inet_Ntoa (I : In_Addr) return Strings.chars_ptr;
function C_Kill (Pid : pid_t; Sig : C.int) return C.int;
function C_Listen (S, Backlog : C.int) return C.int;
function C_Msgget
(Key : key_t;
Msgflg : C.int)
return C.int;
function C_Msgrcv
(Msqid : C.int;
Msgp : Strings.chars_ptr;
Msgsz : C.int;
Msgtyp : C.long;
Msgflg : C.int)
return C.int;
function C_Msgsnd
(Msqid : C.int;
Msgp : Strings.chars_ptr;
Msgsz : C.int;
Msgflg : C.int)
return C.int;
function C_Open
(Path : Strings.chars_ptr;
Oflag : C.int;
Mode : mode_t := 0)
return C.int;
function C_Pipe (Filedes : access Two_Int) return C.int;
function C_Poll
(Fds : System.Address;
Nfds : C.unsigned_long;
Timeout : C.int)
return C.int;
function C_Read
(Fildes : C.int;
Buf : System.Address;
Nbyte : C.int)
return C.int;
function C_Readv
(Fildes : C.int;
Iov : Iovec_Access;
Iovcnt : C.int)
return C.int;
function C_Recv (S : C.int; Buf : System.Address; Len, Flags : C.int)
return C.int;
function C_Recvfrom
(S : C.int;
Buf : System.Address;
Len : C.int;
Flags : C.int;
From : System.Address;
Fromlen : access C.int)
return C.int;
function C_Recvmsg
(S : C.int;
Msg : Msghdr_Access;
Flags : C.int)
return C.int;
function C_Send
(S : C.int;
Msg : System.Address;
Len : C.int;
Flags : C.int)
return C.int;
function C_Sendmsg
(S : C.int;
Msg : Msghdr_Access;
Flags : C.int)
return C.int;
function C_Sendto
(S : C.int;
Msg : System.Address;
Len : C.int;
Flags : C.int;
To : System.Address;
Tolen : C.int)
return C.int;
function C_Setsid return pid_t;
function C_Setsockopt
(S : C.int;
Level : C.int;
Optname : C.int;
Optval : System.Address;
Optlen : C.int)
return C.int;
procedure C_Shutdown
(S : in C.int;
How : in C.int);
function C_Socket (Domain, Typ, Protocol : C.int) return C.int;
function C_Strerror (Errnum : C.int) return Strings.chars_ptr;
function C_Write
(Fildes : C.int;
Buf : System.Address;
Nbyte : C.int)
return C.int;
function C_Writev
(Fildes : C.int;
Iov : Iovec_Access;
Iovcnt : C.int)
return C.int;
private
pragma Import (C, C_Accept, "accept");
pragma Import (C, C_Bind, "bind");
pragma Import (C, C_Close, "close");
pragma Import (C, C_Connect, "connect");
pragma Import (C, C_Dup2, "dup2");
pragma Import (C, C_Fcntl, "fcntl");
pragma Import (C, C_Getenv, "getenv");
pragma Import (C, C_Gethostbyaddr, "gethostbyaddr");
pragma Import (C, C_Gethostbyname, "gethostbyname");
pragma Import (C, C_Gethostname, "gethostname");
pragma Import (C, C_Getpeername, "getpeername");
pragma Import (C, C_Getpid, "getpid");
pragma Import (C, C_Getsockname, "getsockname");
pragma Import (C, C_Getsockopt, "getsockopt");
pragma Import (C, C_Inet_Addr, "inet_addr");
pragma Import (C, C_Inet_Network, "inet_network");
pragma Import (C, C_Inet_Makeaddr, "inet_makeaddr");
pragma Import (C, C_Inet_Lnaof, "inet_lnaof");
pragma Import (C, C_Inet_Netof, "inet_netof");
pragma Import (C, C_Inet_Ntoa, "inet_ntoa");
pragma Import (C, C_Kill, "kill");
pragma Import (C, C_Listen, "listen");
pragma Import (C, C_Msgget, "msgget");
pragma Import (C, C_Msgrcv, "msgrcv");
pragma Import (C, C_Msgsnd, "msgsnd");
pragma Import (C, C_Open, "open");
pragma Import (C, C_Pipe, "pipe");
pragma Import (C, C_Poll, "poll");
pragma Import (C, C_Read, "read");
pragma Import (C, C_Readv, "readv");
pragma Import (C, C_Recv, "recv");
pragma Import (C, C_Recvfrom, "recvfrom");
pragma Import (C, C_Recvmsg, "recvmsg");
pragma Import (C, C_Send, "send");
pragma Import (C, C_Sendmsg, "sendmsg");
pragma Import (C, C_Sendto, "sendto");
pragma Import (C, C_Setsid, "setsid");
pragma Import (C, C_Setsockopt, "setsockopt");
pragma Import (C, C_Shutdown, "shutdown");
pragma Import (C, C_Socket, "socket");
pragma Import (C, C_Strerror, "strerror");
pragma Import (C, C_Write, "write");
pragma Import (C, C_Writev, "writev");
end Sockets.Thin;

View File

@@ -1,84 +0,0 @@
-----------------------------------------------------------------------------
-- --
-- ADASOCKETS COMPONENTS --
-- --
-- S O C K E T S . U T I L S --
-- --
-- B o d y --
-- --
-- $ReleaseVersion: 0.1.3 $ --
-- --
-- Copyright (C) 1998 École Nationale Supérieure des Télécommunications --
-- --
-- AdaSockets is free software; you can redistribute it and/or modify --
-- it under terms of the GNU General Public License as published by --
-- the Free Software Foundation; either version 2, or (at your option) --
-- any later version. AdaSockets is distributed in the hope that it --
-- will be useful, but WITHOUT ANY WARRANTY; without even the implied --
-- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. --
-- See the GNU General Public License for more details. You should --
-- have received a copy of the GNU General Public License distributed --
-- with AdaSockets; see file COPYING. If not, write to the Free --
-- Software Foundation, 59 Temple Place - Suite 330, Boston, MA --
-- 02111-1307, USA. --
-- --
-- As a special exception, if other files instantiate generics from --
-- this unit, or you link this unit with other files to produce an --
-- executable, this unit does not by itself cause the resulting --
-- executable to be covered by the GNU General Public License. This --
-- exception does not however invalidate any other reasons why the --
-- executable file might be covered by the GNU Public License. --
-- --
-- The main repository for this software is located at: --
-- http://www-inf.enst.fr/ANC/ --
-- --
-----------------------------------------------------------------------------
with Ada.Exceptions; use Ada.Exceptions;
with GNAT.OS_Lib; use GNAT.OS_Lib;
with System; use System;
package body Sockets.Utils is
use Interfaces.C;
---------------------
-- Port_To_Network --
---------------------
function Port_To_Network (Port : unsigned_short)
return unsigned_short
is
begin
if Default_Bit_Order = High_Order_First then
return Port;
else
return (Port / 256) + (Port mod 256) * 256;
end if;
end Port_To_Network;
------------------------
-- Raise_With_Message --
------------------------
procedure Raise_With_Message (Message : in String;
With_Errno : in Boolean := True)
is
begin
if With_Errno then
Raise_Exception (Constraint_Error'Identity,
Message & " (errno is" & Integer'Image (Errno) &
")");
else
Raise_Exception (Constraint_Error'Identity, Message);
end if;
-- The following line works around a bug in GNAT that does not
-- recognize Ada.Exceptions.Raise_Exception as raising an exception,
-- even if it can compute statically that the occurrence cannot
-- be Null_Occurrence ???
raise Program_Error;
end Raise_With_Message;
end Sockets.Utils;

View File

@@ -1,52 +0,0 @@
-----------------------------------------------------------------------------
-- --
-- ADASOCKETS COMPONENTS --
-- --
-- S O C K E T S . U T I L S --
-- --
-- S p e c --
-- --
-- $ReleaseVersion: 0.1.3 $ --
-- --
-- Copyright (C) 1998 École Nationale Supérieure des Télécommunications --
-- --
-- AdaSockets is free software; you can redistribute it and/or modify --
-- it under terms of the GNU General Public License as published by --
-- the Free Software Foundation; either version 2, or (at your option) --
-- any later version. AdaSockets is distributed in the hope that it --
-- will be useful, but WITHOUT ANY WARRANTY; without even the implied --
-- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. --
-- See the GNU General Public License for more details. You should --
-- have received a copy of the GNU General Public License distributed --
-- with AdaSockets; see file COPYING. If not, write to the Free --
-- Software Foundation, 59 Temple Place - Suite 330, Boston, MA --
-- 02111-1307, USA. --
-- --
-- As a special exception, if other files instantiate generics from --
-- this unit, or you link this unit with other files to produce an --
-- executable, this unit does not by itself cause the resulting --
-- executable to be covered by the GNU General Public License. This --
-- exception does not however invalidate any other reasons why the --
-- executable file might be covered by the GNU Public License. --
-- --
-- The main repository for this software is located at: --
-- http://www-inf.enst.fr/ANC/ --
-- --
-----------------------------------------------------------------------------
with Interfaces.C;
private package Sockets.Utils is
pragma Elaborate_Body;
procedure Raise_With_Message (Message : in String;
With_Errno : in Boolean := True);
pragma No_Return (Raise_With_Message);
-- Raise Constraint_Error with an associated error message
function Port_To_Network (Port : Interfaces.C.unsigned_short)
return Interfaces.C.unsigned_short;
pragma Inline (Port_To_Network);
end Sockets.Utils;

View File

@@ -1,409 +0,0 @@
-----------------------------------------------------------------------------
-- --
-- ADASOCKETS COMPONENTS --
-- --
-- S O C K E T S --
-- --
-- B o d y --
-- --
-- $ReleaseVersion: 0.1.3 $ --
-- --
-- Copyright (C) 1998 École Nationale Supérieure des Télécommunications --
-- --
-- AdaSockets is free software; you can redistribute it and/or modify --
-- it under terms of the GNU General Public License as published by --
-- the Free Software Foundation; either version 2, or (at your option) --
-- any later version. AdaSockets is distributed in the hope that it --
-- will be useful, but WITHOUT ANY WARRANTY; without even the implied --
-- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. --
-- See the GNU General Public License for more details. You should --
-- have received a copy of the GNU General Public License distributed --
-- with AdaSockets; see file COPYING. If not, write to the Free --
-- Software Foundation, 59 Temple Place - Suite 330, Boston, MA --
-- 02111-1307, USA. --
-- --
-- As a special exception, if other files instantiate generics from --
-- this unit, or you link this unit with other files to produce an --
-- executable, this unit does not by itself cause the resulting --
-- executable to be covered by the GNU General Public License. This --
-- exception does not however invalidate any other reasons why the --
-- executable file might be covered by the GNU Public License. --
-- --
-- The main repository for this software is located at: --
-- http://www-inf.enst.fr/ANC/ --
-- --
-----------------------------------------------------------------------------
with Ada.Characters.Latin_1; use Ada.Characters.Latin_1;
with Sockets.Constants; use Sockets.Constants;
with Sockets.Link;
pragma Warnings (Off, Sockets.Link);
with Sockets.Naming; use Sockets.Naming;
with Sockets.Thin; use Sockets.Thin;
with Sockets.Utils; use Sockets.Utils;
package body Sockets is
use Ada.Streams, Interfaces.C;
Socket_Domain_Match : constant array (Socket_Domain) of int :=
(AF_INET => Constants.Af_Inet);
Socket_Type_Match : constant array (Socket_Type) of int :=
(SOCK_STREAM => Constants.Sock_Stream,
SOCK_DGRAM => Constants.Sock_Dgram);
Shutdown_Type_Match : constant array (Shutdown_Type) of int :=
(Receive => 0,
Send => 1,
Both => 2);
Socket_Level_Match : constant array (Socket_Level) of int :=
(SOL_SOCKET => Constants.Sol_Socket,
IPPROTO_IP => Constants.Ipproto_Ip);
Socket_Option_Match : constant array (Socket_Option) of int :=
(SO_REUSEADDR => Constants.So_Reuseaddr,
IP_MULTICAST_TTL => Constants.Ip_Multicast_Ttl,
IP_ADD_MEMBERSHIP => Constants.Ip_Add_Membership,
IP_DROP_MEMBERSHIP => Constants.Ip_Drop_Membership,
IP_MULTICAST_LOOP => Constants.Ip_Multicast_Loop);
Socket_Option_Size : constant array (Socket_Option) of Natural :=
(SO_REUSEADDR => 4,
IP_MULTICAST_TTL => 1,
IP_ADD_MEMBERSHIP => 8,
IP_DROP_MEMBERSHIP => 8,
IP_MULTICAST_LOOP => 1);
function "*" (Left : String; Right : Natural) return String;
pragma Inline ("*");
CRLF : constant String := CR & LF;
---------
-- "*" --
---------
function "*" (Left : String; Right : Natural) return String is
Result : String (1 .. Left'Length * Right);
First : Positive := 1;
Last : Natural := First + Left'Length - 1;
begin
for I in 1 .. Right loop
Result (First .. Last) := Left;
First := First + Left'Length;
Last := Last + Left'Length;
end loop;
return Result;
end "*";
-------------------
-- Accept_Socket --
-------------------
procedure Accept_Socket (Socket : in Socket_FD;
New_Socket : out Socket_FD)
is
Sin : aliased Sockaddr_In;
Size : aliased int := Sin'Size / 8;
Code : int;
begin
Code := C_Accept (Socket.FD, Sin'Address, Size'Access);
if Code = Failure then
Raise_With_Message ("Accept system call failed");
else
New_Socket := (FD => Code);
end if;
end Accept_Socket;
----------
-- Bind --
----------
procedure Bind
(Socket : in Socket_FD;
Port : in Positive)
is
Sin : aliased Sockaddr_In;
begin
Sin.Sin_Family := Constants.Af_Inet;
Sin.Sin_Port := Port_To_Network (unsigned_short (Port));
if C_Bind (Socket.FD, Sin'Address, Sin'Size / 8) = Failure then
Raise_With_Message ("Bind failed");
end if;
end Bind;
-------------
-- Connect --
-------------
procedure Connect
(Socket : in Socket_FD;
Host : in String;
Port : in Positive)
is
Sin : aliased Sockaddr_In;
begin
Sin.Sin_Family := Constants.Af_Inet;
Sin.Sin_Addr := To_In_Addr (Address_Of (Host));
Sin.Sin_Port := Port_To_Network (unsigned_short (Port));
if C_Connect (Socket.FD, Sin'Address, Sin'Size / 8) = Failure then
raise Connection_Refused;
end if;
end Connect;
---------------------------
-- Customized_Setsockopt --
---------------------------
procedure Customized_Setsockopt (Socket : in Socket_FD'Class;
Optval : in Opt_Type)
is
begin
pragma Assert (Optval'Size / 8 = Socket_Option_Size (Optname));
if C_Setsockopt (Socket.FD, Socket_Level_Match (Level),
Socket_Option_Match (Optname),
Optval'Address, Optval'Size / 8) = Failure
then
Raise_With_Message ("Setsockopt failed");
end if;
end Customized_Setsockopt;
---------
-- Get --
---------
function Get (Socket : Socket_FD'Class) return String
is
Stream : constant Stream_Element_Array := Receive (Socket);
Result : String (Positive (Stream'First) .. Positive (Stream'Last));
begin
for I in Stream'Range loop
Result (Positive (I)) :=
Character'Val (Stream_Element'Pos (Stream (I)));
end loop;
return Result;
end Get;
--------------
-- Get_Line --
--------------
function Get_Line (Socket : Socket_FD'Class) return String is
Result : String (1 .. 1024);
Index : Positive := Result'First;
Byte : Stream_Element_Array (1 .. 1);
Char : Character;
begin
loop
Receive (Socket, Byte);
Char := Character'Val (Stream_Element'Pos (Byte (Byte'First)));
if Char = LF then
return Result (1 .. Index - 1);
elsif Char /= CR then
Result (Index) := Char;
Index := Index + 1;
if Index > Result'Last then
return Result & Get_Line (Socket);
end if;
end if;
end loop;
end Get_Line;
------------
-- Listen --
------------
procedure Listen
(Socket : in Socket_FD;
Queue_Size : in Positive := 5)
is
begin
if C_Listen (Socket.FD, int (Queue_Size)) = Failure then
Raise_With_Message ("Listen failed");
end if;
end Listen;
--------------
-- New_Line --
--------------
procedure New_Line (Socket : in Socket_FD'Class;
Count : in Natural := 1)
is
begin
Put (Socket, CRLF * Count);
end New_Line;
---------
-- Put --
---------
procedure Put (Socket : in Socket_FD'Class;
Str : in String)
is
Stream : Stream_Element_Array (Stream_Element_Offset (Str'First) ..
Stream_Element_Offset (Str'Last));
begin
for I in Str'Range loop
Stream (Stream_Element_Offset (I)) :=
Stream_Element'Val (Character'Pos (Str (I)));
end loop;
Send (Socket, Stream);
end Put;
--------------
-- Put_Line --
--------------
procedure Put_Line (Socket : in Socket_FD'Class; Str : in String)
is
begin
Put (Socket, Str & CRLF);
end Put_Line;
-------------
-- Receive --
-------------
function Receive (Socket : Socket_FD; Max : Stream_Element_Count := 4096)
return Ada.Streams.Stream_Element_Array
is
Buffer : Stream_Element_Array (1 .. Max);
Addr : aliased In_Addr;
Addrlen : aliased int := Addr'Size / 8;
Count : constant int :=
C_Recvfrom (Socket.FD, Buffer'Address, Buffer'Length, 0,
Addr'Address, Addrlen'Access);
begin
if Count < 0 then
Raise_With_Message ("Receive error");
elsif Count = 0 then
raise Connection_Closed;
end if;
return Buffer (1 .. Stream_Element_Offset (Count));
end Receive;
-------------
-- Receive --
-------------
procedure Receive (Socket : in Socket_FD'Class;
Data : out Ada.Streams.Stream_Element_Array)
is
Index : Stream_Element_Offset := Data'First;
Rest : Stream_Element_Count := Data'Length;
begin
while Rest > 0 loop
declare
Sub_Buffer : constant Stream_Element_Array :=
Receive (Socket, Rest);
Length : constant Stream_Element_Count := Sub_Buffer'Length;
begin
Data (Index .. Index + Length - 1) := Sub_Buffer;
Index := Index + Length;
Rest := Rest - Length;
end;
end loop;
end Receive;
----------
-- Send --
----------
procedure Send (Socket : in Socket_FD;
Data : in Stream_Element_Array)
is
Index : Stream_Element_Offset := Data'First;
Rest : Stream_Element_Count := Data'Length;
Count : int;
begin
while Rest > 0 loop
Count := C_Send (Socket.FD, Data (Index) 'Address, int (Rest), 0);
if Count < 0 then
Raise_With_Message ("Send failed");
elsif Count = 0 then
raise Connection_Closed;
end if;
Index := Index + Stream_Element_Count (Count);
Rest := Rest - Stream_Element_Count (Count);
end loop;
end Send;
----------------
-- Setsockopt --
----------------
procedure Setsockopt
(Socket : in Socket_FD'Class;
Level : in Socket_Level := Sol_Socket;
Optname : in Socket_Option;
Optval : in Integer)
is
begin
case Socket_Option_Size (Optname) is
when 1 =>
declare
C_Char_Optval : aliased char := char'Val (Optval);
begin
pragma Assert (C_Char_Optval'Size = 8);
if C_Setsockopt (Socket.FD, Socket_Level_Match (Level),
Socket_Option_Match (Optname),
C_Char_Optval'Address, 1) = Failure
then
Raise_With_Message ("Setsockopt failed");
end if;
end;
when 4 =>
declare
C_Int_Optval : aliased int := int (Optval);
begin
pragma Assert (C_Int_Optval'Size = 32);
if C_Setsockopt (Socket.FD, Socket_Level_Match (Level),
Socket_Option_Match (Optname),
C_Int_Optval'Address, 4) = Failure
then
Raise_With_Message ("Setsockopt failed");
end if;
end;
when others =>
Raise_With_Message ("Setsockopt called with wrong arguments",
False);
end case;
end Setsockopt;
--------------
-- Shutdown --
--------------
procedure Shutdown (Socket : in Socket_FD;
How : in Shutdown_Type := Both)
is
begin
C_Shutdown (Socket.FD, Shutdown_Type_Match (How));
end Shutdown;
------------
-- Socket --
------------
procedure Socket
(Sock : out Socket_FD;
Domain : in Socket_Domain := AF_INET;
Typ : in Socket_Type := SOCK_STREAM)
is
Result : constant int :=
C_Socket (Socket_Domain_Match (Domain), Socket_Type_Match (Typ), 0);
begin
if Result = Failure then
Raise_With_Message ("Unable to create socket");
end if;
Sock := (FD => Result);
end Socket;
end Sockets;

View File

@@ -1,155 +0,0 @@
-----------------------------------------------------------------------------
-- --
-- ADASOCKETS COMPONENTS --
-- --
-- S O C K E T S --
-- --
-- S p e c --
-- --
-- $ReleaseVersion: 0.1.3 $ --
-- --
-- Copyright (C) 1998 École Nationale Supérieure des Télécommunications --
-- --
-- AdaSockets is free software; you can redistribute it and/or modify --
-- it under terms of the GNU General Public License as published by --
-- the Free Software Foundation; either version 2, or (at your option) --
-- any later version. AdaSockets is distributed in the hope that it --
-- will be useful, but WITHOUT ANY WARRANTY; without even the implied --
-- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. --
-- See the GNU General Public License for more details. You should --
-- have received a copy of the GNU General Public License distributed --
-- with AdaSockets; see file COPYING. If not, write to the Free --
-- Software Foundation, 59 Temple Place - Suite 330, Boston, MA --
-- 02111-1307, USA. --
-- --
-- As a special exception, if other files instantiate generics from --
-- this unit, or you link this unit with other files to produce an --
-- executable, this unit does not by itself cause the resulting --
-- executable to be covered by the GNU General Public License. This --
-- exception does not however invalidate any other reasons why the --
-- executable file might be covered by the GNU Public License. --
-- --
-- The main repository for this software is located at: --
-- http://www-inf.enst.fr/ANC/ --
-- --
-----------------------------------------------------------------------------
with Ada.Streams;
with Interfaces.C;
package Sockets is
type Socket_FD is tagged private;
-- A socket
type Socket_Domain is (AF_INET);
-- AF_INET: Internet sockets (yes, should be PF_INET, but they hold the
-- same value)
type Socket_Type is (SOCK_STREAM, SOCK_DGRAM);
-- SOCK_STREAM: Stream mode (TCP)
-- SOCK_DGRAM: Datagram mode (UDP, Multicast)
procedure Socket
(Sock : out Socket_FD;
Domain : in Socket_Domain := AF_INET;
Typ : in Socket_Type := SOCK_STREAM);
-- Create a socket of the given mode
Connection_Refused : exception;
procedure Connect
(Socket : in Socket_FD;
Host : in String;
Port : in Positive);
-- Connect a socket on a given host/port. Raise Connection_Refused if
-- the connection has not been accepted by the other end.
procedure Bind
(Socket : in Socket_FD;
Port : in Positive);
-- Bind a socket on a given port
procedure Listen
(Socket : in Socket_FD;
Queue_Size : in Positive := 5);
-- Create a socket's listen queue
type Socket_Level is (SOL_SOCKET, IPPROTO_IP);
type Socket_Option is (SO_REUSEADDR, IP_MULTICAST_TTL,
IP_ADD_MEMBERSHIP, IP_DROP_MEMBERSHIP,
IP_MULTICAST_LOOP);
procedure Setsockopt
(Socket : in Socket_FD'Class;
Level : in Socket_Level := SOL_SOCKET;
Optname : in Socket_Option;
Optval : in Integer);
-- Set a socket option
generic
Level : Socket_Level;
Optname : Socket_Option;
type Opt_Type is private;
procedure Customized_Setsockopt (Socket : in Socket_FD'Class;
Optval : in Opt_Type);
-- Low level control on setsockopt
procedure Accept_Socket (Socket : in Socket_FD;
New_Socket : out Socket_FD);
-- Accept a connection on a socket
Connection_Closed : exception;
procedure Send (Socket : in Socket_FD;
Data : in Ada.Streams.Stream_Element_Array);
-- Send data on a socket. Raise Connection_Closed if the socket
-- has been closed.
function Receive (Socket : Socket_FD;
Max : Ada.Streams.Stream_Element_Count := 4096)
return Ada.Streams.Stream_Element_Array;
-- Receive data from a socket. May raise Connection_Closed
procedure Receive (Socket : in Socket_FD'Class;
Data : out Ada.Streams.Stream_Element_Array);
-- Fill data from a socket. Raise Connection_Closed if the socket has
-- been closed before the end of the array.
type Shutdown_Type is (Receive, Send, Both);
procedure Shutdown (Socket : in Socket_FD;
How : in Shutdown_Type := Both);
-- Close a previously opened socket
---------------------------------
-- String-oriented subprograms --
---------------------------------
procedure Put (Socket : in Socket_FD'Class;
Str : in String);
-- Send a string on the socket
procedure New_Line (Socket : in Socket_FD'Class;
Count : in Natural := 1);
-- Send CR/LF sequences on the socket
procedure Put_Line (Socket : in Socket_FD'Class;
Str : in String);
-- Send a string + CR/LF on the socket
function Get (Socket : Socket_FD'Class) return String;
-- Get a string from the socket
function Get_Line (Socket : Socket_FD'Class) return String;
-- Get a full line from the socket. CR is ignored and LF is considered
-- as an end-of-line marker.
private
type Socket_FD is tagged record
FD : Interfaces.C.int;
end record;
end Sockets;

View File

@@ -1,43 +0,0 @@
#
# Makefile for network listener example
#
MAIN=listener
# Tool paths
tooldir=/usr/local/rtems
rtemsdir=${tooldir}/ts_386ex
# Tool names
GCC=${tooldir}/bin/i386-rtemself-gcc
GNATMAKE=${tooldir}/bin/i386-rtemself-gnatmake
SIZE=${tooldir}/bin/i386-rtemself-size
SIS=${tooldir}/bin/sis
GDB=${tooldir}/bin/sis-gdb
CINCLUDES=-I/usr/local/rtems/ts_386ex/lib/include/networking
AINCLUDES=-i -I/usr/local/rtems/lib/adasockets
CARGS=-B${rtemsdir}/lib/ -specs bsp_specs -qrtems
all: init.o
$(GNATMAKE) -v -O -gnata -gnatE -gnato $(AINCLUDES) $(MAIN) -g \
-bargs -r \
-cargs $(CARGS) \
-largs $(CARGS) init.o
$(SIZE) $(MAIN)
init.o: init.c
$(GCC) -O4 -g -Wall -ansi -fasm $(CARGS) $(CINCLUDES) -c init.c
run:
$(SIS) $(MAIN)
gdb:
$(GDB) $(MAIN)
clean:
rm -f b_$(MAIN).c b_$(MAIN).o *.o *.ali $(MAIN)

View File

@@ -1,97 +0,0 @@
/*
* COPYRIGHT (c) 1989-1997.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be found in
* the file LICENSE in this distribution or at
* http://www.rtems.com/license/LICENSE.
*
* $Id$
*/
#include <bsp.h>
#include <assert.h>
#include <pthread.h>
#include <stdio.h>
#include <rtems/rtems_bsdnet.h>
#include "../networkconfig.h"
#ifdef GNAT_PID
#include <unistd.h>
pid_t getpid()
{
return GNAT_PID;
}
#endif
/*
* By having the POSIX_Init thread create a second thread just
* to invoke gnat_main, we can override all default attributes
* of the "Ada environment task". Otherwise, we would be
* stuck with the defaults set by RTEMS.
*/
void *start_gnat_main( void * argument )
{
extern int gnat_main ( int argc, char **argv, char **envp );
(void) gnat_main ( 0, 0, 0 );
exit( 0 );
return 0;
}
void *POSIX_Init( void *argument )
{
pthread_t thread_id;
pthread_attr_t attr;
int status;
rtems_bsdnet_initialize_network ();
status = pthread_attr_init( &attr );
assert( !status );
#ifdef GNAT_MAIN_STACKSPACE
status = pthread_attr_setstacksize( &attr, GNAT_MAIN_STACKSPACE );
assert( !status );
#endif
status = pthread_create( &thread_id, &attr, start_gnat_main, NULL );
assert( !status );
pthread_exit( 0 );
return 0;
}
/* configuration information */
#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
/*
#define CONFIGURE_MICROSECONDS_PER_TICK RTEMS_MILLISECONDS_TO_MICROSECONDS(1)
*/
#define CONFIGURE_POSIX_INIT_THREAD_TABLE
#define CONFIGURE_EXECUTIVE_RAM_SIZE (512*1024)
#define CONFIGURE_INIT_TASK_STACK_SIZE (10*1024)
#define CONFIGURE_INIT_TASK_PRIORITY 120
#define CONFIGURE_INIT_TASK_INITIAL_MODES (RTEMS_PREEMPT | \
RTEMS_NO_TIMESLICE | \
RTEMS_NO_ASR | \
RTEMS_INTERRUPT_LEVEL(0))
#define CONFIGURE_MAXIMUM_POSIX_THREADS 20
#define CONFIGURE_MAXIMUM_POSIX_KEYS 20
#define CONFIGURE_MAXIMUM_POSIX_MUTEXES 30
#define CONFIGURE_MAXIMUM_POSIX_CONDITION_VARIABLES 20
#define CONFIGURE_INIT
#include <confdefs.h>

View File

@@ -1,114 +0,0 @@
-----------------------------------------------------------------------------
-- --
-- ADASOCKETS COMPONENTS --
-- --
-- L I S T E N E R --
-- --
-- B o d y --
-- --
-- $ReleaseVersion: 0.1.3 $ --
-- --
-- Copyright (C) 1998 École Nationale Supérieure des Télécommunications --
-- --
-- AdaSockets is free software; you can redistribute it and/or modify --
-- it under terms of the GNU General Public License as published by --
-- the Free Software Foundation; either version 2, or (at your option) --
-- any later version. AdaSockets is distributed in the hope that it --
-- will be useful, but WITHOUT ANY WARRANTY; without even the implied --
-- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. --
-- See the GNU General Public License for more details. You should --
-- have received a copy of the GNU General Public License distributed --
-- with AdaSockets; see file COPYING. If not, write to the Free --
-- Software Foundation, 59 Temple Place - Suite 330, Boston, MA --
-- 02111-1307, USA. --
-- --
-- As a special exception, if other files instantiate generics from --
-- this unit, or you link this unit with other files to produce an --
-- executable, this unit does not by itself cause the resulting --
-- executable to be covered by the GNU General Public License. This --
-- exception does not however invalidate any other reasons why the --
-- executable file might be covered by the GNU Public License. --
-- --
-- The main repository for this software is located at: --
-- http://www-inf.enst.fr/ANC/ --
-- --
-----------------------------------------------------------------------------
with Ada.Exceptions; use Ada.Exceptions;
with Ada.Text_IO; use Ada.Text_IO;
with Sockets; use Sockets;
procedure Listener is
-- Usage: listener
-- Example: listener
-- then telnet localhost `listen_port'
Listen_Port : Positive := 5000;
task type Echo is
entry Start (FD : in Socket_FD);
end Echo;
function Rev (S : String) return String;
-- Reverse a string
----------
-- Echo --
----------
task body Echo is
Sock : Socket_FD;
begin
select
accept Start (FD : in Socket_FD) do
Sock := FD;
end Start;
or
terminate;
end select;
loop
Put_Line (Sock, Rev (Get_Line (Sock)));
end loop;
exception
when Connection_Closed =>
Put_Line ("Connection closed");
Shutdown (Sock, Both);
end Echo;
Accepting_Socket : Socket_FD;
Incoming_Socket : Socket_FD;
type Echo_Access is access Echo;
Dummy : Echo_Access;
---------
-- Rev --
---------
function Rev (S : String) return String is
Result : String (1 .. S'Length);
Index : Natural := 0;
begin
for I in reverse S'Range loop
Index := Index + 1;
Result (Index) := S (I);
end loop;
return Result;
end Rev;
begin
Socket (Accepting_Socket, AF_INET, SOCK_STREAM);
Setsockopt (Accepting_Socket, SOL_SOCKET, SO_REUSEADDR, 1);
Bind (Accepting_Socket, Listen_Port);
Listen (Accepting_Socket);
loop
Put_Line ("Waiting for new connection");
Accept_Socket (Accepting_Socket, Incoming_Socket);
Put_Line ("New connection acknowledged");
Dummy := new Echo;
Dummy.Start (Incoming_Socket);
end loop;
end Listener;

View File

@@ -1,104 +0,0 @@
/*
* Network configuration
*
************************************************************
* EDIT THIS FILE TO REFLECT YOUR NETWORK CONFIGURATION *
* BEFORE RUNNING ANY RTEMS PROGRAMS WHICH USE THE NETWORK! *
************************************************************
*
* $Id$
*/
#ifndef _RTEMS_NETWORKCONFIG_H_
#define _RTEMS_NETWORKCONFIG_H_
#define RTEMS_USE_BOOTP
#include <bsp.h>
/*
* Define RTEMS_SET_ETHERNET_ADDRESS if you want to specify the
* Ethernet address here. If RTEMS_SET_ETHERNET_ADDRESS is not
* defined the driver will choose an address.
*/
/*#define RTEMS_SET_ETHERNET_ADDRESS*/
#if (defined (RTEMS_SET_ETHERNET_ADDRESS))
static char ethernet_address[6] = { 0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX };
#endif
/*
* Default network interface
*/
static struct rtems_bsdnet_ifconfig netdriver_config = {
RTEMS_BSP_NETWORK_DRIVER_NAME, /* name */
RTEMS_BSP_NETWORK_DRIVER_ATTACH, /* attach function */
NULL, /* link to next interface */
#if (defined (RTEMS_USE_BOOTP))
NULL, /* BOOTP supplies IP address */
NULL, /* BOOTP supplies IP net mask */
#else
"127.37.12.19", /* IP address of device */
"255.255.255.0", /* IP net mask */
#endif /* !RTEMS_USE_BOOTP */
#if (defined (RTEMS_SET_ETHERNET_ADDRESS))
ethernet_address, /* Ethernet hardware address */
#else
NULL, /* Driver supplies hardware address */
#endif
0, /* TRUE == Ignore broadcast packets */
0, /* Default MTU */
0, /* Default rbufs */
0, /* Default xbufs */
0x300, /* I/O port on ethernet card */
5, /* IRQ */
0x0000 /* Shared memory start */
};
/*
* Network configuration
*/
struct rtems_bsdnet_config rtems_bsdnet_config = {
&netdriver_config,
#if (defined (RTEMS_USE_BOOTP))
rtems_bsdnet_do_bootp,
#else
NULL,
#endif
0, /* Default network task priority */
0, /* Default mbuf capacity */
0, /* Default mbuf cluster capacity */
#if defined (RTEMS_USE_BOOTP)
NULL,
NULL,
NULL,
NULL,
{NULL,NULL,NULL},
#else
"rtems0", /* Host name */
"ece.ubc.ca", /* Domain name */
"127.37.12.254", /* Gateway: */
"127.37.12.19", /* Log host: */
{"127.37.15.9"}, /* Name server(s) */
#endif /* RTEMS_USE_BOOTP */
};
/*
* For TFTP test application
*/
#if (!defined (RTEMS_USE_BOOTP))
#define RTEMS_TFTP_TEST_HOST_NAME "127.37.12.19"
#define RTEMS_TFTP_TEST_FILE_NAME "bootfiles/xxx"
#endif
#endif /* _RTEMS_NETWORKCONFIG_H_ */

View File

@@ -1,46 +0,0 @@
#
# Makefile for tcprelay example
#
MAIN=tcprelay
# Tool paths
tooldir=/usr/local/rtems
rtemsdir=${tooldir}/ts_386ex
# Tool names
GCC=${tooldir}/bin/i386-rtemself-gcc
GNATMAKE=${tooldir}/bin/i386-rtemself-gnatmake
SIZE=${tooldir}/bin/i386-rtemself-size
SIS=${tooldir}/bin/sis
GDB=${tooldir}/bin/sis-gdb
CINCLUDES=-I/usr/local/rtems/ts_386ex/lib/include/networking
AINCLUDES=-i -I/usr/local/rtems/lib/adasockets
CARGS=-B${rtemsdir}/lib/ -specs bsp_specs -qrtems
all: init.o print_error.o
$(GNATMAKE) -O -gnata -gnatE -gnato $(AINCLUDES) $(MAIN) -g \
-bargs -r \
-cargs $(CARGS) \
-largs $(CARGS) init.o print_error.o
$(SIZE) $(MAIN)
init.o: init.c
$(GCC) -O4 -g -Wall -ansi -fasm $(CARGS) $(CINCLUDES) -c init.c
print_error.o: print_error.c
$(GCC) -O4 -g -Wall -ansi -fasm $(CARGS) $(CINCLUDES) -c print_error.c
run:
$(SIS) $(MAIN)
gdb:
$(GDB) $(MAIN)
clean:
rm -f b_$(MAIN).c b_$(MAIN).o *.o *.ali $(MAIN)

View File

@@ -1,99 +0,0 @@
/*
* COPYRIGHT (c) 1989-1997.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be found in
* the file LICENSE in this distribution or at
* http://www.rtems.com/license/LICENSE.
*
* $Id$
*/
#include <bsp.h>
#include <assert.h>
#include <pthread.h>
#include <stdio.h>
#include <rtems/rtems_bsdnet.h>
#include "../networkconfig.h"
#ifdef GNAT_PID
#include <unistd.h>
pid_t getpid()
{
return GNAT_PID;
}
#endif
/*
* By having the POSIX_Init thread create a second thread just
* to invoke gnat_main, we can override all default attributes
* of the "Ada environment task". Otherwise, we would be
* stuck with the defaults set by RTEMS.
*/
void *start_gnat_main( void * argument )
{
extern int gnat_main ( int argc, char **argv, char **envp );
(void) gnat_main ( 0, 0, 0 );
exit( 0 );
return 0;
}
#define GNAT_MAIN_STACKSPACE (32*1024)
void *POSIX_Init( void *argument )
{
pthread_t thread_id;
pthread_attr_t attr;
int status;
rtems_bsdnet_initialize_network ();
status = pthread_attr_init( &attr );
assert( !status );
#ifdef GNAT_MAIN_STACKSPACE
status = pthread_attr_setstacksize( &attr, GNAT_MAIN_STACKSPACE );
assert( !status );
#endif
status = pthread_create( &thread_id, &attr, start_gnat_main, NULL );
assert( !status );
pthread_exit( 0 );
return 0;
}
/* configuration information */
#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
/*
#define CONFIGURE_MICROSECONDS_PER_TICK RTEMS_MILLISECONDS_TO_MICROSECONDS(1)
*/
#define CONFIGURE_POSIX_INIT_THREAD_TABLE
#define CONFIGURE_EXECUTIVE_RAM_SIZE (384*1024)
#define CONFIGURE_INIT_TASK_STACK_SIZE (10*1024)
#define CONFIGURE_INIT_TASK_PRIORITY 120
#define CONFIGURE_INIT_TASK_INITIAL_MODES (RTEMS_PREEMPT | \
RTEMS_NO_TIMESLICE | \
RTEMS_NO_ASR | \
RTEMS_INTERRUPT_LEVEL(0))
#define CONFIGURE_MAXIMUM_POSIX_THREADS 20
#define CONFIGURE_MAXIMUM_POSIX_KEYS 20
#define CONFIGURE_MAXIMUM_POSIX_MUTEXES 30
#define CONFIGURE_MAXIMUM_POSIX_CONDITION_VARIABLES 20
#define CONFIGURE_INIT
#include <confdefs.h>

View File

@@ -1,18 +0,0 @@
#include <stdio.h>
#include <string.h>
#include <errno.h>
void
print_error (void) {
printf("Problem connecting socket: %s\n", strerror (errno));
}
void
dump_sin (unsigned char *dp) {
int i;
printf("Dump of sockaddr_in =\n");
for(i=0; i<16; i++)
printf("%x ", *dp++);
printf("\n");
}

Some files were not shown because too many files have changed in this diff Show More