linux-user: define TARGET_ARCH_HAS_SETUP_FRAME
authorLaurent Vivier <laurent@vivier.eu>
Tue, 24 Apr 2018 19:26:35 +0000 (21:26 +0200)
committerLaurent Vivier <laurent@vivier.eu>
Mon, 30 Apr 2018 07:47:47 +0000 (09:47 +0200)
Instead of calling setup_frame() conditionally to a list of known targets,
define TARGET_ARCH_HAS_SETUP_FRAME if the target provides the function
and call it only if the macro is defined.

Move declarations of setup_frame() and setup_rt_frame() to
linux-user/signal-common.h

Signed-off-by: Laurent Vivier <laurent@vivier.eu>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20180424192635.6027-21-laurent@vivier.eu>

23 files changed:
linux-user/aarch64/target_signal.h
linux-user/alpha/target_signal.h
linux-user/arm/target_signal.h
linux-user/cris/target_signal.h
linux-user/hppa/target_signal.h
linux-user/i386/target_signal.h
linux-user/m68k/target_signal.h
linux-user/microblaze/target_signal.h
linux-user/mips/target_signal.h
linux-user/mips64/target_signal.h
linux-user/nios2/target_signal.h
linux-user/openrisc/target_signal.h
linux-user/ppc/target_signal.h
linux-user/riscv/target_signal.h
linux-user/s390x/target_signal.h
linux-user/sh4/target_signal.h
linux-user/signal-common.h
linux-user/signal.c
linux-user/sparc/target_signal.h
linux-user/sparc64/target_signal.h
linux-user/tilegx/target_signal.h
linux-user/x86_64/target_signal.h
linux-user/xtensa/target_signal.h

index af1f1320e2f1c079a538d945f37d66030bba97ed..0b7ae25120b79c1979105ef9ea0539645e3bf445 100644 (file)
@@ -26,9 +26,5 @@ static inline abi_ulong get_sp_from_cpustate(CPUARMState *state)
    return state->xregs[31];
 }
 
-void setup_frame(int sig, struct target_sigaction *ka,
-                 target_sigset_t *set, CPUARMState *env);
-void setup_rt_frame(int sig, struct target_sigaction *ka,
-                    target_siginfo_t *info, target_sigset_t *set,
-                    CPUARMState *env);
+#define TARGET_ARCH_HAS_SETUP_FRAME
 #endif /* AARCH64_TARGET_SIGNAL_H */
index 42343a1ae64c5e299a5ef53af50289d4d04c2ae3..4e912e1cf9a017d62b9dc0f16460f530c7b3ee4d 100644 (file)
@@ -55,9 +55,5 @@ static inline abi_ulong get_sp_from_cpustate(CPUAlphaState *state)
 #define TARGET_GEN_SUBRNG6     -24
 #define TARGET_GEN_SUBRNG7     -25
 
-void setup_frame(int sig, struct target_sigaction *ka,
-                 target_sigset_t *set, CPUAlphaState *env);
-void setup_rt_frame(int sig, struct target_sigaction *ka,
-                    target_siginfo_t *info,
-                    target_sigset_t *set, CPUAlphaState *env);
+#define TARGET_ARCH_HAS_SETUP_FRAME
 #endif /* ALPHA_TARGET_SIGNAL_H */
index 4b542c324f2a9ba22459648a283859d32cb7f25e..d6a03ec87d1bbbaa0197b51abace90771abc04bf 100644 (file)
@@ -26,9 +26,5 @@ static inline abi_ulong get_sp_from_cpustate(CPUARMState *state)
    return state->regs[13];
 }
 
-void setup_frame(int usig, struct target_sigaction *ka,
-                 target_sigset_t *set, CPUARMState *regs);
-void setup_rt_frame(int usig, struct target_sigaction *ka,
-                    target_siginfo_t *info,
-                    target_sigset_t *set, CPUARMState *env);
+#define TARGET_ARCH_HAS_SETUP_FRAME
 #endif /* ARM_TARGET_SIGNAL_H */
index 19c0d7b5395a329065e01c82b8730ffc25f0bfe8..74ff2f3382ba0f74c400f149940c714b4001690f 100644 (file)
@@ -26,9 +26,5 @@ static inline abi_ulong get_sp_from_cpustate(CPUCRISState *state)
     return state->regs[14];
 }
 
-void setup_frame(int sig, struct target_sigaction *ka,
-                 target_sigset_t *set, CPUCRISState *env);
-void setup_rt_frame(int sig, struct target_sigaction *ka,
-                    target_siginfo_t *info,
-                     target_sigset_t *set, CPUCRISState *env);
+#define TARGET_ARCH_HAS_SETUP_FRAME
 #endif /* CRIS_TARGET_SIGNAL_H */
