}
 
 #ifdef CONFIG_SMP
-               update_process_times(user_mode(regs));
+               update_process_times(user_mode_vm(regs));
 #endif
        }
 
 
        info.si_code = TRAP_BRKPT;
 
        /* User-mode eip? */
-       info.si_addr = user_mode(regs) ? (void __user *) regs->eip : NULL;
+       info.si_addr = user_mode_vm(regs) ? (void __user *) regs->eip : NULL;
 
        /* Send us the fakey SIGTRAP */
        force_sig_info(SIGTRAP, &info, tsk);
 
                                                per_cpu(prof_counter, cpu);
                }
 
-               update_process_times(user_mode(regs));
+               update_process_times(user_mode_vm(regs));
        }
 
        if( ((1<<cpu) & voyager_extended_vic_processors) == 0)
 
        head = (struct frame_head *)regs->ebp;
 #endif
 
-       if (!user_mode(regs)) {
+       if (!user_mode_vm(regs)) {
                while (depth-- && valid_kernel_stack(head, regs))
                        head = dump_backtrace(head);
                return;
 
 #ifdef __KERNEL__
 struct task_struct;
 extern void send_sigtrap(struct task_struct *tsk, struct pt_regs *regs, int error_code);
-#define user_mode(regs) ((VM_MASK & (regs)->eflags) || (3 & (regs)->xcs))
+#define user_mode(regs)                (3 & (regs)->xcs)
+#define user_mode_vm(regs)     ((VM_MASK & (regs)->eflags) || user_mode(regs))
 #define instruction_pointer(regs) ((regs)->eip)
 #if defined(CONFIG_SMP) && defined(CONFIG_FRAME_POINTER)
 extern unsigned long profile_pc(struct pt_regs *regs);
 
 
 #if defined(__KERNEL__) && !defined(__ASSEMBLY__) 
 #define user_mode(regs) (!!((regs)->cs & 3))
+#define user_mode_vm(regs) user_mode(regs)
 #define instruction_pointer(regs) ((regs)->rip)
 extern unsigned long profile_pc(struct pt_regs *regs);
 void signal_fault(struct pt_regs *regs, void __user *frame, char *where);