forked from Imagelibrary/rtems
Remove (Abandoned).
This commit is contained in:
@@ -1,8 +0,0 @@
|
||||
aclocal.m4
|
||||
autom4te*.cache
|
||||
config.cache
|
||||
config.log
|
||||
config.status
|
||||
configure
|
||||
Makefile
|
||||
Makefile.in
|
||||
@@ -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.
|
||||
@@ -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
|
||||
@@ -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!
|
||||
|
||||
@@ -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}
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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
|
||||
@@ -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();
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
bspopts.h
|
||||
bspopts.h.in
|
||||
stamp-h
|
||||
stamp-h.in
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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 ;
|
||||
*/
|
||||
|
||||
@@ -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
|
||||
@@ -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.
|
||||
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
@@ -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 . */
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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
|
||||
@@ -1,8 +0,0 @@
|
||||
aclocal.m4
|
||||
autom4te*.cache
|
||||
config.cache
|
||||
config.log
|
||||
config.status
|
||||
configure
|
||||
Makefile
|
||||
Makefile.in
|
||||
@@ -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.
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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}
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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 */
|
||||
@@ -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
|
||||
@@ -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();
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
bspopts.h
|
||||
bspopts.h.in
|
||||
stamp-h
|
||||
stamp-h.in
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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 */
|
||||
@@ -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
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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 ;
|
||||
*/
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
@@ -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 . */
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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
|
||||
@@ -1,8 +0,0 @@
|
||||
aclocal.m4
|
||||
autom4te*.cache
|
||||
config.cache
|
||||
config.log
|
||||
config.status
|
||||
configure
|
||||
Makefile
|
||||
Makefile.in
|
||||
@@ -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.
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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)
|
||||
@@ -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
|
||||
@@ -1 +0,0 @@
|
||||
ddd --debugger "i386-rtemself-gdb --nx --command=./cmds" $*
|
||||
@@ -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;
|
||||
@@ -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>
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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
|
||||
@@ -1 +0,0 @@
|
||||
ddd --debugger "i386-rtemself-gdb --nx --command=./cmds" $*
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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 );
|
||||
}
|
||||
@@ -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();
|
||||
|
||||
}
|
||||
@@ -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
|
||||
@@ -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 */
|
||||
Binary file not shown.
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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/
|
||||
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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>
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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)
|
||||
@@ -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>
|
||||
@@ -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;
|
||||
@@ -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_ */
|
||||
@@ -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)
|
||||
@@ -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>
|
||||
@@ -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
Reference in New Issue
Block a user