info.si_signo   = SIGSEGV;
        info.si_code    = SEGV_ACCERR;
        info.si_errno   = 0;
-       info.si_addr    = (void *) ((epcr0 & EPCR0_V) ? (epcr0 & EPCR0_PC) : __frame->pc);
+       info.si_addr    = (void __user *) ((epcr0 & EPCR0_V) ? (epcr0 & EPCR0_PC) : __frame->pc);
 
        force_sig_info(info.si_signo, &info, current);
 } /* end insn_access_error() */
                      epcr0, esr0, esfr1);
 
        info.si_errno   = 0;
-       info.si_addr    = (void *) ((epcr0 & EPCR0_V) ? (epcr0 & EPCR0_PC) : __frame->pc);
+       info.si_addr    = (void __user *) ((epcr0 & EPCR0_V) ? (epcr0 & EPCR0_PC) : __frame->pc);
 
        switch (__frame->tbr & TBR_TT) {
        case TBR_TT_ILLEGAL_INSTR:
                                 unsigned long esr0)
 {
        static DEFINE_SPINLOCK(atomic_op_lock);
-       unsigned long x, y, z, *p;
+       unsigned long x, y, z;
+       unsigned long __user *p;
        mm_segment_t oldfs;
        siginfo_t info;
        int ret;
                 * u32 __atomic_user_cmpxchg32(u32 *ptr, u32 test, u32 new)
                 */
        case TBR_TT_ATOMIC_CMPXCHG32:
-               p = (unsigned long *) __frame->gr8;
+               p = (unsigned long __user *) __frame->gr8;
                x = __frame->gr9;
                y = __frame->gr10;
 
                 * u32 __atomic_kernel_xchg32(void *v, u32 new)
                 */
        case TBR_TT_ATOMIC_XCHG32:
-               p = (unsigned long *) __frame->gr8;
+               p = (unsigned long __user *) __frame->gr8;
                y = __frame->gr9;
 
                for (;;) {
                 * ulong __atomic_kernel_XOR_return(ulong i, ulong *v)
                 */
        case TBR_TT_ATOMIC_XOR:
-               p = (unsigned long *) __frame->gr8;
+               p = (unsigned long __user *) __frame->gr8;
                x = __frame->gr9;
 
                for (;;) {
                 * ulong __atomic_kernel_OR_return(ulong i, ulong *v)
                 */
        case TBR_TT_ATOMIC_OR:
-               p = (unsigned long *) __frame->gr8;
+               p = (unsigned long __user *) __frame->gr8;
                x = __frame->gr9;
 
                for (;;) {
                 * ulong __atomic_kernel_AND_return(ulong i, ulong *v)
                 */
        case TBR_TT_ATOMIC_AND:
-               p = (unsigned long *) __frame->gr8;
+               p = (unsigned long __user *) __frame->gr8;
                x = __frame->gr9;
 
                for (;;) {
                 * int __atomic_user_sub_return(atomic_t *v, int i)
                 */
        case TBR_TT_ATOMIC_SUB:
-               p = (unsigned long *) __frame->gr8;
+               p = (unsigned long __user *) __frame->gr8;
                x = __frame->gr9;
 
                for (;;) {
                 * int __atomic_user_add_return(atomic_t *v, int i)
                 */
        case TBR_TT_ATOMIC_ADD:
-               p = (unsigned long *) __frame->gr8;
+               p = (unsigned long __user *) __frame->gr8;
                x = __frame->gr9;
 
                for (;;) {
        info.si_signo   = SIGSEGV;
        info.si_code    = SEGV_ACCERR;
        info.si_errno   = 0;
-       info.si_addr    = (void *) __frame->pc;
+       info.si_addr    = (void __user *) __frame->pc;
 
        force_sig_info(info.si_signo, &info, current);
 }
        info.si_signo   = SIGFPE;
        info.si_code    = FPE_MDAOVF;
        info.si_errno   = 0;
-       info.si_addr    = (void *) __frame->pc;
+       info.si_addr    = (void __user *) __frame->pc;
 
        force_sig_info(info.si_signo, &info, current);
 } /* end media_exception() */
        info.si_addr    = NULL;
 
        if ((esr0 & (ESRx_VALID | ESR0_EAV)) == (ESRx_VALID | ESR0_EAV))
-               info.si_addr = (void *) ear0;
+               info.si_addr = (void __user *) ear0;
 
        force_sig_info(info.si_signo, &info, current);
 
        info.si_signo   = SIGSEGV;
        info.si_code    = SEGV_ACCERR;
        info.si_errno   = 0;
-       info.si_addr    = (void *)
+       info.si_addr    = (void __user *)
                (((esr15 & (ESRx_VALID|ESR15_EAV)) == (ESRx_VALID|ESR15_EAV)) ? ear15 : 0);
 
        force_sig_info(info.si_signo, &info, current);
        info.si_signo   = SIGFPE;
        info.si_code    = FPE_INTDIV;
        info.si_errno   = 0;
-       info.si_addr    = (void *) __frame->pc;
+       info.si_addr    = (void __user *) __frame->pc;
 
        force_sig_info(info.si_signo, &info, current);
 } /* end division_exception() */