From e2a2ec6016c9bb3f3146c701bbe950af212c097c Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Sat, 21 Mar 1998 15:37:18 +0000 Subject: Switch to using a shared main() for all of the embedded BSPs based on the GNU tools. This usually involved correcting the type of bsp_start(), bsp_cleanup(), adjusting the start code to call the right start routine (the shared boot_card()), and then removing code from bsp_start() which was performed in the new boot_card()/main() path. --- c/src/lib/libbsp/hppa1.1/simhppa/include/bsp.h | 2 - c/src/lib/libbsp/hppa1.1/simhppa/start/start.s | 8 +-- .../lib/libbsp/hppa1.1/simhppa/startup/Makefile.in | 13 +---- .../lib/libbsp/hppa1.1/simhppa/startup/bspstart.c | 15 +----- c/src/lib/libbsp/i386/force386/startup/Makefile.in | 2 +- c/src/lib/libbsp/i386/force386/startup/bspstart.c | 16 +----- c/src/lib/libbsp/i386/i386ex/startup/Makefile.in | 3 +- c/src/lib/libbsp/i386/i386ex/startup/bspstart.c | 15 +----- c/src/lib/libbsp/i386/pc386/start/start.s | 4 +- c/src/lib/libbsp/i386/pc386/startup/Makefile.in | 2 +- c/src/lib/libbsp/i386/pc386/startup/bspstart.c | 15 +++--- c/src/lib/libbsp/i960/cvme961/include/bsp.h | 4 +- c/src/lib/libbsp/i960/cvme961/startup/Makefile.in | 2 +- c/src/lib/libbsp/i960/cvme961/startup/bspstart.c | 19 +------ c/src/lib/libbsp/m68k/dmv152/startup/Makefile.in | 2 +- c/src/lib/libbsp/m68k/dmv152/startup/bspclean.c | 21 ++++++++ c/src/lib/libbsp/m68k/dmv152/startup/bspstart.c | 19 +------ c/src/lib/libbsp/m68k/efi332/start/start.c | 6 +-- c/src/lib/libbsp/m68k/efi332/start332/start332.c | 6 +-- c/src/lib/libbsp/m68k/efi332/startup/Makefile.in | 2 +- c/src/lib/libbsp/m68k/efi332/startup/bspstart.c | 15 +----- c/src/lib/libbsp/m68k/efi68k/start/start.c | 5 +- c/src/lib/libbsp/m68k/efi68k/start68k/start68k.c | 5 +- c/src/lib/libbsp/m68k/efi68k/startup/Makefile.in | 2 +- c/src/lib/libbsp/m68k/efi68k/startup/bspstart.c | 16 +----- c/src/lib/libbsp/m68k/gen68302/start/start302.s | 4 +- c/src/lib/libbsp/m68k/gen68302/start302/start302.s | 4 +- c/src/lib/libbsp/m68k/gen68302/startup/Makefile.in | 2 +- c/src/lib/libbsp/m68k/gen68302/startup/bspstart.c | 19 +------ c/src/lib/libbsp/m68k/gen68360/start/start360.s | 2 +- c/src/lib/libbsp/m68k/gen68360/start360/start360.s | 2 +- c/src/lib/libbsp/m68k/gen68360/startup/Makefile.in | 2 +- c/src/lib/libbsp/m68k/gen68360/startup/bspstart.c | 20 +------ c/src/lib/libbsp/m68k/idp/startup/Makefile.in | 2 +- c/src/lib/libbsp/m68k/idp/startup/bspstart.c | 16 +----- c/src/lib/libbsp/m68k/mvme136/startup/Makefile.in | 2 +- c/src/lib/libbsp/m68k/mvme136/startup/bspstart.c | 19 +------ c/src/lib/libbsp/m68k/mvme147/startup/Makefile.in | 2 +- c/src/lib/libbsp/m68k/mvme147/startup/bspstart.c | 19 +------ c/src/lib/libbsp/m68k/mvme147s/startup/Makefile.in | 2 +- c/src/lib/libbsp/m68k/mvme147s/startup/bspstart.c | 19 +------ c/src/lib/libbsp/m68k/mvme162/startup/Makefile.in | 2 +- c/src/lib/libbsp/m68k/mvme162/startup/bspstart.c | 18 +------ c/src/lib/libbsp/m68k/ods68302/start/cpuboot.c | 4 +- c/src/lib/libbsp/m68k/ods68302/start302/cpuboot.c | 4 +- c/src/lib/libbsp/m68k/ods68302/startup/Makefile.in | 2 +- c/src/lib/libbsp/m68k/ods68302/startup/bspstart.c | 32 +---------- c/src/lib/libbsp/m68k/ods68302/startup/cpuboot.c | 4 +- c/src/lib/libbsp/mips/p4000/include/bsp.h | 8 --- c/src/lib/libbsp/mips/p4000/startup/bspclean.c | 1 + c/src/lib/libbsp/mips/p4000/startup/bspstart.c | 20 +------ c/src/lib/libbsp/mips64orion/p4000/include/bsp.h | 8 --- .../libbsp/mips64orion/p4000/startup/bspclean.c | 1 + .../libbsp/mips64orion/p4000/startup/bspstart.c | 20 +------ c/src/lib/libbsp/powerpc/papyrus/dlentry/dlentry.s | 4 +- .../libbsp/powerpc/papyrus/flashentry/flashentry.s | 4 +- c/src/lib/libbsp/powerpc/papyrus/include/bsp.h | 8 --- .../lib/libbsp/powerpc/papyrus/startup/bspstart.c | 19 +------ c/src/lib/libbsp/sh/gensh1/include/bsp.h | 2 - c/src/lib/libbsp/sh/gensh1/startup/bspclean.c | 1 + c/src/lib/libbsp/sh/gensh1/startup/bspstart.c | 21 +------- c/src/lib/libbsp/shared/bspclean.c | 17 ++++++ c/src/lib/libbsp/shared/main.c | 62 ++++++++++++++++++++++ c/src/lib/libbsp/sparc/erc32/include/bsp.h | 2 - c/src/lib/libbsp/sparc/erc32/start/startsis.s | 4 +- c/src/lib/libbsp/sparc/erc32/startsis/startsis.s | 4 +- c/src/lib/libbsp/sparc/erc32/startup/Makefile.in | 13 +---- c/src/lib/libbsp/sparc/erc32/startup/bspstart.c | 5 -- c/src/lib/start/i960/start.s | 4 +- c/src/lib/start/m68k/start.s | 4 +- 70 files changed, 190 insertions(+), 463 deletions(-) create mode 100644 c/src/lib/libbsp/m68k/dmv152/startup/bspclean.c create mode 100644 c/src/lib/libbsp/shared/bspclean.c create mode 100644 c/src/lib/libbsp/shared/main.c diff --git a/c/src/lib/libbsp/hppa1.1/simhppa/include/bsp.h b/c/src/lib/libbsp/hppa1.1/simhppa/include/bsp.h index 814b948bb2..28359d2d3e 100644 --- a/c/src/lib/libbsp/hppa1.1/simhppa/include/bsp.h +++ b/c/src/lib/libbsp/hppa1.1/simhppa/include/bsp.h @@ -109,8 +109,6 @@ void bsp_cleanup( void ); extern rtems_configuration_table BSP_Configuration; /* owned by BSP */ extern rtems_cpu_table Cpu_table; /* owned by BSP */ -extern rtems_unsigned32 bsp_isr_level; - extern int cpu_number; /* from 0; cpu number in a multi cpu system */ #ifdef __cplusplus diff --git a/c/src/lib/libbsp/hppa1.1/simhppa/start/start.s b/c/src/lib/libbsp/hppa1.1/simhppa/start/start.s index 92fda897d9..86298f0304 100644 --- a/c/src/lib/libbsp/hppa1.1/simhppa/start/start.s +++ b/c/src/lib/libbsp/hppa1.1/simhppa/start/start.s @@ -20,7 +20,7 @@ _crt0_argv .WORD _progname, 0 /* * stuff we need that is defined elsewhere. */ - .IMPORT main, CODE + .IMPORT boot_card, CODE .IMPORT _bss_start, DATA .IMPORT _bss_end, DATA .IMPORT environ, DATA @@ -75,8 +75,8 @@ bssloop ldi 1,%ret0 /* - * Call the "main" routine from the application to get it going. - * We call it as main(1, argv, 0) + * Call the "boot_card" routine from the application to get it going. + * We call it as boot_card(1, argv, 0) */ copy %r0, %r24 @@ -84,7 +84,7 @@ bssloop ldil L%_crt0_argv,%r25 ldo R%_crt0_argv(%r25),%r25 - bl main,%r2 + bl boot_card,%r2 ldo 1(%r0), %r26 .PROCEND diff --git a/c/src/lib/libbsp/hppa1.1/simhppa/startup/Makefile.in b/c/src/lib/libbsp/hppa1.1/simhppa/startup/Makefile.in index a7a7ac9382..894abe0d42 100644 --- a/c/src/lib/libbsp/hppa1.1/simhppa/startup/Makefile.in +++ b/c/src/lib/libbsp/hppa1.1/simhppa/startup/Makefile.in @@ -11,23 +11,15 @@ PROJECT_ROOT = @PROJECT_ROOT@ PGM=${ARCH}/startup.rel # C source names, if any, go here -- minus the .c -C_PIECES=bspclean bspstart sbrk setvec +C_PIECES=bspclean bspstart main sbrk setvec C_FILES=$(C_PIECES:%=%.c) C_O_FILES=$(C_PIECES:%=${ARCH}/%.o) -CC_PIECES=rtems-ctor -CC_FILES=$(CC_PIECES:%=%.cc) -CC_O_FILES=$(CC_PIECES:%=${ARCH}/%.o) - H_FILES= SRCS=$(C_FILES) $(H_FILES) OBJS=$(C_O_FILES) -# We install the RTEMS constructor as a separate .o -# so it can be easily place correctly by the compiler config file. -INSTALLED_O_FILES=$(ARCH)/rtems-ctor.o - include $(RTEMS_ROOT)/make/custom/$(RTEMS_BSP).cfg include $(RTEMS_ROOT)/make/leaf.cfg @@ -56,7 +48,6 @@ CLOBBER_ADDITIONS += ${PGM}: ${SRCS} ${OBJS} $(make-rel) -all: ${ARCH} $(SRCS) $(INSTALLED_O_FILES) $(PGM) - $(INSTALL_VARIANT) $(INSTALLED_O_FILES) ${PROJECT_RELEASE}/lib +all: ${ARCH} $(SRCS) $(PGM) # the .rel file built here will be put into libbsp.a by ../wrapup/Makefile diff --git a/c/src/lib/libbsp/hppa1.1/simhppa/startup/bspstart.c b/c/src/lib/libbsp/hppa1.1/simhppa/startup/bspstart.c index b4072c1b57..ecb7a69d48 100644 --- a/c/src/lib/libbsp/hppa1.1/simhppa/startup/bspstart.c +++ b/c/src/lib/libbsp/hppa1.1/simhppa/startup/bspstart.c @@ -39,7 +39,6 @@ extern rtems_configuration_table Configuration; rtems_configuration_table BSP_Configuration; rtems_cpu_table Cpu_table; -rtems_unsigned32 bsp_isr_level; int cpu_number; @@ -284,9 +283,7 @@ bsp_postdriver_hook(void) * */ - -void -bsp_start(void) +void bsp_start(void) { /* * Set cpu_number to accurately reflect our cpu number @@ -426,14 +423,4 @@ bsp_start(void) if (CPU_HPPA_CLICKS_PER_TICK == 0) CPU_HPPA_CLICKS_PER_TICK = 0x4000; - - /* - * Start most of RTEMS - * main() will start the rest - */ - - bsp_isr_level = rtems_initialize_executive_early( - &BSP_Configuration, - &Cpu_table - ); } diff --git a/c/src/lib/libbsp/i386/force386/startup/Makefile.in b/c/src/lib/libbsp/i386/force386/startup/Makefile.in index 639fcbdc32..4bf71c8ce3 100644 --- a/c/src/lib/libbsp/i386/force386/startup/Makefile.in +++ b/c/src/lib/libbsp/i386/force386/startup/Makefile.in @@ -11,7 +11,7 @@ PROJECT_ROOT = @PROJECT_ROOT@ PGM=${ARCH}/startup.rel # C source names, if any, go here -- minus the .c -C_PIECES=bspstart sbrk setvec +C_PIECES=bspclean bspstart main sbrk setvec C_FILES=$(C_PIECES:%=%.c) C_O_FILES=$(C_PIECES:%=${ARCH}/%.o) diff --git a/c/src/lib/libbsp/i386/force386/startup/bspstart.c b/c/src/lib/libbsp/i386/force386/startup/bspstart.c index 5158b56122..18e4fc88aa 100644 --- a/c/src/lib/libbsp/i386/force386/startup/bspstart.c +++ b/c/src/lib/libbsp/i386/force386/startup/bspstart.c @@ -139,18 +139,9 @@ bsp_postdriver_hook(void) rtems_fatal_error_occurred( error_code | 'I' << 8 | 'O' ); } -int main( - int argc, - char **argv, - char **environp -) +void bsp_start( void ) { - if ((argc > 0) && argv && argv[0]) - rtems_progname = argv[0]; - else - rtems_progname = "RTEMS"; - /* * FORCE documentation incorrectly states that the bus request * level is initialized to 3. It is actually initialized by @@ -217,9 +208,4 @@ int main( */ rtems_libio_config(&BSP_Configuration, BSP_LIBIO_MAX_FDS); - - rtems_initialize_executive( &BSP_Configuration, &Cpu_table ); - /* does not return */ - /* no cleanup necessary for Force CPU-386 */ - return 0; } diff --git a/c/src/lib/libbsp/i386/i386ex/startup/Makefile.in b/c/src/lib/libbsp/i386/i386ex/startup/Makefile.in index 9f6b78a6d0..8042d83b24 100644 --- a/c/src/lib/libbsp/i386/i386ex/startup/Makefile.in +++ b/c/src/lib/libbsp/i386/i386ex/startup/Makefile.in @@ -11,8 +11,7 @@ PROJECT_ROOT = @PROJECT_ROOT@ PGM=${ARCH}/startup.rel # C source names, if any, go here -- minus the .c -# C_PIECES=bspstart sbrk setvec except i386-stub -C_PIECES=bspstart sbrk setvec +C_PIECES=bspclean bspstart main sbrk setvec C_FILES=$(C_PIECES:%=%.c) C_O_FILES=$(C_PIECES:%=${ARCH}/%.o) diff --git a/c/src/lib/libbsp/i386/i386ex/startup/bspstart.c b/c/src/lib/libbsp/i386/i386ex/startup/bspstart.c index 2415d8daec..77bba61cf3 100644 --- a/c/src/lib/libbsp/i386/i386ex/startup/bspstart.c +++ b/c/src/lib/libbsp/i386/i386ex/startup/bspstart.c @@ -141,11 +141,7 @@ bsp_postdriver_hook(void) } -int main( - int argc, - char **argv, - char **environp -) +void bsp_start( void ) { #ifdef PRINTON @@ -155,11 +151,6 @@ int main( outbyte ('S'); #endif - if ((argc > 0) && argv && argv[0]) - rtems_progname = argv[0]; - else - rtems_progname = "RTEMS"; - /* * we do not use the pretasking_hook. */ @@ -222,8 +213,4 @@ int main( BSP_Configuration.maximum_extensions++; #endif - rtems_initialize_executive( &BSP_Configuration, &Cpu_table ); - /* does not return */ - /* no cleanup necessary for i386ex */ - for (;;); /* was return 0 to go to the debug monitor */ } diff --git a/c/src/lib/libbsp/i386/pc386/start/start.s b/c/src/lib/libbsp/i386/pc386/start/start.s index 3439608fa4..03ded48d45 100644 --- a/c/src/lib/libbsp/i386/pc386/start/start.s +++ b/c/src/lib/libbsp/i386/pc386/start/start.s @@ -66,7 +66,7 @@ BEGIN_CODE PUBLIC (start) # GNU default entry point - EXTERN (main) + EXTERN (boot_card) EXTERN (load_segments) EXTERN (exit) @@ -280,7 +280,7 @@ SYM (no_idt_load): pushl $0 # environp pushl $0 # argv pushl $0 # argc - call SYM (main) + call SYM (boot_card) addl $12, esp /*---------------------------------------------------------------------+ diff --git a/c/src/lib/libbsp/i386/pc386/startup/Makefile.in b/c/src/lib/libbsp/i386/pc386/startup/Makefile.in index 7c775413d5..957411a4fb 100644 --- a/c/src/lib/libbsp/i386/pc386/startup/Makefile.in +++ b/c/src/lib/libbsp/i386/pc386/startup/Makefile.in @@ -11,7 +11,7 @@ PROJECT_ROOT = @PROJECT_ROOT@ PGM=${ARCH}/startup.rel # C source names, if any, go here -- minus the .c -C_PIECES=bspstart exit irq sbrk +C_PIECES=bspclean bspstart exit irq main sbrk C_FILES=$(C_PIECES:%=%.c) C_O_FILES=$(C_PIECES:%=${ARCH}/%.o) diff --git a/c/src/lib/libbsp/i386/pc386/startup/bspstart.c b/c/src/lib/libbsp/i386/pc386/startup/bspstart.c index dd50fd115a..8b670357c1 100644 --- a/c/src/lib/libbsp/i386/pc386/startup/bspstart.c +++ b/c/src/lib/libbsp/i386/pc386/startup/bspstart.c @@ -171,21 +171,16 @@ bsp_postdriver_hook(void) /*-------------------------------------------------------------------------+ -| Function: main -| Description: Called from bsp's startup code ('start.s'). +| Function: bsp_start +| Description: Called before main is invoked. | Global Variables: None. | Arguments: None. | Returns: Nothing. +--------------------------------------------------------------------------*/ -int main(int argc, char **argv, char **environp) +void bsp_start( void ) { /* If we don't have command line arguments set default program name. */ - if ((argc > 0) && argv && argv[0]) - rtems_progname = argv[0]; - else - rtems_progname = "RTEMS"; - Cpu_table.pretasking_hook = bsp_pretasking_hook; /* init libc, etc. */ Cpu_table.predriver_hook = NULL; /* use system's */ Cpu_table.postdriver_hook = bsp_postdriver_hook; @@ -226,6 +221,7 @@ int main(int argc, char **argv, char **environp) rtems_libio_config(&BSP_Configuration, BSP_LIBIO_MAX_FDS); +#if 0 rtems_initialize_executive(&BSP_Configuration, &Cpu_table); /* does not return */ @@ -240,4 +236,5 @@ int main(int argc, char **argv, char **environp) /* no cleanup necessary for PC386 */ return 0; -} /* main */ +#endif +} /* bsp_start */ diff --git a/c/src/lib/libbsp/i960/cvme961/include/bsp.h b/c/src/lib/libbsp/i960/cvme961/include/bsp.h index ad05b12fce..c09a5e7ded 100644 --- a/c/src/lib/libbsp/i960/cvme961/include/bsp.h +++ b/c/src/lib/libbsp/i960/cvme961/include/bsp.h @@ -114,8 +114,8 @@ static inline i960ca_PRCB *get_prcb( void ) extern rtems_configuration_table BSP_Configuration; -BSP_EXTERN i960ca_PRCB *Prcb; -BSP_EXTERN i960ca_control_table *Ctl_tbl; +BSP_EXTERN i960ca_PRCB *Prcb; +BSP_EXTERN i960ca_control_table *Ctl_tbl; /* * Device Driver Table Entries diff --git a/c/src/lib/libbsp/i960/cvme961/startup/Makefile.in b/c/src/lib/libbsp/i960/cvme961/startup/Makefile.in index 514cf8fdcc..301eb2f6c6 100644 --- a/c/src/lib/libbsp/i960/cvme961/startup/Makefile.in +++ b/c/src/lib/libbsp/i960/cvme961/startup/Makefile.in @@ -11,7 +11,7 @@ PROJECT_ROOT = @PROJECT_ROOT@ PGM=${ARCH}/startup.rel # C source names, if any, go here -- minus the .c -C_PIECES=bspclean bspstart sbrk setvec +C_PIECES=bspclean bspstart main sbrk setvec C_FILES=$(C_PIECES:%=%.c) C_O_FILES=$(C_PIECES:%=${ARCH}/%.o) diff --git a/c/src/lib/libbsp/i960/cvme961/startup/bspstart.c b/c/src/lib/libbsp/i960/cvme961/startup/bspstart.c index c7ab92c3ec..f38f9e5b68 100644 --- a/c/src/lib/libbsp/i960/cvme961/startup/bspstart.c +++ b/c/src/lib/libbsp/i960/cvme961/startup/bspstart.c @@ -141,17 +141,8 @@ bsp_postdriver_hook(void) rtems_fatal_error_occurred( error_code | 'I' << 8 | 'O' ); } -int main( - int argc, - char **argv, - char **environp -) +void bsp_start( void ) { - if ((argc > 0) && argv && argv[0]) - rtems_progname = argv[0]; - else - rtems_progname = "RTEMS"; - /* set node number in SQSIO4 CTL REG */ *((rtems_unsigned32 *)0xc00000b0) = @@ -234,12 +225,4 @@ int main( BSP_Configuration.work_space_start = (void *) (RAM_END - BSP_Configuration.work_space_size); - - rtems_initialize_executive( &BSP_Configuration, &Cpu_table ); - /* does not return */ - - bsp_cleanup(); - - return 0; - } diff --git a/c/src/lib/libbsp/m68k/dmv152/startup/Makefile.in b/c/src/lib/libbsp/m68k/dmv152/startup/Makefile.in index 6f35d68576..4e05da9431 100644 --- a/c/src/lib/libbsp/m68k/dmv152/startup/Makefile.in +++ b/c/src/lib/libbsp/m68k/dmv152/startup/Makefile.in @@ -11,7 +11,7 @@ PROJECT_ROOT = @PROJECT_ROOT@ PGM=${ARCH}/startup.rel # C source names, if any, go here -- minus the .c -C_PIECES=bspstart sbrk setvec vmeintr +C_PIECES=bspclean bspstart main sbrk setvec vmeintr C_FILES=$(C_PIECES:%=%.c) C_O_FILES=$(C_PIECES:%=${ARCH}/%.o) diff --git a/c/src/lib/libbsp/m68k/dmv152/startup/bspclean.c b/c/src/lib/libbsp/m68k/dmv152/startup/bspclean.c new file mode 100644 index 0000000000..ef69a6f8f3 --- /dev/null +++ b/c/src/lib/libbsp/m68k/dmv152/startup/bspclean.c @@ -0,0 +1,21 @@ +/* + * This routine performs final cleanup at exit time. + * + * COPYRIGHT (c) 1989-1998. + * On-Line Applications Research Corporation (OAR). + * Copyright assigned to U.S. Government, 1994. + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.OARcorp.com/rtems/license.html. + * + * $Id$ + */ + +#include + +void bsp_cleanup( void ) +{ + + VME_interrupt_Disable( 0xff ); +} diff --git a/c/src/lib/libbsp/m68k/dmv152/startup/bspstart.c b/c/src/lib/libbsp/m68k/dmv152/startup/bspstart.c index 02b5e9bd8a..be1edde6fe 100644 --- a/c/src/lib/libbsp/m68k/dmv152/startup/bspstart.c +++ b/c/src/lib/libbsp/m68k/dmv152/startup/bspstart.c @@ -139,21 +139,12 @@ bsp_postdriver_hook(void) rtems_fatal_error_occurred( error_code | 'I' << 8 | 'O' ); } -int main( - int argc, - char **argv, - char **environp -) +void bsp_start( void ) { m68k_isr_entry *monitors_vector_table; int index; void *vbr; - if ((argc > 0) && argv && argv[0]) - rtems_progname = argv[0]; - else - rtems_progname = "RTEMS"; - monitors_vector_table = (m68k_isr_entry *)0; /* Monitor Vectors are at 0 */ m68k_set_vbr( monitors_vector_table ); @@ -246,13 +237,5 @@ int main( rtems_libio_config(&BSP_Configuration, BSP_LIBIO_MAX_FDS); - rtems_initialize_executive( &BSP_Configuration, &Cpu_table ); - /* does not return */ - /* Clock_exit is done as an atexit() function */ - - VME_interrupt_Disable( 0xff ); - - /* return like a "normal" subroutine to the monitor */ - return 0; } diff --git a/c/src/lib/libbsp/m68k/efi332/start/start.c b/c/src/lib/libbsp/m68k/efi332/start/start.c index bd3a6cce06..914b3f5802 100644 --- a/c/src/lib/libbsp/m68k/efi332/start/start.c +++ b/c/src/lib/libbsp/m68k/efi332/start/start.c @@ -12,8 +12,6 @@ m68k_isr_entry vectors[256]; char * const __argv[]= {"main", ""}; char * const __env[]= {""}; -int main(const int argc, char * const argv[], char * const env[]); - /* * This prototype really should have the noreturn attribute but * that causes a warning since it appears that the routine does @@ -182,7 +180,9 @@ void dumby_start() { /* * Execute main with arguments argv and environment env */ - main(1, __argv, __env); + /* main(1, __argv, __env); */ + + boot_card(); reboot(); } diff --git a/c/src/lib/libbsp/m68k/efi332/start332/start332.c b/c/src/lib/libbsp/m68k/efi332/start332/start332.c index bd3a6cce06..914b3f5802 100644 --- a/c/src/lib/libbsp/m68k/efi332/start332/start332.c +++ b/c/src/lib/libbsp/m68k/efi332/start332/start332.c @@ -12,8 +12,6 @@ m68k_isr_entry vectors[256]; char * const __argv[]= {"main", ""}; char * const __env[]= {""}; -int main(const int argc, char * const argv[], char * const env[]); - /* * This prototype really should have the noreturn attribute but * that causes a warning since it appears that the routine does @@ -182,7 +180,9 @@ void dumby_start() { /* * Execute main with arguments argv and environment env */ - main(1, __argv, __env); + /* main(1, __argv, __env); */ + + boot_card(); reboot(); } diff --git a/c/src/lib/libbsp/m68k/efi332/startup/Makefile.in b/c/src/lib/libbsp/m68k/efi332/startup/Makefile.in index f1d3bbcec9..6dd881b30c 100644 --- a/c/src/lib/libbsp/m68k/efi332/startup/Makefile.in +++ b/c/src/lib/libbsp/m68k/efi332/startup/Makefile.in @@ -11,7 +11,7 @@ PROJECT_ROOT = @PROJECT_ROOT@ PGM=${ARCH}/startup.rel # C source names, if any, go here -- minus the .c -C_PIECES=bspstart bspclean sbrk setvec +C_PIECES=bspstart bspclean main sbrk setvec C_FILES=$(C_PIECES:%=%.c) C_O_FILES=$(C_PIECES:%=${ARCH}/%.o) diff --git a/c/src/lib/libbsp/m68k/efi332/startup/bspstart.c b/c/src/lib/libbsp/m68k/efi332/startup/bspstart.c index d3e29a7ef7..b20bdd5ff1 100644 --- a/c/src/lib/libbsp/m68k/efi332/startup/bspstart.c +++ b/c/src/lib/libbsp/m68k/efi332/startup/bspstart.c @@ -147,11 +147,7 @@ bsp_postdriver_hook(void) rtems_fatal_error_occurred( error_code | 'I' << 8 | 'O' ); } -int main( - int argc, - char **argv, - char **environp -) +void bsp_start( void ) { void *vbr; @@ -213,15 +209,6 @@ int main( rtems_libio_config(&BSP_Configuration, BSP_LIBIO_MAX_FDS); - rtems_initialize_executive( &BSP_Configuration, &Cpu_table ); - /* does not return */ - /* Clock_exit is done as an atexit() function */ - - /* configure peripherals for safe exit */ - bsp_cleanup(); - - /* return like a "normal" subroutine to the monitor */ - return 0; } diff --git a/c/src/lib/libbsp/m68k/efi68k/start/start.c b/c/src/lib/libbsp/m68k/efi68k/start/start.c index eaf15df758..e044f5a6f4 100644 --- a/c/src/lib/libbsp/m68k/efi68k/start/start.c +++ b/c/src/lib/libbsp/m68k/efi68k/start/start.c @@ -11,8 +11,6 @@ m68k_isr_entry vectors[256]; char * const __argv[]= {"main", ""}; char * const __env[]= {""}; -int main(const int argc, char * const argv[], char * const env[]); - /* * This prototype really should have the noreturn attribute but * that causes a warning since it appears that the routine does @@ -65,7 +63,8 @@ void dumby_start() { /* * Execute main with arguments argv and environment env */ - main(1, __argv, __env); + /* main(1, __argv, __env); */ + boot_card(); reboot(); } diff --git a/c/src/lib/libbsp/m68k/efi68k/start68k/start68k.c b/c/src/lib/libbsp/m68k/efi68k/start68k/start68k.c index eaf15df758..e044f5a6f4 100644 --- a/c/src/lib/libbsp/m68k/efi68k/start68k/start68k.c +++ b/c/src/lib/libbsp/m68k/efi68k/start68k/start68k.c @@ -11,8 +11,6 @@ m68k_isr_entry vectors[256]; char * const __argv[]= {"main", ""}; char * const __env[]= {""}; -int main(const int argc, char * const argv[], char * const env[]); - /* * This prototype really should have the noreturn attribute but * that causes a warning since it appears that the routine does @@ -65,7 +63,8 @@ void dumby_start() { /* * Execute main with arguments argv and environment env */ - main(1, __argv, __env); + /* main(1, __argv, __env); */ + boot_card(); reboot(); } diff --git a/c/src/lib/libbsp/m68k/efi68k/startup/Makefile.in b/c/src/lib/libbsp/m68k/efi68k/startup/Makefile.in index 9fe7e342b2..0316a43525 100644 --- a/c/src/lib/libbsp/m68k/efi68k/startup/Makefile.in +++ b/c/src/lib/libbsp/m68k/efi68k/startup/Makefile.in @@ -11,7 +11,7 @@ PROJECT_ROOT = @PROJECT_ROOT@ PGM=${ARCH}/startup.rel # C source names, if any, go here -- minus the .c -C_PIECES=bspstart bspclean efi68k_tcp efi68k_wd sbrk setvec +C_PIECES=bspstart bspclean efi68k_tcp efi68k_wd main sbrk setvec C_FILES=$(C_PIECES:%=%.c) C_O_FILES=$(C_PIECES:%=${ARCH}/%.o) diff --git a/c/src/lib/libbsp/m68k/efi68k/startup/bspstart.c b/c/src/lib/libbsp/m68k/efi68k/startup/bspstart.c index 3ce563efd5..339c809e4f 100644 --- a/c/src/lib/libbsp/m68k/efi68k/startup/bspstart.c +++ b/c/src/lib/libbsp/m68k/efi68k/startup/bspstart.c @@ -152,11 +152,7 @@ bsp_postdriver_hook(void) rtems_fatal_error_occurred( error_code | 'I' << 8 | 'O' ); } -int main( - int argc, - char **argv, - char **environp -) +void bsp_start( void ) { void *vbr; @@ -221,16 +217,6 @@ int main( rtems_libio_config(&BSP_Configuration, BSP_LIBIO_MAX_FDS); - rtems_initialize_executive( &BSP_Configuration, &Cpu_table ); - /* does not return */ - /* Clock_exit is done as an atexit() function */ - -/* exit: */ - /* configure peripherals for safe exit */ - bsp_cleanup(); - - /* return like a "normal" subroutine to the monitor */ - return 0; } diff --git a/c/src/lib/libbsp/m68k/gen68302/start/start302.s b/c/src/lib/libbsp/m68k/gen68302/start/start302.s index 7367910472..2a7c652c87 100644 --- a/c/src/lib/libbsp/m68k/gen68302/start/start302.s +++ b/c/src/lib/libbsp/m68k/gen68302/start/start302.s @@ -216,7 +216,7 @@ loop: movel d0,a1@+ | to zero out uninitialized movel d0,a6 | set base pointer /* - * RTEMS should maintiain a separate interrupt stack on CPUs + * RTEMS should maintain a separate interrupt stack on CPUs * without one in hardware. This is currently not supported * on versions of the m68k without a HW intr stack. */ @@ -229,7 +229,7 @@ loop: movel d0,a1@+ | to zero out uninitialized move.l #0,a7@- | environp move.l #0,a7@- | argv move.l #0,a7@- | argc - jsr SYM (main) + jsr SYM (boot_card) nop Bad: bra Bad diff --git a/c/src/lib/libbsp/m68k/gen68302/start302/start302.s b/c/src/lib/libbsp/m68k/gen68302/start302/start302.s index 7367910472..2a7c652c87 100644 --- a/c/src/lib/libbsp/m68k/gen68302/start302/start302.s +++ b/c/src/lib/libbsp/m68k/gen68302/start302/start302.s @@ -216,7 +216,7 @@ loop: movel d0,a1@+ | to zero out uninitialized movel d0,a6 | set base pointer /* - * RTEMS should maintiain a separate interrupt stack on CPUs + * RTEMS should maintain a separate interrupt stack on CPUs * without one in hardware. This is currently not supported * on versions of the m68k without a HW intr stack. */ @@ -229,7 +229,7 @@ loop: movel d0,a1@+ | to zero out uninitialized move.l #0,a7@- | environp move.l #0,a7@- | argv move.l #0,a7@- | argc - jsr SYM (main) + jsr SYM (boot_card) nop Bad: bra Bad diff --git a/c/src/lib/libbsp/m68k/gen68302/startup/Makefile.in b/c/src/lib/libbsp/m68k/gen68302/startup/Makefile.in index f1d3bbcec9..d131f4a2ab 100644 --- a/c/src/lib/libbsp/m68k/gen68302/startup/Makefile.in +++ b/c/src/lib/libbsp/m68k/gen68302/startup/Makefile.in @@ -11,7 +11,7 @@ PROJECT_ROOT = @PROJECT_ROOT@ PGM=${ARCH}/startup.rel # C source names, if any, go here -- minus the .c -C_PIECES=bspstart bspclean sbrk setvec +C_PIECES=bspclean bspstart main sbrk setvec C_FILES=$(C_PIECES:%=%.c) C_O_FILES=$(C_PIECES:%=${ARCH}/%.o) diff --git a/c/src/lib/libbsp/m68k/gen68302/startup/bspstart.c b/c/src/lib/libbsp/m68k/gen68302/startup/bspstart.c index ebb1310340..6f42beb938 100644 --- a/c/src/lib/libbsp/m68k/gen68302/startup/bspstart.c +++ b/c/src/lib/libbsp/m68k/gen68302/startup/bspstart.c @@ -147,16 +147,8 @@ bsp_postdriver_hook(void) rtems_fatal_error_occurred( error_code | 'I' << 8 | 'O' ); } -int main( - int argc, - char **argv, - char **environp -) +void bsp_start( void ) { - if ((argc > 0) && argv && argv[0]) - rtems_progname = argv[0]; - else - rtems_progname = "RTEMS"; /* * Allocate the memory for the RTEMS Work Space. This can come from @@ -239,13 +231,4 @@ int main( * Don't forget the other CPU Table entries. */ - /* - * Start RTEMS - */ - - rtems_initialize_executive( &BSP_Configuration, &Cpu_table ); - - bsp_cleanup(); - - return 0; } diff --git a/c/src/lib/libbsp/m68k/gen68360/start/start360.s b/c/src/lib/libbsp/m68k/gen68360/start/start360.s index 7a7000fcb3..2ce6a1d80b 100644 --- a/c/src/lib/libbsp/m68k/gen68360/start/start360.s +++ b/c/src/lib/libbsp/m68k/gen68360/start/start360.s @@ -401,7 +401,7 @@ ZEROLOOPTEST: movel d0,a7@- | environp movel d0,a7@- | argv movel d0,a7@- | argc - jsr SYM(main) | Call C main + jsr SYM(boot_card) | Call C main PUBLIC (_mainDone) SYM(_mainDone): diff --git a/c/src/lib/libbsp/m68k/gen68360/start360/start360.s b/c/src/lib/libbsp/m68k/gen68360/start360/start360.s index 7a7000fcb3..2ce6a1d80b 100644 --- a/c/src/lib/libbsp/m68k/gen68360/start360/start360.s +++ b/c/src/lib/libbsp/m68k/gen68360/start360/start360.s @@ -401,7 +401,7 @@ ZEROLOOPTEST: movel d0,a7@- | environp movel d0,a7@- | argv movel d0,a7@- | argc - jsr SYM(main) | Call C main + jsr SYM(boot_card) | Call C main PUBLIC (_mainDone) SYM(_mainDone): diff --git a/c/src/lib/libbsp/m68k/gen68360/startup/Makefile.in b/c/src/lib/libbsp/m68k/gen68360/startup/Makefile.in index d16856f55e..ef688eb265 100644 --- a/c/src/lib/libbsp/m68k/gen68360/startup/Makefile.in +++ b/c/src/lib/libbsp/m68k/gen68360/startup/Makefile.in @@ -11,7 +11,7 @@ PROJECT_ROOT = @PROJECT_ROOT@ PGM=${ARCH}/startup.rel # C source names, if any, go here -- minus the .c -C_PIECES=alloc360 bspstart bspclean init68360 memcpy sbrk setvec +C_PIECES=alloc360 bspclean bspstart init68360 main memcpy sbrk setvec C_FILES=$(C_PIECES:%=%.c) C_O_FILES=$(C_PIECES:%=${ARCH}/%.o) diff --git a/c/src/lib/libbsp/m68k/gen68360/startup/bspstart.c b/c/src/lib/libbsp/m68k/gen68360/startup/bspstart.c index fed86a30b1..6593087194 100644 --- a/c/src/lib/libbsp/m68k/gen68360/startup/bspstart.c +++ b/c/src/lib/libbsp/m68k/gen68360/startup/bspstart.c @@ -143,17 +143,9 @@ bsp_postdriver_hook(void) rtems_fatal_error_occurred( error_code | 'I' << 8 | 'O' ); } -int main( - int argc, - char **argv, - char **environp -) +void bsp_start( void ) { extern void *_WorkspaceBase; - if ((argc > 0) && argv && argv[0]) - rtems_progname = argv[0]; - else - rtems_progname = "RTEMS"; /* * Allocate the memory for the RTEMS Work Space. This can come from @@ -234,14 +226,4 @@ int main( /* * Don't forget the other CPU Table entries. */ - - /* - * Start RTEMS - */ - - rtems_initialize_executive( &BSP_Configuration, &Cpu_table ); - - bsp_cleanup(); - - return 0; } diff --git a/c/src/lib/libbsp/m68k/idp/startup/Makefile.in b/c/src/lib/libbsp/m68k/idp/startup/Makefile.in index 5d0618fcda..ee58600cd3 100644 --- a/c/src/lib/libbsp/m68k/idp/startup/Makefile.in +++ b/c/src/lib/libbsp/m68k/idp/startup/Makefile.in @@ -11,7 +11,7 @@ PROJECT_ROOT = @PROJECT_ROOT@ PGM=${ARCH}/startup.rel # C source names, if any, go here -- minus the .c -C_PIECES=bspstart sbrk setvec +C_PIECES=bspclean bspstart main sbrk setvec C_FILES=$(C_PIECES:%=%.c) C_O_FILES=$(C_PIECES:%=${ARCH}/%.o) diff --git a/c/src/lib/libbsp/m68k/idp/startup/bspstart.c b/c/src/lib/libbsp/m68k/idp/startup/bspstart.c index df0d4e7f1a..2e226eb2b1 100644 --- a/c/src/lib/libbsp/m68k/idp/startup/bspstart.c +++ b/c/src/lib/libbsp/m68k/idp/startup/bspstart.c @@ -148,20 +148,11 @@ bsp_postdriver_hook(void) rtems_fatal_error_occurred( error_code | 'I' << 8 | 'O' ); } -int main( - int argc, - char **argv, - char **environp -) +void bsp_start( void ) { m68k_isr_entry *monitors_vector_table; int index; - if ((argc > 0) && argv && argv[0]) - rtems_progname = argv[0]; - else - rtems_progname = "RTEMS"; - duart_base = (unsigned char *)DUART_ADDR; /* @@ -248,9 +239,6 @@ int main( rtems_libio_config(&BSP_Configuration, BSP_LIBIO_MAX_FDS); /* led_putnum('e'); * for debugging purposes only */ - rtems_initialize_executive( &BSP_Configuration, &Cpu_table );/* does not return */ - - /* Clock_exit is done as an atexit() function */ - return 0; + /* Clock_exit is done as an atexit() function */ } diff --git a/c/src/lib/libbsp/m68k/mvme136/startup/Makefile.in b/c/src/lib/libbsp/m68k/mvme136/startup/Makefile.in index 6937330b60..60cbb0ecc6 100644 --- a/c/src/lib/libbsp/m68k/mvme136/startup/Makefile.in +++ b/c/src/lib/libbsp/m68k/mvme136/startup/Makefile.in @@ -11,7 +11,7 @@ PROJECT_ROOT = @PROJECT_ROOT@ PGM=${ARCH}/startup.rel # C source names, if any, go here -- minus the .c -C_PIECES=bspclean bspstart sbrk setvec +C_PIECES=bspclean bspstart main sbrk setvec C_FILES=$(C_PIECES:%=%.c) C_O_FILES=$(C_PIECES:%=${ARCH}/%.o) diff --git a/c/src/lib/libbsp/m68k/mvme136/startup/bspstart.c b/c/src/lib/libbsp/m68k/mvme136/startup/bspstart.c index bade2e8174..6c923e6073 100644 --- a/c/src/lib/libbsp/m68k/mvme136/startup/bspstart.c +++ b/c/src/lib/libbsp/m68k/mvme136/startup/bspstart.c @@ -141,21 +141,11 @@ bsp_postdriver_hook(void) rtems_fatal_error_occurred( error_code | 'I' << 8 | 'O' ); } - -int main( - int argc, - char **argv, - char **environp -) +void bsp_start( void ) { m68k_isr_entry *monitors_vector_table; int index; - if ((argc > 0) && argv && argv[0]) - rtems_progname = argv[0]; - else - rtems_progname = "RTEMS"; - monitors_vector_table = (m68k_isr_entry *)0; /* 135Bug Vectors are at 0 */ m68k_set_vbr( monitors_vector_table ); @@ -229,11 +219,4 @@ int main( */ rtems_libio_config(&BSP_Configuration, BSP_LIBIO_MAX_FDS); - - rtems_initialize_executive( &BSP_Configuration, &Cpu_table ); - /* does not return */ - - bsp_cleanup(); - - return 0; } diff --git a/c/src/lib/libbsp/m68k/mvme147/startup/Makefile.in b/c/src/lib/libbsp/m68k/mvme147/startup/Makefile.in index 6937330b60..60cbb0ecc6 100644 --- a/c/src/lib/libbsp/m68k/mvme147/startup/Makefile.in +++ b/c/src/lib/libbsp/m68k/mvme147/startup/Makefile.in @@ -11,7 +11,7 @@ PROJECT_ROOT = @PROJECT_ROOT@ PGM=${ARCH}/startup.rel # C source names, if any, go here -- minus the .c -C_PIECES=bspclean bspstart sbrk setvec +C_PIECES=bspclean bspstart main sbrk setvec C_FILES=$(C_PIECES:%=%.c) C_O_FILES=$(C_PIECES:%=${ARCH}/%.o) diff --git a/c/src/lib/libbsp/m68k/mvme147/startup/bspstart.c b/c/src/lib/libbsp/m68k/mvme147/startup/bspstart.c index 1dc095fe0a..842bf0bbac 100644 --- a/c/src/lib/libbsp/m68k/mvme147/startup/bspstart.c +++ b/c/src/lib/libbsp/m68k/mvme147/startup/bspstart.c @@ -144,21 +144,11 @@ bsp_postdriver_hook(void) rtems_fatal_error_occurred( error_code | 'I' << 8 | 'O' ); } - -int main( - int argc, - char **argv, - char **environp -) +void bsp_start( void ) { m68k_isr_entry *monitors_vector_table; int index; - if ((argc > 0) && argv && argv[0]) - rtems_progname = argv[0]; - else - rtems_progname = "RTEMS"; - monitors_vector_table = (m68k_isr_entry *)0; /* 135Bug Vectors are at 0 */ m68k_set_vbr( monitors_vector_table ); @@ -235,11 +225,4 @@ int main( */ rtems_libio_config(&BSP_Configuration, BSP_LIBIO_MAX_FDS); - - rtems_initialize_executive( &BSP_Configuration, &Cpu_table ); - /* does not return */ - - bsp_cleanup(); - - return 0; } diff --git a/c/src/lib/libbsp/m68k/mvme147s/startup/Makefile.in b/c/src/lib/libbsp/m68k/mvme147s/startup/Makefile.in index d42d523f17..0ccf177a4c 100644 --- a/c/src/lib/libbsp/m68k/mvme147s/startup/Makefile.in +++ b/c/src/lib/libbsp/m68k/mvme147s/startup/Makefile.in @@ -11,7 +11,7 @@ PROJECT_ROOT = @PROJECT_ROOT@ PGM=${ARCH}/startup.rel # C source names, if any, go here -- minus the .c -C_PIECES=bspclean bspstart sbrk setvec +C_PIECES=bspclean bspstart main sbrk setvec C_FILES=$(C_PIECES:%=%.c) C_O_FILES=$(C_PIECES:%=${ARCH}/%.o) diff --git a/c/src/lib/libbsp/m68k/mvme147s/startup/bspstart.c b/c/src/lib/libbsp/m68k/mvme147s/startup/bspstart.c index 5e97c02669..67ef0c9c94 100644 --- a/c/src/lib/libbsp/m68k/mvme147s/startup/bspstart.c +++ b/c/src/lib/libbsp/m68k/mvme147s/startup/bspstart.c @@ -144,22 +144,12 @@ bsp_postdriver_hook(void) rtems_fatal_error_occurred( error_code | 'I' << 8 | 'O' ); } - -int main( - int argc, - char **argv, - char **environp -) +void bsp_start( void ) { m68k_isr_entry *monitors_vector_table; int index; rtems_unsigned8 node_number; - if ((argc > 0) && argv && argv[0]) - rtems_progname = argv[0]; - else - rtems_progname = "RTEMS"; - monitors_vector_table = (m68k_isr_entry *)0; /* 147Bug Vectors are at 0 */ m68k_set_vbr( monitors_vector_table ); @@ -295,11 +285,4 @@ int main( */ rtems_libio_config(&BSP_Configuration, BSP_LIBIO_MAX_FDS); - - rtems_initialize_executive( &BSP_Configuration, &Cpu_table ); - /* does not return */ - - bsp_cleanup(); - - return 0; } diff --git a/c/src/lib/libbsp/m68k/mvme162/startup/Makefile.in b/c/src/lib/libbsp/m68k/mvme162/startup/Makefile.in index 4fb4b346b3..b1d452bf89 100644 --- a/c/src/lib/libbsp/m68k/mvme162/startup/Makefile.in +++ b/c/src/lib/libbsp/m68k/mvme162/startup/Makefile.in @@ -11,7 +11,7 @@ PROJECT_ROOT = @PROJECT_ROOT@ PGM=${ARCH}/startup.rel # C source names, if any, go here -- minus the .c -C_PIECES=bspclean bspstart page_table sbrk setvec +C_PIECES=bspclean bspstart main page_table sbrk setvec C_FILES=$(C_PIECES:%=%.c) C_O_FILES=$(C_PIECES:%=${ARCH}/%.o) diff --git a/c/src/lib/libbsp/m68k/mvme162/startup/bspstart.c b/c/src/lib/libbsp/m68k/mvme162/startup/bspstart.c index 6aa705a07c..b9430c9f30 100644 --- a/c/src/lib/libbsp/m68k/mvme162/startup/bspstart.c +++ b/c/src/lib/libbsp/m68k/mvme162/startup/bspstart.c @@ -148,20 +148,11 @@ bsp_postdriver_hook(void) rtems_fatal_error_occurred( error_code | 'I' << 8 | 'O' ); } -int main( - int argc, - char **argv, - char **environp -) +void bsp_start( void ) { m68k_isr_entry *monitors_vector_table; int index; - if ((argc > 0) && argv && argv[0]) - rtems_progname = argv[0]; - else - rtems_progname = "RTEMS"; - /* * 162Bug Vectors are at 0xFFE00000 * 162Bug Vectors on LX are at 0x00000000 @@ -252,11 +243,4 @@ int main( BSP_Configuration.work_space_start = (void *) (RAM_END - BSP_Configuration.work_space_size); - - rtems_initialize_executive( &BSP_Configuration, &Cpu_table ); - /* does not return */ - - bsp_cleanup(); - - return 0; } diff --git a/c/src/lib/libbsp/m68k/ods68302/start/cpuboot.c b/c/src/lib/libbsp/m68k/ods68302/start/cpuboot.c index 1a8f9bd2cf..fd8a4146de 100644 --- a/c/src/lib/libbsp/m68k/ods68302/start/cpuboot.c +++ b/c/src/lib/libbsp/m68k/ods68302/start/cpuboot.c @@ -110,7 +110,7 @@ void boot_phase_2(void) static constructors have not been called, and RTEMS is not initialised. */ -void boot_bsp(); +void boot_card(); void set_debug_traps(); void breakpoint(); @@ -127,7 +127,7 @@ void boot_phase_3(void) /* FIXME : add RAM and ROM checks */ /* boot the bsp, what ever this means */ - boot_bsp(); + boot_card(); WATCHDOG_TRIGGER(); } diff --git a/c/src/lib/libbsp/m68k/ods68302/start302/cpuboot.c b/c/src/lib/libbsp/m68k/ods68302/start302/cpuboot.c index 1a8f9bd2cf..fd8a4146de 100644 --- a/c/src/lib/libbsp/m68k/ods68302/start302/cpuboot.c +++ b/c/src/lib/libbsp/m68k/ods68302/start302/cpuboot.c @@ -110,7 +110,7 @@ void boot_phase_2(void) static constructors have not been called, and RTEMS is not initialised. */ -void boot_bsp(); +void boot_card(); void set_debug_traps(); void breakpoint(); @@ -127,7 +127,7 @@ void boot_phase_3(void) /* FIXME : add RAM and ROM checks */ /* boot the bsp, what ever this means */ - boot_bsp(); + boot_card(); WATCHDOG_TRIGGER(); } diff --git a/c/src/lib/libbsp/m68k/ods68302/startup/Makefile.in b/c/src/lib/libbsp/m68k/ods68302/startup/Makefile.in index 95f0c8b323..4e4b8bcc32 100644 --- a/c/src/lib/libbsp/m68k/ods68302/startup/Makefile.in +++ b/c/src/lib/libbsp/m68k/ods68302/startup/Makefile.in @@ -11,7 +11,7 @@ PROJECT_ROOT = @PROJECT_ROOT@ PGM=${ARCH}/startup.rel # C source names, if any, go here -- minus the .c -C_PIECES=crc debugport gdb-hooks m68302scc m68k-stub memcheck trace \ +C_PIECES=crc debugport gdb-hooks main m68302scc m68k-stub memcheck trace \ bspstart bspclean sbrk setvec C_FILES=$(C_PIECES:%=%.c) C_O_FILES=$(C_PIECES:%=${ARCH}/%.o) diff --git a/c/src/lib/libbsp/m68k/ods68302/startup/bspstart.c b/c/src/lib/libbsp/m68k/ods68302/startup/bspstart.c index 03e5918aa8..09b8494e05 100644 --- a/c/src/lib/libbsp/m68k/ods68302/startup/bspstart.c +++ b/c/src/lib/libbsp/m68k/ods68302/startup/bspstart.c @@ -148,7 +148,7 @@ bsp_postdriver_hook(void) rtems_fatal_error_occurred( error_code | 'I' << 8 | 'O' ); } -void bsp_start() +void bsp_start( void ) { /* * Allocate the memory for the RTEMS Work Space. This can come from @@ -230,34 +230,4 @@ void bsp_start() /* * Don't forget the other CPU Table entries. */ - - /* - * Start RTEMS - */ - - bsp_isr_level = rtems_initialize_executive_early( &BSP_Configuration, &Cpu_table ); } - -int main(int argc, char **argv, char **environ) -{ - if ((argc > 0) && argv && argv[0]) - rtems_progname = argv[0]; - else - rtems_progname = "RTEMS"; - - rtems_initialize_executive_late( bsp_isr_level ); - - bsp_cleanup(); - - return 0; -} - -void boot_bsp() -{ - /* the atexit hook will be before the static destructor list's entry - point */ - bsp_start(); - - exit(main(0, 0, 0)); -} - diff --git a/c/src/lib/libbsp/m68k/ods68302/startup/cpuboot.c b/c/src/lib/libbsp/m68k/ods68302/startup/cpuboot.c index 1a8f9bd2cf..fd8a4146de 100644 --- a/c/src/lib/libbsp/m68k/ods68302/startup/cpuboot.c +++ b/c/src/lib/libbsp/m68k/ods68302/startup/cpuboot.c @@ -110,7 +110,7 @@ void boot_phase_2(void) static constructors have not been called, and RTEMS is not initialised. */ -void boot_bsp(); +void boot_card(); void set_debug_traps(); void breakpoint(); @@ -127,7 +127,7 @@ void boot_phase_3(void) /* FIXME : add RAM and ROM checks */ /* boot the bsp, what ever this means */ - boot_bsp(); + boot_card(); WATCHDOG_TRIGGER(); } diff --git a/c/src/lib/libbsp/mips/p4000/include/bsp.h b/c/src/lib/libbsp/mips/p4000/include/bsp.h index 1c8c3aa388..d6dcc834f6 100644 --- a/c/src/lib/libbsp/mips/p4000/include/bsp.h +++ b/c/src/lib/libbsp/mips/p4000/include/bsp.h @@ -110,14 +110,6 @@ extern rtems_configuration_table BSP_Configuration; /* miscellaneous stuff assumed to exist */ -int bsp_start( - int argc, - char **argv, - char **environp -); - -void bsp_cleanup( void ); - mips_isr_entry set_vector( /* returns old vector */ rtems_isr_entry handler, /* isr routine */ rtems_vector_number vector, /* vector number */ diff --git a/c/src/lib/libbsp/mips/p4000/startup/bspclean.c b/c/src/lib/libbsp/mips/p4000/startup/bspclean.c index bfe5176063..2aee25a72b 100644 --- a/c/src/lib/libbsp/mips/p4000/startup/bspclean.c +++ b/c/src/lib/libbsp/mips/p4000/startup/bspclean.c @@ -32,4 +32,5 @@ void bsp_cleanup( void ) { + idtsim__exit(); } diff --git a/c/src/lib/libbsp/mips/p4000/startup/bspstart.c b/c/src/lib/libbsp/mips/p4000/startup/bspstart.c index 149009e5e1..506bfcbc28 100644 --- a/c/src/lib/libbsp/mips/p4000/startup/bspstart.c +++ b/c/src/lib/libbsp/mips/p4000/startup/bspstart.c @@ -161,17 +161,8 @@ bsp_postdriver_hook(void) extern int end; /* defined by linker */ -int bsp_start( - int argc, - char **argv, - char **environp -) +void bsp_start( void ) { - if ((argc > 0) && argv && argv[0]) - rtems_progname = argv[0]; - else - rtems_progname = "RTEMS"; - /* * Allocate the memory for the RTEMS Work Space. This can come from * a variety of places: hard coded address, malloc'ed from outside @@ -256,13 +247,4 @@ int bsp_start( * Don't forget the other CPU Table entries. */ - /* - * Start RTEMS - */ - - rtems_initialize_executive( &BSP_Configuration, &Cpu_table ); - - bsp_cleanup(); - - return 0; } diff --git a/c/src/lib/libbsp/mips64orion/p4000/include/bsp.h b/c/src/lib/libbsp/mips64orion/p4000/include/bsp.h index 1c8c3aa388..d6dcc834f6 100644 --- a/c/src/lib/libbsp/mips64orion/p4000/include/bsp.h +++ b/c/src/lib/libbsp/mips64orion/p4000/include/bsp.h @@ -110,14 +110,6 @@ extern rtems_configuration_table BSP_Configuration; /* miscellaneous stuff assumed to exist */ -int bsp_start( - int argc, - char **argv, - char **environp -); - -void bsp_cleanup( void ); - mips_isr_entry set_vector( /* returns old vector */ rtems_isr_entry handler, /* isr routine */ rtems_vector_number vector, /* vector number */ diff --git a/c/src/lib/libbsp/mips64orion/p4000/startup/bspclean.c b/c/src/lib/libbsp/mips64orion/p4000/startup/bspclean.c index bfe5176063..2aee25a72b 100644 --- a/c/src/lib/libbsp/mips64orion/p4000/startup/bspclean.c +++ b/c/src/lib/libbsp/mips64orion/p4000/startup/bspclean.c @@ -32,4 +32,5 @@ void bsp_cleanup( void ) { + idtsim__exit(); } diff --git a/c/src/lib/libbsp/mips64orion/p4000/startup/bspstart.c b/c/src/lib/libbsp/mips64orion/p4000/startup/bspstart.c index 149009e5e1..506bfcbc28 100644 --- a/c/src/lib/libbsp/mips64orion/p4000/startup/bspstart.c +++ b/c/src/lib/libbsp/mips64orion/p4000/startup/bspstart.c @@ -161,17 +161,8 @@ bsp_postdriver_hook(void) extern int end; /* defined by linker */ -int bsp_start( - int argc, - char **argv, - char **environp -) +void bsp_start( void ) { - if ((argc > 0) && argv && argv[0]) - rtems_progname = argv[0]; - else - rtems_progname = "RTEMS"; - /* * Allocate the memory for the RTEMS Work Space. This can come from * a variety of places: hard coded address, malloc'ed from outside @@ -256,13 +247,4 @@ int bsp_start( * Don't forget the other CPU Table entries. */ - /* - * Start RTEMS - */ - - rtems_initialize_executive( &BSP_Configuration, &Cpu_table ); - - bsp_cleanup(); - - return 0; } diff --git a/c/src/lib/libbsp/powerpc/papyrus/dlentry/dlentry.s b/c/src/lib/libbsp/powerpc/papyrus/dlentry/dlentry.s index e5df33a114..b1e1f3a11b 100644 --- a/c/src/lib/libbsp/powerpc/papyrus/dlentry/dlentry.s +++ b/c/src/lib/libbsp/powerpc/papyrus/dlentry/dlentry.s @@ -223,8 +223,8 @@ bss_addr: stw r3, 4(r1) stw r3, 8(r1) stw r3, 12(r1) - .extern SYM (main) - b SYM (main) /* call the first C routine */ + .extern SYM (boot_card) + b SYM (boot_card) /* call the first C routine */ /*------------------------------------------------------------------------------- * bssclr. diff --git a/c/src/lib/libbsp/powerpc/papyrus/flashentry/flashentry.s b/c/src/lib/libbsp/powerpc/papyrus/flashentry/flashentry.s index a6a8f5ff86..857caa729d 100644 --- a/c/src/lib/libbsp/powerpc/papyrus/flashentry/flashentry.s +++ b/c/src/lib/libbsp/powerpc/papyrus/flashentry/flashentry.s @@ -245,8 +245,8 @@ bss_addr: stw r3, 4(r1) stw r3, 8(r1) stw r3, 12(r1) - .extern SYM (main) - b SYM (main) /* call the first C routine */ + .extern SYM (boot_card) + b SYM (boot_card) /* call the first C routine */ /*------------------------------------------------------------------------------- * Rom2ram. diff --git a/c/src/lib/libbsp/powerpc/papyrus/include/bsp.h b/c/src/lib/libbsp/powerpc/papyrus/include/bsp.h index 1f32282561..fef3ff12c3 100644 --- a/c/src/lib/libbsp/powerpc/papyrus/include/bsp.h +++ b/c/src/lib/libbsp/powerpc/papyrus/include/bsp.h @@ -131,14 +131,6 @@ extern rtems_cpu_table Cpu_table; /* owned by BSP */ /* functions */ -int bsp_start( - int argc, - char **argv, - char **environp -); - -void bsp_cleanup( void ); - rtems_isr_entry set_vector( /* returns old vector */ rtems_isr_entry handler, /* isr routine */ rtems_vector_number vector, /* vector number */ diff --git a/c/src/lib/libbsp/powerpc/papyrus/startup/bspstart.c b/c/src/lib/libbsp/powerpc/papyrus/startup/bspstart.c index ed9e1528cb..98e6d9e470 100644 --- a/c/src/lib/libbsp/powerpc/papyrus/startup/bspstart.c +++ b/c/src/lib/libbsp/powerpc/papyrus/startup/bspstart.c @@ -166,17 +166,8 @@ bsp_postdriver_hook(void) rtems_fatal_error_occurred( error_code | 'I' << 8 | 'O' ); } -int bsp_start( - int argc, - char **argv, - char **environp -) +void bsp_start( void ) { - if ((argc > 0) && argv && argv[0]) - rtems_progname = argv[0]; - else - rtems_progname = "RTEMS"; - /* * Allocate the memory for the RTEMS Work Space. This can come from * a variety of places: hard coded address, malloc'ed from outside @@ -265,12 +256,4 @@ int bsp_start( Cpu_table.timer_average_overhead = 2; Cpu_table.timer_least_valid = 3; - - /* - * Start RTEMS - */ - - rtems_initialize_executive( &BSP_Configuration, &Cpu_table ); - - bsp_cleanup(); } diff --git a/c/src/lib/libbsp/sh/gensh1/include/bsp.h b/c/src/lib/libbsp/sh/gensh1/include/bsp.h index 3bca4d7da1..1ba0b07576 100644 --- a/c/src/lib/libbsp/sh/gensh1/include/bsp.h +++ b/c/src/lib/libbsp/sh/gensh1/include/bsp.h @@ -84,8 +84,6 @@ extern void *CPU_Interrupt_stack_high ; extern rtems_configuration_table BSP_Configuration; -extern int bsp_start( int argc, char **argv, char **env ); - extern void bsp_cleanup( void ); /* diff --git a/c/src/lib/libbsp/sh/gensh1/startup/bspclean.c b/c/src/lib/libbsp/sh/gensh1/startup/bspclean.c index 27b767f373..23b5bee4ac 100644 --- a/c/src/lib/libbsp/sh/gensh1/startup/bspclean.c +++ b/c/src/lib/libbsp/sh/gensh1/startup/bspclean.c @@ -37,4 +37,5 @@ void bsp_cleanup( void ) { + rtems_fatal_error_occurred(0); } diff --git a/c/src/lib/libbsp/sh/gensh1/startup/bspstart.c b/c/src/lib/libbsp/sh/gensh1/startup/bspstart.c index 1a3cc2737f..93bb88855e 100644 --- a/c/src/lib/libbsp/sh/gensh1/startup/bspstart.c +++ b/c/src/lib/libbsp/sh/gensh1/startup/bspstart.c @@ -151,11 +151,7 @@ bsp_postdriver_hook(void) rtems_fatal_error_occurred( error_code | 'I' << 8 | 'O' ); } -int bsp_start( - int argc, - char **argv, - char **environp -) +void bsp_start(void) { /* For real boards you need to setup the hardware @@ -165,11 +161,6 @@ int bsp_start( startup code, rtems startup code or here. */ - if ((argc > 0) && argv && argv[0]) - rtems_progname = argv[0]; - else - rtems_progname = "RTEMS"; - /* * Allocate the memory for the RTEMS Work Space. This can come from * a variety of places: hard coded address, malloc'ed from outside @@ -265,14 +256,4 @@ int bsp_start( */ rtems_libio_config(&BSP_Configuration, BSP_LIBIO_MAX_FDS); - - /* - * Start RTEMS - */ - - rtems_initialize_executive( &BSP_Configuration, &Cpu_table ); - - bsp_cleanup(); - - return 0; } diff --git a/c/src/lib/libbsp/shared/bspclean.c b/c/src/lib/libbsp/shared/bspclean.c new file mode 100644 index 0000000000..8b95cf4f16 --- /dev/null +++ b/c/src/lib/libbsp/shared/bspclean.c @@ -0,0 +1,17 @@ +/* + * This is a dummy bsp_cleanup routine. + * + * COPYRIGHT (c) 1989-1998. + * On-Line Applications Research Corporation (OAR). + * Copyright assigned to U.S. Government, 1994. + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.OARcorp.com/rtems/license.html. + * + * $Id$ + */ + +void bsp_cleanup( void ) +{ +} diff --git a/c/src/lib/libbsp/shared/main.c b/c/src/lib/libbsp/shared/main.c new file mode 100644 index 0000000000..f3a7973efc --- /dev/null +++ b/c/src/lib/libbsp/shared/main.c @@ -0,0 +1,62 @@ +/* + * A simple main which can be used on any embedded target. + * + * This style of initialization insures that the C++ global + * constructors are executed after RTEMS is initialized. + * + * Thanks to Chris Johns for this idea. + * + * COPYRIGHT (c) 1989-1998. + * On-Line Applications Research Corporation (OAR). + * Copyright assigned to U.S. Government, 1994. + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.OARcorp.com/rtems/license.html. + * + * $Id$ + */ + +#include + +char *rtems_progname; + +extern void bsp_start( void ); +extern void bsp_cleanup( void ); + +extern rtems_configuration_table BSP_Configuration; +extern rtems_cpu_table Cpu_table; + +rtems_interrupt_level bsp_isr_level; + +int main(int argc, char **argv, char **environ) +{ + + if ((argc > 0) && argv && argv[0]) + rtems_progname = argv[0]; + else + rtems_progname = "RTEMS"; + + rtems_initialize_executive_late( bsp_isr_level ); + + return 0; +} + +void boot_card(void) +{ + int status; + + /* the atexit hook will be before the static destructor list's entry + point */ + bsp_start(); + + bsp_isr_level = + rtems_initialize_executive_early( &BSP_Configuration, &Cpu_table ); + + status = main(0, 0, 0); + + bsp_cleanup(); + + exit( status ); +} + diff --git a/c/src/lib/libbsp/sparc/erc32/include/bsp.h b/c/src/lib/libbsp/sparc/erc32/include/bsp.h index 770649950c..eef586db00 100644 --- a/c/src/lib/libbsp/sparc/erc32/include/bsp.h +++ b/c/src/lib/libbsp/sparc/erc32/include/bsp.h @@ -171,8 +171,6 @@ extern rtems_configuration_table BSP_Configuration; /* owned by BSP */ extern rtems_cpu_table Cpu_table; /* owned by BSP */ -extern rtems_unsigned32 bsp_isr_level; - #ifdef __cplusplus } #endif diff --git a/c/src/lib/libbsp/sparc/erc32/start/startsis.s b/c/src/lib/libbsp/sparc/erc32/start/startsis.s index 225d70abf0..6097c4ab36 100644 --- a/c/src/lib/libbsp/sparc/erc32/start/startsis.s +++ b/c/src/lib/libbsp/sparc/erc32/start/startsis.s @@ -289,8 +289,8 @@ zerobss: mov %0, %o2 ! environ mov %0, %o1 ! argv mov %0, %o0 ! argc - call SYM(main) - sub %sp, 0x60, %sp ! room for main to save args + call SYM(boot_card) + sub %sp, 0x60, %sp ! room for boot_card to save args nop PUBLIC(BSP_fatal_return) diff --git a/c/src/lib/libbsp/sparc/erc32/startsis/startsis.s b/c/src/lib/libbsp/sparc/erc32/startsis/startsis.s index 225d70abf0..6097c4ab36 100644 --- a/c/src/lib/libbsp/sparc/erc32/startsis/startsis.s +++ b/c/src/lib/libbsp/sparc/erc32/startsis/startsis.s @@ -289,8 +289,8 @@ zerobss: mov %0, %o2 ! environ mov %0, %o1 ! argv mov %0, %o0 ! argc - call SYM(main) - sub %sp, 0x60, %sp ! room for main to save args + call SYM(boot_card) + sub %sp, 0x60, %sp ! room for boot_card to save args nop PUBLIC(BSP_fatal_return) diff --git a/c/src/lib/libbsp/sparc/erc32/startup/Makefile.in b/c/src/lib/libbsp/sparc/erc32/startup/Makefile.in index d2e036dae3..5ca451dc25 100644 --- a/c/src/lib/libbsp/sparc/erc32/startup/Makefile.in +++ b/c/src/lib/libbsp/sparc/erc32/startup/Makefile.in @@ -11,14 +11,10 @@ PROJECT_ROOT = @PROJECT_ROOT@ PGM=${ARCH}/startup.rel # C source names, if any, go here -- minus the .c -C_PIECES=bspclean bspstart sbrk setvec spurious +C_PIECES=bspclean bspstart main sbrk setvec spurious C_FILES=$(C_PIECES:%=%.c) C_O_FILES=$(C_PIECES:%=${ARCH}/%.o) -CC_PIECES=rtems-ctor -CC_FILES=$(CC_PIECES:%=%.cc) -CC_O_FILES=$(CC_PIECES:%=${ARCH}/%.o) - H_FILES= # Assembly source names, if any, go here -- minus the .s @@ -29,10 +25,6 @@ S_O_FILES=$(S_FILES:%.S=${ARCH}/%.o) SRCS=linkcmds $(C_FILES) $(CC_FILES) $(H_FILES) $(S_FILES) OBJS=$(C_O_FILES) -# We install the RTEMS constructor as a separate .o -# so it can be easily place correctly by the compiler config file. -INSTALLED_O_FILES=$(ARCH)/rtems-ctor.o - include $(RTEMS_ROOT)/make/custom/$(RTEMS_BSP).cfg include $(RTEMS_ROOT)/make/leaf.cfg @@ -61,6 +53,5 @@ CLOBBER_ADDITIONS += ${PGM}: ${SRCS} ${OBJS} $(make-rel) -all: ${ARCH} $(SRCS) $(INSTALLED_O_FILES) $(PGM) +all: ${ARCH} $(SRCS) $(PGM) $(INSTALL) $(srcdir)/linkcmds ${PROJECT_RELEASE}/lib - $(INSTALL_VARIANT) $(INSTALLED_O_FILES) ${PROJECT_RELEASE}/lib diff --git a/c/src/lib/libbsp/sparc/erc32/startup/bspstart.c b/c/src/lib/libbsp/sparc/erc32/startup/bspstart.c index 147be20ab0..5ad902ced2 100644 --- a/c/src/lib/libbsp/sparc/erc32/startup/bspstart.c +++ b/c/src/lib/libbsp/sparc/erc32/startup/bspstart.c @@ -372,9 +372,4 @@ void bsp_start( void ) */ rtems_libio_config( &BSP_Configuration, BSP_LIBIO_MAX_FDS ); - - bsp_isr_level = rtems_initialize_executive_early( - &BSP_Configuration, - &Cpu_table - ); } diff --git a/c/src/lib/start/i960/start.s b/c/src/lib/start/i960/start.s index c2ef85b64f..1d6055363a 100644 --- a/c/src/lib/start/i960/start.s +++ b/c/src/lib/start/i960/start.s @@ -74,14 +74,14 @@ init_frames: st fp, _start_frame /* - * Call application mainline. + * Call application boot_card. * Someday, real values of argc and argv will be set up. * For now, they are set to 0. */ ldconst 0,g0 ldconst 0,g1 ldconst 0,g2 - call _main + call _boot_card ret END_CODE diff --git a/c/src/lib/start/m68k/start.s b/c/src/lib/start/m68k/start.s index b2c2ea18db..c4e7f62a61 100644 --- a/c/src/lib/start/m68k/start.s +++ b/c/src/lib/start/m68k/start.s @@ -87,7 +87,7 @@ loop: movel #0,a1@+ | to zero out uninitialized movel d0,a6 | set base pointer /* - * RTEMS should maintiain a separate interrupt stack on CPUs + * RTEMS should maintain a separate interrupt stack on CPUs * without one in hardware. This is currently not supported * on versions of the m68k without a HW intr stack. */ @@ -102,7 +102,7 @@ loop: movel #0,a1@+ | to zero out uninitialized movel #0,a7@- | push argv movel #0,a7@- | push argc - jsr SYM (main) + jsr SYM (boot_card) addl #12,a7 #if ( M68K_HAS_SEPARATE_STACKS == 1 ) -- cgit v1.2.3