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