[PATCH] score: Fix _ISR_Stack_area_end

Gedare Bloom gedare at rtems.org
Fri Apr 3 13:45:58 UTC 2020


push it

On Fri, Apr 3, 2020 at 1:53 AM Sebastian Huber
<sebastian.huber at embedded-brains.de> wrote:
>
> The _ISR_Stack_area_begin and _ISR_Stack_area_end symbols are in
> different sections.  They must have the same alignment, otherwise the
> following linker directive could separate them:
>
>   *(SORT_BY_ALIGNMENT (SORT_BY_NAME (.rtemsstack*)))
>
> Update #3799.
> ---
>  cpukit/Makefile.am                     |  1 +
>  cpukit/include/rtems/confdefs/percpu.h |  5 -----
>  cpukit/score/src/isrstackareaend.c     | 36 ++++++++++++++++++++++++++++++++++
>  3 files changed, 37 insertions(+), 5 deletions(-)
>  create mode 100644 cpukit/score/src/isrstackareaend.c
>
> diff --git a/cpukit/Makefile.am b/cpukit/Makefile.am
> index 3af69bd615..1486a4156f 100644
> --- a/cpukit/Makefile.am
> +++ b/cpukit/Makefile.am
> @@ -1014,6 +1014,7 @@ librtemscpu_a_SOURCES += score/src/chainnodecount.c
>  librtemscpu_a_SOURCES += score/src/debugisthreaddispatchingallowed.c
>  librtemscpu_a_SOURCES += score/src/interr.c
>  librtemscpu_a_SOURCES += score/src/isr.c
> +librtemscpu_a_SOURCES += score/src/isrstackareaend.c
>  librtemscpu_a_SOURCES += score/src/wkspace.c
>  librtemscpu_a_SOURCES += score/src/wkspaceisunifieddefault.c
>  librtemscpu_a_SOURCES += score/src/wkstringduplicate.c
> diff --git a/cpukit/include/rtems/confdefs/percpu.h b/cpukit/include/rtems/confdefs/percpu.h
> index 730571b54a..a902b4735c 100644
> --- a/cpukit/include/rtems/confdefs/percpu.h
> +++ b/cpukit/include/rtems/confdefs/percpu.h
> @@ -98,11 +98,6 @@ char _ISR_Stack_area_begin[
>  ] RTEMS_ALIGNED( CPU_INTERRUPT_STACK_ALIGNMENT )
>  RTEMS_SECTION( ".rtemsstack.interrupt.begin" );
>
> -RTEMS_DEFINE_GLOBAL_SYMBOL_IN_SECTION(
> -  _ISR_Stack_area_end,
> -  ".rtemsstack.interrupt.end"
> -);
> -
>  /* Thread stack size configuration */
>
>  #ifndef CONFIGURE_MINIMUM_TASK_STACK_SIZE
> diff --git a/cpukit/score/src/isrstackareaend.c b/cpukit/score/src/isrstackareaend.c
> new file mode 100644
> index 0000000000..9d48384b62
> --- /dev/null
> +++ b/cpukit/score/src/isrstackareaend.c
> @@ -0,0 +1,36 @@
> +/* SPDX-License-Identifier: BSD-2-Clause */
> +
> +/*
> + * Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
> + *
> + * 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.
> + *
> + * 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.
> + */
> +
> +#ifdef HAVE_CONFIG_H
> +#include "config.h"
> +#endif
> +
> +#include <rtems/score/isr.h>
> +
> +RTEMS_SECTION( ".rtemsstack.interrupt.end" )
> +RTEMS_ALIGNED( CPU_INTERRUPT_STACK_ALIGNMENT )
> +const char _ISR_Stack_area_end[ 0 ];
> --
> 2.16.4
>
> _______________________________________________
> devel mailing list
> devel at rtems.org
> http://lists.rtems.org/mailman/listinfo/devel


More information about the devel mailing list