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)
                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)
 
 /*
  * Invalidate all caches on this CPU
  */
-static void local_sb1___flush_cache_all(void)
+static void __attribute_used__ local_sb1___flush_cache_all(void)
 {
        __sb1_writeback_inv_dcache_all();
        __sb1_flush_icache_all();
 
 })
 
 #define __get_dbe_asm(insn)                                            \
-({                                                                     \
+{                                                                      \
        __asm__ __volatile__(                                           \
        "1:\t" insn "\t%1,%2\n\t"                                       \
        "move\t%0,$0\n"                                                 \
        ".previous"                                                     \
        :"=r" (__gu_err), "=r" (__gu_val)                               \
        :"o" (__mp(__gu_addr)), "i" (-EFAULT));                         \
-})
+}
 
 extern void __get_dbe_unknown(void);
 
 })
 
 #define __put_dbe_asm(insn)                                            \
-({                                                                     \
+{                                                                      \
        __asm__ __volatile__(                                           \
        "1:\t" insn "\t%1,%2\n\t"                                       \
        "move\t%0,$0\n"                                                 \
        ".previous"                                                     \
        : "=r" (__pu_err)                                               \
        : "r" (__pu_val), "o" (__mp(__pu_addr)), "i" (-EFAULT));        \
-})
+}
 
 extern void __put_dbe_unknown(void);