X-Git-Url: http://rtime.felk.cvut.cz/gitweb/rtems-devel.git/blobdiff_plain/b43d26bd4d8cb9dda0fe9be21883dffde1f775af..e3003e37814bd44142fd2965a72b8f8b9c95dfb4:/rtems-patches/current/rtems-clone-ss555-to-ec555.patch diff --git a/rtems-patches/current/rtems-clone-ss555-to-ec555.patch b/rtems-patches/current/rtems-clone-ss555-to-ec555.patch deleted file mode 100644 index 55e5c56..0000000 --- a/rtems-patches/current/rtems-clone-ss555-to-ec555.patch +++ /dev/null @@ -1,2862 +0,0 @@ ---- - c/src/lib/libbsp/powerpc/ec555/ChangeLog | 225 ++++++++++++ - c/src/lib/libbsp/powerpc/ec555/Makefile.am | 50 ++ - c/src/lib/libbsp/powerpc/ec555/README | 262 ++++++++++++++ - c/src/lib/libbsp/powerpc/ec555/bsp_specs | 13 - c/src/lib/libbsp/powerpc/ec555/clock/p_clock.c | 69 +++ - c/src/lib/libbsp/powerpc/ec555/configure.ac | 52 ++ - c/src/lib/libbsp/powerpc/ec555/console/console.c | 368 +++++++++++++++++++ - c/src/lib/libbsp/powerpc/ec555/include/bsp.h | 112 +++++ - c/src/lib/libbsp/powerpc/ec555/include/coverhd.h | 116 ++++++ - c/src/lib/libbsp/powerpc/ec555/include/tm27.h | 54 ++ - c/src/lib/libbsp/powerpc/ec555/irq/irq.h | 55 ++ - c/src/lib/libbsp/powerpc/ec555/preinstall.am | 58 +++ - c/src/lib/libbsp/powerpc/ec555/startup/bspstart.c | 177 +++++++++ - c/src/lib/libbsp/powerpc/ec555/startup/iss555.c | 148 +++++++ - c/src/lib/libbsp/powerpc/ec555/startup/linkcmds | 319 +++++++++++++++++ - c/src/lib/libbsp/powerpc/ec555/startup/start.S | 411 ++++++++++++++++++++++ - c/src/lib/libbsp/powerpc/ec555/startup/tm27supp.c | 29 + - c/src/lib/libbsp/powerpc/ec555/times | 189 ++++++++++ - make/custom/ec555.cfg | 38 ++ - 19 files changed, 2745 insertions(+) - -Index: rtems-4.9.3/c/src/lib/libbsp/powerpc/ec555/ChangeLog -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ rtems-4.9.3/c/src/lib/libbsp/powerpc/ec555/ChangeLog 2008-12-08 06:15:50.000000000 +0100 -@@ -0,0 +1,225 @@ -+2008-12-08 Ralf Corsépius -+ -+ * bsp_specs: Backport from CVS-HEAD. -+ -+2008-09-29 Ralf Corsépius -+ -+ * Makefile.am: Remove noinst_PROGRAMS (Unused). -+ -+2008-05-15 Joel Sherrill -+ -+ * 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 -+ -+ * Makefile.am: Rework to avoid .rel files. -+ -+2008-05-12 Joel Sherrill -+ -+ * 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-04-23 Joel Sherrill -+ -+ * startup/bspstart.c: Remove all references to -+ console_reserve_resources and termios_reserve_resources. -+ -+2008-03-03 Joel Sherrill -+ -+ * startup/linkcmds: Add wildcard to gcc_except_table section so -+ programs compiled with gcc 4.3.x can link. -+ -+2008-01-18 David Erickson -+ -+ * startup/bspstart.c: Add semicolon. -+ -+2008-01-11 Joel Sherrill -+ -+ * startup/bspstart.c: Add bsp_timer_least_valid and -+ bsp_timer_average_overhead so tmtests link. -+ -+2007-12-11 Joel Sherrill -+ -+ * 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 -+ -+ * 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 -+ -+ * 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-28 Joel Sherrill -+ -+ * startup/bspstart.c: Eliminate PowerPC specific elements from the CPU -+ Table. They have been replaced with variables named bsp_XXX as -+ needed. -+ -+2007-04-12 Ralf Corsépius -+ -+ * bsp_specs: Remove qrtems_debug. -+ -+2007-04-06 Ralf Corsépius -+ -+ * bsp_specs: Remove lib (Now expected to exist in GCC). -+ -+2006-12-02 Ralf Corsépius -+ -+ * configure.ac: New BUG-REPORT address. -+ -+2006-11-15 Joel Sherrill -+ -+ * Makefile.am: Merge c_rtems_main() into boot_card(). This eliminated a -+ file and simplified initialization. -+ -+2006-10-17 Ralf Corsépius -+ -+ * configure.ac: Require autoconf-2.60. Require automake-1.10. -+ -+2006-03-08 Joel Sherrill -+ -+ * startup/linkcmds: Add .gnu.linkonce.b.* section. -+ -+2006-02-08 Joel Sherrill -+ -+ * startup/linkcmds: Add sections required by newer gcc versions. -+ -+2006-01-11 Ralf Corsepius -+ -+ * configure.ac: Remove explicit ampolish3 support (now in -+ RTEMS_BSP_CONFIGURE). -+ -+2006-01-10 Ralf Corsepius -+ -+ * configure.ac: Add ampolish3 support. -+ * Makefile.am: Add preinstall.am. -+ -+2006-01-09 Ralf Corsepius -+ -+ * Makefile.am: Don't include subdirs.am. -+ -+2005-05-26 Ralf Corsepius -+ -+ * include/bsp.h: New header guard. -+ -+2005-05-10 Ralf Corsepius -+ -+ * console/console.c: Eliminate unsigned8. -+ -+2005-04-26 Joel Sherrill -+ -+ * startup/bspstart.c: Eliminate warnings. -+ -+2005-04-25 Jennifer Averett -+ -+ PR 779/bsp -+ * clock/p_clock.c: Add parameter to powerpc exception handler routines -+ -+2005-02-17 Ralf Corsepius -+ -+ * startup/bspstart.c: include . -+ Use PPC_MINIMUM_STACK_FRAME_SIZE instead of -+ CPU_MINIMUM_STACK_FRAME_SIZE. -+ -+2005-02-16 Ralf Corsepius -+ -+ * configure.ac: Remove argument from RTEMS_PPC_EXCEPTIONS. -+ -+2005-02-11 Ralf Corsepius -+ -+ * Makefile.am: Merge-in wrapup/Makefile.am. -+ * wrapup/Makefile.am: Remove. -+ * configure.ac: Reflect changes above. -+ -+2005-01-07 Ralf Corsepius -+ -+ * Makefile.am: Eliminate CFLAGS_OPTIMIZE_V. -+ -+2005-01-02 Ralf Corsepius -+ -+ * Makefile.am, wrapup/Makefile.am: Remove build-variant support. -+ -+2004-10-20 Ralf Corsepius -+ -+ * console/console.c, include/bsp.h, startup/bspstart.c, -+ startup/iss555.c: Use POSIX fixed size types. -+ -+2004-09-24 Ralf Corsepius -+ -+ * configure.ac: Require automake > 1.9. -+ -+2004-04-23 Ralf Corsepius -+ -+ PR 610/bsps -+ * Makefile.am: Add include/tm27.h, Cosmetics. -+ * include/tm27.h: Final cosmetics. -+ -+2004-04-22 Ralf Corsepius -+ -+ * include/bsp.h: Split out tmtest27 support. -+ * include/tm27.h: New. -+ -+2004-04-21 Joel Sherrill -+ -+ PR 611/bsps -+ * Makefile.am, include/bsp.h, wrapup/Makefile.am: Follow conventions -+ for tm27 and do not add another macro definition. -+ * startup/tm27supp.c: New file. -+ -+2004-04-21 Joel Sherrill -+ -+ PR 611/bsps -+ * Makefile.am, include/bsp.h, wrapup/Makefile.am: Follow conventions -+ for tm27 and do not add another macro definition. -+ * startup/tm27supp.c: New file. -+ -+2004-04-21 Ralf Corsepius -+ -+ PR 613/bsps -+ * include/bsp.h: Remove MAX_LONG_TEST_DURATION. -+ -+2004-04-21 Ralf Corsepius -+ -+ PR 614/bsps -+ * include/bsp.h: Remove MAX_SHORT_TEST_DURATION (Unused). -+ -+2004-04-13 Ralf Corsepius -+ -+ * include/bsp.h, startup/start.S: Reflect new locations of cpukit headers. -+ -+2004-04-12 David Querbach -+ -+ * .cvsignore, ChangeLog, Makefile.am, README, bsp_specs, configure.ac, -+ times, clock/p_clock.c, console/console.c, include/.cvsignore, -+ include/bsp.h, include/coverhd.h, irq/irq.h, startup/bspstart.c, -+ startup/iss555.c, startup/linkcmds, startup/start.S, -+ wrapup/.cvsignore, wrapup/Makefile.am: New files. -+ -Index: rtems-4.9.3/c/src/lib/libbsp/powerpc/ec555/Makefile.am -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ rtems-4.9.3/c/src/lib/libbsp/powerpc/ec555/Makefile.am 2008-09-29 03:47:53.000000000 +0200 -@@ -0,0 +1,50 @@ -+## -+## $Id: Makefile.am,v 1.13.2.1 2008/09/29 01:47:53 ralf Exp $ -+## -+ -+ACLOCAL_AMFLAGS = -I ../../../../aclocal -+ -+include $(top_srcdir)/../../../../automake/compile.am -+include $(top_srcdir)/../../bsp.am -+ -+dist_project_lib_DATA = bsp_specs -+ -+include_HEADERS = include/bsp.h -+include_HEADERS += include/tm27.h -+ -+nodist_include_HEADERS = include/bspopts.h -+DISTCLEANFILES = include/bspopts.h -+ -+include_bspdir = $(includedir)/bsp -+ -+include_HEADERS += include/coverhd.h -+include_bsp_HEADERS = irq/irq.h -+ -+EXTRA_DIST = times -+ -+dist_project_lib_DATA += startup/linkcmds -+ -+pclock_SOURCES = clock/p_clock.c -+console_SOURCES = console/console.c -+startup_SOURCES = ../../shared/bspclean.c ../../shared/bsplibc.c \ -+ ../../shared/bsppost.c ../../shared/bsppredriverhook.c \ -+ startup/bspstart.c ../../shared/bootcard.c startup/iss555.c \ -+ ../../shared/sbrk.c ../../shared/gnatinstallhandler.c startup/start.S -+tm27supp_SOURCES = startup/tm27supp.c -+ -+noinst_LIBRARIES = libbsp.a -+libbsp_a_SOURCES = $(pclock_SOURCES) $(console_SOURCES) $(startup_SOURCES) \ -+ $(tm27supp_SOURCES) -+ -+libbsp_a_LIBADD = \ -+ ../../../libcpu/@RTEMS_CPU@/shared/cpuIdent.rel \ -+ ../../../libcpu/@RTEMS_CPU@/@exceptions@/rtems-cpu.rel \ -+ ../../../libcpu/@RTEMS_CPU@/mpc5xx/clock.rel \ -+ ../../../libcpu/@RTEMS_CPU@/mpc5xx/console-generic.rel \ -+ ../../../libcpu/@RTEMS_CPU@/mpc5xx/exceptions.rel \ -+ ../../../libcpu/@RTEMS_CPU@/mpc5xx/irq.rel \ -+ ../../../libcpu/@RTEMS_CPU@/mpc5xx/timer.rel \ -+ ../../../libcpu/@RTEMS_CPU@/mpc5xx/vectors.rel -+ -+include $(srcdir)/preinstall.am -+include $(top_srcdir)/../../../../automake/local.am -Index: rtems-4.9.3/c/src/lib/libbsp/powerpc/ec555/README -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ rtems-4.9.3/c/src/lib/libbsp/powerpc/ec555/README 2009-11-29 01:38:37.608590025 +0100 -@@ -0,0 +1,262 @@ -+# -+# $Id: README,v 1.1 2004/04/12 21:52:13 joel Exp $ -+# -+ -+This is a README file for the Intec SS555 of RTEMS 4.6.0 -+ -+The SS555 port was sponsored by Defence Research and Development -+Canada - Suffield, and is Copyright (C) 2004, Real-Time Systems Inc. -+ -+Please send any comments, improvements, or bug reports to: -+ -+David Querbach -+querbach@realtime.bc.ca -+ -+ -+Summary -+------- -+ -+BSP NAME: ss555 -+BOARD: Intec Automation Inc. SS555 -+BUS: None -+CPU FAMILY: PowerPC -+CPU: PowerPC MPC555 -+COPROCESSORS: Built-in Motorola TPU -+MODE: 32 bit mode -+ -+DEBUG MONITOR: None -+ -+PERIPHERALS -+=========== -+TIMERS: PIT / Timebase -+ RESOLUTION: 1 microsecond (4 MHz crystal / 4) -+SERIAL PORTS: 2 SCI -+REAL-TIME CLOCK: On-chip. -+DMA: None. -+VIDEO: None. -+SCSI: None. -+NETWORKING: None. -+ -+ -+DRIVER INFORMATION -+================== -+CLOCK DRIVER: yes -+CONSOLE DRIVER: yes -+SHMSUPP: N/A -+TIMER DRIVER: yes -+NETWORK DRIVER: no -+ -+NOTES -+===== -+On-chip resources: -+ SCI1 serial port -+ SCI2 serial port (console) -+ PIT clock -+ TB timing test support -+ DEC -+ SWT watchdog timer -- enable in startup/iss555.c -+ *CS0 external 512k 2-1-1-1 Burst SRAM -+ *CS1 -+ *CS2 -+ *CS3 CPLD -+ IRQ0 -+ IRQ1 -+ IRQ2 -+ IRQ3 -+ IRQ4 -+ IRQ5 -+ IRQ6 -+ IRQ7 -+ IRQ_LVL0 -+ IRQ_LVL1 -+ IRQ_LVL2 -+ IRQ_LVL3 -+ IRQ_LVL4 -+ IRQ_LVL5 SCI -+ IRQ_LVL6 PIT -+ IRQ_LVL7 -+ -+ -+Board description -+----------------- -+Clock rate: 40 MHz development/embeddable board -+Bus width: 32-bit on-board RAM, 16-bit off-board I/O -+FLASH: 512k on-chip -+RAM: 512k 2-1-1-1 burst SRAM -+ -+ -+Installation -+------------ -+ -+The ss555 port uses the Intec SS555's external RAM in two different ways, -+depending on whether or not it is built for debugging by giving the -+VARIANT=DEBUG switch to make: -+ -+ make VARIANT=DEBUG all -+ -+1. In the debugging case, the linker script concanttenates the .text, -+.data, and .bss sections starting at location zero, so they all can be -+loaded into the external RAM for debugging. We assume that the debugger -+disables the internal Flash ROM and enables the external RAM before loading -+the code into the external RAM. -+ -+2. In the normal (non-debugging) case, the linker script still places the -+.text section near zero, but places the start of the .data and .bss sections -+at the start location of the MPC555's internal RAM. The system startup code -+then configures the external RAM just after the internal RAM in memory, -+forming one large block from the two RAM devices. -+ -+ -+Console driver -+--------------- -+ -+This BSP includes an termios-capable asynchronous serial line driver that -+supports SCI1 and SCI2. The RTEMS console is selected at configuration time -+with the CONSOLE_MINOR variable (see .../ss555/configure.ac). We default to -+SCI2 for the console, since SCI1 has some extra features which may be -+desired for application use. -+ -+The BSP console supports three different modes of operation: -+ -+ 1. polled I/O done with termios support, -+ 2. polled I/O done without termios support, -+ 3. interrupt-driven I/O with termios support. -+ -+The mode of operation of the serial driver is determined at configure time in -+part by the value of the UARTS_IO_MODE variable (see .../ss555/configure.ac). -+ -+ 0 - polled I/O. -+ 1 - interrupt-driven I/O. -+ -+Also, set the value of UARTS_USE_TERMIOS to select whether termios should be -+used to perform buffering and input/output processing. Without termios -+support, input processing is limited to the substitution of LF for a -+received CR, and output processing is limited to the transmission of a CR -+following the transmission of a LF. The choices for UARTS_USE_TERMIOS are: -+ -+ 0 - do not use termios -+ 1 - use termios -+ -+In most real-time applications, the driver should be configured to use -+termios and interrupt-driven I/O. Special requirements may dictate otherwise. -+ -+Polled I/O must be used when running the timing tests. It must also be used -+to run some other tests and some samples, such as the cdtest. Some tests -+change the interrupt mask and will hang interrupt-driven I/O indefinitely. -+Others, such as cdtest, perform console output from the static constructors -+before the console is opened, causing the test to hang. Still other tests -+produce output that is supposed to be in some specific order. For these -+tests, termios should not be used, as termios buffers output and the -+transmission of the buffers occur at somewhat unpredictable times. -+ -+The real solution is to fix the tests so that they work with interrupt-driven -+I/O and termios. -+ -+ -+printk() and debug output -+----------------------- -+ -+The implementation of printk() in RTEMS is mostly independent of most system -+services. The printk() function can therefore be used to print messages to a -+debug console, particularly when debugging startup code or device drivers, -+i.e. code that runs before the console driver is opened or that runs with -+interrupts disabled. -+ -+Support is provided to send printk output to either port. Specify the -+desired port at configure time by setting the value of PRINTK_MINOR to one -+of SCI1_MINOR or SCI2_MINOR. -+ -+printk() always uses polled I/O, and never uses termios. -+ -+If the printk() port is opened by RTEMS, then UARTS_IO_MODE must be set for -+polled I/O, otherwise the I/O functions will be in conflict. Using printk() -+before the port is initialized is, of course, not possible. This -+initialization occurs in console_initialize(), which is called by -+rtems_initialize_executive_early(). -+ -+ -+Watchdog Timer -+-------------- -+ -+The MPC555 watchdog timer can be enabled at configuration time by defining -+the WATCHDOG_TIMEOUT variable. This variable sets the watchdog timeout -+period in steps of -+ -+ 2048 2048 -+ --------- = --------- = 51.2 usec -+ Fsystem 40 MHz -+ -+or about 1/20 msec. When WATCHDOG_TIMEOUT is left undefined, the watchdog -+timer is disabled. -+ -+ -+Miscellaneous -+------------- -+ -+Most code came from the mbx8xx port, except for the floating-point handling -+which came from the mpc8260ads. -+ -+ -+Host System -+----------- -+ -+The port was developed on an x86 box running Debian 3.0. The toolchain was -+built from the sources at rtems.org, except for the autotools which came -+from the Debian distribution. -+ -+ -+Test Configuration -+------------------ -+ -+Board: Intec SS555 v1.1 -+CPU: Motorola MPC555LFMZP40, mask 1K83H -+Clock Speed: Crystal 4.0 MHz, CPU 40.0 MHz -+RAM: 512K bytes of 2-1-1-1 Burst SRAM -+Times Reported in: Microseconds -+Timer Source: Timebase clock -+GCC Flags: -O4 -fno-keep-inline-functions -mcpu=(821/860) -+Console: Operates in polled mode on SMC2. No I/O through EPPC-Bug. -+ -+ -+Test Results -+------------ -+ -+Single processor tests: -+ All tests passed, except that: -+ - sp09 aborts due to memory shortage -+ - sp20 needs to be run with output buffering enabled (see -+ buffer_test_io.h) -+ -+Multi-processor tests: -+ Not applicable. -+ -+Library tests: -+ All tests passed. Note that the termios test only works if the system is -+ rebuilt with termios enabled. -+ -+Posix tests: -+ All tests passed, except that: -+ - the message queue test failed with "errno (91 - File or path name too -+ long)" -+ -+Timing tests: -+ Due to memory limitations, many of the tests will not run unless you set -+ OPERATION_COUNT=20 at configuration time. -+ -+ To run tm27 (the interrupt latency timer test), short CN5-48 to CN5-50 on -+ the SS555 board. -+ -+ All tests run cleanly, except for tm26, which gives a "PANIC 12" after it -+ exits. This doesn't seem to cause a problem otherwise. -+ -+ See the times file for the results of the timing tests. -+ -+Network tests: -+ Not applicable. -+ -+Sample programs: -+ These run correctly, except that: -+ - The "minimum" sample is not designed to run properly on any system. -+ - The loopback, fileio, unilimited, and pppd tests fail due to memory -+ limitations. -+ - The paranoia program dies on a floating-point assist exception. -Index: rtems-4.9.3/c/src/lib/libbsp/powerpc/ec555/bsp_specs -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ rtems-4.9.3/c/src/lib/libbsp/powerpc/ec555/bsp_specs 2008-12-08 06:15:50.000000000 +0100 -@@ -0,0 +1,13 @@ -+%rename endfile old_endfile -+%rename startfile old_startfile -+%rename link old_link -+ -+*startfile: -+%{!qrtems: %(old_startfile)} \ -+%{!nostdlib: %{qrtems: ecrti%O%s -u __vectors -N -u start -e start}} -+ -+*endfile: -+%{!qrtems: %(old_endfile)} %{qrtems: ecrtn%O%s} -+ -+*link: -+%{!qrtems: %(old_link)} %{qrtems: -dc -dp} -Index: rtems-4.9.3/c/src/lib/libbsp/powerpc/ec555/clock/p_clock.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ rtems-4.9.3/c/src/lib/libbsp/powerpc/ec555/clock/p_clock.c 2009-11-29 01:38:37.612589905 +0100 -@@ -0,0 +1,69 @@ -+/* -+ * Clock Tick interrupt conexion code. -+ * -+ * COPYRIGHT (c) 1989-1997. -+ * On-Line Applications Research Corporation (OAR). -+ * -+ * The license and distribution terms for this file may in -+ * the file LICENSE in this distribution or at -+ * http://www.rtems.com/license/LICENSE. -+ * -+ * SS555 port sponsored by Defence Research and Development Canada - Suffield -+ * Copyright (C) 2004, Real-Time Systems Inc. (querbach@realtime.bc.ca) -+ * -+ * Derived from c/src/lib/libbsp/powerpc/mbx8xx/clock/p_clock.c: -+ * -+ * Modified to support the MPC750. -+ * Modifications Copyright (c) 1999 Eric Valette valette@crf.canon.fr -+ * -+ * $Id: p_clock.c,v 1.3 2005/04/25 14:46:37 jennifer Exp $ -+ */ -+ -+#include -+#include -+#include -+ -+extern void clockOn(void*); -+extern void clockOff (void*); -+extern int clockIsOn(void*); -+extern void Clock_isr(void *); -+ -+static rtems_irq_connect_data clockIrqData = { -+ CPU_PERIODIC_TIMER, -+ (rtems_irq_hdl)Clock_isr, -+ NULL, -+ (rtems_irq_enable)clockOn, -+ (rtems_irq_disable)clockOff, -+ (rtems_irq_is_enabled)clockIsOn -+}; -+ -+int BSP_disconnect_clock_handler (void) -+{ -+ if (!BSP_get_current_rtems_irq_handler(&clockIrqData)) { -+ printk("Unable to stop system clock\n"); -+ rtems_fatal_error_occurred(1); -+ } -+ return BSP_remove_rtems_irq_handler (&clockIrqData); -+} -+ -+int BSP_connect_clock_handler (rtems_irq_hdl hdl) -+{ -+ if (!BSP_get_current_rtems_irq_handler(&clockIrqData)) { -+ printk("Unable to get system clock handler\n"); -+ rtems_fatal_error_occurred(1); -+ } -+ if (!BSP_remove_rtems_irq_handler (&clockIrqData)) { -+ printk("Unable to remove current system clock handler\n"); -+ rtems_fatal_error_occurred(1); -+ } -+ /* -+ * Reinit structure -+ */ -+ clockIrqData.name = CPU_PERIODIC_TIMER; -+ clockIrqData.hdl = (rtems_irq_hdl) hdl; -+ clockIrqData.on = (rtems_irq_enable)clockOn; -+ clockIrqData.off = (rtems_irq_enable)clockOff; -+ clockIrqData.isOn = (rtems_irq_is_enabled)clockIsOn; -+ -+ return BSP_install_rtems_irq_handler (&clockIrqData); -+} -Index: rtems-4.9.3/c/src/lib/libbsp/powerpc/ec555/configure.ac -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ rtems-4.9.3/c/src/lib/libbsp/powerpc/ec555/configure.ac 2006-12-02 06:59:47.000000000 +0100 -@@ -0,0 +1,52 @@ -+## Process this file with autoconf to produce a configure script. -+## -+## $Id: configure.ac,v 1.9 2006/12/02 05:59:47 ralf Exp $ -+ -+AC_PREREQ(2.60) -+AC_INIT([rtems-c-src-lib-libbsp-powerpc-mbx5xx],[_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.10]) -+RTEMS_BSP_CONFIGURE -+ -+RTEMS_PROG_CC_FOR_TARGET([-ansi -fasm]) -+RTEMS_CANONICALIZE_TOOLS -+RTEMS_PROG_CCAS -+ -+RTEMS_CHECK_NETWORKING -+AM_CONDITIONAL(HAS_NETWORKING,test "$HAS_NETWORKING" = "yes") -+ -+RTEMS_BSPOPTS_SET([WATCHDOG_TIMEOUT],[*],[0xFFFF]) -+RTEMS_BSPOPTS_HELP([WATCHDOG_TIMEOUT], -+[Define to the desired timeout (in steps of 1/20 msec) to enable the -+ watchdog. Default is to disable the watchdog entirely.]) -+ -+RTEMS_BSPOPTS_SET([UARTS_USE_TERMIOS],[*],[0]) -+RTEMS_BSPOPTS_HELP([UARTS_USE_TERMIOS], -+[Define to 1 if you want termios support for every port. -+ Termios support is independent of the choice of UART I/O mode.]) -+ -+RTEMS_BSPOPTS_SET([CONSOLE_MINOR],[*],[SCI2_MINOR]) -+RTEMS_BSPOPTS_HELP([CONSOLE_MINOR], -+[Must be defined to be one of SCI1_MINOR or SCI2_MINOR. Determines which -+ device will be registered as /dev/console.]) -+ -+RTEMS_BSPOPTS_SET([UARTS_IO_MODE],[*],[0]) -+RTEMS_BSPOPTS_HELP([UARTS_IO_MODE], -+[Define to 1 if you want interrupt-driven I/O for the SCI ports.]) -+ -+RTEMS_BSPOPTS_SET([PRINTK_MINOR],[*],[SCI2_MINOR]) -+RTEMS_BSPOPTS_HELP([PRINTK_MINOR], -+[Must be defined to be one of SCI1_MINOR or SCI2_MINOR. Determines which -+ device is used for output by printk(). The printk port always uses polled -+ I/O. Don't open the printk port from RTEMS unless also using polled I/O -+ for the SCI ports.]) -+ -+# Explicitly list a Makefile here -+AC_CONFIG_FILES([Makefile]) -+ -+RTEMS_PPC_EXCEPTIONS -+ -+AC_OUTPUT -Index: rtems-4.9.3/c/src/lib/libbsp/powerpc/ec555/console/console.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ rtems-4.9.3/c/src/lib/libbsp/powerpc/ec555/console/console.c 2009-11-29 01:38:37.612589905 +0100 -@@ -0,0 +1,368 @@ -+/* -+ * console.c -+ * -+ * This file contains the Intec SS555 termios serial I/O package. -+ * -+ * The SCI channels are assigned as follows -+ * -+ * Channel Device Minor -+ * SCI1 /dev/tty0 0 -+ * SCI2 /dev/tty1 1 -+ * -+ * All ports support termios. The use of termios is recommended for real-time -+ * applications. Termios provides buffering and input processing. When not -+ * using termios, processing is limited to the substitution of LF for CR on -+ * input, and the output of a CR following the output of a LF character. -+ * Note that the terminal should not send CR/LF pairs when the return key -+ * is pressed, and that output lines are terminated with LF/CR, not CR/LF -+ * (although that would be easy to change). -+ * -+ * I/O may be interrupt-driven (recommended for real-time applications) or -+ * polled. -+ * -+ * LIMITATIONS: -+ * -+ * It is not possible to use different I/O modes on the different ports. The -+ * exception is with printk. The printk port can use a different mode from -+ * the other ports. If this is done, it is important not to open the printk -+ * port from an RTEMS application. -+ * -+ * Currently, the I/O modes are determined at build time. It would be much -+ * better to have the mode selected at boot time based on parameters in -+ * NVRAM. -+ * -+ * Interrupt-driven I/O requires termios. -+ * -+ * TESTS: -+ * -+ * TO RUN THE TESTS, USE POLLED I/O WITHOUT TERMIOS SUPPORT. Some tests -+ * play with the interrupt masks and turn off I/O. Those tests will hang -+ * when interrupt-driven I/O is used. Other tests, such as cdtest, do I/O -+ * from the static constructors before the console is open. This test -+ * will not work with interrupt-driven I/O. Because of the buffering -+ * performed in termios, test output may not be in sequence.The tests -+ * should all be fixed to work with interrupt-driven I/O and to -+ * produce output in the expected sequence. Obviously, the termios test -+ * requires termios support in the driver. -+ * -+ * Set CONSOLE_MINOR to the appropriate device minor number in the -+ * config file. This allows the RTEMS application console to be different -+ * from the GDB port. -+ * -+ * This driver handles both available serial ports: it distinguishes -+ * the sub-devices using minor device numbers. It is not possible to have -+ * other protocols running on the other ports when this driver is used as -+ * currently written. -+ * -+ * -+ * SS555 port sponsored by Defence Research and Development Canada - Suffield -+ * Copyright (C) 2004, Real-Time Systems Inc. (querbach@realtime.bc.ca) -+ * -+ * Derived from c/src/lib/libbsp/powerpc/mbx8xx/console/console.c: -+ * -+ * Based on code (alloc860.c in eth_comm port) by -+ * Jay Monkman (jmonkman@frasca.com), -+ * Copyright (C) 1998 by Frasca International, Inc. -+ * -+ * Modifications by Darlene Stewart -+ * and Charles-Antoine Gauthier . -+ * Copyright (c) 2000, National Research Council of Canada -+ * -+ */ -+#include -+#include -+#include /* Must be before libio.h */ -+#include -+#include -+#include -+ -+static void _BSP_output_char( char c ); -+static rtems_status_code do_poll_read( rtems_device_major_number major, rtems_device_minor_number minor, void * arg); -+static rtems_status_code do_poll_write( rtems_device_major_number major, rtems_device_minor_number minor, void * arg); -+ -+static void _BSP_null_char( char c ) {return;} -+ -+BSP_output_char_function_type BSP_output_char = _BSP_null_char; -+ -+/* -+ * do_poll_read -+ * -+ * Input characters through polled I/O. Returns as soon as a character has -+ * been received. Otherwise, if we wait for the number of requested -+ * characters, we could be here forever! -+ * -+ * CR is converted to LF on input. The terminal should not send a CR/LF pair -+ * when the return or enter key is pressed. -+ * -+ * Input parameters: -+ * major - ignored. Should be the major number for this driver. -+ * minor - selected channel. -+ * arg->buffer - where to put the received characters. -+ * arg->count - number of characters to receive before returning--Ignored. -+ * -+ * Output parameters: -+ * arg->bytes_moved - the number of characters read. Always 1. -+ * -+ * Return value: RTEMS_SUCCESSFUL -+ * -+ * CANNOT BE COMBINED WITH INTERRUPT DRIVEN I/O! -+ */ -+static rtems_status_code do_poll_read( -+ rtems_device_major_number major, -+ rtems_device_minor_number minor, -+ void * arg -+) -+{ -+ rtems_libio_rw_args_t *rw_args = arg; -+ int c; -+ -+ while( (c = m5xx_uart_pollRead(minor)) == -1 ); -+ rw_args->buffer[0] = (uint8_t)c; -+ if( rw_args->buffer[0] == '\r' ) -+ rw_args->buffer[0] = '\n'; -+ rw_args->bytes_moved = 1; -+ -+ return RTEMS_SUCCESSFUL; -+} -+ -+/* -+ * do_poll_write -+ * -+ * Output characters through polled I/O. Returns only once every character has -+ * been sent. -+ * -+ * CR is transmitted AFTER a LF on output. -+ * -+ * Input parameters: -+ * major - ignored. Should be the major number for this driver. -+ * minor - selected channel -+ * arg->buffer - where to get the characters to transmit. -+ * arg->count - the number of characters to transmit before returning. -+ * -+ * Output parameters: -+ * arg->bytes_moved - the number of characters read -+ * -+ * Return value: RTEMS_SUCCESSFUL -+ * -+ * CANNOT BE COMBINED WITH INTERRUPT DRIVEN I/O! -+ */ -+static rtems_status_code do_poll_write( -+ rtems_device_major_number major, -+ rtems_device_minor_number minor, -+ void * arg -+) -+{ -+ rtems_libio_rw_args_t *rw_args = arg; -+ uint32_t i; -+ char cr ='\r'; -+ -+ for( i = 0; i < rw_args->count; i++ ) { -+ m5xx_uart_pollWrite(minor, &(rw_args->buffer[i]), 1); -+ if ( rw_args->buffer[i] == '\n' ) -+ m5xx_uart_pollWrite(minor, &cr, 1); -+ } -+ rw_args->bytes_moved = i; -+ -+ return RTEMS_SUCCESSFUL; -+} -+ -+/* -+ * Print functions prototyped in bspIo.h -+ */ -+ -+static void _BSP_output_char( char c ) -+{ -+ char cr = '\r'; -+ -+ /* -+ * Can't rely on console_initialize having been called before this -+ * function is used, so it may fail. -+ */ -+ -+ m5xx_uart_pollWrite( PRINTK_MINOR, &c, 1 ); -+ if( c == '\n' ) -+ m5xx_uart_pollWrite( PRINTK_MINOR, &cr, 1 ); -+} -+ -+/* -+ *************** -+ * BOILERPLATE * -+ *************** -+ * -+ * All these functions are prototyped in rtems/c/src/lib/include/console.h. -+ */ -+ -+/* -+ * Initialize and register the device -+ */ -+rtems_device_driver console_initialize( -+ rtems_device_major_number major, -+ rtems_device_minor_number minor, -+ void *arg -+) -+{ -+ rtems_status_code status; -+ -+ /* -+ * Set up TERMIOS if needed -+ */ -+ #if UARTS_USE_TERMIOS == 1 -+ rtems_termios_initialize (); -+ #endif /* UARTS_USE_TERMIOS */ -+ -+ /* -+ * Do device-specific initialization -+ */ -+ BSP_output_char = _BSP_output_char; -+ -+ m5xx_uart_initialize(SCI1_MINOR); -+ status = rtems_io_register_name ("/dev/tty0", major, SCI1_MINOR); -+ if (status != RTEMS_SUCCESSFUL) -+ rtems_fatal_error_occurred (status); -+ -+ m5xx_uart_initialize(SCI2_MINOR); -+ status = rtems_io_register_name ("/dev/tty1", major, SCI2_MINOR); -+ if (status != RTEMS_SUCCESSFUL) -+ rtems_fatal_error_occurred (status); -+ -+ /* Now register the RTEMS console */ -+ status = rtems_io_register_name ("/dev/console", major, CONSOLE_MINOR); -+ if (status != RTEMS_SUCCESSFUL) -+ rtems_fatal_error_occurred (status); -+ -+ return RTEMS_SUCCESSFUL; -+} -+ -+/* -+ * Open the device -+ */ -+rtems_device_driver console_open( -+ rtems_device_major_number major, -+ rtems_device_minor_number minor, -+ void *arg -+) -+{ -+ rtems_status_code sc; -+ -+ if ( minor > NUM_PORTS - 1 ) -+ return RTEMS_INVALID_NUMBER; -+ -+ #if (UARTS_USE_TERMIOS == 1) -+ { -+ #if (UARTS_IO_MODE == 1) /* RTEMS interrupt-driven I/O with termios */ -+ -+ static const rtems_termios_callbacks callbacks = { -+ m5xx_uart_firstOpen, /* firstOpen */ -+ m5xx_uart_lastClose, /* lastClose */ -+ NULL, /* pollRead */ -+ m5xx_uart_write, /* write */ -+ m5xx_uart_setAttributes, /* setAttributes */ -+ NULL, /* stopRemoteTx */ -+ NULL, /* startRemoteTx */ -+ TERMIOS_IRQ_DRIVEN /* outputUsesInterrupts */ -+ }; -+ sc = rtems_termios_open( major, minor, arg, &callbacks ); -+ -+ #else /* UARTS_IO_MODE != 1 */ /* RTEMS polled I/O with termios */ -+ -+ static const rtems_termios_callbacks callbacks = { -+ m5xx_uart_firstOpen, /* firstOpen */ -+ m5xx_uart_lastClose, /* lastClose */ -+ m5xx_uart_pollRead, /* pollRead */ -+ m5xx_uart_pollWrite, /* write */ -+ m5xx_uart_setAttributes, /* setAttributes */ -+ NULL, /* stopRemoteTx */ -+ NULL, /* startRemoteTx */ -+ TERMIOS_POLLED /* outputUsesInterrupts */ -+ }; -+ sc = rtems_termios_open( major, minor, arg, &callbacks ); -+ -+ #endif -+ -+ return sc; -+ } -+ -+ #else /* no termios -- default to polled I/O */ -+ { -+ sc = RTEMS_SUCCESSFUL; -+ } -+ #endif -+ -+ return sc; -+} -+ -+/* -+ * Close the device -+ */ -+rtems_device_driver console_close( -+ rtems_device_major_number major, -+ rtems_device_minor_number minor, -+ void *arg -+) -+{ -+ if ( minor > NUM_PORTS-1 ) -+ return RTEMS_INVALID_NUMBER; -+ -+ #if UARTS_USE_TERMIOS == 1 -+ return rtems_termios_close( arg ); -+ #else -+ return RTEMS_SUCCESSFUL; -+ #endif -+} -+ -+/* -+ * Read from the device -+ */ -+rtems_device_driver console_read( -+ rtems_device_major_number major, -+ rtems_device_minor_number minor, -+ void *arg -+) -+{ -+ if ( minor > NUM_PORTS-1 ) -+ return RTEMS_INVALID_NUMBER; -+ -+ #if UARTS_USE_TERMIOS == 1 -+ return rtems_termios_read( arg ); -+ #else -+ return do_poll_read( major, minor, arg ); -+ #endif -+} -+ -+/* -+ * Write to the device -+ */ -+rtems_device_driver console_write( -+ rtems_device_major_number major, -+ rtems_device_minor_number minor, -+ void *arg -+) -+{ -+ if ( minor > NUM_PORTS-1 ) -+ return RTEMS_INVALID_NUMBER; -+ -+ #if UARTS_USE_TERMIOS == 1 -+ return rtems_termios_write( arg ); -+ #else -+ return do_poll_write( major, minor, arg ); -+ #endif -+} -+ -+/* -+ * Handle ioctl request. -+ */ -+rtems_device_driver console_control( -+ rtems_device_major_number major, -+ rtems_device_minor_number minor, -+ void *arg -+) -+{ -+ if ( minor > NUM_PORTS-1 ) -+ return RTEMS_INVALID_NUMBER; -+ -+ #if UARTS_USE_TERMIOS == 1 -+ return rtems_termios_ioctl( arg ); -+ #else -+ return RTEMS_SUCCESSFUL; -+ #endif -+} -Index: rtems-4.9.3/c/src/lib/libbsp/powerpc/ec555/include/bsp.h -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ rtems-4.9.3/c/src/lib/libbsp/powerpc/ec555/include/bsp.h 2007-12-11 16:46:51.000000000 +0100 -@@ -0,0 +1,112 @@ -+/* bsp.h -+ * -+ * This include file contains all board IO definitions. -+ * -+ * This file includes definitions for the Intec SS555. -+ * -+ * -+ * SS555 port sponsored by Defence Research and Development Canada - Suffield -+ * Copyright (C) 2004, Real-Time Systems Inc. (querbach@realtime.bc.ca) -+ * -+ * Derived from c/src/lib/libbsp/powerpc/mbx8xx/include/bsp.h: -+ * -+ * 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: bsp.h,v 1.11 2007/12/11 15:46:51 joel Exp $ -+ */ -+ -+#ifndef _BSP_H -+#define _BSP_H -+ -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+#include -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+/* -+ * Clock definitions -+ */ -+ -+#define BSP_CRYSTAL_HZ 4000000 /* crystal frequency, Hz */ -+#define BSP_CLOCK_HZ 40000000 /* CPU clock frequency, Hz -+ -+/* -+ * I/O definitions -+ * -+ * The SS555 board includes a CPLD to control on-board features and -+ * off-board devices. -+ */ -+typedef struct cpld_ { -+ uint8_t cs3a[32]; /* Chip select 3A */ -+ uint8_t pad0[0x200000 - 0x000020]; -+ -+ uint8_t cs3b[32]; /* Chip select 3B */ -+ uint8_t pad2[0x400000 - 0x200020]; -+ -+ uint8_t cs3c[32]; /* Chip select 3C */ -+ uint8_t pad4[0x600000 - 0x400020]; -+ -+ uint8_t cs3d[32]; /* Chip select 3D */ -+ uint8_t pad6[0x800000 - 0x600020]; -+ -+ uint8_t serial_ints; /* Enable/disable serial interrupts */ -+ uint8_t serial_resets; /* Enable/disable serial resets */ -+ uint8_t serial_ack; /* Acknowledge serial transfers */ -+ uint8_t pad8[0xA00000 - 0x800003]; -+ -+ uint8_t iflash_writess; /* Enable/disable internal-flash writes */ -+ uint8_t nflash_writess; /* Enable/disable NAND-flash writes */ -+ uint8_t padA[0xC00000 - 0xA00002]; -+} cpld_t; -+ -+extern volatile cpld_t cpld; /* defined in linkcmds */ -+ -+/* miscellaneous stuff assumed to exist */ -+ -+/* -+ * Device Driver Table Entries -+ */ -+ -+/* -+ * NOTE: Use the standard Console driver entry -+ */ -+ -+/* -+ * NOTE: Use the standard Clock driver entry -+ */ -+ -+/* -+ * How many libio files we want -+ */ -+ -+#define BSP_LIBIO_MAX_FDS 20 -+ -+/* functions */ -+ -+void bsp_cleanup( void ); -+ -+rtems_isr_entry set_vector( /* returns old vector */ -+ rtems_isr_entry handler, /* isr routine */ -+ rtems_vector_number vector, /* vector number */ -+ int type /* RTEMS or RAW intr */ -+); -+ -+#ifdef __cplusplus -+} -+#endif -+ -+#endif -Index: rtems-4.9.3/c/src/lib/libbsp/powerpc/ec555/include/coverhd.h -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ rtems-4.9.3/c/src/lib/libbsp/powerpc/ec555/include/coverhd.h 2009-11-29 01:38:37.612589905 +0100 -@@ -0,0 +1,116 @@ -+/* coverhd.h -+ * -+ * This include file has defines to represent the overhead associated -+ * with calling a particular directive from C. These are used in the -+ * Timing Test Suite to ignore the overhead required to pass arguments -+ * to directives. On some CPUs and/or target boards, this overhead -+ * is significant and makes it difficult to distinguish internal -+ * RTEMS execution time from that used to call the directive. -+ * This file should be updated after running the C overhead timing -+ * test. Once this update has been performed, the RTEMS Time Test -+ * Suite should be rebuilt to account for these overhead times in the -+ * timing results. -+ * -+ * NOTE: If these are all zero, then the times reported include -+ * all calling overhead including passing of arguments. -+ * -+ * COPYRIGHT (c) 1989-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: coverhd.h,v 1.2 2006/03/17 10:11:37 ralf Exp $ -+ */ -+ -+#ifndef __COVERHD_h -+#define __COVERHD_h -+ -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+ * 40 MHz processor, running from external 2-1-1-1 burst SRAM. -+ */ -+#define CALLING_OVERHEAD_INITIALIZE_EXECUTIVE 0 -+#define CALLING_OVERHEAD_SHUTDOWN_EXECUTIVE 0 -+#define CALLING_OVERHEAD_TASK_CREATE 0 -+#define CALLING_OVERHEAD_TASK_IDENT 0 -+#define CALLING_OVERHEAD_TASK_START 0 -+#define CALLING_OVERHEAD_TASK_RESTART 0 -+#define CALLING_OVERHEAD_TASK_DELETE 0 -+#define CALLING_OVERHEAD_TASK_SUSPEND 0 -+#define CALLING_OVERHEAD_TASK_RESUME 0 -+#define CALLING_OVERHEAD_TASK_SET_PRIORITY 0 -+#define CALLING_OVERHEAD_TASK_MODE 0 -+#define CALLING_OVERHEAD_TASK_GET_NOTE 0 -+#define CALLING_OVERHEAD_TASK_SET_NOTE 0 -+#define CALLING_OVERHEAD_TASK_WAKE_WHEN 2 -+#define CALLING_OVERHEAD_TASK_WAKE_AFTER 0 -+#define CALLING_OVERHEAD_INTERRUPT_CATCH 0 -+#define CALLING_OVERHEAD_CLOCK_GET 2 -+#define CALLING_OVERHEAD_CLOCK_SET 3 -+#define CALLING_OVERHEAD_CLOCK_TICK 0 -+ -+#define CALLING_OVERHEAD_TIMER_CREATE 0 -+#define CALLING_OVERHEAD_TIMER_IDENT 0 -+#define CALLING_OVERHEAD_TIMER_DELETE 0 -+#define CALLING_OVERHEAD_TIMER_FIRE_AFTER 0 -+#define CALLING_OVERHEAD_TIMER_FIRE_WHEN 3 -+#define CALLING_OVERHEAD_TIMER_RESET 0 -+#define CALLING_OVERHEAD_TIMER_CANCEL 0 -+#define CALLING_OVERHEAD_SEMAPHORE_CREATE 0 -+#define CALLING_OVERHEAD_SEMAPHORE_IDENT 0 -+#define CALLING_OVERHEAD_SEMAPHORE_DELETE 0 -+#define CALLING_OVERHEAD_SEMAPHORE_OBTAIN 0 -+#define CALLING_OVERHEAD_SEMAPHORE_RELEASE 0 -+#define CALLING_OVERHEAD_MESSAGE_QUEUE_CREATE 0 -+#define CALLING_OVERHEAD_MESSAGE_QUEUE_IDENT 0 -+#define CALLING_OVERHEAD_MESSAGE_QUEUE_DELETE 0 -+#define CALLING_OVERHEAD_MESSAGE_QUEUE_SEND 0 -+#define CALLING_OVERHEAD_MESSAGE_QUEUE_URGENT 0 -+#define CALLING_OVERHEAD_MESSAGE_QUEUE_BROADCAST 0 -+#define CALLING_OVERHEAD_MESSAGE_QUEUE_RECEIVE 0 -+#define CALLING_OVERHEAD_MESSAGE_QUEUE_FLUSH 0 -+ -+#define CALLING_OVERHEAD_EVENT_SEND 0 -+#define CALLING_OVERHEAD_EVENT_RECEIVE 0 -+#define CALLING_OVERHEAD_SIGNAL_CATCH 0 -+#define CALLING_OVERHEAD_SIGNAL_SEND 0 -+#define CALLING_OVERHEAD_PARTITION_CREATE 0 -+#define CALLING_OVERHEAD_PARTITION_IDENT 0 -+#define CALLING_OVERHEAD_PARTITION_DELETE 0 -+#define CALLING_OVERHEAD_PARTITION_GET_BUFFER 0 -+#define CALLING_OVERHEAD_PARTITION_RETURN_BUFFER 0 -+#define CALLING_OVERHEAD_REGION_CREATE 0 -+#define CALLING_OVERHEAD_REGION_IDENT 0 -+#define CALLING_OVERHEAD_REGION_DELETE 0 -+#define CALLING_OVERHEAD_REGION_GET_SEGMENT 0 -+#define CALLING_OVERHEAD_REGION_RETURN_SEGMENT 0 -+#define CALLING_OVERHEAD_PORT_CREATE 0 -+#define CALLING_OVERHEAD_PORT_IDENT 0 -+#define CALLING_OVERHEAD_PORT_DELETE 0 -+#define CALLING_OVERHEAD_PORT_EXTERNAL_TO_INTERNAL 0 -+#define CALLING_OVERHEAD_PORT_INTERNAL_TO_EXTERNAL 0 -+ -+#define CALLING_OVERHEAD_IO_INITIALIZE 0 -+#define CALLING_OVERHEAD_IO_OPEN 0 -+#define CALLING_OVERHEAD_IO_CLOSE 0 -+#define CALLING_OVERHEAD_IO_READ 0 -+#define CALLING_OVERHEAD_IO_WRITE 0 -+#define CALLING_OVERHEAD_IO_CONTROL 0 -+#define CALLING_OVERHEAD_FATAL_ERROR_OCCURRED 0 -+#define CALLING_OVERHEAD_RATE_MONOTONIC_CREATE 0 -+#define CALLING_OVERHEAD_RATE_MONOTONIC_IDENT 0 -+#define CALLING_OVERHEAD_RATE_MONOTONIC_DELETE 0 -+#define CALLING_OVERHEAD_RATE_MONOTONIC_CANCEL 0 -+#define CALLING_OVERHEAD_RATE_MONOTONIC_PERIOD 0 -+#define CALLING_OVERHEAD_MULTIPROCESSING_ANNOUNCE 0 -+ -+#ifdef __cplusplus -+} -+#endif -+ -+#endif -Index: rtems-4.9.3/c/src/lib/libbsp/powerpc/ec555/include/tm27.h -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ rtems-4.9.3/c/src/lib/libbsp/powerpc/ec555/include/tm27.h 2009-11-29 01:38:37.616586852 +0100 -@@ -0,0 +1,54 @@ -+/* -+ * 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: tm27.h,v 1.2 2004/04/23 04:47:38 ralf Exp $ -+ */ -+ -+#ifndef _RTEMS_TMTEST27 -+#error "This is an RTEMS internal file you must not include directly." -+#endif -+ -+#ifndef __tm27_h -+#define __tm27_h -+ -+/* -+ * Stuff for Time Test 27 -+ * -+ * The following require that IRQ7 be jumpered to ground. On the SS555, -+ * this can be done by shorting together CN5 pin 48 and CN5 pin 50. -+ */ -+ -+#define MUST_WAIT_FOR_INTERRUPT 1 -+ -+#define Install_tm27_vector( handler ) \ -+{ \ -+ extern rtems_irq_connect_data tm27IrqData; \ -+ usiu.siel |= (1 << 17); \ -+ usiu.sipend |= (1 << 17); \ -+ \ -+ tm27IrqData.hdl = (rtems_irq_hdl)handler; \ -+ BSP_install_rtems_irq_handler (&tm27IrqData); \ -+} -+ -+#define Cause_tm27_intr() \ -+{ \ -+ usiu.siel &= ~(1 << 17); \ -+} -+ -+#define Clear_tm27_intr() \ -+{ \ -+ usiu.siel |= (1 << 17); \ -+ usiu.sipend |= (1 << 17); \ -+} -+ -+#define Lower_tm27_intr() \ -+{ \ -+ ppc_cached_irq_mask |= (1 << 17); \ -+ usiu.simask = ppc_cached_irq_mask; \ -+} -+ -+#endif -Index: rtems-4.9.3/c/src/lib/libbsp/powerpc/ec555/irq/irq.h -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ rtems-4.9.3/c/src/lib/libbsp/powerpc/ec555/irq/irq.h 2009-11-29 01:38:37.616586852 +0100 -@@ -0,0 +1,55 @@ -+/* irq.h -+ * -+ * This include file describe the data structure and the functions implemented -+ * by rtems to write interrupt handlers. -+ * -+ * -+ * SS555 port sponsored by Defence Research and Development Canada - Suffield -+ * Copyright (C) 2004, Real-Time Systems Inc. (querbach@realtime.bc.ca) -+ * -+ * Derived from libbsp/powerpc/mbx8xx/irq/irq.h: -+ * -+ * CopyRight (C) 1999 valette@crf.canon.fr -+ * -+ * This code is heavilly inspired by the public specification of STREAM V2 -+ * that can be found at : -+ * -+ * by following -+ * the STREAM API Specification Document link. -+ * -+ * The license and distribution terms for this file may be -+ * found in found in the file LICENSE in this distribution or at -+ * http://www.rtems.com/license/LICENSE. -+ * -+ * $Id: irq.h,v 1.2 2004/04/21 10:43:03 ralf Exp $ -+ */ -+ -+#ifndef LIBBSP_POWERPC_SS555_IRQ_IRQ_H -+#define LIBBSP_POWERPC_SS555_IRQ_IRQ_H -+ -+#include -+ -+#ifndef ASM -+ -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+ * The SS555 has no external interrupt controller chip, so use the standard -+ * routines from the CPU-dependent code. -+ */ -+#define BSP_install_rtems_irq_handler(ptr) CPU_install_rtems_irq_handler(ptr) -+#define BSP_get_current_rtems_irq_handler(ptr) CPU_get_current_rtems_irq_handler(ptr) -+#define BSP_remove_rtems_irq_handler(ptr) CPU_remove_rtems_irq_handler(ptr) -+#define BSP_rtems_irq_mngt_set(config) CPU_rtems_irq_mngt_set(config) -+#define BSP_rtems_irq_mngt_get(config) CPU_rtems_irq_mngt_get(config) -+#define BSP_rtems_irq_mng_init(cpuId) CPU_rtems_irq_mng_init(cpuId) -+ -+#ifdef __cplusplus -+} -+#endif -+ -+#endif /* ASM */ -+ -+#endif /* LIBBSP_POWERPC_SS555_IRQ_IRQ_H */ -Index: rtems-4.9.3/c/src/lib/libbsp/powerpc/ec555/startup/bspstart.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ rtems-4.9.3/c/src/lib/libbsp/powerpc/ec555/startup/bspstart.c 2008-07-11 12:01:37.000000000 +0200 -@@ -0,0 +1,177 @@ -+/* bspstart.c -+ * -+ * This set of routines 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-2007. -+ * 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. -+ * -+ * SS555 port sponsored by Defence Research and Development Canada - Suffield -+ * Copyright (C) 2004, Real-Time Systems Inc. (querbach@realtime.bc.ca) -+ * -+ * Derived from c/src/lib/libbsp/powerpc/mbx8xx/startup/bspstart.c: -+ * -+ * Modifications for MBX860: -+ * Copyright (c) 1999, National Research Council of Canada -+ * -+ * $Id: bspstart.c,v 1.17 2008/07/11 10:01:37 thomas Exp $ -+ */ -+ -+#warning The interrupt disable mask is now stored in SPRG0, please verify that this is compatible to this BSP (see also bootcard.c). -+ -+#include -+ -+#include -+#include -+#include -+#include -+ -+#include -+#include -+ -+#include -+#include -+ -+SPR_RW(SPRG1) -+ -+extern unsigned long intrStackPtr; -+ -+/* -+ * Driver configuration parameters -+ */ -+uint32_t bsp_clicks_per_usec; -+uint32_t bsp_clock_speed; /* Serial clocks per second */ -+uint32_t bsp_timer_least_valid; -+uint32_t bsp_timer_average_overhead; -+ -+/* -+ * Use the shared implementations of the following routines. -+ * Look in rtems/c/src/lib/libbsp/shared/bsplibc.c. -+ */ -+void bsp_libc_init( void *, uint32_t, int ); -+ -+void BSP_panic(char *s) -+{ -+ printk("%s PANIC %s\n",_RTEMS_version, s); -+ __asm__ __volatile ("sc"); -+} -+ -+void _BSP_Fatal_error(unsigned int v) -+{ -+ printk("%s PANIC ERROR %x\n",_RTEMS_version, v); -+ __asm__ __volatile ("sc"); -+} -+ -+/* -+ * bsp_pretasking_hook -+ * -+ * Called when RTEMS initialization is complete but before interrupts and -+ * tasking are enabled. Used to setup libc and install any BSP extensions. -+ * -+ * Must not use libc (to do io) from here, since drivers are not yet -+ * initialized. -+ * -+ * Input parameters: NONE -+ * -+ * Output parameters: NONE -+ * -+ * Return values: NONE -+ */ -+void bsp_pretasking_hook(void) -+{ -+ /* -+ * These are assigned addresses in the linkcmds file for the BSP. This -+ * approach is better than having these defined as manifest constants and -+ * compiled into the kernel, but it is still not ideal when dealing with -+ * multiprocessor configuration in which each board as a different memory -+ * map. A better place for defining these symbols might be the makefiles. -+ * Consideration should also be given to developing an approach in which -+ * the kernel and the application can be linked and burned into ROM -+ * independently of each other. -+ */ -+ uint8_t *_HeapStart = -+ (uint8_t *)Configuration.work_space_start -+ + rtems_configuration_get_work_space_size(); -+ extern uint8_t _HeapEnd[]; -+ -+ bsp_libc_init( _HeapStart, _HeapEnd - _HeapStart, 0 ); -+} -+ -+/* -+ * bsp_start() -+ * -+ * Board-specific initialization code. Called from the generic boot_card() -+ * function defined in rtems/c/src/lib/libbsp/shared/main.c. That function -+ * does some of the board independent initialization. It is called from the -+ * SS555 entry point _start() defined in -+ * rtems/c/src/lib/libbsp/powerpc/ss555/startup/start.S -+ * -+ * _start() has set up a stack, has zeroed the .bss section, has set up the -+ * .data section from contents stored in ROM, has turned off interrupts, -+ * and placed the processor in the supervisor mode. boot_card() has left -+ * the processor in that state when bsp_start() was called. -+ * -+ * Input parameters: NONE -+ * -+ * Output parameters: NONE -+ * -+ * Return values: NONE -+ */ -+void bsp_start(void) -+{ -+ extern char _WorkspaceBase[]; -+ -+ ppc_cpu_id_t myCpu; -+ ppc_cpu_revision_t myCpuRevision; -+ register unsigned char* intrStack; -+ -+ /* -+ * Get CPU identification dynamically. Note that the get_ppc_cpu_type() -+ * function stores the result in global variables so that it can be used -+ * later. -+ */ -+ myCpu = get_ppc_cpu_type(); -+ myCpuRevision = get_ppc_cpu_revision(); -+ -+ /* -+ * Initialize some SPRG registers related to irq handling -+ */ -+ intrStack = (((unsigned char*)&intrStackPtr) - PPC_MINIMUM_STACK_FRAME_SIZE); -+ _write_SPRG1((unsigned int)intrStack); -+ -+ /* -+ * Install our own set of exception vectors -+ */ -+ initialize_exceptions(); -+ -+ /* -+ * Allocate the memory for the RTEMS Work Space. This can come from -+ * a variety of places: hard coded address, malloc'ed from outside -+ * RTEMS world (e.g. simulator or primitive memory manager), or (as -+ * typically done by stock BSPs) by subtracting the required amount -+ * of work space from the last physical address on the CPU board. -+ * -+ * In this case, the memory is not malloc'ed. It is just -+ * "pulled from the air". -+ */ -+ Configuration.work_space_start = _WorkspaceBase; -+ -+ /* -+ * initialize the device driver parameters -+ */ -+ bsp_clicks_per_usec = BSP_CRYSTAL_HZ / 4 / 1000000; -+ bsp_clock_speed = BSP_CLOCK_HZ; /* for SCI baud rate generator */ -+ bsp_timer_least_valid = 0; -+ bsp_timer_average_overhead = 0; -+ -+ /* -+ * Initalize RTEMS IRQ system -+ */ -+ BSP_rtems_irq_mng_init(0); -+} -Index: rtems-4.9.3/c/src/lib/libbsp/powerpc/ec555/startup/iss555.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ rtems-4.9.3/c/src/lib/libbsp/powerpc/ec555/startup/iss555.c 2009-11-29 01:38:37.616586852 +0100 -@@ -0,0 +1,148 @@ -+/* -+ * iss555.c -+ * -+ * Intec SS555 initialization routines. -+ * -+ * SS555 port sponsored by Defence Research and Development Canada - Suffield -+ * Copyright (C) 2004, Real-Time Systems Inc. (querbach@realtime.bc.ca) -+ * -+ * Derived from c/src/lib/libbsp/powerpc/mbx8xx/startup/imbx8xx.c: -+ * -+ * Copyright (c) 1999, National Research Council of Canada -+ * -+ * The license and distribution terms for this file may be -+ * found in the file LICENSE in this distribution or at -+ * http://www.rtems.com/license/LICENSE. -+ */ -+ -+#include -+ -+SPR_RW(ICTRL); -+SPR_RW(DEC); -+SPR_RW(TBWU); -+SPR_RW(TBWL); -+SPR_RO(IMMR); -+SPR_RW(MI_GRA); -+SPR_RW(L2U_GRA); -+SPR_RW(BBCMCR); -+ -+/* -+ * Initialize SS555 -+ */ -+void _InitSS555 (void) -+{ -+ register uint32_t plprcr, msr; -+ -+ /* -+ * Initialize the System Protection Control Register (SYPCR). -+ * The SYPCR can only be written once after Reset. -+ */ -+ usiu.sypcr = -+ USIU_SYPCR_SWTC(WATCHDOG_TIMEOUT) /* set watchdog timeout */ -+ | USIU_SYPCR_BMT(0xFF) /* set bus monitor timeout */ -+ | USIU_SYPCR_BME /* enable bus monitor */ -+ | USIU_SYPCR_SWF /* watchdog halted in freeze */ -+#if WATCHDOG_TIMEOUT != 0xFFFF -+ | USIU_SYPCR_SWE /* enable watchdog */ -+#endif -+ | USIU_SYPCR_SWRI /* watchdog forces reset */ -+ | USIU_SYPCR_SWP; /* prescale watchdog by 2048 */ -+ -+ TICKLE_WATCHDOG(); /* restart watchdog timer */ -+ -+ /* -+ * Re-tune the PLL to the desired system clock frequency. -+ */ -+ usiu.plprck = USIU_UNLOCK_KEY; /* unlock PLPRCR */ -+ usiu.plprcr = -+ USIU_PLPRCR_TEXPS /* assert TEXP always */ -+ | USIU_PLPRCR_MF(BSP_CLOCK_HZ / BSP_CRYSTAL_HZ); -+ /* PLL multiplication factor */ -+ usiu.plprck = 0; /* lock PLPRCR */ -+ -+ while (((plprcr = usiu.plprcr) & USIU_PLPRCR_SPLS) == 0) -+ ; /* wait for PLL to re-lock */ -+ -+ /* -+ * Enable the timebase and decrementer, then initialize decrementer -+ * register to a large value to guarantee that a decrementer interrupt -+ * will not be generated before the kernel is fully initialized. -+ * Initialize the timebase register to zero. -+ */ -+ usiu.tbscrk = USIU_UNLOCK_KEY; -+ usiu.tbscr |= USIU_TBSCR_TBE; /* enable time base and decrementer */ -+ usiu.tbscrk = 0; -+ -+ usiu.tbk = USIU_UNLOCK_KEY; -+ _write_DEC(0x7FFFFFFF); -+ _write_TBWU(0x00000000 ); -+ _write_TBWL(0x00000000 ); -+ usiu.tbk = 0; -+ -+ /* -+ * Run the Inter-Module Bus at full speed. -+ */ -+ imb.uimb.umcr &= ~UIMB_UMCR_HSPEED; -+ -+ /* -+ * Initialize Memory Controller for External RAM -+ * -+ * Initialize the Base and Option Registers (BR0-BR7 and OR0-OR7). Note -+ * that for all chip selects, ORx should be programmed before BRx. -+ * -+ * If booting from internal flash ROM, configure the external RAM to -+ * extend the internal RAM. If booting from external RAM, leave it at -+ * zero but set it up appropriately. -+ */ -+ extern char int_ram_top[]; /* top of internal ram */ -+ -+ usiu.memc[0]._or = -+ USIU_MEMC_OR_512K /* bank size */ -+ | USIU_MEMC_OR_SCY(0) /* wait states in first beat of burst */ -+ | USIU_MEMC_OR_BSCY(0); /* wait states in subsequent beats */ -+ -+ usiu.memc[0]._br = -+ USIU_MEMC_BR_BA(_read_IMMR() & IMMR_FLEN -+ ? (uint32_t)int_ram_top : 0) /* base address */ -+ | USIU_MEMC_BR_PS32 /* 32-bit data bus */ -+ | USIU_MEMC_BR_TBDIP /* toggle bdip */ -+ | USIU_MEMC_BR_V; /* base register valid */ -+ -+ /* -+ * Initialize Memory Controller for External CPLD -+ * -+ * The SS555 board includes a CPLD to control on-board features and -+ * off-board devices. (Configuration taken from Intec's hwhook.c) -+ */ -+ usiu.memc[3]._or = -+ USIU_MEMC_OR_16M /* bank size */ -+ | USIU_MEMC_OR_CSNT /* negate CS/WE early */ -+ | USIU_MEMC_OR_ACS_HALF /* assert CS half cycle after address */ -+ | USIU_MEMC_OR_SCY(15) /* wait states in first beat of burst */ -+ | USIU_MEMC_OR_TRLX; /* relaxed timing */ -+ -+ usiu.memc[3]._br = -+ USIU_MEMC_BR_BA(&cpld) /* base address */ -+ | USIU_MEMC_BR_PS16 /* 16-bit data bus */ -+ | USIU_MEMC_BR_BI /* inhibit bursting */ -+ | USIU_MEMC_BR_V; /* base register valid */ -+ -+ /* -+ * Disable show cycles and serialization so that burst accesses will work -+ * properly. A different value, such as 0x0, may be more appropriate for -+ * debugging, but can be set with the debugger, if needed. -+ */ -+ _write_ICTRL(0x00000007); -+ -+ /* -+ * Set up Burst Buffer Controller (BBC) -+ */ -+ _write_BBCMCR( -+ BBCMCR_ETRE /* enable exception relocation */ -+ | BBCMCR_BE); /* enable burst accesses */ -+ _isync; -+ -+ _CPU_MSR_GET(msr); -+ msr |= MSR_IP; /* set prefix for exception relocation */ -+ _CPU_MSR_SET(msr); -+} -Index: rtems-4.9.3/c/src/lib/libbsp/powerpc/ec555/startup/linkcmds -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ rtems-4.9.3/c/src/lib/libbsp/powerpc/ec555/startup/linkcmds 2008-03-04 00:07:19.000000000 +0100 -@@ -0,0 +1,319 @@ -+/* -+ * Linker command file for Intec SS555 board -+ * -+ * When debugging, we assume that the internal flash ROM will be replaced by -+ * the external RAM on the SS555 board. All sections are stacked starting -+ * at address zero. Nothing is placed in the internal RAM, since it's not -+ * contiguous with the external SRAM when the external RAM is placed at -+ * zero. -+ * -+ * For final production, we assume that the .text section will be burned -+ * into flash ROM starting at address zero. The .data, .bss, heap, and -+ * workspace will reside in RAM, starting at the beginning of the internal -+ * RAM. The system startup code will configure the external RAM to begin -+ * where the internal RAM ends, so as to make one large RAM block. -+ * -+ * Debugging mode is chosen when the RTEMS_DEBUG symbol is defined. The -+ * RTEMS_DEBUG symbol is defined in the bsp_specs file whenever make(1) is -+ * invoked with VARIANT=DEBUG. -+ * -+ * $Id: linkcmds,v 1.4 2008/03/03 23:07:19 joel Exp $ -+ */ -+ -+OUTPUT_FORMAT("elf32-powerpc", "elf32-powerpc", "elf32-powerpc") -+OUTPUT_ARCH(powerpc) -+ENTRY(start) -+ -+int_ram_org = 0x003F9800; /* base of internal RAM */ -+int_ram_top = 0x00400000; /* top of internal RAM */ -+ext_ram_size = 0x00080000; /* size of external RAM */ -+ -+ -+SECTIONS -+{ -+ .vectors 0x0: -+ { -+ /* -+ * For the MPC555, we use the compressed vector table format which puts -+ * all of the exception vectors before 0x100. -+ */ -+ *(.vectors) -+ } -+ -+ .text 0x100: -+ { -+ /* Read-only sections, merged into text segment: */ -+ -+ text.start = .; -+ -+ /* Entry point is the .entry section */ -+ *(.entry) -+ *(.entry2) -+ -+ /* Actual code */ -+ *(.text*) -+ -+ /* C++ constructors/destructors */ -+ *(.gnu.linkonce.t*) -+ -+ /* Initialization and finalization code. -+ * -+ * Various files can provide initialization and finalization functions. -+ * The bodies of these functions are in .init and .fini sections. We -+ * accumulate the bodies here, and prepend function prologues from -+ * ecrti.o and function epilogues from ecrtn.o. ecrti.o must be linked -+ * first; ecrtn.o must be linked last. Because these are wildcards, it -+ * doesn't matter if the user does not actually link against ecrti.o and -+ * ecrtn.o; the linker won't look for a file to match a wildcard. The -+ * wildcard also means that it doesn't matter which directory ecrti.o -+ * and ecrtn.o are in. -+ */ -+ PROVIDE (_init = .); -+ *ecrti.o(.init) -+ *(.init) -+ *ecrtn.o(.init) -+ -+ PROVIDE (_fini = .); -+ *ecrti.o(.fini) -+ *(.fini) -+ *ecrtn.o(.init) -+ -+ /* -+ * C++ constructors and destructors for static objects. -+ * PowerPC EABI does not use crtstuff yet, so we build "old-style" -+ * constructor and destructor lists that begin with the list length -+ * end terminate with a NULL entry. -+ */ -+ PROVIDE (__CTOR_LIST__ = .); -+ /* LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2) */ -+ *crtbegin.o(.ctors) -+ *(.ctors) -+ *crtend.o(.ctors) -+ LONG(0) -+ PROVIDE (__CTOR_END__ = .); -+ -+ PROVIDE (__DTOR_LIST__ = .); -+ /* LONG((__DTOR_END__ - __DTOR_LIST__) / 4 - 2) */ -+ *crtbegin.o(.dtors) -+ *(.dtors) -+ *crtend.o(.dtors) -+ LONG(0) -+ PROVIDE (__DTOR_END__ = .); -+ -+ /* -+ * Special FreeBSD sysctl sections. -+ */ -+ . = ALIGN (16); -+ __start_set_sysctl_set = .; -+ *(set_sysctl_*); -+ __stop_set_sysctl_set = ABSOLUTE(.); -+ *(set_domain_*); -+ *(set_pseudo_*); -+ -+ /* Exception frame info */ -+ *(.eh_frame) -+ -+ /* Miscellaneous read-only data */ -+ _rodata_start = . ; -+ *(.gnu.linkonce.r*) -+ *(.lit) -+ *(.shdata) -+ *(.rodata*) -+ *(.rodata1) -+ *.(eh_frame) -+ *(.descriptors) -+ *(rom_ver) -+ _erodata = .; -+ -+ /* Various possible names for the end of the .text section */ -+ etext = ALIGN(0x10); -+ _etext = .; -+ _endtext = .; -+ text.end = .; -+ PROVIDE (etext = .); -+ PROVIDE (__etext = .); -+ -+ /* -+ * .data section contents, copied to RAM at system startup. -+ */ -+ . = ALIGN(0x20); -+ data.contents.start = .; -+ } -+ text.size = text.end - text.start; -+ -+ /* -+ * If debugging, stack the read/write sections directly after the text -+ * section. Otherwise, stack the read/write sections starting at base of -+ * internal RAM. -+ */ -+ . = DEFINED(RTEMS_DEBUG) ? . : int_ram_org; -+ -+ .data : AT (data.contents.start) -+ { -+ data.start = .; -+ -+ *(.data) -+ *(.data.*) -+ *(.data1) -+ -+ PROVIDE (__SDATA_START__ = .); -+ *(.sdata*) -+ *(.gnu.linkonce.d*) -+ *(.gnu.linkonce.s.*) -+ PROVIDE (__SDATA_END__ = .); -+ -+ PROVIDE (__EXCEPT_START__ = .); -+ *(.gcc_except_table*) -+ PROVIDE (__EXCEPT_END__ = .); -+ -+ PROVIDE(__GOT_START__ = .); -+ *(.got.plt) -+ *(.got) -+ PROVIDE(__GOT_END__ = .); -+ -+ *(.got1) -+ -+ PROVIDE (__GOT2_START__ = .); -+ PROVIDE (_GOT2_START_ = .); -+ *(.got2) -+ PROVIDE (__GOT2_END__ = .); -+ PROVIDE (_GOT2_END_ = .); -+ -+ PROVIDE (__FIXUP_START__ = .); -+ PROVIDE (_FIXUP_START_ = .); -+ *(.fixup) -+ PROVIDE (_FIXUP_END_ = .); -+ PROVIDE (__FIXUP_END__ = .); -+ -+ /* We want the small data sections together, so single-instruction -+ * offsets can access them all. -+ */ -+ PROVIDE (__SDATA2_START__ = .); -+ *(.sdata2) -+ *(.gnu.linkonce.s2.*) -+ PROVIDE (__SDATA2_END__ = .); -+ -+ data.end = .; -+ } -+ data.size = data.end - data.start; -+ -+ .bss : -+ { -+ bss.start = .; -+ -+ PROVIDE (__SBSS2_START__ = .); -+ *(.sbss2) -+ PROVIDE (__SBSS2_END__ = .); -+ -+ PROVIDE (__SBSS_START__ = .); -+ *(.sbss*) -+ PROVIDE (__SBSS_END__ = .); -+ -+ *(.bss .bss* .gnu.linkonce.b*) -+ *(COMMON) -+ -+ . = ALIGN(4); -+ bss.end = .; -+ } -+ bss.size = bss.end - bss.start; -+ -+ PROVIDE(_end = bss.end); -+ -+ /* -+ * Initialization stack -+ */ -+ InitStack_start = ALIGN(0x10); -+ . += 0x1000; -+ initStack = .; -+ PROVIDE(initStackPtr = initStack); -+ -+ /* -+ * Interrupt stack -+ */ -+ IntrStack_start = ALIGN(0x10); -+ . += 0x4000; -+ intrStack = .; -+ PROVIDE(intrStackPtr = intrStack); -+ -+ _WorkspaceBase = .; -+ __WorkspaceBase = .; -+ -+ /* -+ * Heap -+ * -+ * The heap is configured at run-time to use all available memory. It -+ * begins just after the end of the Workspace and continues to the end of -+ * the external RAM. -+ */ -+ . = DEFINED(RTEMS_DEBUG) ? 0 + ext_ram_size : int_ram_top + ext_ram_size; -+ _HeapEnd = .; -+ __HeapEnd = .; -+ -+ -+ /* -+ * Internal I/O devices -+ */ -+ .usiu 0x002FC000: /* unified system interface unit */ -+ { -+ usiu = .; -+ } -+ -+ .imb 0x00300000: /* inter-module bus and devices */ -+ { -+ imb = .; -+ } -+ -+ .sram 0x00380000: /* internal SRAM control registers */ -+ { -+ sram = .; -+ } -+ -+ /* -+ * SS555 external devices managed by on-board CPLD -+ */ -+ .cpld 0xFF000000: /* SS555 external CPLD devices */ -+ { -+ cpld = .; -+ } -+ -+ -+ /* 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 . */ -+} -Index: rtems-4.9.3/c/src/lib/libbsp/powerpc/ec555/startup/start.S -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ rtems-4.9.3/c/src/lib/libbsp/powerpc/ec555/startup/start.S 2009-11-29 01:38:37.620589246 +0100 -@@ -0,0 +1,411 @@ -+/* start.S -+ * -+ * This file contains the entry veneer for RTEMS programs on the Intec -+ * SS555 board. It jumps to the BSP which is responsible for performing -+ * all remaining initialization. -+ * -+ * This file is based on several others: -+ * -+ * (1) start360.s from the gen68360 BSP by -+ * W. Eric Norum (eric@skatter.usask.ca) -+ * with the following copyright and license: -+ * -+ * COPYRIGHT (c) 1989-1998. -+ * On-Line Applications Research Corporation (OAR). -+ * -+ * The license and distribution terms for this file may in -+ * the file LICENSE in this distribution or at -+ * http://www.rtems.com/license/LICENSE. -+ * -+ * (2) start.s for the eth_comm port by -+ * Jay Monkman (jmonkman@fracsa.com), -+ * which itself is based on the -+ * -+ * (3) dlentry.s for the Papyrus BSP, written by: -+ * Andrew Bray -+ * with the following copyright and license: -+ * -+ * COPYRIGHT (c) 1995 by i-cubed ltd. -+ * -+ * (4) start860.S for the MBX821/MBX860, written by: -+ * Darlene A. Stewart -+ * Copyright (c) 1999, National Research Council of Canada -+ * -+ * To anyone who acknowledges that this file is provided "AS IS" -+ * without any express or implied warranty: -+ * permission to use, copy, modify, and distribute this file -+ * for any purpose is hereby granted without fee, provided that -+ * the above copyright notice and this notice appears in all -+ * copies, and that the name of i-cubed limited not be used in -+ * advertising or publicity pertaining to distribution of the -+ * software without specific, written prior permission. -+ * i-cubed limited makes no representations about the suitability -+ * of this software for any purpose. -+ * -+ * (5) Modifications (for MBX8xx) of respective RTEMS files: -+ * Copyright (c) 1999, National Research Council of Canada -+ * -+ * SS555 port sponsored by Defence Research and Development Canada - Suffield -+ * Copyright (C) 2004, Real-Time Systems Inc. (querbach@realtime.bc.ca) -+ */ -+ -+#include -+#include -+ -+/* -+ * The initial stack is set to the top of the internal RAM. -+ * -+ * All the entry veneer has to do is to clear the .bss section and copy the -+ * initializers into the .data section. -+ */ -+ -+/* -+ * GDB likes to have debugging information for the entry veneer. -+ * Play compiler and provide some DWARF information. -+ * -+ * CHANGE TO SUIT YOUR SETUP! -+ */ -+ -+ .section .entry,"ax",@progbits -+.L_text_b: -+.L_LC1: -+ .previous -+ -+.section .debug_sfnames -+.L_sfnames_b: -+ .byte "rtems/c/src/lib/libbsp/powerpc/ss555/startup/" -+ .byte 0 -+.L_F0: -+ .byte "start.S" -+ .byte 0 -+ .previous -+ -+.section .line -+.L_line_b: -+ .4byte .L_line_e-.L_line_b -+ .4byte .L_text_b -+.L_LE1: -+.L_line_last: -+ .4byte 0x0 -+ .2byte 0xffff -+ .4byte .L_text_e-.L_text_b -+.L_line_e: -+ .previous -+ -+.section .debug_srcinfo -+.L_srcinfo_b: -+ .4byte .L_line_b -+ .4byte .L_sfnames_b -+ .4byte .L_text_b -+ .4byte .L_text_e -+ .4byte 0xffffffff -+ .4byte .L_LE1-.L_line_b -+ .4byte .L_F0-.L_sfnames_b -+ .4byte .L_line_last-.L_line_b -+ .4byte 0xffffffff -+ .previous -+ -+.section .debug_pubnames -+ .4byte .L_debug_b -+ .4byte .L_P0 -+ .byte "start" -+ .byte 0 -+ .4byte 0x0 -+ .byte 0 -+ .previous -+ -+.section .debug_aranges -+ .4byte .L_debug_b -+ .4byte .L_text_b -+ .4byte .L_text_e-.L_text_b -+ .4byte 0 -+ .4byte 0 -+ .4byte 0 -+ .4byte 0 -+ .4byte 0 -+ .4byte 0 -+ .4byte 0x0 -+ .4byte 0x0 -+ .previous -+ -+.section .debug -+.L_debug_b: -+.L_D1: -+ .4byte .L_D1_e-.L_D1 -+ .2byte 0x11 /* TAG_compile_unit */ -+ .2byte 0x12 /* AT_sibling */ -+ .4byte .L_D2 -+ .2byte 0x38 /* AT_name */ -+ .byte "start.S" -+ .byte 0 -+ .2byte 0x258 /* AT_producer */ -+ .byte "GAS 2.5.2" -+ .byte 0 -+ .2byte 0x111 /* AT_low_pc */ -+ .4byte .L_text_b -+ .2byte 0x121 /* AT_high_pc */ -+ .4byte .L_text_e -+ .2byte 0x106 /* AT_stmt_list */ -+ .4byte .L_line_b -+ .2byte 0x1b8 /* AT_comp_dir */ -+ .byte "rtems/c/src/lib/libbsp/powerpc/ss555/startup/" -+ .byte 0 -+ .2byte 0x8006 /* AT_sf_names */ -+ .4byte .L_sfnames_b -+ .2byte 0x8016 /* AT_src_info */ -+ .4byte .L_srcinfo_b -+.L_D1_e: -+.L_P0: -+.L_D3: -+ .4byte .L_D3_e-.L_D3 -+ .2byte 0x6 /* TAG_global_subroutine */ -+ .2byte 0x12 /* AT_sibling */ -+ .4byte .L_D4 -+ .2byte 0x38 /* AT_name */ -+ .byte "start" -+ .byte 0 -+ .2byte 0x278 /* AT_prototyped */ -+ .byte 0 -+ .2byte 0x111 /* AT_low_pc */ -+ .4byte .L_text_b -+ .2byte 0x121 /* AT_high_pc */ -+ .4byte .L_text_e -+ .2byte 0x8041 /* AT_body_begin */ -+ .4byte .L_text_b -+ .2byte 0x8051 /* AT_body_end */ -+ .4byte .L_text_e -+.L_D3_e: -+ -+.L_D4: -+ .4byte .L_D4_e-.L_D4 -+ .align 2 -+.L_D4_e: -+.L_D2: -+ .previous -+ -+/* -+ * Tell C's eabi-ctor's that we have an atexit function, -+ * and that it is to register __do_global_dtors. -+ */ -+ EXTERN_PROC(atexit) -+ PUBLIC_VAR(__atexit) -+ .section ".sdata","aw" -+ .align 2 -+SYM(__atexit): -+ EXT_PROC_REF(atexit)@fixup -+ .previous -+ -+ .section ".fixup","aw" -+ .align 2 -+ EXT_SYM_REF(__atexit) -+ .previous -+ -+/* That should do it */ -+ -+/* -+ * Put the entry point in its own section. That way, we can guarantee -+ * to put it first in the .text section in the linker script. -+ */ -+ .section .entry -+ -+ PUBLIC_VAR (start) -+SYM(start): -+ bl .startup /* or bl .spin */ -+base_addr: -+ -+/* -+ * Parameters from linker -+ */ -+stack_top: -+ .long initStackPtr -+ -+toc_pointer: -+ .long __GOT_START__ -+ -+bss_length: -+ .long bss.size -+bss_addr: -+ .long bss.start -+ -+data_length: -+ .long data.size -+data_addr: -+ .long data.start -+contents_addr: -+ .long data.contents.start -+ -+PUBLIC_VAR (text_addr) -+text_addr: -+ .long text.start -+ -+PUBLIC_VAR (text_length) -+text_length: -+ .long text.size -+ -+/* -+ * Spin, if necessary, to acquire control from debugger (CodeWarrior). -+ */ -+spin: -+ .long 0x0001 -+.spin: -+ lis r3, spin@ha -+ lwz r3, spin@l(r3) -+ cmpwi r3, 0x1 -+ beq .spin -+ -+/* -+ * Initialization code -+ */ -+.startup: -+ /* Capture address of linker parameters. */ -+ mflr r3 -+ -+ /* Set initial stack pointer to end of internal RAM - 56. */ -+ lwz r1, stack_top-base_addr(r3) -+ addi r1, r1, -56 -+ -+ /* Initialize essential registers. */ -+ bl initregs -+ -+ /* Set TOC pointer */ -+ lwz r2, toc_pointer-base_addr(r3) -+ -+ /* Initialize the memory mapped MPC555 registers (done in C). */ -+ EXTERN_PROC (_InitSS555) -+ bl PROC (_InitSS555) -+ -+ /* Clear the .bss section. */ -+ bl bssclr -+ -+ /* Copy initializers into the .data section */ -+ bl datacopy -+ -+ /* Enable floating point, since gcc sometimes uses the floating -+ * point registers for data moves, even if the C source code doesn't -+ * include floating point operations. -+ */ -+ mfmsr r0 -+ ori r0, r0, MSR_FP -+ mtmsr r0 -+ -+ /* Start system. */ -+ lis r5, environ@ha -+ la r5,environ@l(r5) /* environp */ -+ li r4, 0 /* argv */ -+ li r3, 0 /* argc */ -+ EXTERN_PROC (boot_card) -+ bl PROC (boot_card) /* call the first C routine */ -+ -+ /* We should never return from boot_card, but in case we do ... */ -+ /* The next instructions are dependent on your runtime environment. */ -+ -+stop_here: -+ b stop_here -+ -+/* -+ * datacopy - copy initializers into .data section -+ */ -+datacopy: -+ lis r3, base_addr@ha /* point to linker data */ -+ addi r3, r3, base_addr@l -+ -+ lwz r4, contents_addr-base_addr(r3) /* .data contents in ROM */ -+ lwz r5, data_addr-base_addr(r3) /* .data section in RAM */ -+ lwz r6, data_length-base_addr(r3) /* length of .data */ -+ -+ rlwinm. r6, r6, 30, 0x3FFFFFFF /* form length / 4 */ -+ beqlr /* no .data - return */ -+ -+ mtctr r6 /* set ctr reg */ -+dc1: -+ lwz r6, 0(r4) /* get word */ -+ stw r6, 0(r5) /* store word */ -+ addi r4, r4, 0x4 /* next source */ -+ addi r5, r5, 0x4 /* next target */ -+ bdnz dc1 /* dec counter and loop */ -+ -+ blr /* return */ -+ -+/* -+ * bssclr - zero out bss -+ */ -+bssclr: -+ lis r3, base_addr@ha /* point to linker data */ -+ addi r3, r3, base_addr@l -+ -+ lwz r4, bss_addr-base_addr(r3) /* Start of bss */ -+ lwz r5, bss_length-base_addr(r3) /* Length of bss */ -+ -+ rlwinm. r5, r5, 30, 0x3FFFFFFF /* form length/4 */ -+ beqlr /* no bss - return */ -+ -+ mtctr r5 /* set ctr reg */ -+ li r5, 0x0000 /* r5 = 0 */ -+clear_bss: -+ stw r5, 0(r4) /* store r6 */ -+ addi r4, r4, 0x4 /* update r4 */ -+ bdnz clear_bss /* dec counter and loop */ -+ -+ blr /* return */ -+ -+/* -+ * initregs -+ * Initialize the MSR and basic core PowerPC registers -+ * -+ * Register usage: -+ * r0 - scratch -+ */ -+initregs: -+ /* -+ * Set the processor for big-endian mode, exceptions vectored to -+ * 0x000n_nnnn, no execution tracing, machine check exceptions -+ * enabled, floating-point not available, supervisor priviledge -+ * level, external interrupts disabled, power management disabled -+ * (normal operation mode). -+ */ -+ li r0, 0x1000 /* MSR_ME */ -+ mtmsr r0 /* Context-synchronizing */ -+ isync -+ -+ /* -+ * Clear the exception handling registers. -+ */ -+ li r0, 0x0000 -+ mtdar r0 -+ mtspr sprg0, r0 -+ mtspr sprg1, r0 -+ mtspr sprg2, r0 -+ mtspr sprg3, r0 -+ mtspr srr0, r0 -+ mtspr srr1, r0 -+ -+ mr r6, r0 -+ mr r7, r0 -+ mr r8, r0 -+ mr r9, r0 -+ mr r10, r0 -+ mr r11, r0 -+ mr r12, r0 -+ mr r13, r0 -+ mr r14, r0 -+ mr r15, r0 -+ mr r16, r0 -+ mr r17, r0 -+ mr r18, r0 -+ mr r19, r0 -+ mr r20, r0 -+ mr r21, r0 -+ mr r22, r0 -+ mr r23, r0 -+ mr r24, r0 -+ mr r25, r0 -+ mr r26, r0 -+ mr r27, r0 -+ mr r28, r0 -+ mr r29, r0 -+ mr r30, r0 -+ mr r31, r0 -+ -+ blr /* return */ -+ -+.L_text_e: -Index: rtems-4.9.3/c/src/lib/libbsp/powerpc/ec555/startup/tm27supp.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ rtems-4.9.3/c/src/lib/libbsp/powerpc/ec555/startup/tm27supp.c 2009-11-29 01:38:37.620589246 +0100 -@@ -0,0 +1,29 @@ -+/* -+ * Support routines for TM27 -+ * -+ * $Id: tm27supp.c,v 1.1 2004/04/21 20:24:36 joel Exp $ -+ */ -+ -+#include -+ -+void tm27On() -+{ -+} -+ -+void tm27Off() -+{ -+} -+ -+int tm27IsOn() -+{ -+ return 1; -+} -+ -+rtems_irq_connect_data tm27IrqData = { -+ CPU_USIU_EXT_IRQ_7, -+ (rtems_irq_hdl)0, -+ (rtems_irq_enable)tm27On, -+ (rtems_irq_disable)tm27Off, -+ (rtems_irq_is_enabled)tm27IsOn -+}; -+ -Index: rtems-4.9.3/c/src/lib/libbsp/powerpc/ec555/times -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ rtems-4.9.3/c/src/lib/libbsp/powerpc/ec555/times 2009-11-29 01:38:37.620589246 +0100 -@@ -0,0 +1,189 @@ -+# -+# Timing Test Suite Results for the Intec SS555 -+# -+# $Id: times,v 1.1 2004/04/12 21:52:13 joel Exp $ -+# -+ -+Board: SS555 -+CPU: MPC555 -+Clock Speed: 40 MHz -+Memory Configuration: 512k external 2-1-1-1 SRAM -+Wait States: 0 -+ -+Times Reported in: microseconds -+Timer Source: Timebase register (TMBCLK = (4 MHz crystal / 4) = 1.0 Mhz) -+ -+# DESCRIPTION A B -+== ================================================================= ==== ==== -+ -+ 1 rtems_semaphore_create 21 -+ rtems_semaphore_delete 22 -+ rtems_semaphore_obtain: available 7 -+ rtems_semaphore_obtain: not available -- NO_WAIT 7 -+ rtems_semaphore_release: no waiting tasks 18 -+ -+ 2 rtems_semaphore_obtain: not available -- caller blocks 50 -+ -+ 3 rtems_semaphore_release: task readied -- preempts caller 41 -+ -+ 4 rtems_task_restart: blocked task -- preempts caller 69 -+ rtems_task_restart: ready task -- preempts caller 67 -+ rtems_semaphore_release: task readied -- returns to caller 23 -+ rtems_task_create 75 -+ rtems_task_start 30 -+ rtems_task_restart: suspended task -- returns to caller 37 -+ rtems_task_delete: suspended task 68 -+ rtems_task_restart: ready task -- returns to caller 38 -+ rtems_task_restart: blocked task -- returns to caller 44 -+ rtems_task_delete: blocked task 70 -+ -+ 5 rtems_task_suspend: calling task 40 -+ rtems_task_resume: task readied -- preempts caller 35 -+ -+ 6 rtems_task_restart: calling task 46 -+ rtems_task_suspend: returns to caller 16 -+ rtems_task_resume: task readied -- returns to caller 18 -+ rtems_task_delete: ready task 71 -+ -+ 7 rtems_task_restart: suspended task -- preempts caller 64 -+ -+ 8 rtems_task_set_priority: obtain current priority 13 -+ rtems_task_set_priority: returns to caller 24 -+ rtems_task_mode: obtain current mode 4 -+ rtems_task_mode: no reschedule 5 -+ rtems_task_mode: reschedule -- returns to caller 7 -+ rtems_task_mode: reschedule -- preempts caller 37 -+ rtems_task_set_note 13 -+ rtems_task_get_note 13 -+ rtems_clock_set 27 -+ rtems_clock_get 1 -+ -+ 9 rtems_message_queue_create 34 -+ rtems_message_queue_send: no waiting tasks 26 -+ rtems_message_queue_urgent: no waiting tasks 26 -+ rtems_message_queue_receive: available 24 -+ rtems_message_queue_flush: no messages flushed 12 -+ rtems_message_queue_flush: messages flushed 15 -+ rtems_message_queue_delete 26 -+ -+10 rtems_message_queue_receive: not available -- NO_WAIT 15 -+ rtems_message_queue_receive: not available -- caller blocks 52 -+ -+11 rtems_message_queue_send: task readied -- preempts caller 47 -+ -+12 rtems_message_queue_send: task readied -- returns to caller 29 -+ -+13 rtems_message_queue_urgent: task readied -- preempts caller 46 -+ -+14 rtems_message_queue_urgent: task readied -- returns to caller 29 -+ -+15 rtems_event_receive: obtain current events 1 -+ rtems_event_receive: not available -- NO_WAIT 12 -+ rtems_event_receive: not available -- caller blocks 44 -+ rtems_event_send: no task readied 13 -+ rtems_event_receive: available 13 -+ rtems_event_send: task readied -- returns to caller 21 -+ -+16 rtems_event_send: task readied -- preempts caller 41 -+ -+17 rtems_task_set_priority: preempts caller 49 -+ -+18 rtems_task_delete: calling task 95 -+ -+19 rtems_signal_catch 10 -+ rtems_signal_send: returns to caller 15 -+ rtems_signal_send: signal to self 20 -+ exit ASR overhead: returns to calling task 15 -+ exit ASR overhead: returns to preempting task 30 -+ -+20 rtems_partition_create 25 -+ rtems_region_create 38 -+ rtems_partition_get_buffer: available 14 -+ rtems_partition_get_buffer: not available 13 -+ rtems_partition_return_buffer 15 -+ rtems_partition_delete 16 -+ rtems_region_get_segment: available 34 -+ rtems_region_get_segment: not available -- NO_WAIT 32 -+ rtems_region_return_segment: no waiting tasks 33 -+ rtems_region_get_segment: not available -- caller blocks 68 -+ rtems_region_return_segment: task readied -- preempts caller 67 -+ rtems_region_return_segment: task readied -- returns to caller 48 -+ rtems_region_delete 30 -+ rtems_io_initialize 2 -+ rtems_io_open 1 -+ rtems_io_close 1 -+ rtems_io_read 1 -+ rtems_io_write 1 -+ rtems_io_control 1 -+ -+21 rtems_task_ident 25 -+ rtems_message_queue_ident 22 -+ rtems_semaphore_ident 29 -+ rtems_partition_ident 22 -+ rtems_region_ident 24 -+ rtems_port_ident 22 -+ rtems_timer_ident 22 -+ rtems_rate_monotonic_ident 22 -+ -+22 rtems_message_queue_broadcast: task readied -- returns to caller 33 -+ rtems_message_queue_broadcast: no waiting tasks 20 -+ rtems_message_queue_broadcast: task readied -- preempts caller 50 -+ -+23 rtems_timer_create 13 -+ rtems_timer_fire_after: inactive 22 -+ rtems_timer_fire_after: active 24 -+ rtems_timer_cancel: active 13 -+ rtems_timer_cancel: inactive 12 -+ rtems_timer_reset: inactive 21 -+ rtems_timer_reset: active 22 -+ rtems_timer_fire_when: inactive 26 -+ rtems_timer_fire_when: active 26 -+ rtems_timer_delete: active 18 -+ rtems_timer_delete: inactive 16 -+ rtems_task_wake_when 49 -+ -+24 rtems_task_wake_after: yield -- returns to caller 10 -+ rtems_task_wake_after: yields -- preempts caller 36 -+ -+25 rtems_clock_tick 8 -+ -+26 _ISR_Disable 1 -+ _ISR_Flash 1 -+ _ISR_Enable 1 -+ _Thread_Disable_dispatch 1 -+ _Thread_Enable_dispatch 7 -+ _Thread_Set_state 7 -+ _Thread_Disptach (NO FP) 32 -+ context switch: no floating point contexts 25 -+ context switch: self 11 -+ context switch: to another task 12 -+ fp context switch: restore 1st FP task 37 -+ fp context switch: save idle, restore initialized 34 -+ fp context switch: save idle, restore idle 48 -+ fp context switch: save initialized, restore initialized 34 -+ _Thread_Resume 7 -+ _Thread_Unblock 6 -+ _Thread_Ready 7 -+ _Thread_Get 4 -+ _Semaphore_Get 2 -+ _Thread_Get: invalid id 1 -+ -+27 interrupt entry overhead: returns to interrupted task 13 -+ interrupt exit overhead: returns to interrupted task 11 -+ interrupt entry overhead: returns to nested interrupt 12 -+ interrupt exit overhead: returns to nested interrupt 10 -+ interrupt entry overhead: returns to preempting task 12 -+ interrupt exit overhead: returns to preempting task 38 -+ -+28 rtems_port_create 16 -+ rtems_port_external_to_internal 11 -+ rtems_port_internal_to_external 11 -+ rtems_port_delete 16 -+ -+29 rtems_rate_monotonic_create 15 -+ rtems_rate_monotonic_period: initiate period -- returns to caller 20 -+ rtems_rate_monotonic_period: obtain status 12 -+ rtems_rate_monotonic_cancel 15 -+ rtems_rate_monotonic_delete: inactive 18 -+ rtems_rate_monotonic_delete: active 20 -+ rtems_rate_monotonic_period: conclude periods -- caller blocks 36 -Index: rtems-4.9.3/make/custom/ec555.cfg -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ rtems-4.9.3/make/custom/ec555.cfg 2009-11-29 01:43:49.127556601 +0100 -@@ -0,0 +1,38 @@ -+# -+# Config file for an Intec Automation SS555 MPC555-based card -+# -+# This file is derived from: -+# -+# Config file for a PowerPC MPC860-based MBX821-001 card. -+# Config file for a PowerPC 403 based helas403 card -+# Config file for MPC860 based Ethernet Comm Board -+# -+# $Id: ss555.cfg,v 1.11 2008/03/11 20:50:58 joel Exp $ -+# -+ -+include $(RTEMS_ROOT)/make/custom/default.cfg -+ -+RTEMS_CPU=powerpc -+GCC_CPU_MODEL=505 -+RTEMS_CPU_MODEL=mpc555 -+ -+# This is the actual bsp directory used during the build process. -+RTEMS_BSP_FAMILY=ss555 -+ -+# This contains the compiler options necessary to select the CPU model -+# and (hopefully) optimize for it. -+# -+CPU_CFLAGS = -mcpu=$(GCC_CPU_MODEL) -D$(RTEMS_CPU_MODEL) -D$(RTEMS_BSP_FAMILY) -+ -+# optimize flag: typically -O2 -+CFLAGS_OPTIMIZE_V = -O2 -g -fno-keep-inline-functions -+ -+define bsp-post-link -+ $(default-bsp-post-link) -+ cp $(basename $@).exe $(basename $@)$(DOWNEXT) -+ $(STRIP) $(basename $@)$(DOWNEXT) -+endef -+ -+# Override default start file -+START_BASE= -+ -Index: rtems-4.9.3/c/src/lib/libbsp/powerpc/ec555/preinstall.am -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ rtems-4.9.3/c/src/lib/libbsp/powerpc/ec555/preinstall.am 2009-11-29 01:38:37.620589246 +0100 -@@ -0,0 +1,58 @@ -+## 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-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_LIB)/bsp_specs: bsp_specs $(PROJECT_LIB)/$(dirstamp) -+ $(INSTALL_DATA) $< $(PROJECT_LIB)/bsp_specs -+PREINSTALL_FILES += $(PROJECT_LIB)/bsp_specs -+ -+$(PROJECT_INCLUDE)/bsp.h: include/bsp.h $(PROJECT_INCLUDE)/$(dirstamp) -+ $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp.h -+PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp.h -+ -+$(PROJECT_INCLUDE)/tm27.h: include/tm27.h $(PROJECT_INCLUDE)/$(dirstamp) -+ $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/tm27.h -+PREINSTALL_FILES += $(PROJECT_INCLUDE)/tm27.h -+ -+$(PROJECT_INCLUDE)/bspopts.h: include/bspopts.h $(PROJECT_INCLUDE)/$(dirstamp) -+ $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bspopts.h -+PREINSTALL_FILES += $(PROJECT_INCLUDE)/bspopts.h -+ -+$(PROJECT_INCLUDE)/bsp/$(dirstamp): -+ @$(MKDIR_P) $(PROJECT_INCLUDE)/bsp -+ @: > $(PROJECT_INCLUDE)/bsp/$(dirstamp) -+PREINSTALL_DIRS += $(PROJECT_INCLUDE)/bsp/$(dirstamp) -+ -+$(PROJECT_INCLUDE)/coverhd.h: include/coverhd.h $(PROJECT_INCLUDE)/$(dirstamp) -+ $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/coverhd.h -+PREINSTALL_FILES += $(PROJECT_INCLUDE)/coverhd.h -+ -+$(PROJECT_INCLUDE)/bsp/irq.h: irq/irq.h $(PROJECT_INCLUDE)/bsp/$(dirstamp) -+ $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/irq.h -+PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/irq.h -+ -+$(PROJECT_LIB)/linkcmds: startup/linkcmds $(PROJECT_LIB)/$(dirstamp) -+ $(INSTALL_DATA) $< $(PROJECT_LIB)/linkcmds -+PREINSTALL_FILES += $(PROJECT_LIB)/linkcmds -+