From: Vincent Hanquez Make use of the user_mode macro where it's possible. This is useful for Xen because it will need only to redefine only the macro to a hypervisor call. Signed-off-by: Vincent Hanquez Cc: Ian Pratt Cc: Andi Kleen Signed-off-by: Andrew Morton --- arch/x86_64/kernel/signal.c | 2 +- arch/x86_64/kernel/traps.c | 18 +++++++++--------- arch/x86_64/mm/fault.c | 4 ++-- 3 files changed, 12 insertions(+), 12 deletions(-) diff -puN arch/x86_64/kernel/signal.c~xen-x86_64-use-more-usermode-macro arch/x86_64/kernel/signal.c --- 25/arch/x86_64/kernel/signal.c~xen-x86_64-use-more-usermode-macro 2005-05-11 21:14:55.000000000 -0700 +++ 25-akpm/arch/x86_64/kernel/signal.c 2005-05-11 21:14:55.000000000 -0700 @@ -421,7 +421,7 @@ int do_signal(struct pt_regs *regs, sigs * kernel mode. Just return without doing anything * if so. */ - if ((regs->cs & 3) != 3) + if (!user_mode(regs)) return 1; if (try_to_freeze(0)) diff -puN arch/x86_64/kernel/traps.c~xen-x86_64-use-more-usermode-macro arch/x86_64/kernel/traps.c --- 25/arch/x86_64/kernel/traps.c~xen-x86_64-use-more-usermode-macro 2005-05-11 21:14:55.000000000 -0700 +++ 25-akpm/arch/x86_64/kernel/traps.c 2005-05-11 21:14:55.000000000 -0700 @@ -274,7 +274,7 @@ EXPORT_SYMBOL(dump_stack); void show_registers(struct pt_regs *regs) { int i; - int in_kernel = (regs->cs & 3) == 0; + int in_kernel = !user_mode(regs); unsigned long rsp; const int cpu = safe_smp_processor_id(); struct task_struct *cur = cpu_pda[cpu].pcurrent; @@ -318,7 +318,7 @@ void handle_BUG(struct pt_regs *regs) struct bug_frame f; char tmp; - if (regs->cs & 3) + if (user_mode(regs)) return; if (__copy_from_user(&f, (struct bug_frame *) regs->rip, sizeof(struct bug_frame))) @@ -435,7 +435,7 @@ static void do_trap(int trapnr, int sign } #endif - if ((regs->cs & 3) != 0) { + if (user_mode(regs)) { struct task_struct *tsk = current; if (exception_trace && unhandled_signal(tsk, signr)) @@ -520,7 +520,7 @@ asmlinkage void do_general_protection(st } #endif - if ((regs->cs & 3)!=0) { + if (user_mode(regs)) { struct task_struct *tsk = current; if (exception_trace && unhandled_signal(tsk, SIGSEGV)) @@ -636,7 +636,7 @@ asmlinkage struct pt_regs *sync_regs(str if (eregs == (struct pt_regs *)eregs->rsp) ; /* Exception from user space */ - else if (eregs->cs & 3) + else if (user_mode(eregs)) regs = ((struct pt_regs *)current->thread.rsp0) - 1; /* Exception from kernel and interrupts are enabled. Move to kernel process stack. */ @@ -695,7 +695,7 @@ asmlinkage void do_debug(struct pt_regs * allowing programs to debug themselves without the ptrace() * interface. */ - if ((regs->cs & 3) == 0) + if (!user_mode(regs)) goto clear_TF_reenable; /* * Was the TF flag set by a debugger? If so, clear it now, @@ -713,7 +713,7 @@ asmlinkage void do_debug(struct pt_regs info.si_signo = SIGTRAP; info.si_errno = 0; info.si_code = TRAP_BRKPT; - if ((regs->cs & 3) == 0) + if (!user_mode(regs)) goto clear_dr7; info.si_addr = (void __user *)regs->rip; @@ -754,7 +754,7 @@ asmlinkage void do_coprocessor_error(str unsigned short cwd, swd; conditional_sti(regs); - if ((regs->cs & 3) == 0 && + if (!user_mode(regs) && kernel_math_error(regs, "kernel x87 math error")) return; @@ -820,7 +820,7 @@ asmlinkage void do_simd_coprocessor_erro unsigned short mxcsr; conditional_sti(regs); - if ((regs->cs & 3) == 0 && + if (!user_mode(regs) && kernel_math_error(regs, "kernel simd math error")) return; diff -puN arch/x86_64/mm/fault.c~xen-x86_64-use-more-usermode-macro arch/x86_64/mm/fault.c --- 25/arch/x86_64/mm/fault.c~xen-x86_64-use-more-usermode-macro 2005-05-11 21:14:55.000000000 -0700 +++ 25-akpm/arch/x86_64/mm/fault.c 2005-05-11 21:14:55.000000000 -0700 @@ -74,7 +74,7 @@ static noinline int is_prefetch(struct p instr = (unsigned char *)convert_rip_to_linear(current, regs); max_instr = instr + 15; - if ((regs->cs & 3) != 0 && instr >= (unsigned char *)TASK_SIZE) + if (user_mode(regs) && instr >= (unsigned char *)TASK_SIZE) return 0; while (scan_more && instr < max_instr) { @@ -106,7 +106,7 @@ static noinline int is_prefetch(struct p /* Could check the LDT for lm, but for now it's good enough to assume that long mode only uses well known segments or kernel. */ - scan_more = ((regs->cs & 3) == 0) || (regs->cs == __USER_CS); + scan_more = (!user_mode(regs)) || (regs->cs == __USER_CS); break; case 0x60: _