Gcc 4.0 fixes.
[linux-2.6.git] / arch / mips / kernel / signal32.c
index 18c028ba9efa1c3d5e4d8d76df53ea60bbe2692b..663fa547ee187e1a01ba1cc436b701a3e7c14500 100644 (file)
@@ -261,11 +261,12 @@ asmlinkage int sys32_sigaction(int sig, const struct sigaction32 *act,
 
        if (act) {
                old_sigset_t mask;
+               s32 handler;
 
                if (!access_ok(VERIFY_READ, act, sizeof(*act)))
                        return -EFAULT;
-               err |= __get_user((u32)(u64)new_ka.sa.sa_handler,
-                                 &act->sa_handler);
+               err |= __get_user(handler, &act->sa_handler);
+               new_ka.sa.sa_handler = (void*)(s64)handler;
                err |= __get_user(new_ka.sa.sa_flags, &act->sa_flags);
                err |= __get_user(mask, &act->sa_mask.sig[0]);
                if (err)
@@ -826,12 +827,13 @@ asmlinkage int sys32_rt_sigaction(int sig, const struct sigaction32 *act,
                goto out;
 
        if (act) {
+               s32 handler;
                int err = 0;
 
                if (!access_ok(VERIFY_READ, act, sizeof(*act)))
                        return -EFAULT;
-               err |= __get_user((u32)(u64)new_sa.sa.sa_handler,
-                                 &act->sa_handler);
+               err |= __get_user(handler, &act->sa_handler);
+               new_sa.sa.sa_handler = (void*)(s64)handler;
                err |= __get_user(new_sa.sa.sa_flags, &act->sa_flags);
                err |= get_sigset(&new_sa.sa.sa_mask, &act->sa_mask);
                if (err)