Merge branch 'perfcounters-fixes-for-linus' of git://git.kernel.org/pub/scm/linux...
[safe/jmp/linux-2.6] / arch / x86 / include / asm / sigframe.h
index 6718ed0..4e0fe26 100644 (file)
@@ -1,10 +1,25 @@
+#ifndef _ASM_X86_SIGFRAME_H
+#define _ASM_X86_SIGFRAME_H
+
+#include <asm/sigcontext.h>
+#include <asm/siginfo.h>
+#include <asm/ucontext.h>
+
 #ifdef CONFIG_X86_32
 #define sigframe_ia32          sigframe
 #define rt_sigframe_ia32       rt_sigframe
 #define sigcontext_ia32                sigcontext
 #define _fpstate_ia32          _fpstate
 #define ucontext_ia32          ucontext
+#else /* !CONFIG_X86_32 */
+
+#ifdef CONFIG_IA32_EMULATION
+#include <asm/ia32.h>
+#endif /* CONFIG_IA32_EMULATION */
+
+#endif /* CONFIG_X86_32 */
 
+#if defined(CONFIG_X86_32) || defined(CONFIG_IA32_EMULATION)
 struct sigframe_ia32 {
        u32 pretcode;
        int sig;
@@ -18,7 +33,11 @@ struct sigframe_ia32 {
         * legacy application accessing/modifying it.
         */
        struct _fpstate_ia32 fpstate_unused;
+#ifdef CONFIG_IA32_EMULATION
+       unsigned int extramask[_COMPAT_NSIG_WORDS-1];
+#else /* !CONFIG_IA32_EMULATION */
        unsigned long extramask[_NSIG_WORDS-1];
+#endif /* CONFIG_IA32_EMULATION */
        char retcode[8];
        /* fp state follows here */
 };
@@ -28,16 +47,24 @@ struct rt_sigframe_ia32 {
        int sig;
        u32 pinfo;
        u32 puc;
+#ifdef CONFIG_IA32_EMULATION
+       compat_siginfo_t info;
+#else /* !CONFIG_IA32_EMULATION */
        struct siginfo info;
+#endif /* CONFIG_IA32_EMULATION */
        struct ucontext_ia32 uc;
        char retcode[8];
        /* fp state follows here */
 };
-#else /* !CONFIG_X86_32 */
+#endif /* defined(CONFIG_X86_32) || defined(CONFIG_IA32_EMULATION) */
+
+#ifdef CONFIG_X86_64
 struct rt_sigframe {
        char __user *pretcode;
        struct ucontext uc;
        struct siginfo info;
        /* fp state follows here */
 };
-#endif /* CONFIG_X86_32 */
+#endif /* CONFIG_X86_64 */
+
+#endif /* _ASM_X86_SIGFRAME_H */