[PATCH 01/34] validation: Test sparc/leon3 BSP family
Joel Sherrill
joel at rtems.org
Wed May 31 17:14:33 UTC 2023
This patch has a couple of issues.
(1) It includes modifications to arm files which doesn't seem consistent.
(2) It adds BSP specific tests. There has been on discussion of how BSP
specific
tests should be included in the tree. We have some in this category and I
am pretty
sure Chris has some as well. We need to have a consistent approach to where
they
go.
--joel
On Wed, May 31, 2023 at 11:31 AM Sebastian Huber <
sebastian.huber at embedded-brains.de> wrote:
> ---
> spec/build/bsps/arm/imxrt/bspimxrt1052.yml | 2 +-
> spec/build/bsps/arm/imxrt/grp.yml | 2 +-
> spec/build/bsps/arm/imxrt/obj-mimxrt1052.yml | 2 +-
> .../bsps/arm/imxrt/obj-mimxrt1166-cm4.yml | 2 +-
> .../bsps/arm/imxrt/obj-mimxrt1166-cm7.yml | 2 +-
> spec/build/bsps/arm/imxrt/obj.yml | 2 +-
> .../bsps/arm/imxrt/optmemocramorigin.yml | 2 +-
> spec/build/bsps/arm/imxrt/optvariant.yml | 2 +-
> .../validation/bsp-sparc-leon3-gr712rc.yml | 21 ++
> ...arc-leon3-cache-snooping-disabled-boot.yml | 24 ++
> ...eon3-cache-snooping-disabled-secondary.yml | 25 +++
> ...l-bsp-sparc-leon3-clock-initialization.yml | 21 ++
> .../fatal-bsp-sparc-leon3-shutdown.yml | 24 ++
> spec/build/testsuites/validation/grp.yml | 10 +
> .../validation/tc-bsp-sparc-leon3-gr712rc.c | 124 ++++++++++
> .../tc-fatal-bsp-sparc-leon3-shutdown.c | 211 ++++++++++++++++++
> ...sparc-leon3-cache-snooping-disabled-boot.c | 175 +++++++++++++++
> ...sparc-leon3-cache-snooping-disabled-boot.h | 84 +++++++
> ...-leon3-cache-snooping-disabled-secondary.c | 176 +++++++++++++++
> ...-leon3-cache-snooping-disabled-secondary.h | 84 +++++++
> ...tal-bsp-sparc-leon3-clock-initialization.c | 190 ++++++++++++++++
> ...tal-bsp-sparc-leon3-clock-initialization.h | 84 +++++++
> .../validation/ts-bsp-sparc-leon3-gr712rc.c | 72 ++++++
> ...sparc-leon3-cache-snooping-disabled-boot.c | 79 +++++++
> ...-leon3-cache-snooping-disabled-secondary.c | 82 +++++++
> ...tal-bsp-sparc-leon3-clock-initialization.c | 79 +++++++
> ...-fatal-bsp-sparc-leon3-shutdown-response.c | 94 ++++++++
> .../ts-fatal-bsp-sparc-leon3-shutdown.c | 170 ++++++++++++++
> 28 files changed, 1837 insertions(+), 8 deletions(-)
> create mode 100644
> spec/build/testsuites/validation/bsp-sparc-leon3-gr712rc.yml
> create mode 100644
> spec/build/testsuites/validation/fatal-bsp-sparc-leon3-cache-snooping-disabled-boot.yml
> create mode 100644
> spec/build/testsuites/validation/fatal-bsp-sparc-leon3-cache-snooping-disabled-secondary.yml
> create mode 100644
> spec/build/testsuites/validation/fatal-bsp-sparc-leon3-clock-initialization.yml
> create mode 100644
> spec/build/testsuites/validation/fatal-bsp-sparc-leon3-shutdown.yml
> create mode 100644 testsuites/validation/tc-bsp-sparc-leon3-gr712rc.c
> create mode 100644
> testsuites/validation/tc-fatal-bsp-sparc-leon3-shutdown.c
> create mode 100644
> testsuites/validation/tr-fatal-bsp-sparc-leon3-cache-snooping-disabled-boot.c
> create mode 100644
> testsuites/validation/tr-fatal-bsp-sparc-leon3-cache-snooping-disabled-boot.h
> create mode 100644
> testsuites/validation/tr-fatal-bsp-sparc-leon3-cache-snooping-disabled-secondary.c
> create mode 100644
> testsuites/validation/tr-fatal-bsp-sparc-leon3-cache-snooping-disabled-secondary.h
> create mode 100644
> testsuites/validation/tr-fatal-bsp-sparc-leon3-clock-initialization.c
> create mode 100644
> testsuites/validation/tr-fatal-bsp-sparc-leon3-clock-initialization.h
> create mode 100644 testsuites/validation/ts-bsp-sparc-leon3-gr712rc.c
> create mode 100644
> testsuites/validation/ts-fatal-bsp-sparc-leon3-cache-snooping-disabled-boot.c
> create mode 100644
> testsuites/validation/ts-fatal-bsp-sparc-leon3-cache-snooping-disabled-secondary.c
> create mode 100644
> testsuites/validation/ts-fatal-bsp-sparc-leon3-clock-initialization.c
> create mode 100644
> testsuites/validation/ts-fatal-bsp-sparc-leon3-shutdown-response.c
> create mode 100644
> testsuites/validation/ts-fatal-bsp-sparc-leon3-shutdown.c
>
> diff --git a/spec/build/bsps/arm/imxrt/bspimxrt1052.yml
> b/spec/build/bsps/arm/imxrt/bspimxrt1052.yml
> index 6c2b3339f9..4bcb5801be 100644
> --- a/spec/build/bsps/arm/imxrt/bspimxrt1052.yml
> +++ b/spec/build/bsps/arm/imxrt/bspimxrt1052.yml
> @@ -4,7 +4,7 @@ bsp: imxrt1052
> build-type: bsp
> cflags: []
> copyrights:
> -- Copyright (C) 2020-2023 embedded brains GmbH (
> http://www.embedded-brains.de)
> +- Copyright (C) 2020-2023 embedded brains GmbH & Co. KG
> cppflags: []
> enabled-by: true
> family: imxrt
> diff --git a/spec/build/bsps/arm/imxrt/grp.yml
> b/spec/build/bsps/arm/imxrt/grp.yml
> index feda472401..52f281c90a 100644
> --- a/spec/build/bsps/arm/imxrt/grp.yml
> +++ b/spec/build/bsps/arm/imxrt/grp.yml
> @@ -2,7 +2,7 @@ SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
> build-type: group
> cflags: []
> copyrights:
> -- Copyright (C) 2020-2023 embedded brains GmbH (
> http://www.embedded-brains.de)
> +- Copyright (C) 2020-2023 embedded brains GmbH & Co. KG
> cppflags: []
> cxxflags: []
> enabled-by: true
> diff --git a/spec/build/bsps/arm/imxrt/obj-mimxrt1052.yml
> b/spec/build/bsps/arm/imxrt/obj-mimxrt1052.yml
> index 7b7c9d450c..012e41b0f1 100644
> --- a/spec/build/bsps/arm/imxrt/obj-mimxrt1052.yml
> +++ b/spec/build/bsps/arm/imxrt/obj-mimxrt1052.yml
> @@ -2,7 +2,7 @@ SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
> build-type: objects
> cflags: []
> copyrights:
> -- Copyright (C) 2023 embedded brains GmbH (http://www.embedded-brains.de)
> +- Copyright (C) 2023 embedded brains GmbH & Co. KG
> cppflags: []
> cxxflags: []
> enabled-by: true
> diff --git a/spec/build/bsps/arm/imxrt/obj-mimxrt1166-cm4.yml
> b/spec/build/bsps/arm/imxrt/obj-mimxrt1166-cm4.yml
> index bd6934be87..b338b2bedc 100644
> --- a/spec/build/bsps/arm/imxrt/obj-mimxrt1166-cm4.yml
> +++ b/spec/build/bsps/arm/imxrt/obj-mimxrt1166-cm4.yml
> @@ -2,7 +2,7 @@ SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
> build-type: objects
> cflags: []
> copyrights:
> -- Copyright (C) 2023 embedded brains GmbH (http://www.embedded-brains.de)
> +- Copyright (C) 2023 embedded brains GmbH & Co. KG
> cppflags: []
> cxxflags: []
> enabled-by: true
> diff --git a/spec/build/bsps/arm/imxrt/obj-mimxrt1166-cm7.yml
> b/spec/build/bsps/arm/imxrt/obj-mimxrt1166-cm7.yml
> index dcc664dd41..d37341117d 100644
> --- a/spec/build/bsps/arm/imxrt/obj-mimxrt1166-cm7.yml
> +++ b/spec/build/bsps/arm/imxrt/obj-mimxrt1166-cm7.yml
> @@ -2,7 +2,7 @@ SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
> build-type: objects
> cflags: []
> copyrights:
> -- Copyright (C) 2023 embedded brains GmbH (http://www.embedded-brains.de)
> +- Copyright (C) 2023 embedded brains GmbH & Co. KG
> cppflags: []
> cxxflags: []
> enabled-by: true
> diff --git a/spec/build/bsps/arm/imxrt/obj.yml
> b/spec/build/bsps/arm/imxrt/obj.yml
> index 85cb350dd2..57dd91d86e 100644
> --- a/spec/build/bsps/arm/imxrt/obj.yml
> +++ b/spec/build/bsps/arm/imxrt/obj.yml
> @@ -2,7 +2,7 @@ SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
> build-type: objects
> cflags: []
> copyrights:
> -- Copyright (C) 2020-2023 embedded brains GmbH (
> http://www.embedded-brains.de)
> +- Copyright (C) 2020-2023 embedded brains GmbH & Co. KG
> enabled-by: true
> cppflags: []
> cxxflags: []
> diff --git a/spec/build/bsps/arm/imxrt/optmemocramorigin.yml
> b/spec/build/bsps/arm/imxrt/optmemocramorigin.yml
> index c3d08918a7..359f47d933 100644
> --- a/spec/build/bsps/arm/imxrt/optmemocramorigin.yml
> +++ b/spec/build/bsps/arm/imxrt/optmemocramorigin.yml
> @@ -4,7 +4,7 @@ actions:
> - env-assign: null
> build-type: option
> copyrights:
> -- Copyright (C) 2023 embedded brains GmbH (http://www.embedded-brains.de)
> +- Copyright (C) 2023 embedded brains GmbH & Co. KG
> default:
> - enabled-by: true
> value: 0x20200000
> diff --git a/spec/build/bsps/arm/imxrt/optvariant.yml
> b/spec/build/bsps/arm/imxrt/optvariant.yml
> index 3f15034387..1d18b2869e 100644
> --- a/spec/build/bsps/arm/imxrt/optvariant.yml
> +++ b/spec/build/bsps/arm/imxrt/optvariant.yml
> @@ -101,4 +101,4 @@ description: |
> MIMXRT1166DVM6A_cm7.
> type: build
> copyrights:
> -- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
> +- Copyright (C) 2021 embedded brains GmbH & Co. KG
> diff --git a/spec/build/testsuites/validation/bsp-sparc-leon3-gr712rc.yml
> b/spec/build/testsuites/validation/bsp-sparc-leon3-gr712rc.yml
> new file mode 100644
> index 0000000000..d0924c9fb0
> --- /dev/null
> +++ b/spec/build/testsuites/validation/bsp-sparc-leon3-gr712rc.yml
> @@ -0,0 +1,21 @@
> +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
> +build-type: test-program
> +cflags: []
> +copyrights:
> +- Copyright (C) 2021 embedded brains GmbH & Co. KG
> +cppflags: []
> +cxxflags: []
> +enabled-by: sparc/gr712rc
> +features: c cprogram
> +includes: []
> +ldflags: []
> +links: []
> +source:
> +- testsuites/validation/tc-bsp-sparc-leon3-gr712rc.c
> +- testsuites/validation/ts-bsp-sparc-leon3-gr712rc.c
> +stlib: []
> +target: testsuites/validation/ts-bsp-sparc-leon3-gr712rc.exe
> +type: build
> +use-after:
> +- validation
> +use-before: []
> diff --git
> a/spec/build/testsuites/validation/fatal-bsp-sparc-leon3-cache-snooping-disabled-boot.yml
> b/spec/build/testsuites/validation/fatal-bsp-sparc-leon3-cache-snooping-disabled-boot.yml
> new file mode 100644
> index 0000000000..21543b96b3
> --- /dev/null
> +++
> b/spec/build/testsuites/validation/fatal-bsp-sparc-leon3-cache-snooping-disabled-boot.yml
> @@ -0,0 +1,24 @@
> +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
> +build-type: test-program
> +cflags: []
> +copyrights:
> +- Copyright (C) 2021 embedded brains GmbH & Co. KG
> +cppflags: []
> +cxxflags: []
> +enabled-by:
> + and:
> + - RTEMS_SMP
> + - bsps/sparc/leon3
> +features: c cprogram
> +includes: []
> +ldflags: []
> +links: []
> +source:
> +-
> testsuites/validation/tr-fatal-bsp-sparc-leon3-cache-snooping-disabled-boot.c
> +-
> testsuites/validation/ts-fatal-bsp-sparc-leon3-cache-snooping-disabled-boot.c
> +stlib: []
> +target:
> testsuites/validation/ts-fatal-bsp-sparc-leon3-cache-snooping-disabled-boot.exe
> +type: build
> +use-after:
> +- validation
> +use-before: []
> diff --git
> a/spec/build/testsuites/validation/fatal-bsp-sparc-leon3-cache-snooping-disabled-secondary.yml
> b/spec/build/testsuites/validation/fatal-bsp-sparc-leon3-cache-snooping-disabled-secondary.yml
> new file mode 100644
> index 0000000000..8b3259ee88
> --- /dev/null
> +++
> b/spec/build/testsuites/validation/fatal-bsp-sparc-leon3-cache-snooping-disabled-secondary.yml
> @@ -0,0 +1,25 @@
> +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
> +build-type: test-program
> +cflags: []
> +copyrights:
> +- Copyright (C) 2021 embedded brains GmbH & Co. KG
> +cppflags: []
> +cxxflags: []
> +enabled-by:
> + and:
> + - RTEMS_SMP
> + - bsps/sparc/leon3
> +features: c cprogram
> +includes: []
> +ldflags:
> +- -Wl,--wrap=bsp_start_on_secondary_processor
> +links: []
> +source:
> +-
> testsuites/validation/tr-fatal-bsp-sparc-leon3-cache-snooping-disabled-secondary.c
> +-
> testsuites/validation/ts-fatal-bsp-sparc-leon3-cache-snooping-disabled-secondary.c
> +stlib: []
> +target:
> testsuites/validation/ts-fatal-bsp-sparc-leon3-cache-snooping-disabled-secondary.exe
> +type: build
> +use-after:
> +- validation
> +use-before: []
> diff --git
> a/spec/build/testsuites/validation/fatal-bsp-sparc-leon3-clock-initialization.yml
> b/spec/build/testsuites/validation/fatal-bsp-sparc-leon3-clock-initialization.yml
> new file mode 100644
> index 0000000000..657dde00af
> --- /dev/null
> +++
> b/spec/build/testsuites/validation/fatal-bsp-sparc-leon3-clock-initialization.yml
> @@ -0,0 +1,21 @@
> +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
> +build-type: test-program
> +cflags: []
> +copyrights:
> +- Copyright (C) 2021 embedded brains GmbH & Co. KG
> +cppflags: []
> +cxxflags: []
> +enabled-by: bsps/sparc/leon3
> +features: c cprogram
> +includes: []
> +ldflags: []
> +links: []
> +source:
> +- testsuites/validation/tr-fatal-bsp-sparc-leon3-clock-initialization.c
> +- testsuites/validation/ts-fatal-bsp-sparc-leon3-clock-initialization.c
> +stlib: []
> +target:
> testsuites/validation/ts-fatal-bsp-sparc-leon3-clock-initialization.exe
> +type: build
> +use-after:
> +- validation
> +use-before: []
> diff --git
> a/spec/build/testsuites/validation/fatal-bsp-sparc-leon3-shutdown.yml
> b/spec/build/testsuites/validation/fatal-bsp-sparc-leon3-shutdown.yml
> new file mode 100644
> index 0000000000..fff8a48f9c
> --- /dev/null
> +++ b/spec/build/testsuites/validation/fatal-bsp-sparc-leon3-shutdown.yml
> @@ -0,0 +1,24 @@
> +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
> +build-type: test-program
> +cflags: []
> +copyrights:
> +- Copyright (C) 2022 embedded brains GmbH & Co. KG
> +cppflags: []
> +cxxflags: []
> +enabled-by:
> + and:
> + - RTEMS_SMP
> + - bsps/sparc/leon3
> +features: c cprogram
> +includes: []
> +ldflags: []
> +links: []
> +source:
> +- testsuites/validation/tc-fatal-bsp-sparc-leon3-shutdown.c
> +- testsuites/validation/ts-fatal-bsp-sparc-leon3-shutdown.c
> +stlib: []
> +target: testsuites/validation/ts-fatal-bsp-sparc-leon3-shutdown.exe
> +type: build
> +use-after:
> +- validation
> +use-before: []
> diff --git a/spec/build/testsuites/validation/grp.yml
> b/spec/build/testsuites/validation/grp.yml
> index 9aa9daff44..2c4b4f4b03 100644
> --- a/spec/build/testsuites/validation/grp.yml
> +++ b/spec/build/testsuites/validation/grp.yml
> @@ -15,8 +15,18 @@ ldflags: []
> links:
> - role: build-dependency
> uid: libvalidation
> +- role: build-dependency
> + uid: bsp-sparc-leon3-gr712rc
> - role: build-dependency
> uid: fatal-boot-processor-not-assigned-to-scheduler
> +- role: build-dependency
> + uid: fatal-bsp-sparc-leon3-cache-snooping-disabled-boot
> +- role: build-dependency
> + uid: fatal-bsp-sparc-leon3-cache-snooping-disabled-secondary
> +- role: build-dependency
> + uid: fatal-bsp-sparc-leon3-clock-initialization
> +- role: build-dependency
> + uid: fatal-bsp-sparc-leon3-shutdown
> - role: build-dependency
> uid: fatal-idle-thread-create-failed
> - role: build-dependency
> diff --git a/testsuites/validation/tc-bsp-sparc-leon3-gr712rc.c
> b/testsuites/validation/tc-bsp-sparc-leon3-gr712rc.c
> new file mode 100644
> index 0000000000..50629443c5
> --- /dev/null
> +++ b/testsuites/validation/tc-bsp-sparc-leon3-gr712rc.c
> @@ -0,0 +1,124 @@
> +/* SPDX-License-Identifier: BSD-2-Clause */
> +
> +/**
> + * @file
> + *
> + * @ingroup BspSparcLeon3ValGr712rc
> + */
> +
> +/*
> + * Copyright (C) 2021 embedded brains GmbH & Co. KG
> + *
> + * 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.
> + */
> +
> +/*
> + * This file is part of the RTEMS quality process and was automatically
> + * generated. If you find something that needs to be fixed or
> + * worded better please post a report or patch to an RTEMS mailing list
> + * or raise a bug report:
> + *
> + * https://www.rtems.org/bugs.html
> + *
> + * For information on updating and regenerating please refer to the How-To
> + * section in the Software Requirements Engineering chapter of the
> + * RTEMS Software Engineering manual. The manual is provided as a part of
> + * a release. For development sources please refer to the online
> + * documentation at:
> + *
> + * https://docs.rtems.org
> + */
> +
> +#ifdef HAVE_CONFIG_H
> +#include "config.h"
> +#endif
> +
> +#include <bsp.h>
> +
> +#include "tx-support.h"
> +
> +#include <rtems/test.h>
> +
> +/**
> + * @defgroup BspSparcLeon3ValGr712rc spec:/bsp/sparc/leon3/val/gr712rc
> + *
> + * @ingroup TestsuitesBspSparcLeon3Gr712rc
> + *
> + * @brief This test case collection provides validation test cases for the
> + * ``sparc/gr712rc`` BSP.
> + *
> + * This test case performs the following actions:
> + *
> + * - Validate the use of the ``-mfix-gr712rc`` compiler option.
> + *
> + * - Check that the compiler built-in define ``__FIX_LEON3FT_B2BST`` is
> + * defined.
> + *
> + * - Check that the compiler built-in define ``__FIX_LEON3FT_TN0018`` is
> + * defined.
> + *
> + * - Check that the ``SPARC_LEON3FT_B2BST_NOP`` define expands to a
> ``nop``
> + * instruction.
> + *
> + * @{
> + */
> +
> +/**
> + * @brief Validate the use of the ``-mfix-gr712rc`` compiler option.
> + */
> +static void BspSparcLeon3ValGr712rc_Action_0( void )
> +{
> + const char *s;
> +
> + /*
> + * Check that the compiler built-in define ``__FIX_LEON3FT_B2BST`` is
> + * defined.
> + */
> + #if !defined(__FIX_LEON3FT_B2BST)
> + #error "__FIX_LEON3FT_B2BST is not defined"
> + #endif
> +
> + /*
> + * Check that the compiler built-in define ``__FIX_LEON3FT_TN0018`` is
> + * defined.
> + */
> + #if !defined(__FIX_LEON3FT_TN0018)
> + #error "__FIX_LEON3FT_TN0018 is not defined"
> + #endif
> +
> + /*
> + * Check that the ``SPARC_LEON3FT_B2BST_NOP`` define expands to a
> ``nop``
> + * instruction.
> + */
> + s = RTEMS_XSTRING( SPARC_LEON3FT_B2BST_NOP );
> + T_true( IsEqualIgnoreWhiteSpace( s, "nop" ) );
> +}
> +
> +/**
> + * @fn void T_case_body_BspSparcLeon3ValGr712rc( void )
> + */
> +T_TEST_CASE( BspSparcLeon3ValGr712rc )
> +{
> + BspSparcLeon3ValGr712rc_Action_0();
> +}
> +
> +/** @} */
> diff --git a/testsuites/validation/tc-fatal-bsp-sparc-leon3-shutdown.c
> b/testsuites/validation/tc-fatal-bsp-sparc-leon3-shutdown.c
> new file mode 100644
> index 0000000000..3da1360129
> --- /dev/null
> +++ b/testsuites/validation/tc-fatal-bsp-sparc-leon3-shutdown.c
> @@ -0,0 +1,211 @@
> +/* SPDX-License-Identifier: BSD-2-Clause */
> +
> +/**
> + * @file
> + *
> + * @ingroup BspSparcLeon3ValFatalShutdown
> + */
> +
> +/*
> + * Copyright (C) 2021, 2022 embedded brains GmbH & Co. KG
> + *
> + * 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.
> + */
> +
> +/*
> + * This file is part of the RTEMS quality process and was automatically
> + * generated. If you find something that needs to be fixed or
> + * worded better please post a report or patch to an RTEMS mailing list
> + * or raise a bug report:
> + *
> + * https://www.rtems.org/bugs.html
> + *
> + * For information on updating and regenerating please refer to the How-To
> + * section in the Software Requirements Engineering chapter of the
> + * RTEMS Software Engineering manual. The manual is provided as a part of
> + * a release. For development sources please refer to the online
> + * documentation at:
> + *
> + * https://docs.rtems.org
> + */
> +
> +#ifdef HAVE_CONFIG_H
> +#include "config.h"
> +#endif
> +
> +#include <bsp/leon3.h>
> +#include <rtems/sysinit.h>
> +#include <rtems/score/smpimpl.h>
> +
> +#include "tx-support.h"
> +
> +#include <rtems/test.h>
> +
> +/**
> + * @defgroup BspSparcLeon3ValFatalShutdown \
> + * spec:/bsp/sparc/leon3/val/fatal-shutdown
> + *
> + * @ingroup TestsuitesFatalBspSparcLeon3Shutdown
> + *
> + * @brief Tests the leon3 BSP family shutdown procedure.
> + *
> + * This test case performs the following actions:
> + *
> + * - Check the effects of the leon3 BSP family shutdown procedure.
> + *
> + * - Check that the second processor was not powered down during system
> + * initialization.
> + *
> + * - Wait until the second processor is powered down.
> + *
> + * - Check that the RTEMS_FATAL_SOURCE_SMP with
> SMP_FATAL_SHUTDOWN_RESPONSE
> + * fatal error occurred exactly once.
> + *
> + * - Check that the RTEMS_FATAL_SOURCE_SMP with
> SMP_FATAL_SHUTDOWN_RESPONSE
> + * fatal error occurred on the second processor.
> + *
> + * - Check that no dynamic fatal error extension was invoked. This
> shows
> + * that the leon3 BSP family shutdown procedure called the wrapped
> + * _CPU_Fatal_halt() function of the test suite.
> + *
> + * @{
> + */
> +
> +static uint32_t mpstat_during_sysinit;
> +
> +static Atomic_Uint shutdown_response_counter;
> +
> +static uint32_t shutdown_response_cpu_index = UINT32_MAX;
> +
> +static Atomic_Uint dynamic_fatal_extension_counter;
> +
> +static rtems_status_code status;
> +
> +static unsigned int Add( Atomic_Uint *a, unsigned int b )
> +{
> + return _Atomic_Fetch_add_uint( a, b, ATOMIC_ORDER_RELAXED );
> +}
> +
> +static void ShutdownFatalHandler(
> + rtems_fatal_source source,
> + rtems_fatal_code code,
> + void *arg
> +)
> +{
> + T_null( arg );
> +
> + if (
> + source == RTEMS_FATAL_SOURCE_SMP &&
> + code == SMP_FATAL_SHUTDOWN_RESPONSE
> + ) {
> + (void) Add( &shutdown_response_counter, 1 );
> + shutdown_response_cpu_index = rtems_scheduler_get_processor();
> + }
> +}
> +
> +static void DynamicFatalHandler(
> + rtems_fatal_source source,
> + bool always_set_to_false,
> + rtems_fatal_code code
> +)
> +{
> + (void) source;
> + (void) code;
> + (void) always_set_to_false;
> + (void) Add( &dynamic_fatal_extension_counter, 1 );
> +}
> +
> +static void InitTestCase( void )
> +{
> + rtems_extensions_table table = { .fatal = DynamicFatalHandler };
> + irqamp *regs;
> + rtems_id id;
> +
> + regs = LEON3_IrqCtrl_Regs;
> + mpstat_during_sysinit = grlib_load_32( ®s->mpstat );
> + SetFatalHandler( ShutdownFatalHandler, NULL );
> + status = rtems_extension_create( OBJECT_NAME, &table, &id );
> +}
> +
> +RTEMS_SYSINIT_ITEM(
> + InitTestCase,
> + RTEMS_SYSINIT_DEVICE_DRIVERS,
> + RTEMS_SYSINIT_ORDER_MIDDLE
> +);
> +
> +/**
> + * @brief Check the effects of the leon3 BSP family shutdown procedure.
> + */
> +static void BspSparcLeon3ValFatalShutdown_Action_0( void )
> +{
> + irqamp *regs;
> + uint32_t counter;
> +
> + regs = LEON3_IrqCtrl_Regs;
> +
> + /*
> + * Check that the second processor was not powered down during system
> + * initialization.
> + */
> + T_step_eq_u32( 0, mpstat_during_sysinit & 0x2, 0 );
> +
> + /*
> + * Wait until the second processor is powered down.
> + */
> + while ( ( grlib_load_32( ®s->mpstat ) & 0x2 ) != 0x2U ) {
> + /* Wait */
> + }
> +
> + /*
> + * Check that the RTEMS_FATAL_SOURCE_SMP with
> SMP_FATAL_SHUTDOWN_RESPONSE
> + * fatal error occurred exactly once.
> + */
> + counter = Add( &shutdown_response_counter, 0 );
> + T_step_eq_uint( 1, counter, 1 );
> +
> + /*
> + * Check that the RTEMS_FATAL_SOURCE_SMP with
> SMP_FATAL_SHUTDOWN_RESPONSE
> + * fatal error occurred on the second processor.
> + */
> + T_step_eq_u32( 2, shutdown_response_cpu_index, 1 );
> +
> + /*
> + * Check that no dynamic fatal error extension was invoked. This shows
> that
> + * the leon3 BSP family shutdown procedure called the wrapped
> + * _CPU_Fatal_halt() function of the test suite.
> + */
> + T_step_rsc_success( 3, status );
> + counter = Add( &dynamic_fatal_extension_counter, 0 );
> + T_step_eq_u32( 4, dynamic_fatal_extension_counter, 0 );
> +}
> +
> +/**
> + * @fn void T_case_body_BspSparcLeon3ValFatalShutdown( void )
> + */
> +T_TEST_CASE( BspSparcLeon3ValFatalShutdown )
> +{
> + T_plan( 5 );
> +
> + BspSparcLeon3ValFatalShutdown_Action_0();
> +}
> +
> +/** @} */
> diff --git
> a/testsuites/validation/tr-fatal-bsp-sparc-leon3-cache-snooping-disabled-boot.c
> b/testsuites/validation/tr-fatal-bsp-sparc-leon3-cache-snooping-disabled-boot.c
> new file mode 100644
> index 0000000000..dafe47eb91
> --- /dev/null
> +++
> b/testsuites/validation/tr-fatal-bsp-sparc-leon3-cache-snooping-disabled-boot.c
> @@ -0,0 +1,175 @@
> +/* SPDX-License-Identifier: BSD-2-Clause */
> +
> +/**
> + * @file
> + *
> + * @ingroup BspSparcLeon3ValFatalCacheSnoopingDisabledBoot
> + */
> +
> +/*
> + * Copyright (C) 2021 embedded brains GmbH & Co. KG
> + *
> + * 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.
> + */
> +
> +/*
> + * This file is part of the RTEMS quality process and was automatically
> + * generated. If you find something that needs to be fixed or
> + * worded better please post a report or patch to an RTEMS mailing list
> + * or raise a bug report:
> + *
> + * https://www.rtems.org/bugs.html
> + *
> + * For information on updating and regenerating please refer to the How-To
> + * section in the Software Requirements Engineering chapter of the
> + * RTEMS Software Engineering manual. The manual is provided as a part of
> + * a release. For development sources please refer to the online
> + * documentation at:
> + *
> + * https://docs.rtems.org
> + */
> +
> +#ifdef HAVE_CONFIG_H
> +#include "config.h"
> +#endif
> +
> +#include <bsp/fatal.h>
> +#include <bsp/leon3.h>
> +#include <rtems/sysinit.h>
> +
> +#include "tr-fatal-bsp-sparc-leon3-cache-snooping-disabled-boot.h"
> +
> +#include <rtems/test.h>
> +
> +/**
> + * @defgroup BspSparcLeon3ValFatalCacheSnoopingDisabledBoot \
> + * spec:/bsp/sparc/leon3/val/fatal-cache-snooping-disabled-boot
> + *
> + * @ingroup TestsuitesFatalBspSparcLeon3CacheSnoopingDisabledBoot
> + *
> + * @brief Tests a fatal error.
> + *
> + * This test case performs the following actions:
> + *
> + * - The test action is carried out by the DisableCacheSnooping() system
> + * initialization handler.
> + *
> + * - Check that the expected fatal source is present.
> + *
> + * - Check that the expected fatal code is present.
> + *
> + * @{
> + */
> +
> +/**
> + * @brief Test context for
> + * spec:/bsp/sparc/leon3/val/fatal-cache-snooping-disabled-boot test
> case.
> + */
> +typedef struct {
> + /**
> + * @brief This member contains a copy of the corresponding
> + * BspSparcLeon3ValFatalCacheSnoopingDisabledBoot_Run() parameter.
> + */
> + rtems_fatal_source source;
> +
> + /**
> + * @brief This member contains a copy of the corresponding
> + * BspSparcLeon3ValFatalCacheSnoopingDisabledBoot_Run() parameter.
> + */
> + rtems_fatal_code code;
> +} BspSparcLeon3ValFatalCacheSnoopingDisabledBoot_Context;
> +
> +static BspSparcLeon3ValFatalCacheSnoopingDisabledBoot_Context
> + BspSparcLeon3ValFatalCacheSnoopingDisabledBoot_Instance;
> +
> +static void DisableCacheSnooping( void )
> +{
> + uint32_t control;
> +
> + control = leon3_get_cache_control_register();
> + control &= ~LEON3_REG_CACHE_CTRL_DS;
> + leon3_set_cache_control_register( control );
> +}
> +
> +RTEMS_SYSINIT_ITEM(
> + DisableCacheSnooping,
> + RTEMS_SYSINIT_BSP_EARLY,
> + RTEMS_SYSINIT_ORDER_FIRST
> +);
> +
> +static T_fixture BspSparcLeon3ValFatalCacheSnoopingDisabledBoot_Fixture =
> {
> + .setup = NULL,
> + .stop = NULL,
> + .teardown = NULL,
> + .scope = NULL,
> + .initial_context =
> &BspSparcLeon3ValFatalCacheSnoopingDisabledBoot_Instance
> +};
> +
> +/**
> + * @brief The test action is carried out by the DisableCacheSnooping()
> system
> + * initialization handler.
> + */
> +static void BspSparcLeon3ValFatalCacheSnoopingDisabledBoot_Action_0(
> + BspSparcLeon3ValFatalCacheSnoopingDisabledBoot_Context *ctx
> +)
> +{
> + /* Nothing to do */
> +
> + /*
> + * Check that the expected fatal source is present.
> + */
> + T_step_eq_int( 0, ctx->source, RTEMS_FATAL_SOURCE_BSP );
> +
> + /*
> + * Check that the expected fatal code is present.
> + */
> + T_step_eq_ulong(
> + 1,
> + ctx->code,
> + LEON3_FATAL_INVALID_CACHE_CONFIG_BOOT_PROCESSOR
> + );
> +}
> +
> +void BspSparcLeon3ValFatalCacheSnoopingDisabledBoot_Run(
> + rtems_fatal_source source,
> + rtems_fatal_code code
> +)
> +{
> + BspSparcLeon3ValFatalCacheSnoopingDisabledBoot_Context *ctx;
> +
> + ctx = &BspSparcLeon3ValFatalCacheSnoopingDisabledBoot_Instance;
> + ctx->source = source;
> + ctx->code = code;
> +
> + ctx = T_case_begin(
> + "BspSparcLeon3ValFatalCacheSnoopingDisabledBoot",
> + &BspSparcLeon3ValFatalCacheSnoopingDisabledBoot_Fixture
> + );
> +
> + T_plan( 2 );
> +
> + BspSparcLeon3ValFatalCacheSnoopingDisabledBoot_Action_0( ctx );
> +
> + T_case_end();
> +}
> +
> +/** @} */
> diff --git
> a/testsuites/validation/tr-fatal-bsp-sparc-leon3-cache-snooping-disabled-boot.h
> b/testsuites/validation/tr-fatal-bsp-sparc-leon3-cache-snooping-disabled-boot.h
> new file mode 100644
> index 0000000000..b3fd1e10cb
> --- /dev/null
> +++
> b/testsuites/validation/tr-fatal-bsp-sparc-leon3-cache-snooping-disabled-boot.h
> @@ -0,0 +1,84 @@
> +/* SPDX-License-Identifier: BSD-2-Clause */
> +
> +/**
> + * @file
> + *
> + * @ingroup BspSparcLeon3ValFatalCacheSnoopingDisabledBoot
> + */
> +
> +/*
> + * Copyright (C) 2021 embedded brains GmbH & Co. KG
> + *
> + * 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.
> + */
> +
> +/*
> + * This file is part of the RTEMS quality process and was automatically
> + * generated. If you find something that needs to be fixed or
> + * worded better please post a report or patch to an RTEMS mailing list
> + * or raise a bug report:
> + *
> + * https://www.rtems.org/bugs.html
> + *
> + * For information on updating and regenerating please refer to the How-To
> + * section in the Software Requirements Engineering chapter of the
> + * RTEMS Software Engineering manual. The manual is provided as a part of
> + * a release. For development sources please refer to the online
> + * documentation at:
> + *
> + * https://docs.rtems.org
> + */
> +
> +#ifndef _TR_FATAL_BSP_SPARC_LEON3_CACHE_SNOOPING_DISABLED_BOOT_H
> +#define _TR_FATAL_BSP_SPARC_LEON3_CACHE_SNOOPING_DISABLED_BOOT_H
> +
> +#include <rtems.h>
> +
> +#ifdef __cplusplus
> +extern "C" {
> +#endif
> +
> +/**
> + * @addtogroup BspSparcLeon3ValFatalCacheSnoopingDisabledBoot
> + *
> + * @{
> + */
> +
> +/**
> + * @brief Runs the parameterized test case.
> + *
> + * @param source is fatal source.
> + *
> + * @param code is fatal code.
> + */
> +void BspSparcLeon3ValFatalCacheSnoopingDisabledBoot_Run(
> + rtems_fatal_source source,
> + rtems_fatal_code code
> +);
> +
> +/** @} */
> +
> +#ifdef __cplusplus
> +}
> +#endif
> +
> +#endif /* _TR_FATAL_BSP_SPARC_LEON3_CACHE_SNOOPING_DISABLED_BOOT_H */
> diff --git
> a/testsuites/validation/tr-fatal-bsp-sparc-leon3-cache-snooping-disabled-secondary.c
> b/testsuites/validation/tr-fatal-bsp-sparc-leon3-cache-snooping-disabled-secondary.c
> new file mode 100644
> index 0000000000..4b22923500
> --- /dev/null
> +++
> b/testsuites/validation/tr-fatal-bsp-sparc-leon3-cache-snooping-disabled-secondary.c
> @@ -0,0 +1,176 @@
> +/* SPDX-License-Identifier: BSD-2-Clause */
> +
> +/**
> + * @file
> + *
> + * @ingroup BspSparcLeon3ValFatalCacheSnoopingDisabledSecondary
> + */
> +
> +/*
> + * Copyright (C) 2021 embedded brains GmbH & Co. KG
> + *
> + * 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.
> + */
> +
> +/*
> + * This file is part of the RTEMS quality process and was automatically
> + * generated. If you find something that needs to be fixed or
> + * worded better please post a report or patch to an RTEMS mailing list
> + * or raise a bug report:
> + *
> + * https://www.rtems.org/bugs.html
> + *
> + * For information on updating and regenerating please refer to the How-To
> + * section in the Software Requirements Engineering chapter of the
> + * RTEMS Software Engineering manual. The manual is provided as a part of
> + * a release. For development sources please refer to the online
> + * documentation at:
> + *
> + * https://docs.rtems.org
> + */
> +
> +#ifdef HAVE_CONFIG_H
> +#include "config.h"
> +#endif
> +
> +#include <bsp/bootcard.h>
> +#include <bsp/fatal.h>
> +#include <bsp/leon3.h>
> +
> +#include "tr-fatal-bsp-sparc-leon3-cache-snooping-disabled-secondary.h"
> +
> +#include <rtems/test.h>
> +
> +/**
> + * @defgroup BspSparcLeon3ValFatalCacheSnoopingDisabledSecondary \
> + * spec:/bsp/sparc/leon3/val/fatal-cache-snooping-disabled-secondary
> + *
> + * @ingroup TestsuitesFatalBspSparcLeon3CacheSnoopingDisabledSecondary
> + *
> + * @brief Tests a fatal error.
> + *
> + * This test case performs the following actions:
> + *
> + * - The test action is carried out by the wrapped
> + * bsp_start_on_secondary_processor() function.
> + *
> + * - Check that the expected fatal source is present.
> + *
> + * - Check that the expected fatal code is present.
> + *
> + * @{
> + */
> +
> +/**
> + * @brief Test context for
> + * spec:/bsp/sparc/leon3/val/fatal-cache-snooping-disabled-secondary
> test
> + * case.
> + */
> +typedef struct {
> + /**
> + * @brief This member contains a copy of the corresponding
> + * BspSparcLeon3ValFatalCacheSnoopingDisabledSecondary_Run()
> parameter.
> + */
> + rtems_fatal_source source;
> +
> + /**
> + * @brief This member contains a copy of the corresponding
> + * BspSparcLeon3ValFatalCacheSnoopingDisabledSecondary_Run()
> parameter.
> + */
> + rtems_fatal_code code;
> +} BspSparcLeon3ValFatalCacheSnoopingDisabledSecondary_Context;
> +
> +static BspSparcLeon3ValFatalCacheSnoopingDisabledSecondary_Context
> + BspSparcLeon3ValFatalCacheSnoopingDisabledSecondary_Instance;
> +
> +void __real_bsp_start_on_secondary_processor( struct Per_CPU_Control
> *cpu_self );
> +
> +void __wrap_bsp_start_on_secondary_processor( struct Per_CPU_Control
> *cpu_self );
> +
> +void __wrap_bsp_start_on_secondary_processor( struct Per_CPU_Control
> *cpu_self )
> +{
> + uint32_t control;
> +
> + control = leon3_get_cache_control_register();
> + control &= ~LEON3_REG_CACHE_CTRL_DS;
> + leon3_set_cache_control_register( control );
> +
> + __real_bsp_start_on_secondary_processor( cpu_self );
> +}
> +
> +static T_fixture
> BspSparcLeon3ValFatalCacheSnoopingDisabledSecondary_Fixture = {
> + .setup = NULL,
> + .stop = NULL,
> + .teardown = NULL,
> + .scope = NULL,
> + .initial_context =
> &BspSparcLeon3ValFatalCacheSnoopingDisabledSecondary_Instance
> +};
> +
> +/**
> + * @brief The test action is carried out by the wrapped
> + * bsp_start_on_secondary_processor() function.
> + */
> +static void BspSparcLeon3ValFatalCacheSnoopingDisabledSecondary_Action_0(
> + BspSparcLeon3ValFatalCacheSnoopingDisabledSecondary_Context *ctx
> +)
> +{
> + /* Nothing to do */
> +
> + /*
> + * Check that the expected fatal source is present.
> + */
> + T_step_eq_int( 0, ctx->source, RTEMS_FATAL_SOURCE_BSP );
> +
> + /*
> + * Check that the expected fatal code is present.
> + */
> + T_step_eq_ulong(
> + 1,
> + ctx->code,
> + LEON3_FATAL_INVALID_CACHE_CONFIG_SECONDARY_PROCESSOR
> + );
> +}
> +
> +void BspSparcLeon3ValFatalCacheSnoopingDisabledSecondary_Run(
> + rtems_fatal_source source,
> + rtems_fatal_code code
> +)
> +{
> + BspSparcLeon3ValFatalCacheSnoopingDisabledSecondary_Context *ctx;
> +
> + ctx = &BspSparcLeon3ValFatalCacheSnoopingDisabledSecondary_Instance;
> + ctx->source = source;
> + ctx->code = code;
> +
> + ctx = T_case_begin(
> + "BspSparcLeon3ValFatalCacheSnoopingDisabledSecondary",
> + &BspSparcLeon3ValFatalCacheSnoopingDisabledSecondary_Fixture
> + );
> +
> + T_plan( 2 );
> +
> + BspSparcLeon3ValFatalCacheSnoopingDisabledSecondary_Action_0( ctx );
> +
> + T_case_end();
> +}
> +
> +/** @} */
> diff --git
> a/testsuites/validation/tr-fatal-bsp-sparc-leon3-cache-snooping-disabled-secondary.h
> b/testsuites/validation/tr-fatal-bsp-sparc-leon3-cache-snooping-disabled-secondary.h
> new file mode 100644
> index 0000000000..14412cdec7
> --- /dev/null
> +++
> b/testsuites/validation/tr-fatal-bsp-sparc-leon3-cache-snooping-disabled-secondary.h
> @@ -0,0 +1,84 @@
> +/* SPDX-License-Identifier: BSD-2-Clause */
> +
> +/**
> + * @file
> + *
> + * @ingroup BspSparcLeon3ValFatalCacheSnoopingDisabledSecondary
> + */
> +
> +/*
> + * Copyright (C) 2021 embedded brains GmbH & Co. KG
> + *
> + * 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.
> + */
> +
> +/*
> + * This file is part of the RTEMS quality process and was automatically
> + * generated. If you find something that needs to be fixed or
> + * worded better please post a report or patch to an RTEMS mailing list
> + * or raise a bug report:
> + *
> + * https://www.rtems.org/bugs.html
> + *
> + * For information on updating and regenerating please refer to the How-To
> + * section in the Software Requirements Engineering chapter of the
> + * RTEMS Software Engineering manual. The manual is provided as a part of
> + * a release. For development sources please refer to the online
> + * documentation at:
> + *
> + * https://docs.rtems.org
> + */
> +
> +#ifndef _TR_FATAL_BSP_SPARC_LEON3_CACHE_SNOOPING_DISABLED_SECONDARY_H
> +#define _TR_FATAL_BSP_SPARC_LEON3_CACHE_SNOOPING_DISABLED_SECONDARY_H
> +
> +#include <rtems.h>
> +
> +#ifdef __cplusplus
> +extern "C" {
> +#endif
> +
> +/**
> + * @addtogroup BspSparcLeon3ValFatalCacheSnoopingDisabledSecondary
> + *
> + * @{
> + */
> +
> +/**
> + * @brief Runs the parameterized test case.
> + *
> + * @param source is fatal source.
> + *
> + * @param code is fatal code.
> + */
> +void BspSparcLeon3ValFatalCacheSnoopingDisabledSecondary_Run(
> + rtems_fatal_source source,
> + rtems_fatal_code code
> +);
> +
> +/** @} */
> +
> +#ifdef __cplusplus
> +}
> +#endif
> +
> +#endif /* _TR_FATAL_BSP_SPARC_LEON3_CACHE_SNOOPING_DISABLED_SECONDARY_H */
> diff --git
> a/testsuites/validation/tr-fatal-bsp-sparc-leon3-clock-initialization.c
> b/testsuites/validation/tr-fatal-bsp-sparc-leon3-clock-initialization.c
> new file mode 100644
> index 0000000000..b74b283985
> --- /dev/null
> +++ b/testsuites/validation/tr-fatal-bsp-sparc-leon3-clock-initialization.c
> @@ -0,0 +1,190 @@
> +/* SPDX-License-Identifier: BSD-2-Clause */
> +
> +/**
> + * @file
> + *
> + * @ingroup BspSparcLeon3ValFatalClockInitialization
> + */
> +
> +/*
> + * Copyright (C) 2021 embedded brains GmbH & Co. KG
> + *
> + * 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.
> + */
> +
> +/*
> + * This file is part of the RTEMS quality process and was automatically
> + * generated. If you find something that needs to be fixed or
> + * worded better please post a report or patch to an RTEMS mailing list
> + * or raise a bug report:
> + *
> + * https://www.rtems.org/bugs.html
> + *
> + * For information on updating and regenerating please refer to the How-To
> + * section in the Software Requirements Engineering chapter of the
> + * RTEMS Software Engineering manual. The manual is provided as a part of
> + * a release. For development sources please refer to the online
> + * documentation at:
> + *
> + * https://docs.rtems.org
> + */
> +
> +#ifdef HAVE_CONFIG_H
> +#include "config.h"
> +#endif
> +
> +#include <bsp/fatal.h>
> +#include <bsp/leon3.h>
> +#include <rtems/irq-extension.h>
> +#include <rtems/sysinit.h>
> +
> +#include "tr-fatal-bsp-sparc-leon3-clock-initialization.h"
> +
> +#include <rtems/test.h>
> +
> +/**
> + * @defgroup BspSparcLeon3ValFatalClockInitialization \
> + * spec:/bsp/sparc/leon3/val/fatal-clock-initialization
> + *
> + * @ingroup TestsuitesFatalBspSparcLeon3ClockInitialization
> + *
> + * @brief Tests a fatal error.
> + *
> + * This test case performs the following actions:
> + *
> + * - The test action is carried out by the OccupyClockInterrupt() system
> + * initialization handler.
> + *
> + * - Check that the expected fatal source is present.
> + *
> + * - Check that the expected fatal code is present.
> + *
> + * @{
> + */
> +
> +/**
> + * @brief Test context for
> spec:/bsp/sparc/leon3/val/fatal-clock-initialization
> + * test case.
> + */
> +typedef struct {
> + /**
> + * @brief This member contains a copy of the corresponding
> + * BspSparcLeon3ValFatalClockInitialization_Run() parameter.
> + */
> + rtems_fatal_source source;
> +
> + /**
> + * @brief This member contains a copy of the corresponding
> + * BspSparcLeon3ValFatalClockInitialization_Run() parameter.
> + */
> + rtems_fatal_code code;
> +} BspSparcLeon3ValFatalClockInitialization_Context;
> +
> +static BspSparcLeon3ValFatalClockInitialization_Context
> + BspSparcLeon3ValFatalClockInitialization_Instance;
> +
> +static void ClockInterrupt( void *arg )
> +{
> + (void) arg;
> +}
> +
> +static rtems_interrupt_entry interrupt_entry =
> RTEMS_INTERRUPT_ENTRY_INITIALIZER(
> + ClockInterrupt,
> + NULL,
> + "Clock"
> +);
> +
> +static void OccupyClockInterrupt( void )
> +{
> + rtems_vector_number vector;
> +
> + vector = GPTIMER_CONFIG_IRQ_GET( grlib_load_32(
> &LEON3_Timer_Regs->config ) );
> + (void) rtems_interrupt_entry_install(
> + vector,
> + RTEMS_INTERRUPT_UNIQUE,
> + &interrupt_entry
> + );
> +}
> +
> +RTEMS_SYSINIT_ITEM(
> + OccupyClockInterrupt,
> + RTEMS_SYSINIT_DEVICE_DRIVERS,
> + RTEMS_SYSINIT_ORDER_FIRST
> +);
> +
> +static T_fixture BspSparcLeon3ValFatalClockInitialization_Fixture = {
> + .setup = NULL,
> + .stop = NULL,
> + .teardown = NULL,
> + .scope = NULL,
> + .initial_context = &BspSparcLeon3ValFatalClockInitialization_Instance
> +};
> +
> +/**
> + * @brief The test action is carried out by the OccupyClockInterrupt()
> system
> + * initialization handler.
> + */
> +static void BspSparcLeon3ValFatalClockInitialization_Action_0(
> + BspSparcLeon3ValFatalClockInitialization_Context *ctx
> +)
> +{
> + /* Nothing to do */
> +
> + /*
> + * Check that the expected fatal source is present.
> + */
> + T_step_eq_int( 0, ctx->source, RTEMS_FATAL_SOURCE_BSP );
> +
> + /*
> + * Check that the expected fatal code is present.
> + */
> + T_step_eq_ulong(
> + 1,
> + ctx->code,
> + LEON3_FATAL_CLOCK_INITIALIZATION
> + );
> +}
> +
> +void BspSparcLeon3ValFatalClockInitialization_Run(
> + rtems_fatal_source source,
> + rtems_fatal_code code
> +)
> +{
> + BspSparcLeon3ValFatalClockInitialization_Context *ctx;
> +
> + ctx = &BspSparcLeon3ValFatalClockInitialization_Instance;
> + ctx->source = source;
> + ctx->code = code;
> +
> + ctx = T_case_begin(
> + "BspSparcLeon3ValFatalClockInitialization",
> + &BspSparcLeon3ValFatalClockInitialization_Fixture
> + );
> +
> + T_plan( 2 );
> +
> + BspSparcLeon3ValFatalClockInitialization_Action_0( ctx );
> +
> + T_case_end();
> +}
> +
> +/** @} */
> diff --git
> a/testsuites/validation/tr-fatal-bsp-sparc-leon3-clock-initialization.h
> b/testsuites/validation/tr-fatal-bsp-sparc-leon3-clock-initialization.h
> new file mode 100644
> index 0000000000..32289b43df
> --- /dev/null
> +++ b/testsuites/validation/tr-fatal-bsp-sparc-leon3-clock-initialization.h
> @@ -0,0 +1,84 @@
> +/* SPDX-License-Identifier: BSD-2-Clause */
> +
> +/**
> + * @file
> + *
> + * @ingroup BspSparcLeon3ValFatalClockInitialization
> + */
> +
> +/*
> + * Copyright (C) 2021 embedded brains GmbH & Co. KG
> + *
> + * 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.
> + */
> +
> +/*
> + * This file is part of the RTEMS quality process and was automatically
> + * generated. If you find something that needs to be fixed or
> + * worded better please post a report or patch to an RTEMS mailing list
> + * or raise a bug report:
> + *
> + * https://www.rtems.org/bugs.html
> + *
> + * For information on updating and regenerating please refer to the How-To
> + * section in the Software Requirements Engineering chapter of the
> + * RTEMS Software Engineering manual. The manual is provided as a part of
> + * a release. For development sources please refer to the online
> + * documentation at:
> + *
> + * https://docs.rtems.org
> + */
> +
> +#ifndef _TR_FATAL_BSP_SPARC_LEON3_CLOCK_INITIALIZATION_H
> +#define _TR_FATAL_BSP_SPARC_LEON3_CLOCK_INITIALIZATION_H
> +
> +#include <rtems.h>
> +
> +#ifdef __cplusplus
> +extern "C" {
> +#endif
> +
> +/**
> + * @addtogroup BspSparcLeon3ValFatalClockInitialization
> + *
> + * @{
> + */
> +
> +/**
> + * @brief Runs the parameterized test case.
> + *
> + * @param source is fatal source.
> + *
> + * @param code is fatal code.
> + */
> +void BspSparcLeon3ValFatalClockInitialization_Run(
> + rtems_fatal_source source,
> + rtems_fatal_code code
> +);
> +
> +/** @} */
> +
> +#ifdef __cplusplus
> +}
> +#endif
> +
> +#endif /* _TR_FATAL_BSP_SPARC_LEON3_CLOCK_INITIALIZATION_H */
> diff --git a/testsuites/validation/ts-bsp-sparc-leon3-gr712rc.c
> b/testsuites/validation/ts-bsp-sparc-leon3-gr712rc.c
> new file mode 100644
> index 0000000000..b844a7f217
> --- /dev/null
> +++ b/testsuites/validation/ts-bsp-sparc-leon3-gr712rc.c
> @@ -0,0 +1,72 @@
> +/* SPDX-License-Identifier: BSD-2-Clause */
> +
> +/**
> + * @file
> + *
> + * @ingroup TestsuitesBspSparcLeon3Gr712rc
> + */
> +
> +/*
> + * Copyright (C) 2021 embedded brains GmbH & Co. KG
> + *
> + * 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.
> + */
> +
> +/*
> + * This file is part of the RTEMS quality process and was automatically
> + * generated. If you find something that needs to be fixed or
> + * worded better please post a report or patch to an RTEMS mailing list
> + * or raise a bug report:
> + *
> + * https://www.rtems.org/bugs.html
> + *
> + * For information on updating and regenerating please refer to the How-To
> + * section in the Software Requirements Engineering chapter of the
> + * RTEMS Software Engineering manual. The manual is provided as a part of
> + * a release. For development sources please refer to the online
> + * documentation at:
> + *
> + * https://docs.rtems.org
> + */
> +
> +#ifdef HAVE_CONFIG_H
> +#include "config.h"
> +#endif
> +
> +#include <rtems/test.h>
> +
> +/**
> + * @defgroup TestsuitesBspSparcLeon3Gr712rc \
> + * spec:/testsuites/bsp-sparc-leon3-gr712rc
> + *
> + * @ingroup RTEMSTestSuitesValidation
> + *
> + * @brief This validation test suite contains BSP-specific test cases.
> + *
> + * @{
> + */
> +
> +const char rtems_test_name[] = "TestsuitesBspSparcLeon3Gr712rc";
> +
> +#include "ts-default.h"
> +
> +/** @} */
> diff --git
> a/testsuites/validation/ts-fatal-bsp-sparc-leon3-cache-snooping-disabled-boot.c
> b/testsuites/validation/ts-fatal-bsp-sparc-leon3-cache-snooping-disabled-boot.c
> new file mode 100644
> index 0000000000..a23139d7b5
> --- /dev/null
> +++
> b/testsuites/validation/ts-fatal-bsp-sparc-leon3-cache-snooping-disabled-boot.c
> @@ -0,0 +1,79 @@
> +/* SPDX-License-Identifier: BSD-2-Clause */
> +
> +/**
> + * @file
> + *
> + * @ingroup TestsuitesFatalBspSparcLeon3CacheSnoopingDisabledBoot
> + */
> +
> +/*
> + * Copyright (C) 2021 embedded brains GmbH & Co. KG
> + *
> + * 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.
> + */
> +
> +/*
> + * This file is part of the RTEMS quality process and was automatically
> + * generated. If you find something that needs to be fixed or
> + * worded better please post a report or patch to an RTEMS mailing list
> + * or raise a bug report:
> + *
> + * https://www.rtems.org/bugs.html
> + *
> + * For information on updating and regenerating please refer to the How-To
> + * section in the Software Requirements Engineering chapter of the
> + * RTEMS Software Engineering manual. The manual is provided as a part of
> + * a release. For development sources please refer to the online
> + * documentation at:
> + *
> + * https://docs.rtems.org
> + */
> +
> +#ifdef HAVE_CONFIG_H
> +#include "config.h"
> +#endif
> +
> +#include "tr-fatal-bsp-sparc-leon3-cache-snooping-disabled-boot.h"
> +
> +#include <rtems/test.h>
> +
> +/**
> + * @defgroup TestsuitesFatalBspSparcLeon3CacheSnoopingDisabledBoot \
> + * spec:/testsuites/fatal-bsp-sparc-leon3-cache-snooping-disabled-boot
> + *
> + * @ingroup RTEMSTestSuitesValidation
> + *
> + * @brief This validation test suite contains a test case which triggers a
> + * fatal error during system initialization.
> + *
> + * @{
> + */
> +
> +const char rtems_test_name[] =
> "TestsuitesFatalBspSparcLeon3CacheSnoopingDisabledBoot";
> +
> +#define FATAL_SYSINIT_RUN
> BspSparcLeon3ValFatalCacheSnoopingDisabledBoot_Run
> +
> +#define CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER
> +
> +#include "ts-fatal-sysinit.h"
> +
> +/** @} */
> diff --git
> a/testsuites/validation/ts-fatal-bsp-sparc-leon3-cache-snooping-disabled-secondary.c
> b/testsuites/validation/ts-fatal-bsp-sparc-leon3-cache-snooping-disabled-secondary.c
> new file mode 100644
> index 0000000000..b70c128b3d
> --- /dev/null
> +++
> b/testsuites/validation/ts-fatal-bsp-sparc-leon3-cache-snooping-disabled-secondary.c
> @@ -0,0 +1,82 @@
> +/* SPDX-License-Identifier: BSD-2-Clause */
> +
> +/**
> + * @file
> + *
> + * @ingroup TestsuitesFatalBspSparcLeon3CacheSnoopingDisabledSecondary
> + */
> +
> +/*
> + * Copyright (C) 2021 embedded brains GmbH & Co. KG
> + *
> + * 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.
> + */
> +
> +/*
> + * This file is part of the RTEMS quality process and was automatically
> + * generated. If you find something that needs to be fixed or
> + * worded better please post a report or patch to an RTEMS mailing list
> + * or raise a bug report:
> + *
> + * https://www.rtems.org/bugs.html
> + *
> + * For information on updating and regenerating please refer to the How-To
> + * section in the Software Requirements Engineering chapter of the
> + * RTEMS Software Engineering manual. The manual is provided as a part of
> + * a release. For development sources please refer to the online
> + * documentation at:
> + *
> + * https://docs.rtems.org
> + */
> +
> +#ifdef HAVE_CONFIG_H
> +#include "config.h"
> +#endif
> +
> +#include "tr-fatal-bsp-sparc-leon3-cache-snooping-disabled-secondary.h"
> +
> +#include <rtems/test.h>
> +
> +/**
> + * @defgroup TestsuitesFatalBspSparcLeon3CacheSnoopingDisabledSecondary \
> + *
> spec:/testsuites/fatal-bsp-sparc-leon3-cache-snooping-disabled-secondary
> + *
> + * @ingroup RTEMSTestSuitesValidation
> + *
> + * @brief This validation test suite contains a test case which triggers a
> + * fatal error during system initialization.
> + *
> + * @{
> + */
> +
> +const char rtems_test_name[] =
> "TestsuitesFatalBspSparcLeon3CacheSnoopingDisabledSecondary";
> +
> +#define FATAL_SYSINIT_RUN \
> + BspSparcLeon3ValFatalCacheSnoopingDisabledSecondary_Run
> +
> +#define CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER
> +
> +#define CONFIGURE_MAXIMUM_PROCESSORS 2
> +
> +#include "ts-fatal-sysinit.h"
> +
> +/** @} */
> diff --git
> a/testsuites/validation/ts-fatal-bsp-sparc-leon3-clock-initialization.c
> b/testsuites/validation/ts-fatal-bsp-sparc-leon3-clock-initialization.c
> new file mode 100644
> index 0000000000..41c8ca989c
> --- /dev/null
> +++ b/testsuites/validation/ts-fatal-bsp-sparc-leon3-clock-initialization.c
> @@ -0,0 +1,79 @@
> +/* SPDX-License-Identifier: BSD-2-Clause */
> +
> +/**
> + * @file
> + *
> + * @ingroup TestsuitesFatalBspSparcLeon3ClockInitialization
> + */
> +
> +/*
> + * Copyright (C) 2021 embedded brains GmbH & Co. KG
> + *
> + * 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.
> + */
> +
> +/*
> + * This file is part of the RTEMS quality process and was automatically
> + * generated. If you find something that needs to be fixed or
> + * worded better please post a report or patch to an RTEMS mailing list
> + * or raise a bug report:
> + *
> + * https://www.rtems.org/bugs.html
> + *
> + * For information on updating and regenerating please refer to the How-To
> + * section in the Software Requirements Engineering chapter of the
> + * RTEMS Software Engineering manual. The manual is provided as a part of
> + * a release. For development sources please refer to the online
> + * documentation at:
> + *
> + * https://docs.rtems.org
> + */
> +
> +#ifdef HAVE_CONFIG_H
> +#include "config.h"
> +#endif
> +
> +#include "tr-fatal-bsp-sparc-leon3-clock-initialization.h"
> +
> +#include <rtems/test.h>
> +
> +/**
> + * @defgroup TestsuitesFatalBspSparcLeon3ClockInitialization \
> + * spec:/testsuites/fatal-bsp-sparc-leon3-clock-initialization
> + *
> + * @ingroup RTEMSTestSuitesValidation
> + *
> + * @brief This validation test suite contains a test case which triggers a
> + * fatal error during system initialization.
> + *
> + * @{
> + */
> +
> +const char rtems_test_name[] =
> "TestsuitesFatalBspSparcLeon3ClockInitialization";
> +
> +#define FATAL_SYSINIT_RUN BspSparcLeon3ValFatalClockInitialization_Run
> +
> +#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
> +
> +#include "ts-fatal-sysinit.h"
> +
> +/** @} */
> diff --git
> a/testsuites/validation/ts-fatal-bsp-sparc-leon3-shutdown-response.c
> b/testsuites/validation/ts-fatal-bsp-sparc-leon3-shutdown-response.c
> new file mode 100644
> index 0000000000..fe38c013f0
> --- /dev/null
> +++ b/testsuites/validation/ts-fatal-bsp-sparc-leon3-shutdown-response.c
> @@ -0,0 +1,94 @@
> +/* SPDX-License-Identifier: BSD-2-Clause */
> +
> +/**
> + * @file
> + *
> + * @ingroup RTEMSTestSuiteTestsuitesFatalBspSparcLeon3ShutdownResponse
> + */
> +
> +/*
> + * Copyright (C) 2021 embedded brains GmbH & Co. KG
> + *
> + * 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.
> + */
> +
> +/*
> + * This file is part of the RTEMS quality process and was automatically
> + * generated. If you find something that needs to be fixed or
> + * worded better please post a report or patch to an RTEMS mailing list
> + * or raise a bug report:
> + *
> + * https://www.rtems.org/bugs.html
> + *
> + * For information on updating and regenerating please refer to the How-To
> + * section in the Software Requirements Engineering chapter of the
> + * RTEMS Software Engineering manual. The manual is provided as a part of
> + * a release. For development sources please refer to the online
> + * documentation at:
> + *
> + * https://docs.rtems.org
> + */
> +
> +#ifdef HAVE_CONFIG_H
> +#include "config.h"
> +#endif
> +
> +#include <rtems/score/smpimpl.h>
> +
> +#include "tr-fatal-bsp-sparc-leon3-shutdown-response.h"
> +
> +#include <rtems/test.h>
> +
> +/**
> + * @defgroup RTEMSTestSuiteTestsuitesFatalBspSparcLeon3ShutdownResponse \
> + * spec:/testsuites/fatal-bsp-sparc-leon3-shutdown-response
> + *
> + * @ingroup RTEMSTestSuitesValidation
> + *
> + * @brief This validation test suite contains a test case which performs a
> + * system shutdown.
> + *
> + * @{
> + */
> +
> +const char rtems_test_name[] = "FatalBspSparcLeon3ShutdownResponse";
> +
> +#define FATAL_SYSINIT_RUN BspSparcLeon3ValFatalShutdownResponse_Run
> +
> +static void FatalSysinitExit( rtems_fatal_code exit_code )
> +{
> + if ( exit_code == 0 ) {
> + rtems_fatal( RTEMS_FATAL_SOURCE_SMP, SMP_FATAL_SHUTDOWN );
> + } else {
> + rtems_fatal( RTEMS_FATAL_SOURCE_EXIT, exit_code );
> + }
> +}
> +
> +#define FATAL_SYSINIT_EXIT( exit_code ) FatalSysinitExit( exit_code )
> +
> +#define CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER
> +
> +#define CONFIGURE_MAXIMUM_PROCESSORS 2
> +
> +#include "ts-fatal-sysinit.h"
> +
> +/** @} */
> diff --git a/testsuites/validation/ts-fatal-bsp-sparc-leon3-shutdown.c
> b/testsuites/validation/ts-fatal-bsp-sparc-leon3-shutdown.c
> new file mode 100644
> index 0000000000..37bf8dc20a
> --- /dev/null
> +++ b/testsuites/validation/ts-fatal-bsp-sparc-leon3-shutdown.c
> @@ -0,0 +1,170 @@
> +/* SPDX-License-Identifier: BSD-2-Clause */
> +
> +/**
> + * @file
> + *
> + * @ingroup TestsuitesFatalBspSparcLeon3Shutdown
> + */
> +
> +/*
> + * Copyright (C) 2021, 2022 embedded brains GmbH & Co. KG
> + *
> + * 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.
> + */
> +
> +/*
> + * This file is part of the RTEMS quality process and was automatically
> + * generated. If you find something that needs to be fixed or
> + * worded better please post a report or patch to an RTEMS mailing list
> + * or raise a bug report:
> + *
> + * https://www.rtems.org/bugs.html
> + *
> + * For information on updating and regenerating please refer to the How-To
> + * section in the Software Requirements Engineering chapter of the
> + * RTEMS Software Engineering manual. The manual is provided as a part of
> + * a release. For development sources please refer to the online
> + * documentation at:
> + *
> + * https://docs.rtems.org
> + */
> +
> +#ifdef HAVE_CONFIG_H
> +#include "config.h"
> +#endif
> +
> +#include <rtems.h>
> +#include <rtems/bspIo.h>
> +#include <rtems/test-info.h>
> +#include <rtems/test.h>
> +#include <rtems/testopts.h>
> +#include <rtems/score/smpimpl.h>
> +
> +#include "ts-config.h"
> +#include "tx-support.h"
> +
> +#include <rtems/test.h>
> +
> +/**
> + * @defgroup TestsuitesFatalBspSparcLeon3Shutdown \
> + * spec:/testsuites/fatal-bsp-sparc-leon3-shutdown
> + *
> + * @ingroup RTEMSTestSuitesValidation
> + *
> + * @brief This validation test suite provides an application
> configuration to
> + * perform a shutdown.
> + *
> + * @{
> + */
> +
> +const char rtems_test_name[] = "TestsuitesFatalBspSparcLeon3Shutdown";
> +
> +static char buffer[ 512 ];
> +
> +static const T_action actions[] = {
> + T_report_hash_sha256
> +};
> +
> +static const T_config test_config = {
> + .name = rtems_test_name,
> + .buf = buffer,
> + .buf_size = sizeof( buffer ),
> + .putchar = rtems_put_char,
> + .verbosity = RTEMS_TEST_VERBOSITY,
> + .now = T_now_tick,
> + .allocate = T_memory_allocate,
> + .deallocate = T_memory_deallocate,
> + .action_count = T_ARRAY_SIZE( actions ),
> + .actions = actions
> +};
> +
> +void __real__CPU_Fatal_halt( uint32_t source, CPU_Uint32ptr code );
> +
> +void __wrap__CPU_Fatal_halt( uint32_t source, CPU_Uint32ptr code );
> +
> +void __wrap__CPU_Fatal_halt( uint32_t source, CPU_Uint32ptr code )
> +{
> + int exit_code;
> +
> + T_register();
> + exit_code = T_main( &test_config );
> +
> + if ( exit_code == 0 ) {
> + rtems_test_end( rtems_test_name );
> + }
> +
> +#if defined(RTEMS_GCOV_COVERAGE)
> + rtems_test_gcov_dump_info();
> +#endif
> + __real__CPU_Fatal_halt( source, code );
> +}
> +
> +#define CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER
> +
> +#define CONFIGURE_MAXIMUM_PROCESSORS 2
> +
> +#include <rtems/score/scheduleredfsmp.h>
> +
> +#define CONFIGURE_SCHEDULER_EDF_SMP
> +
> +#include <rtems/scheduler.h>
> +
> +RTEMS_SCHEDULER_EDF_SMP( a );
> +
> +#define CONFIGURE_SCHEDULER_TABLE_ENTRIES \
> + RTEMS_SCHEDULER_TABLE_EDF_SMP( a, TEST_SCHEDULER_A_NAME )
> +
> +#define CONFIGURE_SCHEDULER_ASSIGNMENTS \
> + RTEMS_SCHEDULER_ASSIGN( 0, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_MANDATORY
> ), \
> + RTEMS_SCHEDULER_ASSIGN( 0, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_MANDATORY )
> +
> +#define CONFIGURE_MAXIMUM_FILE_DESCRIPTORS 0
> +
> +#define CONFIGURE_MAXIMUM_USER_EXTENSIONS 1
> +
> +#define CONFIGURE_DISABLE_NEWLIB_REENTRANCY
> +
> +#define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
> +
> +#define CONFIGURE_IDLE_TASK_STORAGE_SIZE RTEMS_MINIMUM_STACK_SIZE
> +
> +#define CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION
> +
> +static void *ShutdownIdleBody( uintptr_t arg )
> +{
> + if ( rtems_scheduler_get_processor() == 0 ) {
> + rtems_test_begin( rtems_test_name, TEST_STATE );
> + rtems_fatal( RTEMS_FATAL_SOURCE_SMP, SMP_FATAL_SHUTDOWN );
> + }
> +
> + return _CPU_Thread_Idle_body( arg );
> +}
> +
> +#define CONFIGURE_IDLE_TASK_BODY ShutdownIdleBody
> +
> +#define CONFIGURE_INITIAL_EXTENSIONS { .fatal = FatalInitialExtension }
> +
> +#define CONFIGURE_INIT
> +
> +#include <rtems/confdefs.h>
> +
> +/** @} */
> --
> 2.35.3
>
> _______________________________________________
> devel mailing list
> devel at rtems.org
> http://lists.rtems.org/mailman/listinfo/devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/devel/attachments/20230531/0f797d60/attachment-0001.htm>
More information about the devel
mailing list