From bd9c3d1e76df8b4e774f50dbaf1bd5ebeeb7a154 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Wed, 15 Apr 1998 20:50:31 +0000 Subject: Numerous changes which in total greatly reduced the amount of source code in each BSP's bspstart.c. These changes were: + confdefs.h now knows libio's semaphore requirements + shared/main.c now copies Configuration to BSP_Configuration + shared/main.c fills in the Cpu_table with default values This removed the need for rtems_libio_config() and the constant BSP_LIBIO_MAX_FDS in every BSP. Plus now the maximum number of open files can now be set on the gcc command line. --- c/src/lib/libbsp/shared/main.c | 48 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 46 insertions(+), 2 deletions(-) (limited to 'c/src/lib/libbsp/shared') diff --git a/c/src/lib/libbsp/shared/main.c b/c/src/lib/libbsp/shared/main.c index 7d5138d84f..5a49524cba 100644 --- a/c/src/lib/libbsp/shared/main.c +++ b/c/src/lib/libbsp/shared/main.c @@ -24,6 +24,7 @@ char *rtems_progname; extern void bsp_start( void ); extern void bsp_cleanup( void ); +extern rtems_configuration_table Configuration; extern rtems_configuration_table BSP_Configuration; extern rtems_cpu_table Cpu_table; @@ -46,17 +47,60 @@ int boot_card(int argc, char **argv) { int status; - /* the atexit hook will be before the static destructor list's entry - point */ + /* + * Set default values for the CPU Table fields all ports must have. + * These values can be overridden in bsp_start() but they are + * right most of the time. + */ + + Cpu_table.pretasking_hook = NULL; + Cpu_table.predriver_hook = NULL; + Cpu_table.postdriver_hook = NULL; + Cpu_table.idle_task = NULL; + Cpu_table.do_zero_of_workspace = TRUE; + Cpu_table.interrupt_stack_size = RTEMS_MINIMUM_STACK_SIZE; + Cpu_table.extra_mpci_receive_server_stack = 0; + Cpu_table.stack_allocate_hook = NULL; + Cpu_table.stack_free_hook = NULL; + + + /* + * Copy the configuration table so we and the BSP wants to change it. + */ + + BSP_Configuration = Configuration; + + /* + * The atexit hook will be before the static destructor list's entry + * point. + */ + bsp_start(); + /* + * Initialize RTEMS but do NOT start multitasking. + */ + bsp_isr_level = rtems_initialize_executive_early( &BSP_Configuration, &Cpu_table ); + /* + * Call main() and get the global constructors invoked if there + * are any. + */ + status = main(argc, argv); + /* + * Perform any BSP specific shutdown actions. + */ + bsp_cleanup(); + /* + * Now return to the start code. + */ + return status; } -- cgit v1.2.3