2019-08-10 17:57:26 +02:00
|
|
|
#!/usr/bin/env bash
|
2010-08-27 03:32:49 +02:00
|
|
|
###########################################################################
|
2019-08-14 14:34:18 +02:00
|
|
|
# boards/arm/lpc31xx/ea3131/locked/mklocked.sh
|
2010-08-27 03:32:49 +02:00
|
|
|
#
|
This change renames all internal, private NuttX signal-related functions to use the prefix nxsig_ so that they cannot be confused with application interfaces that begin, primarily, with sig_
This is analogous to similar renaming that was done previously for semaphores.
Squashed commit of the following:
sched/signal: Fix a few compile warnings introduced by naming changes.
sched/signal: Rename all private, internal signl functions to use the nxsig_ prefix.
sched/signal: Rename sig_removependingsignal, sig_unmaskpendingsignal, and sig_mqnotempty to nxsig_remove_pendingsignal, nxsig_unmask_pendingsignal, and nxsig_mqnotempty to make it clear that these are OS internal interfaces.
sched/signal: Rename sig_findaction and sig_lowest to nxsig_find_action and nxsig_lowest to make it clear that these are OS internal interfaces.
sched/signal: Rename sig_allocatepingsigaction and sig_deliver to nxsig_alloc_pendingsigaction and nxsig_deliver to make it clear that these are OS internal interfaces.
sched/signal: Rename sig_cleanup, sig_release, sig_releasependingaction, and sig_releasependingsignal to nxsig_cleanup, nxsig_release, nxsig_release_pendingaction, and nxsig_release_pendingsignal to make it clear that these are OS internal interfaces.
sched/signal: Rename sig_tcbdispatch and sig_dispatch to nxsig_tcbdispatch and nxsig_dispatch to make it clear that these are OS internal interfaces.
sched/signal: Rename sig_releaseaction and sig_pendingset to nxsig_release_action and nxsig_pendingset to make it clear that these are OS internal interfaces.
sched/signal: Rename sig_initialize and sig_allocateactionblock to nxsig_initialize and nxsig_alloc_actionblock to make it clear that these are OS internal interfaces.
2017-10-05 21:25:25 +02:00
|
|
|
# Copyright (C) 2010-2014, 2017 Gregory Nutt. All rights reserved.
|
2012-09-07 00:25:51 +02:00
|
|
|
# Author: Gregory Nutt <gnutt@nuttx.org>
|
2010-08-27 03:32:49 +02:00
|
|
|
#
|
|
|
|
# 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.
|
|
|
|
#
|
|
|
|
############################################################################
|
|
|
|
|
|
|
|
#set -x
|
|
|
|
|
|
|
|
############################################################################
|
|
|
|
# Arguments
|
|
|
|
############################################################################
|
|
|
|
|
|
|
|
USAGE="$0 <nuttx-dir>"
|
|
|
|
|
|
|
|
TOPDIR="$1"
|
|
|
|
CONFIG="$TOPDIR/.config"
|
|
|
|
if [ -z "$TOPDIR" ]; then
|
|
|
|
echo "Missing Argument"
|
|
|
|
echo $USAGE
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
if [ ! -d "$TOPDIR" ]; then
|
|
|
|
echo "NuttX directory does not exist: $TOPDIR"
|
|
|
|
echo $USAGE
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
if [ ! -f "$CONFIG" ]; then
|
|
|
|
echo "Configuration file not found: $CONFIG"
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
############################################################################
|
|
|
|
# Functions
|
|
|
|
############################################################################
|
|
|
|
|
|
|
|
function checkconfig () {
|
|
|
|
CONFIGLINE=`cat "$CONFIG" | grep "$1="`
|
2010-09-05 21:13:48 +02:00
|
|
|
if [ -z "$CONFIGLINE" ]; then
|
|
|
|
echo "n"
|
|
|
|
fi
|
2010-08-27 03:32:49 +02:00
|
|
|
if [ "X${CONFIGLINE}" = "X${1}=y" ]; then
|
|
|
|
echo "y"
|
|
|
|
else
|
|
|
|
echo "n"
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
2010-09-05 21:13:48 +02:00
|
|
|
function checkzero () {
|
|
|
|
CONFIGLINE=`cat "$CONFIG" | grep "$1="`
|
|
|
|
if [ -z "$CONFIGLINE" ]; then
|
|
|
|
echo "y"
|
|
|
|
fi
|
|
|
|
if [ "X${CONFIGLINE}" = "X${1}=0" ]; then
|
|
|
|
echo "y"
|
|
|
|
else
|
|
|
|
echo "n"
|
|
|
|
fi
|
|
|
|
}
|
2010-09-08 19:38:44 +02:00
|
|
|
|
2010-08-27 03:32:49 +02:00
|
|
|
############################################################################
|
|
|
|
# Interrupt Handlers
|
|
|
|
############################################################################
|
|
|
|
#
|
2010-08-28 04:30:50 +02:00
|
|
|
# All interrupt handlers must be forced to lie in the locked .text region
|
2010-08-27 03:32:49 +02:00
|
|
|
#
|
2010-08-28 04:30:50 +02:00
|
|
|
# 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.
|
2010-08-27 03:32:49 +02:00
|
|
|
#
|
|
|
|
|
2010-08-28 04:30:50 +02:00
|
|
|
rm -f ld-locked.inc
|
2020-05-01 16:50:23 +02:00
|
|
|
echo "EXTERN(arm_vectorswi)" >>ld-locked.inc
|
|
|
|
echo "EXTERN(arm_vectordata)" >>ld-locked.inc
|
|
|
|
echo "EXTERN(arm_vectorprefetch)" >>ld-locked.inc
|
|
|
|
echo "EXTERN(arm_vectorundefinsn)" >>ld-locked.inc
|
|
|
|
echo "EXTERN(arm_vectorfiq)" >>ld-locked.inc
|
|
|
|
echo "EXTERN(arm_vectorirq)" >>ld-locked.inc
|
|
|
|
echo "EXTERN(arm_vectoraddrexcptn)" >>ld-locked.inc
|
2010-08-27 03:32:49 +02:00
|
|
|
|
|
|
|
#
|
2010-08-28 04:30:50 +02:00
|
|
|
# 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.
|
2010-08-27 03:32:49 +02:00
|
|
|
#
|
2010-08-28 04:30:50 +02:00
|
|
|
# Of course, this list must be extended as interrupt handlers are added.
|
2010-08-27 03:32:49 +02:00
|
|
|
|
2020-02-07 08:14:06 +01:00
|
|
|
echo "EXTERN(up_timer_initialize)" >>ld-locked.inc
|
2010-08-27 03:32:49 +02:00
|
|
|
|
2012-09-07 00:25:51 +02:00
|
|
|
answer=$(checkconfig CONFIG_LPC31_UART)
|
2015-07-03 17:33:02 +02:00
|
|
|
if [ "$answer" = y ]; then
|
2020-05-01 16:50:23 +02:00
|
|
|
echo "EXTERN(arm_earlyserialinit)" >>ld-locked.inc
|
2010-08-27 03:32:49 +02:00
|
|
|
fi
|
|
|
|
|
2016-02-02 19:25:14 +01:00
|
|
|
# xyz_i2cbus_initialize -- Not conditioned on anything
|
2010-08-27 03:32:49 +02:00
|
|
|
|
|
|
|
answer=$(checkconfig CONFIG_USBDEV)
|
2015-07-03 17:33:02 +02:00
|
|
|
if [ "$answer" = y ]; then
|
2020-05-01 16:50:23 +02:00
|
|
|
echo "EXTERN(arm_usbinitialize)" >>ld-locked.inc
|
2010-08-27 03:32:49 +02:00
|
|
|
fi
|
|
|
|
|
2010-09-04 04:24:38 +02:00
|
|
|
############################################################################
|
|
|
|
# Initialization logic
|
|
|
|
############################################################################
|
|
|
|
# All initialization logic must be in memory because it must execute before
|
|
|
|
# the page fill worker thread is started. Ideally this would be in some
|
|
|
|
# region that is mapped initially, but then unmapped after initialization
|
|
|
|
# is complete -- effectively freeing the memory used for the 1-time
|
|
|
|
# initialization code. That optimization has not yet been made and, as
|
|
|
|
# consequence, the 1-time initialization code takes up precious memory
|
|
|
|
# in the locked memory region.
|
2010-09-05 21:13:48 +02:00
|
|
|
#
|
2016-05-12 21:42:19 +02:00
|
|
|
# arm_boot is a low-level initialization function called by __start:
|
2010-09-04 04:24:38 +02:00
|
|
|
|
2016-05-12 21:42:19 +02:00
|
|
|
echo "EXTERN(arm_boot)" >>ld-locked.inc
|
2010-09-04 04:24:38 +02:00
|
|
|
|
2019-02-04 23:20:35 +01:00
|
|
|
# All of the initialization functions that are called by nx_start up to
|
2010-09-05 21:13:48 +02:00
|
|
|
# the point where the page fill worker thread is started must also be
|
|
|
|
# included in the locked text section (at least for now)
|
|
|
|
|
|
|
|
answer=$(checkzero CONFIG_TASK_NAME_SIZE)
|
2015-07-03 17:33:02 +02:00
|
|
|
if [ "$answer" = n ]; then
|
2016-05-12 21:42:19 +02:00
|
|
|
echo "EXTERN(arm_boot)" >>ld-locked.inc
|
2010-09-05 21:13:48 +02:00
|
|
|
fi
|
|
|
|
|
|
|
|
echo "EXTERN(dq_addfirst)" >>ld-locked.inc
|
|
|
|
echo "EXTERN(up_initial_state)" >>ld-locked.inc
|
2013-03-09 22:12:20 +01:00
|
|
|
echo "EXTERN(up_allocate_heap)" >>ld-locked.inc
|
2010-09-05 21:13:48 +02:00
|
|
|
echo "EXTERN(mm_initialize)" >>ld-locked.inc
|
|
|
|
echo "EXTERN(irq_initialize)" >>ld-locked.inc
|
|
|
|
echo "EXTERN(wd_initialize)" >>ld-locked.inc
|
2014-08-07 20:35:24 +02:00
|
|
|
echo "EXTERN(clock_initialize)" >>ld-locked.inc
|
2010-09-05 21:13:48 +02:00
|
|
|
|
|
|
|
answer=$(checkconfig CONFIG_DISABLE_POSIX_TIMERS)
|
2015-07-03 17:33:02 +02:00
|
|
|
if [ "$answer" = n ]; then
|
2010-09-05 21:13:48 +02:00
|
|
|
echo "EXTERN(timer_initialize)" >>ld-locked.inc
|
|
|
|
fi
|
|
|
|
|
2019-04-29 22:52:05 +02:00
|
|
|
echo "EXTERN(nxsig_initialize)" >>ld-locked.inc
|
2010-09-05 21:13:48 +02:00
|
|
|
echo "EXTERN(sem_initialize)" >>ld-locked.inc
|
|
|
|
|
|
|
|
answer=$(checkconfig CONFIG_DISABLE_MQUEUE)
|
2015-07-03 17:33:02 +02:00
|
|
|
if [ "$answer" = n ]; then
|
2017-10-09 17:06:46 +02:00
|
|
|
echo "EXTERN(nxmq_initialize)" >>ld-locked.inc
|
2010-09-05 21:13:48 +02:00
|
|
|
fi
|
|
|
|
|
|
|
|
answer=$(checkconfig CONFIG_DISABLE_PTHREAD)
|
2015-07-03 17:33:02 +02:00
|
|
|
if [ "$answer" = n ]; then
|
2010-09-05 21:13:48 +02:00
|
|
|
echo "EXTERN(pthread_initialize)" >>ld-locked.inc
|
|
|
|
fi
|
|
|
|
|
2019-02-11 19:09:26 +01:00
|
|
|
echo "EXTERN(fs_initialize)" >>ld-locked.inc
|
2010-09-05 21:13:48 +02:00
|
|
|
|
|
|
|
answer=$(checkconfig CONFIG_NET)
|
2015-07-03 17:33:02 +02:00
|
|
|
if [ "$answer" = y ]; then
|
2010-09-05 21:13:48 +02:00
|
|
|
echo "EXTERN(net_initialize)" >>ld-locked.inc
|
|
|
|
fi
|
|
|
|
|
|
|
|
echo "EXTERN(up_initialize)" >>ld-locked.inc
|
|
|
|
echo "EXTERN(sched_setupidlefiles)" >>ld-locked.inc
|
|
|
|
echo "EXTERN(task_create)" >>ld-locked.inc
|
|
|
|
|
2010-08-27 03:32:49 +02:00
|
|
|
############################################################################
|
|
|
|
# Idle Loop
|
|
|
|
############################################################################
|
|
|
|
#
|
2010-08-28 21:46:58 +02:00
|
|
|
# The IDLE loop must be forced to lie in the locked .text region.
|
2010-08-27 03:32:49 +02:00
|
|
|
|
2019-02-04 23:20:35 +01:00
|
|
|
echo "EXTERN(nx_start)" >>ld-locked.inc
|
2010-08-28 04:30:50 +02:00
|
|
|
echo "EXTERN(up_idle)" >>ld-locked.inc
|
2010-08-27 03:32:49 +02:00
|
|
|
|
|
|
|
############################################################################
|
|
|
|
# PG Fill Worker Thread
|
|
|
|
############################################################################
|
|
|
|
#
|
2010-08-28 04:30:50 +02:00
|
|
|
# All of the page fill worker thread must be in the locked .text region.
|
2010-08-27 03:32:49 +02:00
|
|
|
|
2010-08-28 04:30:50 +02:00
|
|
|
echo "EXTERN(pg_worker)" >>ld-locked.inc
|