* bootcard.c, bspgetworkarea.c, include/bootcard.h: Switch from ssize_t
to uintptr_t for bsp_get_work_area() since the work area is larger
than a single allocatable object.
* bootcard.c: Swap order of RTEMS Workspace and Malloc Heap. This
allows the potential for sbrk() to extend the heap area. This
actually is done on PowerPC BSPs with more than 32MB which use
dynamic loading.
* bootcard.c: Eliminate pointers to API configuration tables in the
main configuration table. Reference the main configuration table and
the API configuration tables directly using the confdefs.h version
rather than obtaining a pointer to it. This eliminated some
variables, a potential fatal error, some unnecessary default
configuration structures. Overall, about a 4.5% reduction in the code
size for minimum and hello on the SPARC.
* bootcard.c, bspgetworkarea.c, bsppretaskinghook.c,
include/bootcard.h: Change size_t to ssize_t on bsp_get_work_area().
On 16-bit architectures, size_t can be 16-bits which would limit the
work area to 64K.
* bootcard.c, include/bootcard.h: Make letting boot_card() handle work
area allocation mandatory. Rename
RTEMS_BSP_BOOTCARD_HANDLES_RAM_ALLOCATION to BSP_BOOTCARD_OPTIONS.
* bootcard.c: Add support for optionally having a unified work area. In
other words, the RTEMS Workspace and C Program Heap are the same pool
of memory.
* bootcard.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.
* bsppretaskinghook.c: New file.
* bootcard.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.
* bootcard.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.
* bootcard.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.
* bootcard.c: RTEMS Workspace now defaults to not being zeroed. This
significantly speeds up boot time on targets not requiring memory to
be touched at boot time.
* hared/bootcard.c: Now process C++ global constructors
(_init) as part of the first task execution not in BSP space.
This depends on the toolset defining USE_INIT_FINI so you
have to have the right toolset version.
to address m68k-rtemself for the MVME167.
Here is the rtems patch I promissed you a long time ago to enable ELF
with m68k. The target name I selected is m68k-rtemself. It preserves the
m68k-rtems COFF target, and is parterned after the other ELF/COFF dual
targets.
The mvme167.cfg file causes the -qelf flag to be used during compilation
if the name of the compiler contains rtemself. This flag is used in the
bsp_specs file to select the elflinkcmds file rather than the linkcmds
file. The former is for ELF, the latter for COFF.
Some patches are required to the mc68040 FPSP code. Some of the
assembler files contain instructions that were rejected by the
m68k-rtemself-as assembler. This is a minor bug in the m68k ELF
assembler, I think.
boot_card() and main() into separate files to ease configuration
of other packages. This was a big step in the way to build TCL,
ncurses, and zlib for RTEMS.