Use ifdeffery to guard code chunks meant specifically for arm64, in
preparation for putting signal tests in selftests/arm.

Signed-off-by: Dev Jain <dev.j...@arm.com>
---
 .../selftests/arm/signal/test_signals.c       |  2 +
 .../selftests/arm/signal/test_signals.h       |  2 +
 .../selftests/arm/signal/test_signals_utils.c |  2 +
 .../selftests/arm/signal/test_signals_utils.h |  2 +
 .../selftests/arm64/signal/test_signals.h     | 12 +++++
 .../arm64/signal/test_signals_utils.c         | 51 +++++++++++++++----
 .../arm64/signal/test_signals_utils.h         |  3 ++
 7 files changed, 65 insertions(+), 9 deletions(-)
 create mode 100644 tools/testing/selftests/arm/signal/test_signals.c
 create mode 100644 tools/testing/selftests/arm/signal/test_signals.h
 create mode 100644 tools/testing/selftests/arm/signal/test_signals_utils.c
 create mode 100644 tools/testing/selftests/arm/signal/test_signals_utils.h

diff --git a/tools/testing/selftests/arm/signal/test_signals.c 
b/tools/testing/selftests/arm/signal/test_signals.c
new file mode 100644
index 000000000000..6b47c26ee218
--- /dev/null
+++ b/tools/testing/selftests/arm/signal/test_signals.c
@@ -0,0 +1,2 @@
+// SPDX-License-Identifier: GPL-2.0-only
+#include "../../arm64/signal/test_signals.c"
diff --git a/tools/testing/selftests/arm/signal/test_signals.h 
b/tools/testing/selftests/arm/signal/test_signals.h
new file mode 100644
index 000000000000..946913d29636
--- /dev/null
+++ b/tools/testing/selftests/arm/signal/test_signals.h
@@ -0,0 +1,2 @@
+// SPDX-License-Identifier: GPL-2.0-only
+#include "../../arm64/signal/test_signals.h"
diff --git a/tools/testing/selftests/arm/signal/test_signals_utils.c 
b/tools/testing/selftests/arm/signal/test_signals_utils.c
new file mode 100644
index 000000000000..2b16d53545be
--- /dev/null
+++ b/tools/testing/selftests/arm/signal/test_signals_utils.c
@@ -0,0 +1,2 @@
+// SPDX-License-Identifier: GPL-2.0-only
+#include "../../arm64/signal/test_signals_utils.c"
diff --git a/tools/testing/selftests/arm/signal/test_signals_utils.h 
b/tools/testing/selftests/arm/signal/test_signals_utils.h
new file mode 100644
index 000000000000..a4d61697a8dd
--- /dev/null
+++ b/tools/testing/selftests/arm/signal/test_signals_utils.h
@@ -0,0 +1,2 @@
+// SPDX-License-Identifier: GPL-2.0-only
+#include "../../arm64/signal/test_signals_utils.h"
diff --git a/tools/testing/selftests/arm64/signal/test_signals.h 
b/tools/testing/selftests/arm64/signal/test_signals.h
index 1e6273d81575..9c1bd6560501 100644
--- a/tools/testing/selftests/arm64/signal/test_signals.h
+++ b/tools/testing/selftests/arm64/signal/test_signals.h
@@ -14,6 +14,8 @@
 #include <asm/ptrace.h>
 #include <asm/hwcap.h>
 
+/* Not used by selftests/arm */
+#ifdef __aarch64__
 #define __stringify_1(x...)    #x
 #define __stringify(x...)      __stringify_1(x)
 
