"[PATCH

From: Vincent Hanquez
Date: Tue Apr 26 2005 - 05:44:45 EST


Hi,

The following patch rename user_mode to user_mode_vm and add a user_mode macro
similar to the x86-64 one.

This is useful for Xen because the linux xen kernel does not runs on the same
priviledge that a vanilla linux kernel, and with this we just need to redefine
user_mode().

Please apply, or comments.

Signed-off-by: Vincent Hanquez <vincent.hanquez@xxxxxxxxxxxx>

diff -Naur linux-2.6.12-rc3/arch/i386/kernel/apic.c linux-2.6.12-rc3.1/arch/i386/kernel/apic.c
--- linux-2.6.12-rc3/arch/i386/kernel/apic.c 2005-04-21 11:45:45.000000000 +0100
+++ linux-2.6.12-rc3.1/arch/i386/kernel/apic.c 2005-04-25 18:13:00.000000000 +0100
@@ -1133,7 +1133,7 @@
}

#ifdef CONFIG_SMP
- update_process_times(user_mode(regs));
+ update_process_times(user_mode_vm(regs));
#endif
}

diff -Naur linux-2.6.12-rc3/arch/i386/kernel/ptrace.c linux-2.6.12-rc3.1/arch/i386/kernel/ptrace.c
--- linux-2.6.12-rc3/arch/i386/kernel/ptrace.c 2005-04-21 11:45:46.000000000 +0100
+++ linux-2.6.12-rc3.1/arch/i386/kernel/ptrace.c 2005-04-25 18:12:39.000000000 +0100
@@ -667,7 +667,7 @@
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);
diff -Naur linux-2.6.12-rc3/arch/i386/mach-voyager/voyager_smp.c linux-2.6.12-rc3.1/arch/i386/mach-voyager/voyager_smp.c
--- linux-2.6.12-rc3/arch/i386/mach-voyager/voyager_smp.c 2005-04-21 11:45:46.000000000 +0100
+++ linux-2.6.12-rc3.1/arch/i386/mach-voyager/voyager_smp.c 2005-04-25 18:13:12.000000000 +0100
@@ -1289,7 +1289,7 @@
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)
diff -Naur linux-2.6.12-rc3/arch/i386/oprofile/backtrace.c linux-2.6.12-rc3.1/arch/i386/oprofile/backtrace.c
--- linux-2.6.12-rc3/arch/i386/oprofile/backtrace.c 2005-04-21 11:45:46.000000000 +0100
+++ linux-2.6.12-rc3.1/arch/i386/oprofile/backtrace.c 2005-04-25 18:13:21.000000000 +0100
@@ -91,7 +91,7 @@
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;
diff -Naur linux-2.6.12-rc3/include/asm-i386/ptrace.h linux-2.6.12-rc3.1/include/asm-i386/ptrace.h
--- linux-2.6.12-rc3/include/asm-i386/ptrace.h 2005-03-02 07:37:48.000000000 +0000
+++ linux-2.6.12-rc3.1/include/asm-i386/ptrace.h 2005-04-25 17:05:54.000000000 +0100
@@ -57,7 +57,8 @@
#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);
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/