diff --git a/arch/arm/src/Makefile b/arch/arm/src/Makefile index c4fcb4c6ca..70fac87d69 100644 --- a/arch/arm/src/Makefile +++ b/arch/arm/src/Makefile @@ -1,7 +1,7 @@ ############################################################################ # arch/arm/src/Makefile # -# Copyright (C) 2007-2009, 2011-2012 Gregory Nutt. All rights reserved. +# Copyright (C) 2007-2009, 2011-2012, 2014 Gregory Nutt. All rights reserved. # Author: Gregory Nutt # # Redistribution and use in source and binary forms, with or without @@ -85,6 +85,7 @@ endif # The "head" object HEAD_OBJ = $(HEAD_ASRC:.S=$(OBJEXT)) +STARTUP_OBJS ?= $(HEAD_OBJ) # Flat build or kernel-mode objects @@ -188,10 +189,10 @@ endif # Note that there may not be a head object if layout is handled # by the linker configuration. -export_head: board/libboard$(LIBEXT) $(HEAD_OBJ) -ifneq ($(HEAD_OBJ),) +export_startup: board/libboard$(LIBEXT) $(STARTUP_OBJS) +ifneq ($(STARTUP_OBJS),) $(Q) if [ -d "$(EXPORT_DIR)/startup" ]; then \ - cp -f $(HEAD_OBJ) "$(EXPORT_DIR)/startup"; \ + cp -f $(STARTUP_OBJS) "$(EXPORT_DIR)/startup/."; \ else \ echo "$(EXPORT_DIR)/startup does not exist"; \ exit 1; \ diff --git a/arch/arm/src/a1x/Make.defs b/arch/arm/src/a1x/Make.defs index c06e3a6c8f..98972d8722 100644 --- a/arch/arm/src/a1x/Make.defs +++ b/arch/arm/src/a1x/Make.defs @@ -38,6 +38,10 @@ HEAD_ASRC = arm_vectortab.S +ifeq ($(CONFIG_BUILD_KERNEL),y) +STARTUP_OBJS = crt0$(OBJEXT) +endif + # Force the start-up logic to be at the beginning of the .text to simplify # debug. diff --git a/arch/arm/src/armv7-a/crt0.c b/arch/arm/src/armv7-a/crt0.c index 8b661708eb..2127ab2edb 100644 --- a/arch/arm/src/armv7-a/crt0.c +++ b/arch/arm/src/armv7-a/crt0.c @@ -40,6 +40,7 @@ #include #include +#include #include @@ -57,7 +58,7 @@ * Public Function Prototypes ****************************************************************************/ -extern main_t main; +int main(int argc, char *argv[]); /**************************************************************************** * Private Functions @@ -100,8 +101,9 @@ static void sig_trampoline(void) " blx ip\n" /* Call the signal handler */ " pop {r2}\n" /* Recover LR in R2 */ " mov lr, r2\n" /* Restore LR */ - " mov r0, #4\n" /* SYS_signal_handler_return + " mov r0, #4\n" /* SYS_signal_handler_return */ " svc #0x900001\n" /* Return from the signal handler */ + ); } #endif @@ -138,7 +140,7 @@ void _start(int argc, FAR char *argv[]) * that is visible to the RTOS. */ - ADDRENV_DATA_RESERVE->ar_sigtramp = (addrenv_sigtramp_t)sig_trampoline; + ARCH_DATA_RESERVE->ar_sigtramp = (addrenv_sigtramp_t)sig_trampoline; #endif /* Call C++ constructors */ @@ -147,7 +149,7 @@ void _start(int argc, FAR char *argv[]) /* Call the main() entry point passing argc and argv. */ - ret = main(argc, argc); + ret = main(argc, argv); /* Call exit() if/when the main() returns */ diff --git a/arch/arm/src/sama5/Make.defs b/arch/arm/src/sama5/Make.defs index 241bb6a60e..c07fcc81a4 100644 --- a/arch/arm/src/sama5/Make.defs +++ b/arch/arm/src/sama5/Make.defs @@ -38,6 +38,10 @@ HEAD_ASRC = arm_vectortab.S +ifeq ($(CONFIG_BUILD_KERNEL),y) +STARTUP_OBJS = crt0$(OBJEXT) +endif + # Force the start-up logic to be at the beginning of the .text to simplify # debug. diff --git a/arch/avr/src/Makefile b/arch/avr/src/Makefile index 2220bbfde2..a3f288efb6 100644 --- a/arch/avr/src/Makefile +++ b/arch/avr/src/Makefile @@ -1,7 +1,7 @@ ############################################################################ # arch/avr/src/Makefile # -# Copyright (C) 2010-2012 Gregory Nutt. All rights reserved. +# Copyright (C) 2010-2012, 2014 Gregory Nutt. All rights reserved. # Author: Gregory Nutt # # Redistribution and use in source and binary forms, with or without @@ -72,6 +72,7 @@ CXXFLAGS += $(INCLUDES) AFLAGS += $(INCLUDES) HEAD_OBJ = $(HEAD_ASRC:.S=$(OBJEXT)) +STARTUP_OBJS ?= $(HEAD_OBJ) ASRCS = $(CHIP_ASRCS) $(CMN_ASRCS) AOBJS = $(ASRCS:.S=$(OBJEXT)) @@ -147,9 +148,9 @@ endif # This is part of the top-level export target -export_head: board/libboard$(LIBEXT) $(HEAD_OBJ) +export_startup: board/libboard$(LIBEXT) $(STARTUP_OBJS) $(Q) if [ -d "$(EXPORT_DIR)/startup" ]; then \ - cp -f $(HEAD_OBJ) "$(EXPORT_DIR)/startup"; \ + cp -f $(STARTUP_OBJS) "$(EXPORT_DIR)/startup"; \ else \ echo "$(EXPORT_DIR)/startup does not exist"; \ exit 1; \ diff --git a/arch/hc/src/Makefile b/arch/hc/src/Makefile index d1ce2e205a..eaccee1746 100644 --- a/arch/hc/src/Makefile +++ b/arch/hc/src/Makefile @@ -1,7 +1,7 @@ ############################################################################ # arch/hc/src/Makefile # -# Copyright (C) 2009, 2011-2012 Gregory Nutt. All rights reserved. +# Copyright (C) 2009, 2011-2012, 2014 Gregory Nutt. All rights reserved. # Author: Gregory Nutt # # Redistribution and use in source and binary forms, with or without @@ -68,6 +68,7 @@ endif endif HEAD_OBJ = $(HEAD_ASRC:.S=$(OBJEXT)) +STARTUP_OBJS ?= $(HEAD_OBJ) ASRCS = $(CHIP_ASRCS) $(CMN_ASRCS) AOBJS = $(ASRCS:.S=$(OBJEXT)) @@ -142,9 +143,9 @@ endif # This is part of the top-level export target -export_head: board/libboard$(LIBEXT) $(HEAD_OBJ) +export_startup: board/libboard$(LIBEXT) $(STARTUP_OBJS) $(Q) if [ -d "$(EXPORT_DIR)/startup" ]; then \ - cp -f $(HEAD_OBJ) "$(EXPORT_DIR)/startup"; \ + cp -f $(STARTUP_OBJS) "$(EXPORT_DIR)/startup"; \ else \ echo "$(EXPORT_DIR)/startup does not exist"; \ exit 1; \ diff --git a/arch/mips/src/Makefile b/arch/mips/src/Makefile index 906bac59fc..aeb3238a0f 100644 --- a/arch/mips/src/Makefile +++ b/arch/mips/src/Makefile @@ -1,7 +1,7 @@ ############################################################################ # arch/mips/src/Makefile # -# Copyright (C) 2011-2012 Gregory Nutt. All rights reserved. +# Copyright (C) 2011-2012, 2014 Gregory Nutt. All rights reserved. # Author: Gregory Nutt # # Redistribution and use in source and binary forms, with or without @@ -65,6 +65,7 @@ endif endif HEAD_OBJ = $(HEAD_ASRC:.S=$(OBJEXT)) +STARTUP_OBJS ?= $(HEAD_OBJ) ASRCS = $(CHIP_ASRCS) $(CMN_ASRCS) AOBJS = $(ASRCS:.S=$(OBJEXT)) @@ -140,9 +141,9 @@ endif # This is part of the top-level export target -export_head: board/libboard$(LIBEXT) $(HEAD_OBJ) +export_startup: board/libboard$(LIBEXT) $(STARTUP_OBJS) $(Q) if [ -d "$(EXPORT_DIR)/startup" ]; then \ - cp -f $(HEAD_OBJ) "$(EXPORT_DIR)/startup"; \ + cp -f $(STARTUP_OBJS) "$(EXPORT_DIR)/startup"; \ else \ echo "$(EXPORT_DIR)/startup does not exist"; \ exit 1; \ diff --git a/arch/rgmp/src/Makefile b/arch/rgmp/src/Makefile index 05ef21feaf..09fb372f44 100644 --- a/arch/rgmp/src/Makefile +++ b/arch/rgmp/src/Makefile @@ -1,7 +1,7 @@ ############################################################################ # arch/rgmp/src/Makefile # -# Copyright (C) 2011-2012 Gregory Nutt. All rights reserved. +# Copyright (C) 2011-2012, 2014 Gregory Nutt. All rights reserved. # Author: Gregory Nutt # # Redistribution and use in source and binary forms, with or without @@ -85,7 +85,7 @@ nuttx$(EXEEXT): $(LINKOBJS) # This is part of the top-level export target -export_head: +expport_startup: # Dependencies diff --git a/arch/sh/src/Makefile b/arch/sh/src/Makefile index e8be489cde..280b843a1a 100644 --- a/arch/sh/src/Makefile +++ b/arch/sh/src/Makefile @@ -1,7 +1,7 @@ ############################################################################ # arch/sh/src/Makefile # -# Copyright (C) 2008, 2011-2012 Gregory Nutt. All rights reserved. +# Copyright (C) 2008, 2011-2012, 2014 Gregory Nutt. All rights reserved. # Author: Gregory Nutt # # Redistribution and use in source and binary forms, with or without @@ -63,6 +63,7 @@ endif CFLAGS += -I$(ARCH_SRCDIR)/chip -I$(ARCH_SRCDIR)/common -I$(TOPDIR)/sched HEAD_OBJ = $(HEAD_ASRC:.S=$(OBJEXT)) +STARTUP_OBJS ?= $(HEAD_OBJ) ASRCS = $(CHIP_ASRCS) $(CMN_ASRCS) AOBJS = $(ASRCS:.S=$(OBJEXT)) @@ -138,9 +139,9 @@ endif # This is part of the top-level export target -export_head: board/libboard$(LIBEXT) $(HEAD_OBJ) +export_startup: board/libboard$(LIBEXT) $(STARTUP_OBJS) $(Q) if [ -d "$(EXPORT_DIR)/startup" ]; then \ - cp -f $(HEAD_OBJ) "$(EXPORT_DIR)/startup"; \ + cp -f $(STARTUP_OBJS) "$(EXPORT_DIR)/startup"; \ else \ echo "$(EXPORT_DIR)/startup does not exist"; \ exit 1; \ diff --git a/arch/sim/src/Makefile b/arch/sim/src/Makefile index bb44ab705f..8bbf67a8fc 100644 --- a/arch/sim/src/Makefile +++ b/arch/sim/src/Makefile @@ -145,7 +145,7 @@ RELLIBS += -lboard all: up_head$(OBJEXT) libarch$(LIBEXT) -.PHONY: board/libboard$(LIBEXT) export_head clean distclean cleanrel depend +.PHONY: board/libboard$(LIBEXT) export_startup clean distclean cleanrel depend $(AOBJS): %$(OBJEXT): %.S $(call ASSEMBLE, $<, $@) @@ -199,7 +199,7 @@ nuttx$(EXEEXT): cleanrel nuttx.rel $(HOSTOBJS) # This is part of the top-level export target -export_head: board/libboard$(LIBEXT) up_head.o $(HOSTOBJS) +export_startup: board/libboard$(LIBEXT) up_head.o $(HOSTOBJS) cp up_head.o $(HOSTOBJS) ${EXPORT_DIR}/startup cp nuttx-names.dat ${EXPORT_DIR}/libs echo main NXmain >> ${EXPORT_DIR}/libs/nuttx-names.dat diff --git a/arch/x86/src/Makefile b/arch/x86/src/Makefile index 2539c0f112..0de6b7c082 100644 --- a/arch/x86/src/Makefile +++ b/arch/x86/src/Makefile @@ -1,7 +1,7 @@ ############################################################################ # arch/x86/src/Makefile # -# Copyright (C) 2011-2012 Gregory Nutt. All rights reserved. +# Copyright (C) 2011-2012, 2014 Gregory Nutt. All rights reserved. # Author: Gregory Nutt # # Redistribution and use in source and binary forms, with or without @@ -65,6 +65,7 @@ endif endif HEAD_OBJ = $(HEAD_ASRC:.S=$(OBJEXT)) +STARTUP_OBJS ?= $(HEAD_OBJ) ASRCS = $(CHIP_ASRCS) $(CMN_ASRCS) AOBJS = $(ASRCS:.S=$(OBJEXT)) @@ -148,9 +149,9 @@ endif # This is part of the top-level export target -export_head: board/libboard$(LIBEXT) $(HEAD_OBJ) +export_startup: board/libboard$(LIBEXT) $(STARTUP_OBJS) $(Q) if [ -d "$(EXPORT_DIR)/startup" ]; then \ - cp -f $(HEAD_OBJ) "$(EXPORT_DIR)/startup"; \ + cp -f $(STARTUP_OBJS) "$(EXPORT_DIR)/startup"; \ else \ echo "$(EXPORT_DIR)/startup does not exist"; \ exit 1; \ diff --git a/arch/z16/src/Makefile b/arch/z16/src/Makefile index 5c0ef42beb..02d9c6eb67 100644 --- a/arch/z16/src/Makefile +++ b/arch/z16/src/Makefile @@ -1,7 +1,7 @@ ############################################################################ # arch/z16/src/Makefile # -# Copyright (C) 2008, 2011-2012 Gregory Nutt. All rights reserved. +# Copyright (C) 2008, 2011-2012, 2014 Gregory Nutt. All rights reserved. # Author: Gregory Nutt # # Redistribution and use in source and binary forms, with or without @@ -65,6 +65,7 @@ endif HEAD_ASRC = $(HEAD_SSRC:.S=$(ASMEXT)) HEAD_OBJ = $(HEAD_SSRC:.S=$(OBJEXT)) +STARTUP_OBJS ?= $(HEAD_OBJ) SSRCS = $(CHIP_SSRCS) $(CMN_SSRCS) ASRCS = $(SSRCS:.S=$(ASMEXT)) @@ -145,12 +146,12 @@ endif # This is part of the top-level export target -export_head: board/libboard$(LIBEXT) $(HEAD_OBJ) +export_startup: board/libboard$(LIBEXT) $(STARTUP_OBJS) ifeq ($(CONFIG_WINDOWS_NATIVE),y) - $(Q) if exist "$(EXPORT_DIR)$(DELIM)startup" ( copy $(HEAD_OBJ) "$(EXPORT_DIR)$(DELIM)startup$(DELIM)." /b /y) + $(Q) if exist "$(EXPORT_DIR)$(DELIM)startup" ( copy $(STARTUP_OBJS) "$(EXPORT_DIR)$(DELIM)startup$(DELIM)." /b /y) else $(Q) if [ -d "$(EXPORT_DIR)/startup" ]; then \ - cp -f $(HEAD_OBJ) "$(EXPORT_DIR)/startup"; \ + cp -f $(STARTUP_OBJS) "$(EXPORT_DIR)/startup"; \ else \ echo "$(EXPORT_DIR)/startup does not exist"; \ exit 1; \ diff --git a/arch/z80/src/Makefile.sdccl b/arch/z80/src/Makefile.sdccl index c444690e76..3afd657de4 100644 --- a/arch/z80/src/Makefile.sdccl +++ b/arch/z80/src/Makefile.sdccl @@ -1,7 +1,7 @@ ############################################################################ # arch/z80/src/Makefile.sdccl # -# Copyright (C) 2008, 2011-2012 Gregory Nutt. All rights reserved. +# Copyright (C) 2008, 2011-2012, 2014 Gregory Nutt. All rights reserved. # Author: Gregory Nutt # # Redistribution and use in source and binary forms, with or without @@ -43,6 +43,7 @@ CPPFLAGS += -D__ASSEMBLY__ # There should be one head source (.asm file) HEAD_OBJ = $(HEAD_ASRC:$(ASMEXT)=$(OBJEXT)) +STARTUP_OBJS ?= $(HEAD_OBJ) # Assembly sources and objects @@ -181,9 +182,9 @@ endif # This is part of the top-level export target -export_head: board/libboard$(LIBEXT) $(HEAD_OBJ) +export_startup: board/libboard$(LIBEXT) $(STARTUP_OBJS) $(Q) if [ -d "$(EXPORT_DIR)/startup" ]; then \ - cp -f $(HEAD_OBJ) "$(EXPORT_DIR)/startup"; \ + cp -f $(STARTUP_OBJS) "$(EXPORT_DIR)/startup"; \ else \ echo "$(EXPORT_DIR)/startup does not exist"; \ exit 1; \ diff --git a/arch/z80/src/Makefile.sdccw b/arch/z80/src/Makefile.sdccw index 79e1b002e3..ee7948c671 100644 --- a/arch/z80/src/Makefile.sdccw +++ b/arch/z80/src/Makefile.sdccw @@ -1,7 +1,7 @@ ############################################################################ # arch/z80/src/Makefile.sdccw # -# Copyright (C) 2008, 2011-2012 Gregory Nutt. All rights reserved. +# Copyright (C) 2008, 2011-2012, 2014 Gregory Nutt. All rights reserved. # Author: Gregory Nutt # # Redistribution and use in source and binary forms, with or without @@ -43,6 +43,7 @@ CPPFLAGS += -D__ASSEMBLY__ # There should be one head source (.asm file) HEAD_OBJ = $(HEAD_ASRC:$(ASMEXT)=$(OBJEXT)) +STARTUP_OBJS ?= $(HEAD_OBJ) # Assembly sources and objects @@ -179,9 +180,9 @@ endif # This is part of the top-level export target -export_head: board\libboard$(LIBEXT) $(HEAD_OBJ) +export_startup: board\libboard$(LIBEXT) $(STARTUP_OBJS) $(Q) if not exist board\Makefile ( echo $(EXPORT_DIR)\startup does not exist ) - $(Q) if exist board\Makefile ( cp -f $(HEAD_OBJ) "$(EXPORT_DIR)\startup" ) + $(Q) if exist board\Makefile ( cp -f $(STARTUP_OBJS) "$(EXPORT_DIR)\startup" ) # Build dependencies diff --git a/arch/z80/src/Makefile.zdsiil b/arch/z80/src/Makefile.zdsiil index 87ada571fc..39c4cbe1eb 100644 --- a/arch/z80/src/Makefile.zdsiil +++ b/arch/z80/src/Makefile.zdsiil @@ -1,7 +1,7 @@ ############################################################################ # arch/z80/src/Makefile.zdsiil # -# Copyright (C) 2008, 2011-2012 Gregory Nutt. All rights reserved. +# Copyright (C) 2008, 2011-2012, 2014 Gregory Nutt. All rights reserved. # Author: Gregory Nutt # # Redistribution and use in source and binary forms, with or without @@ -51,6 +51,7 @@ LDFLAGS += @nuttx.linkcmd ############################################################################ # Files and directories + ifneq ($(HEAD_SSRC),) HEAD_GENSRC = $(HEAD_SSRC:.S=$(ASMEXT)) HEAD_OBJ = $(HEAD_SSRC:.S=$(OBJEXT)) @@ -58,6 +59,8 @@ else HEAD_OBJ = $(HEAD_ASRC:$(ASMEXT)=$(OBJEXT)) endif +STARTUP_OBJS ?= $(HEAD_OBJ) + SSRCS = $(CHIP_SSRCS) $(CMN_SSRCS) ASRCS = $(CHIP_ASRCS) $(CMN_ASRCS) GENSRCS = $(SSRCS:.S=$(ASMEXT)) @@ -140,9 +143,9 @@ nuttx$(EXEEXT): $(HEAD_OBJ) board$(DELIM)libboard$(LIBEXT) nuttx.linkcmd # This is part of the top-level export target -export_head: board$(DELIM)libboard$(LIBEXT) $(HEAD_OBJ) +export_startup: board$(DELIM)libboard$(LIBEXT) $(STARTUP_OBJS) $(Q) if [ -d "$(EXPORT_DIR)$(DELIM)startup" ]; then \ - cp -f $(HEAD_OBJ) "$(EXPORT_DIR)$(DELIM)startup"; \ + cp -f $(STARTUP_OBJS) "$(EXPORT_DIR)$(DELIM)startup"; \ else \ echo "$(EXPORT_DIR)$(DELIM)startup does not exist"; \ exit 1; \ diff --git a/arch/z80/src/Makefile.zdsiiw b/arch/z80/src/Makefile.zdsiiw index bf599ecaea..25099e8a60 100644 --- a/arch/z80/src/Makefile.zdsiiw +++ b/arch/z80/src/Makefile.zdsiiw @@ -1,7 +1,7 @@ ############################################################################ # arch/z80/src/Makefile.zdsiiw # -# Copyright (C) 2008, 2011-2012 Gregory Nutt. All rights reserved. +# Copyright (C) 2008, 2011-2012, 2014 Gregory Nutt. All rights reserved. # Author: Gregory Nutt # # Redistribution and use in source and binary forms, with or without @@ -55,6 +55,8 @@ else HEAD_OBJ = $(HEAD_ASRC:$(ASMEXT)=$(OBJEXT)) endif +STARTUP_OBJS ?= $(HEAD_OBJ) + SSRCS = $(CHIP_SSRCS) $(CMN_SSRCS) ASRCS = $(CHIP_ASRCS) $(CMN_ASRCS) GENSRCS = $(SSRCS:.S=$(ASMEXT)) @@ -132,8 +134,8 @@ nuttx$(EXEEXT): $(HEAD_OBJ) board$(DELIM)libboard$(LIBEXT) nuttx.linkcmd # This is part of the top-level export target -export_head: board$(DELIM)libboard$(LIBEXT) $(HEAD_OBJ) - $(Q) if exist "$(EXPORT_DIR)$(DELIM)startup" ( copy $(HEAD_OBJ) "$(EXPORT_DIR)$(DELIM)startup$(DELIM)." /b /y) +export_startup: board$(DELIM)libboard$(LIBEXT) $(STARTUP_OBJS) + $(Q) if exist "$(EXPORT_DIR)$(DELIM)startup" ( copy $(STARTUP_OBJS) "$(EXPORT_DIR)$(DELIM)startup$(DELIM)." /b /y) # Dependencies diff --git a/tools/mkexport.sh b/tools/mkexport.sh index cbdcddc78e..6b16e4b077 100755 --- a/tools/mkexport.sh +++ b/tools/mkexport.sh @@ -1,7 +1,7 @@ #!/bin/bash # tools/mkexport.sh # -# Copyright (C) 2011-2012 Gregory Nutt. All rights reserved. +# Copyright (C) 2011-2012, 2014 Gregory Nutt. All rights reserved. # Author: Gregory Nutt # # Redistribution and use in source and binary forms, with or without @@ -194,7 +194,7 @@ cp -LR -p "${TOPDIR}/include" "${EXPORTDIR}/." || \ # Copy the startup object file(s) -make -C ${ARCHDIR} export_head TOPDIR=${TOPDIR} EXPORT_DIR="${EXPORTDIR}" +make -C ${ARCHDIR} export_startup TOPDIR=${TOPDIR} EXPORT_DIR="${EXPORTDIR}" # Copy architecture-specific header files into the arch export sub-directory. # This is tricky because each architecture does things in a little different