x86: signal: introduce helper macro is_ia32
authorHiroshi Shimamoto <h-shimamoto@ct.jp.nec.com>
Thu, 25 Sep 2008 02:13:11 +0000 (19:13 -0700)
committerIngo Molnar <mingo@elte.hu>
Thu, 25 Sep 2008 08:11:41 +0000 (10:11 +0200)
Introduce new macro is_ia32 for unification of setup_rt_frame().
No effect in binary, compiler will optimize.

Signed-off-by: Hiroshi Shimamoto <h-shimamoto@ct.jp.nec.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/x86/kernel/signal_32.c
arch/x86/kernel/signal_64.c

index b1bc90f..cf62f70 100644 (file)
@@ -491,6 +491,8 @@ static int signr_convert(int sig)
        return sig;
 }
 
+#define is_ia32        1
+
 static int
 setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
               sigset_t *set, struct pt_regs *regs)
@@ -499,10 +501,13 @@ setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
        int ret;
 
        /* Set up the stack frame */
-       if (ka->sa.sa_flags & SA_SIGINFO)
-               ret = __setup_rt_frame(usig, ka, info, set, regs);
-       else
-               ret = __setup_frame(usig, ka, set, regs);
+       if (is_ia32) {
+               if (ka->sa.sa_flags & SA_SIGINFO)
+                       ret = __setup_rt_frame(usig, ka, info, set, regs);
+               else
+                       ret = __setup_frame(usig, ka, set, regs);
+       } else
+               ret = __setup_rt_frame(sig, ka, info, set, regs);
 
        if (ret) {
                force_sigsegv(sig, current);
index c5d8002..53f86d9 100644 (file)
@@ -286,6 +286,12 @@ static int signr_convert(int sig)
        return sig;
 }
 
+#ifdef CONFIG_IA32_EMULATION
+#define is_ia32        test_thread_flag(TIF_IA32)
+#else
+#define is_ia32        0
+#endif
+
 static int
 setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
               sigset_t *set, struct pt_regs *regs)
@@ -293,15 +299,14 @@ setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
        int usig = signr_convert(sig);
        int ret;
 
-#ifdef CONFIG_IA32_EMULATION
-       if (test_thread_flag(TIF_IA32)) {
+       /* Set up the stack frame */
+       if (is_ia32) {
                if (ka->sa.sa_flags & SA_SIGINFO)
                        ret = ia32_setup_rt_frame(usig, ka, info, set, regs);
                else
                        ret = ia32_setup_frame(usig, ka, set, regs);
        } else
-#endif
-       ret = __setup_rt_frame(sig, ka, info, set, regs);
+               ret = __setup_rt_frame(sig, ka, info, set, regs);
 
        if (ret) {
                force_sigsegv(sig, current);