@@ -43,6 +45,7 @@ enum {
 #define FEAT_SME               (1UL << FSME_BIT)
 #define FEAT_SME_FA64          (1UL << FSME_FA64_BIT)
 #define FEAT_SME2              (1UL << FSME2_BIT)
+#endif
 
 /*
  * A descriptor used to describe and configure a test case.
@@ -56,10 +59,13 @@ struct tdescr {
        /* just a name for the test-case; manadatory field */
        char                    *name;
        char                    *descr;
+/* Not used by selftests/arm */
+#ifdef __aarch64__
        unsigned long           feats_required;
        unsigned long           feats_incompatible;
        /* bitmask of effectively supported feats: populated at run-time */
        unsigned long           feats_supported;
+#endif
        bool                    initialized;
        unsigned int            minsigstksz;
        /* signum used as a test trigger. Zero if no trigger-signal is used */
@@ -69,8 +75,11 @@ struct tdescr {
         * Zero when no signal is expected on success
         */
        int                     sig_ok;
+/* Not used by selftests/arm */
+#ifdef __aarch64__
        /* signum expected on unsupported CPU features. */
        int                     sig_unsupp;
+#endif
        /* a timeout in second for test completion */
        unsigned int            timeout;
        bool                    triggered;
@@ -79,10 +88,13 @@ struct tdescr {
        /* optional sa_flags for the installed handler */
        int                     sa_flags;
        ucontext_t              saved_uc;
+/* Not used by selftests/arm */
+#ifdef __aarch64__
        /* used by get_current_ctx() */
        size_t                  live_sz;
        ucontext_t              *live_uc;
        volatile sig_atomic_t   live_uc_valid;
+#endif
        /* optional test private data */
        void                    *priv;
 
diff --git a/tools/testing/selftests/arm64/signal/test_signals_utils.c 
b/tools/testing/selftests/arm64/signal/test_signals_utils.c
index 0dc948db3a4a..8396d9748b48 100644
--- a/tools/testing/selftests/arm64/signal/test_signals_utils.c
+++ b/tools/testing/selftests/arm64/signal/test_signals_utils.c
@@ -17,11 +17,16 @@
 
 #include "test_signals.h"
 #include "test_signals_utils.h"
+
+#ifdef __aarch64__
 #include "testcases/testcases.h"
+#endif
 
 
 extern struct tdescr *current;
 
+/* Not used by selftests/arm */
+#ifdef __aarch64__
 static int sig_copyctx = SIGTRAP;
 
 static char const *const feats_names[FMAX_END] = {
@@ -53,6 +58,7 @@ static inline char *feats_to_string(unsigned long feats)
 
        return feats_string;
 }
+#endif
 
 static void unblock_signal(int signum)
 {
@@ -87,6 +93,7 @@ static void default_result(struct tdescr *td, bool force_exit)
  * take care of such unexpected situations.
  */
 
+#ifdef __aarch64__
 static bool handle_signal_unsupported(struct tdescr *td,
                                      siginfo_t *si, void *uc)
 {
@@ -108,6 +115,7 @@ static bool handle_signal_unsupported(struct tdescr *td,
 
        return true;
 }
+#endif
 
 static bool handle_signal_trigger(struct tdescr *td,
                                  siginfo_t *si, void *uc)
@@ -127,10 +135,21 @@ static bool handle_signal_ok(struct tdescr *td,
         * if sig_trig was defined, it must have been used before getting here.
         */
        assert(!td->sig_trig || td->triggered);
+
+#ifdef __aarch64__
        fprintf(stderr,
                "SIG_OK -- SP:0x%llX  si_addr@:%p  si_code:%d  token@:%p  
offset:%ld\n",
                ((ucontext_t *)uc)->uc_mcontext.sp,
                si->si_addr, si->si_code, td->token, td->token - si->si_addr);
+#else
+       fprintf(stderr,
+               "SIG_OK -- SP:0x%lX  si_addr@:%p  si_code:%d  token@:%p  
offset:%d\n",
+               ((ucontext_t *)uc)->uc_mcontext.arm_sp,
+               si->si_addr, si->si_code, td->token, td->token - si->si_addr);
+#endif
+
+#ifdef __aarch64__
+
        /*
         * fake_sigreturn tests, which have sanity_enabled=1, set, at the very
         * last time, the token field to the SP address used to place the fake
@@ -153,6 +172,7 @@ static bool handle_signal_ok(struct tdescr *td,
                        "si_code != SEGV_ACCERR...test is probably broken!\n");
                abort();
        }
+#endif
        td->pass = 1;
        /*
         * Some tests can lead to SEGV loops: in such a case we want to
@@ -165,6 +185,7 @@ static bool handle_signal_ok(struct tdescr *td,
        return true;
 }
 
+#ifdef __aarch64__
 static bool handle_signal_copyctx(struct tdescr *td,
                                  siginfo_t *si, void *uc_in)
 {
@@ -229,22 +250,31 @@ static bool handle_signal_copyctx(struct tdescr *td,
 
        return true;
 }
+#endif
 
 static void default_handler(int signum, siginfo_t *si, void *uc)
 {
+#ifdef __aarch64__
        if (current->sig_unsupp && signum == current->sig_unsupp &&
            handle_signal_unsupported(current, si, uc)) {
                fprintf(stderr, "Handled SIG_UNSUPP\n");
-       } else if (current->sig_trig && signum == current->sig_trig &&
+       }
+#endif
+
+       if (current->sig_trig && signum == current->sig_trig &&
                   handle_signal_trigger(current, si, uc)) {
                fprintf(stderr, "Handled SIG_TRIG\n");
        } else if (current->sig_ok && signum == current->sig_ok &&
                   handle_signal_ok(current, si, uc)) {
                fprintf(stderr, "Handled SIG_OK\n");
-       } else if (signum == sig_copyctx && current->live_uc &&
+       }
+#ifdef __aarch64__
+       else if (signum == sig_copyctx && current->live_uc &&
                   handle_signal_copyctx(current, si, uc)) {
                fprintf(stderr, "Handled SIG_COPYCTX\n");
-       } else {
+       }
+#endif
+       else {
                if (signum == SIGALRM && current->timeout) {
                        fprintf(stderr, "-- Timeout !\n");
                } else {
@@ -280,9 +310,10 @@ static int default_setup(struct tdescr *td)
                unblock_signal(td->sig_trig);
        if (td->sig_ok)
                unblock_signal(td->sig_ok);
+#ifdef __aarch64__
        if (td->sig_unsupp)
                unblock_signal(td->sig_unsupp);
-
+#endif
        if (td->timeout) {
                unblock_signal(SIGALRM);
                alarm(td->timeout);
@@ -299,6 +330,12 @@ static inline int default_trigger(struct tdescr *td)
 
 int test_init(struct tdescr *td)
 {
+       td->minsigstksz = getauxval(AT_MINSIGSTKSZ);
+       if (!td->minsigstksz)
+               td->minsigstksz = MINSIGSTKSZ;
+       fprintf(stderr, "Detected MINSTKSIGSZ:%d\n", td->minsigstksz);
+
+#ifdef __aarch64__
        if (td->sig_trig == sig_copyctx) {
                fprintf(stdout,
                        "Signal %d is RESERVED, cannot be used as a trigger. 
Aborting\n",
@@ -308,11 +345,6 @@ int test_init(struct tdescr *td)
        /* just in case */
        unblock_signal(sig_copyctx);
 
-       td->minsigstksz = getauxval(AT_MINSIGSTKSZ);
-       if (!td->minsigstksz)
-               td->minsigstksz = MINSIGSTKSZ;
-       fprintf(stderr, "Detected MINSTKSIGSZ:%d\n", td->minsigstksz);
-
        if (td->feats_required || td->feats_incompatible) {
                td->feats_supported = 0;
                /*
@@ -357,6 +389,7 @@ int test_init(struct tdescr *td)
                        return 0;
                }
        }
+#endif
 
        /* Perform test specific additional initialization */
        if (td->init && !td->init(td)) {
diff --git a/tools/testing/selftests/arm64/signal/test_signals_utils.h 
b/tools/testing/selftests/arm64/signal/test_signals_utils.h
index 762c8fe9c54a..50acfc1a1692 100644
--- a/tools/testing/selftests/arm64/signal/test_signals_utils.h
+++ b/tools/testing/selftests/arm64/signal/test_signals_utils.h
@@ -18,6 +18,8 @@ void test_cleanup(struct tdescr *td);
 int test_run(struct tdescr *td);
 void test_result(struct tdescr *td);
 
+/* Not used by selftests/arm */
+#ifdef __aarch64__
 static inline bool feats_ok(struct tdescr *td)
 {
        if (td->feats_incompatible & td->feats_supported)
@@ -146,3 +148,4 @@ static __always_inline bool get_current_context(struct 
tdescr *td,
 
 int fake_sigreturn(void *sigframe, size_t sz, int misalign_bytes);
 #endif
+#endif
-- 
2.39.2


Reply via email to