]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - arch/powerpc/kernel/signal_32.c
powerpc: move include/asm-ppc64/ppc32.h to arch/powerpc/kernel
[karo-tx-linux.git] / arch / powerpc / kernel / signal_32.c
index e53127ec373da37daac13650092073777522fe80..876c57c11365a57ff36e75f5171c865fb5c35e70 100644 (file)
@@ -43,7 +43,7 @@
 #include <asm/uaccess.h>
 #include <asm/cacheflush.h>
 #ifdef CONFIG_PPC64
-#include <asm/ppc32.h>
+#include "ppc32.h"
 #include <asm/ppcdebug.h>
 #include <asm/unistd.h>
 #include <asm/vdso.h>
 
 #ifdef CONFIG_PPC64
 #define do_signal      do_signal32
-#define sys_sigsuspend sys32_sigsuspend
-#define sys_rt_sigsuspend      sys32_rt_sigsuspend
-#define sys_rt_sigreturn       sys32_rt_sigreturn
-#define sys_sigaction  sys32_sigaction
-#define sys_swapcontext        sys32_swapcontext
-#define sys_sigreturn  sys32_sigreturn
+#define sys_sigsuspend compat_sys_sigsuspend
+#define sys_rt_sigsuspend      compat_sys_rt_sigsuspend
+#define sys_rt_sigreturn       compat_sys_rt_sigreturn
+#define sys_sigaction  compat_sys_sigaction
+#define sys_swapcontext        compat_sys_swapcontext
+#define sys_sigreturn  compat_sys_sigreturn
 
 #define old_sigaction  old_sigaction32
 #define sigcontext     sigcontext32
@@ -105,7 +105,8 @@ static inline int put_sigset_t(compat_sigset_t __user *uset, sigset_t *set)
        return copy_to_user(uset, &cset, sizeof(*uset));
 }
 
-static inline int get_sigset_t(sigset_t *set, compat_sigset_t __user *uset)
+static inline int get_sigset_t(sigset_t *set,
+                              const compat_sigset_t __user *uset)
 {
        compat_sigset_t s32;
 
@@ -187,7 +188,7 @@ static inline int put_sigset_t(sigset_t __user *uset, sigset_t *set)
        return copy_to_user(uset, set, sizeof(*uset));
 }
 
-static inline int get_sigset_t(sigset_t *set, sigset_t __user *uset)
+static inline int get_sigset_t(sigset_t *set, const sigset_t __user *uset)
 {
        return copy_from_user(set, uset, sizeof(*uset));
 }
@@ -402,7 +403,7 @@ static int save_user_regs(struct pt_regs *regs, struct mcontext __user *frame,
                    ELF_NFPREG * sizeof(double)))
                return 1;
 
-       current->thread.fpscr = 0;      /* turn off all fp exceptions */
+       current->thread.fpscr.val = 0;  /* turn off all fp exceptions */
 
 #ifdef CONFIG_ALTIVEC
        /* save altivec registers */
@@ -540,7 +541,7 @@ static long restore_user_regs(struct pt_regs *regs,
 }
 
 #ifdef CONFIG_PPC64
-long sys32_rt_sigaction(int sig, const struct sigaction32 __user *act,
+long compat_sys_rt_sigaction(int sig, const struct sigaction32 __user *act,
                struct sigaction32 __user *oact, size_t sigsetsize)
 {
        struct k_sigaction new_ka, old_ka;
@@ -577,7 +578,7 @@ long sys32_rt_sigaction(int sig, const struct sigaction32 __user *act,
  * of a signed int (msr in 32-bit mode) and the register representation
  * of a signed int (msr in 64-bit mode) is performed.
  */
-long sys32_rt_sigprocmask(u32 how, compat_sigset_t __user *set,
+long compat_sys_rt_sigprocmask(u32 how, compat_sigset_t __user *set,
                compat_sigset_t __user *oset, size_t sigsetsize)
 {
        sigset_t s;
@@ -605,7 +606,7 @@ long sys32_rt_sigprocmask(u32 how, compat_sigset_t __user *set,
        return 0;
 }
 
-long sys32_rt_sigpending(compat_sigset_t __user *set, compat_size_t sigsetsize)
+long compat_sys_rt_sigpending(compat_sigset_t __user *set, compat_size_t sigsetsize)
 {
        sigset_t s;
        int ret;
@@ -687,7 +688,7 @@ int copy_siginfo_to_user32(struct compat_siginfo __user *d, siginfo_t *s)
  * (msr in 32-bit mode) and the register representation of a signed int
  * (msr in 64-bit mode) is performed.
  */
-long sys32_rt_sigqueueinfo(u32 pid, u32 sig, compat_siginfo_t __user *uinfo)
+long compat_sys_rt_sigqueueinfo(u32 pid, u32 sig, compat_siginfo_t __user *uinfo)
 {
        siginfo_t info;
        int ret;
@@ -706,10 +707,10 @@ long sys32_rt_sigqueueinfo(u32 pid, u32 sig, compat_siginfo_t __user *uinfo)
  *  Start Alternate signal stack support
  *
  *  System Calls
- *       sigaltatck               sys32_sigaltstack
+ *       sigaltatck               compat_sys_sigaltstack
  */
 
-int sys32_sigaltstack(u32 __new, u32 __old, int r5,
+int compat_sys_sigaltstack(u32 __new, u32 __old, int r5,
                      int r6, int r7, int r8, struct pt_regs *regs)
 {
        stack_32_t __user * newstack = (stack_32_t __user *)(long) __new;
@@ -820,7 +821,7 @@ static int handle_rt_signal(unsigned long sig, struct k_sigaction *ka,
                        goto badframe;
                regs->link = (unsigned long) frame->tramp;
        }
-       if (put_user(regs->gpr[1], (unsigned long __user *)newsp))
+       if (put_user(regs->gpr[1], (u32 __user *)newsp))
                goto badframe;
        regs->gpr[1] = newsp;
        regs->gpr[3] = sig;
@@ -828,7 +829,6 @@ static int handle_rt_signal(unsigned long sig, struct k_sigaction *ka,
        regs->gpr[5] = (unsigned long) &rt_sf->uc;
        regs->gpr[6] = (unsigned long) rt_sf;
        regs->nip = (unsigned long) ka->sa.sa_handler;
-       regs->link = (unsigned long) frame->tramp;
        regs->trap = 0;
 #ifdef CONFIG_PPC64
        regs->result = 0;
@@ -942,11 +942,11 @@ long sys_rt_sigreturn(int r3, int r4, int r5, int r6, int r7, int r8,
         */
 #ifdef CONFIG_PPC64
        /*
-        * We use the sys32_ version that does the 32/64 bits conversion
+        * We use the compat_sys_ version that does the 32/64 bits conversion
         * and takes userland pointer directly. What about error checking ?
         * nobody does any...
         */
-       sys32_sigaltstack((u32)(u64)&rt_sf->uc.uc_stack, 0, 0, 0, 0, 0, regs);
+       compat_sys_sigaltstack((u32)(u64)&rt_sf->uc.uc_stack, 0, 0, 0, 0, 0, regs);
        return (int)regs->result;
 #else
        do_sigaltstack(&rt_sf->uc.uc_stack, NULL, regs->gpr[1]);