index f19aed93ddc97f18b83a2c5955912db8763a1507..f28b4bf6e8c97079e19c0eef67baeb5f56a30f73 100644 (file)
@@ -25,8 +25,4 @@ static inline abi_ulong get_sp_from_cpustate(CPUHPPAState *state)
 {
     return state->gr[30];
 }
-
-void setup_rt_frame(int sig, struct target_sigaction *ka,
-                    target_siginfo_t *info,
-                    target_sigset_t *set, CPUArchState *env);
 #endif /* HPPA_TARGET_SIGNAL_H */
index ec5a3e3373289466e1b2342f3937bab481eb44c0..6ad40894827278cd762064b88eeb961e0b7bdde1 100644 (file)
@@ -26,9 +26,5 @@ static inline abi_ulong get_sp_from_cpustate(CPUX86State *state)
     return state->regs[R_ESP];
 }
 
-void setup_frame(int sig, struct target_sigaction *ka,
-                 target_sigset_t *set, CPUX86State *env);
-void setup_rt_frame(int sig, struct target_sigaction *ka,
-                    target_siginfo_t *info,
-                    target_sigset_t *set, CPUX86State *env);
+#define TARGET_ARCH_HAS_SETUP_FRAME
 #endif /* I386_TARGET_SIGNAL_H */
index 29e0c01191b2e912f63db40318a865d970a88f61..ff303f2b3cb8c6ab447798b740b7468f873b52f0 100644 (file)
@@ -26,9 +26,5 @@ static inline abi_ulong get_sp_from_cpustate(CPUM68KState *state)
     return state->aregs[7];
 }
 
-void setup_frame(int sig, struct target_sigaction *ka,
-                 target_sigset_t *set, CPUM68KState *env);
-void setup_rt_frame(int sig, struct target_sigaction *ka,
-                    target_siginfo_t *info,
-                    target_sigset_t *set, CPUM68KState *env);
+#define TARGET_ARCH_HAS_SETUP_FRAME
 #endif /* M68K_TARGET_SIGNAL_H */
index 02c5cc56fae66b00502fea34c3f4d757e80d85e9..9fe40482929df6fbe7f0b6947b1e86d82d80fd19 100644 (file)
@@ -26,9 +26,5 @@ static inline abi_ulong get_sp_from_cpustate(CPUMBState *state)
     return state->regs[1];
 }
 
-void setup_frame(int sig, struct target_sigaction *ka,
-                 target_sigset_t *set, CPUMBState *env);
-void setup_rt_frame(int sig, struct target_sigaction *ka,
-                    target_siginfo_t *info,
-                    target_sigset_t *set, CPUMBState *env);
+#define TARGET_ARCH_HAS_SETUP_FRAME
 #endif /* MICROBLAZE_TARGET_SIGNAL_H */
index 22ab3e4a9406ad6a1c29ef4b8fe12266705d1ef7..d36f5da0a086778c8f94b48c346b8965a549ea42 100644 (file)
@@ -26,12 +26,8 @@ static inline abi_ulong get_sp_from_cpustate(CPUMIPSState *state)
     return state->active_tc.gpr[29];
 }
 
-# if defined(TARGET_ABI_MIPSO32)
+#if defined(TARGET_ABI_MIPSO32)
 /* compare linux/arch/mips/kernel/signal.c:setup_frame() */
-void setup_frame(int sig, struct target_sigaction * ka,
-                 target_sigset_t *set, CPUMIPSState *regs);
+#define TARGET_ARCH_HAS_SETUP_FRAME
 #endif
-void setup_rt_frame(int sig, struct target_sigaction *ka,
-                    target_siginfo_t *info,
-                    target_sigset_t *set, CPUMIPSState *env);
 #endif /* MIPS_TARGET_SIGNAL_H */
index 70dfe409787dce9aedcf9ca0a124898c65a6b16f..c074e1592fbb333b6b19ec24f5848e8a39f1d120 100644 (file)
@@ -25,8 +25,4 @@ static inline abi_ulong get_sp_from_cpustate(CPUMIPSState *state)
 {
     return state->active_tc.gpr[29];
 }
-
-void setup_rt_frame(int sig, struct target_sigaction *ka,
-                    target_siginfo_t *info,
-                    target_sigset_t *set, CPUMIPSState *env);
 #endif /* MIPS64_TARGET_SIGNAL_H */
index aa78519025b2753b8b38e9983e111c95087ec0d4..f4db4d6d62da3723c6b27f68b12c4302e24fb814 100644 (file)
@@ -22,9 +22,4 @@ static inline abi_ulong get_sp_from_cpustate(CPUNios2State *state)
 {
     return state->regs[R_SP];
 }
