diff options
Diffstat (limited to 'nuttx/configs/ea3131/locked')
-rwxr-xr-x | nuttx/configs/ea3131/locked/Makefile | 31 | ||||
-rw-r--r-- | nuttx/configs/ea3131/locked/ld-locked.script | 44 | ||||
-rwxr-xr-x | nuttx/configs/ea3131/locked/mklocked.sh | 57 |
3 files changed, 96 insertions, 36 deletions
diff --git a/nuttx/configs/ea3131/locked/Makefile b/nuttx/configs/ea3131/locked/Makefile index 52815a0dd..db552a771 100755 --- a/nuttx/configs/ea3131/locked/Makefile +++ b/nuttx/configs/ea3131/locked/Makefile @@ -35,20 +35,37 @@ -include $(TOPDIR)/Make.defs -all: liblocked.r +ifeq ($(WINTOOL),y) + # Windows-native toolchains + PASS1_LIBPATHS = ${shell for path in $(LINKLIBS); do dir=`dirname $(TOPDIR)/$$path`;echo "-L\"`cygpath -w $$dir`\"";done} + PASS1_LDSCRIPT = -T "${shell cygpath -w $(TOPDIR)/configs/$(CONFIG_ARCH_BOARD)/locked/ld-locked.inc}" +else + # Linux/Cygwin-native toolchain + PASS1_LIBPATHS = $(addprefix -L$(TOPDIR)/,$(dir $(LINKLIBS))) + PASS1_LDSCRIPT = -T$(TOPDIR)/configs/$(CONFIG_ARCH_BOARD)/locked/ld-locked.inc +endif -ld-locked.script: - ./mklocked.sh "$(TOPDIR)" +PASS1_LDFLAGS = -r $(PASS1_LDSCRIPT) +PASS1_LDLIBS = $(patsubst lib%,-l%,$(basename $(notdir $(LINKLIBS)))) +PASS1_LIBGCC = "${shell $(CC) -print-libgcc-file-name}" -liblocked.r: ld-locked.script $(OBJS) - @LD -o $@ --start-group $(LDLIBS) --end-group -u os_start $(LIBGCC) +all: locked.r + +ld-locked.inc: mklocked.sh $(TOPDIR)/.config + @echo "MK: ld-locked.inc" + @./mklocked.sh "$(TOPDIR)" + +locked.r: ld-locked.inc $(OBJS) + @echo "LD: locked.r" + @$(LD) -o $@ $(PASS1_LDFLAGS) $(PASS1_LIBPATHS) --start-group $(PASS1_LDLIBS) --end-group -u os_start $(PASS1_LIBGCC) .depend: depend: .depend clean: - @rm -f liblocked.r *~ .*.swp + @rm -f locked.r *~ .*.swp distclean: clean - @rm -f ld-locked.script + @rm -f ld-locked.inc + diff --git a/nuttx/configs/ea3131/locked/ld-locked.script b/nuttx/configs/ea3131/locked/ld-locked.script new file mode 100644 index 000000000..f89d8549f --- /dev/null +++ b/nuttx/configs/ea3131/locked/ld-locked.script @@ -0,0 +1,44 @@ +/**************************************************************************** + * configs/ea3131/pgnsh/ld-locked.script + * + * Copyright (C) 2010 Gregory Nutt. All rights reserved. + * Author: Gregory Nutt <spudmonkey@racsa.co.cr> + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name NuttX nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +INCLUDE ld-locked.inc +OUTPUT_ARCH(arm) +SECTIONS +{ + .locked : { + *(.vectors) + *(.text .text.*) + } +}
\ No newline at end of file diff --git a/nuttx/configs/ea3131/locked/mklocked.sh b/nuttx/configs/ea3131/locked/mklocked.sh index 188ca4796..8bfd03da3 100755 --- a/nuttx/configs/ea3131/locked/mklocked.sh +++ b/nuttx/configs/ea3131/locked/mklocked.sh @@ -76,62 +76,61 @@ function checkconfig () { # Interrupt Handlers ############################################################################ # -# All interrupt handlers must be forced to lie in the locked -# .text region +# All interrupt handlers must be forced to lie in the locked .text region # -# These are the vector entry points (only one is really needed -# since they are all in the same file). These should drag in all -# of the vector dispatching logic. +# These are the vector entry points (only one is really needed since they +# are all in the same file). These should drag in all of the vector +# dispatching logic. # -rm -f ld-locked.script -echo "EXTERN(up_vectorswi)" >>ld-locked.script -echo "EXTERN(up_vectordata)" >>ld-locked.script -echo "EXTERN(up_vectorprefetch)" >>ld-locked.script -echo "EXTERN(up_vectorundefinsn)" >>ld-locked.script -echo "EXTERN(up_vectorfiq)" >>ld-locked.script -echo "EXTERN(up_vectorirq)" >>ld-locked.script +rm -f ld-locked.inc +echo "EXTERN(up_vectorswi)" >>ld-locked.inc +echo "EXTERN(up_vectordata)" >>ld-locked.inc +echo "EXTERN(up_vectorprefetch)" >>ld-locked.inc +echo "EXTERN(up_vectorundefinsn)" >>ld-locked.inc +echo "EXTERN(up_vectorfiq)" >>ld-locked.inc +echo "EXTERN(up_vectorirq)" >>ld-locked.inc # -# These are the initialization entry points of all device drivers -# that handle interrupts. We really want to include as little as -# possible -- ideally just the interrupt handler itself, but that -# is not usually possible. +# These are the initialization entry points of all device drivers that +# handle interrupts. We really want to include as little as possible -- +# ideally just the interrupt handler itself, but that is not usually +# possible. # -# Of course, this list must be extended as interrupt handlers are -# added. +# Of course, this list must be extended as interrupt handlers are added. -echo "EXTERN(up_timerinit)" >>ld-locked.script +echo "EXTERN(up_timerinit)" >>ld-locked.inc answer=$(checkconfig CONFIG_LPC313X_UART) if [ $answer = y ]; then - echo "EXTERN(up_earlyserialinit)" >>ld-locked.script + echo "EXTERN(up_earlyserialinit)" >>ld-locked.inc fi # up_i2cinitialize -- Not conditioned on anything answer=$(checkconfig CONFIG_USBDEV) if [ $answer = y ]; then - echo "EXTERN(up_usbinitialize)" >>ld-locked.script + echo "EXTERN(up_usbinitialize)" >>ld-locked.inc fi ############################################################################ # Idle Loop ############################################################################ # -# The IDLE loop must be forced to lie in the locked .text region -# NOTE that most of the IDLE loop is is os_start.c, but we don't -# we want to handle that differently so that it does not draw in -# a lot of things that we do not need. +# The IDLE loop must be forced to lie in the locked .text region. NOTE that +# most of the IDLE loop is is os_start.c, but we don't we want to handle +# that differently so that it does not draw in a lot of things that we do +# not need in the locked region. However, we do need to bring in all of +# the things called by os_start up to the point where the page fill worker +# thread is started. -echo "EXTERN(up_idle)" >>ld-locked.script +echo "EXTERN(up_idle)" >>ld-locked.inc ############################################################################ # PG Fill Worker Thread ############################################################################ # -# All of the page fill worker thread must be in the locked .text -# region. +# All of the page fill worker thread must be in the locked .text region. -echo "EXTERN(pg_worker)" >>ld-locked.script +echo "EXTERN(pg_worker)" >>ld-locked.inc |