-
-void setup_rt_frame(int sig, struct target_sigaction *ka,
-                    target_siginfo_t *info,
-                    target_sigset_t *set,
-                    CPUNios2State *env);
 #endif /* TARGET_SIGNAL_H */
index 6c47ddf74ef8ff4200d35390f9e31bb90c4aa9be..2a4e00b035fa0d4255b5d0d7d8589a3a071d4542 100644 (file)
@@ -22,8 +22,4 @@ static inline abi_ulong get_sp_from_cpustate(CPUOpenRISCState *state)
 {
     return cpu_get_gpr(state, 1);
 }
-
-void setup_rt_frame(int sig, struct target_sigaction *ka,
-                    target_siginfo_t *info,
-                    target_sigset_t *set, CPUOpenRISCState *env);
 #endif /* OPENRISC_TARGET_SIGNAL_H */
index 5e293e3b035ddeb38b7bf5bf7f0550a557305e55..e3bf1d285611161f4eccb475ab4947af72e45b49 100644 (file)
@@ -27,10 +27,6 @@ static inline abi_ulong get_sp_from_cpustate(CPUPPCState *state)
 }
 
 #if !defined(TARGET_PPC64)
-void setup_frame(int sig, struct target_sigaction *ka,
-                 target_sigset_t *set, CPUPPCState *env);
+#define TARGET_ARCH_HAS_SETUP_FRAME
 #endif
-void setup_rt_frame(int sig, struct target_sigaction *ka,
-                    target_siginfo_t *info,
-                    target_sigset_t *set, CPUPPCState *env);
 #endif /* PPC_TARGET_SIGNAL_H */
index 6ac8a88de6456f8fbeaa50ba7c0a1dc6f9b5cbe8..9dac002c0dce59b364e046ae1f201fc7cdd3e0b8 100644 (file)
@@ -19,8 +19,4 @@ static inline abi_ulong get_sp_from_cpustate(CPURISCVState *state)
 {
    return state->gpr[xSP];
 }
-
-void setup_rt_frame(int sig, struct target_sigaction *ka,
-                    target_siginfo_t *info,
-                    target_sigset_t *set, CPURISCVState *env);
 #endif /* TARGET_SIGNAL_H */
index 9e3733bb388db6d3c1a5d1dc1f8e98906c818ddd..4e99f8fadd9f5898b1aae9af2311a5860f51e907 100644 (file)
@@ -23,9 +23,5 @@ static inline abi_ulong get_sp_from_cpustate(CPUS390XState *state)
    return state->regs[15];
 }
 
-void setup_frame(int sig, struct target_sigaction *ka,
-                 target_sigset_t *set, CPUS390XState *env);
-void setup_rt_frame(int sig, struct target_sigaction *ka,
-                    target_siginfo_t *info,
-                    target_sigset_t *set, CPUS390XState *env);
+#define TARGET_ARCH_HAS_SETUP_FRAME
 #endif /* S390X_TARGET_SIGNAL_H */
index a2a93fa04a17cca201aada87cd32b20ea424db2f..e7b18a6db4985043707627ebe216d6b13d1322bf 100644 (file)
@@ -26,10 +26,5 @@ static inline abi_ulong get_sp_from_cpustate(CPUSH4State *state)
     return state->gregs[15];
 }
 
-void setup_frame(int sig, struct target_sigaction *ka,
-                 target_sigset_t *set, CPUSH4State *regs);
-void setup_rt_frame(int sig, struct target_sigaction *ka,
-                    target_siginfo_t *info,
-                    target_sigset_t *set, CPUSH4State *regs);
-
+#define TARGET_ARCH_HAS_SETUP_FRAME
 #endif /* SH4_TARGET_SIGNAL_H */
index 838b6e9198452ea74965ad5442edad3b370e4874..fbb8d4365c7a3302b4c190c35c78f9c331a4651a 100644 (file)
@@ -47,4 +47,11 @@ void tswap_siginfo(target_siginfo_t *tinfo,
 void set_sigmask(const sigset_t *set);
 void force_sig(int sig);
 void force_sigsegv(int oldsig);
+#if defined(TARGET_ARCH_HAS_SETUP_FRAME)
+void setup_frame(int sig, struct target_sigaction *ka,
+                 target_sigset_t *set, CPUArchState *env);
+#endif
+void setup_rt_frame(int sig, struct target_sigaction *ka,
+                    target_siginfo_t *info,
+                    target_sigset_t *set, CPUArchState *env);
 #endif
index 7f435c46060d5d68f74c4ebb21487c315606f2ba..a3022c2f04e83ddf370d30905e51b6fa62c1f23d 100644 (file)
@@ -873,18 +873,15 @@ static void handle_pending_signal(CPUArchState *cpu_env, int sig,
         }
 #endif
         /* prepare the stack frame of the virtual CPU */
-#if defined(TARGET_ABI_MIPSN32) || defined(TARGET_ABI_MIPSN64) \
-        || defined(TARGET_OPENRISC) || defined(TARGET_TILEGX) \
-        || defined(TARGET_PPC64) || defined(TARGET_HPPA) \
-        || defined(TARGET_NIOS2) || defined(TARGET_X86_64) \
-        || defined(TARGET_RISCV) || defined(TARGET_XTENSA)
-        /* These targets do not have traditional signals.  */
-        setup_rt_frame(sig, sa, &k->info, &target_old_set, cpu_env);
-#else
-        if (sa->sa_flags & TARGET_SA_SIGINFO)
+#if defined(TARGET_ARCH_HAS_SETUP_FRAME)
+        if (sa->sa_flags & TARGET_SA_SIGINFO) {
             setup_rt_frame(sig, sa, &k->info, &target_old_set, cpu_env);
-        else
+        } else {
             setup_frame(sig, sa, &target_old_set, cpu_env);
+        }
+#else
+        /* These targets do not have traditional signals.  */
+        setup_rt_frame(sig, sa, &k->info, &target_old_set, cpu_env);
 #endif
         if (sa->sa_flags & TARGET_SA_RESETHAND) {
             sa->_sa_handler = TARGET_SIG_DFL;
index ea2c68c900c23a81dacaa3a2431bae9285c007c7..467abea49ef08d93f0dc9e59c2c26f1a8b40601a 100644 (file)
@@ -33,9 +33,5 @@ static inline abi_ulong get_sp_from_cpustate(CPUSPARCState *state)
     return state->regwptr[UREG_FP];
 }
 
-void setup_frame(int sig, struct target_sigaction *ka,
-                 target_sigset_t *set, CPUSPARCState *env);
-void setup_rt_frame(int sig, struct target_sigaction *ka,
-                    target_siginfo_t *info,
-                    target_sigset_t *set, CPUSPARCState *env);
+#define TARGET_ARCH_HAS_SETUP_FRAME
 #endif /* SPARC_TARGET_SIGNAL_H */
index 7f10db9ededdda5747110c6393ab9fa70760e08a..14b01d9632d2f5306e9f0cd91261964f13f2f36a 100644 (file)
@@ -33,9 +33,5 @@ static inline abi_ulong get_sp_from_cpustate(CPUSPARCState *state)
     return state->regwptr[UREG_FP];
 }
 
-void setup_frame(int sig, struct target_sigaction *ka,
-                 target_sigset_t *set, CPUSPARCState *env);
-void setup_rt_frame(int sig, struct target_sigaction *ka,
-                    target_siginfo_t *info,
-                    target_sigset_t *set, CPUSPARCState *env);
+#define TARGET_ARCH_HAS_SETUP_FRAME
 #endif /* SPARC64_TARGET_SIGNAL_H */
index 132d7781fe39fdc59acb05f0feab0df1025dc952..a74fa37aacc586fb65f685bffcfd1f8438873adf 100644 (file)
@@ -24,8 +24,4 @@ static inline abi_ulong get_sp_from_cpustate(CPUTLGState *state)
 {
     return state->regs[TILEGX_R_SP];
 }
-
-void setup_rt_frame(int sig, struct target_sigaction *ka,
-                    target_siginfo_t *info,
-                    target_sigset_t *set, CPUArchState *env);
 #endif /* TILEGX_TARGET_SIGNAL_H */
index 26f96944e53996cfb95c04619d98e42a86c2b330..6b01b5acb744bcf32311cde93cbb54220d4053c5 100644 (file)
@@ -25,8 +25,4 @@ static inline abi_ulong get_sp_from_cpustate(CPUX86State *state)
 {
     return state->regs[R_ESP];
 }
-
-void setup_rt_frame(int sig, struct target_sigaction *ka,
-                    target_siginfo_t *info,
-                    target_sigset_t *set, CPUX86State *env);
 #endif /* X86_64_TARGET_SIGNAL_H */
index f6545903a4ba89d58f33d86d880630ce6cd7157e..4376b2e53875f95baff31e343d971b7a79f23efc 100644 (file)
@@ -24,8 +24,4 @@ static inline abi_ulong get_sp_from_cpustate(CPUXtensaState *state)
 {
     return state->regs[1];
 }
-
-void setup_rt_frame(int sig, struct target_sigaction *ka,
-                    target_siginfo_t *info,
-                    target_sigset_t *set, CPUXtensaState *env);
 #endif