Commit fa1e1bdf authored by Vincent Hanquez's avatar Vincent Hanquez Committed by Linus Torvalds

[PATCH] xen: x86: Rename usermode macro

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().
Signed-off-by: default avatarVincent Hanquez <vincent.hanquez@cl.cam.ac.uk>
Cc: Ian Pratt <m+Ian.Pratt@cl.cam.ac.uk>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 1cc6f12e
...@@ -1133,7 +1133,7 @@ inline void smp_local_timer_interrupt(struct pt_regs * regs) ...@@ -1133,7 +1133,7 @@ inline void smp_local_timer_interrupt(struct pt_regs * regs)
} }
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
update_process_times(user_mode(regs)); update_process_times(user_mode_vm(regs));
#endif #endif
} }
......
...@@ -668,7 +668,7 @@ void send_sigtrap(struct task_struct *tsk, struct pt_regs *regs, int error_code) ...@@ -668,7 +668,7 @@ void send_sigtrap(struct task_struct *tsk, struct pt_regs *regs, int error_code)
info.si_code = TRAP_BRKPT; info.si_code = TRAP_BRKPT;
/* User-mode eip? */ /* 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 */ /* Send us the fakey SIGTRAP */
force_sig_info(SIGTRAP, &info, tsk); force_sig_info(SIGTRAP, &info, tsk);
......
...@@ -1288,7 +1288,7 @@ smp_local_timer_interrupt(struct pt_regs * regs) ...@@ -1288,7 +1288,7 @@ smp_local_timer_interrupt(struct pt_regs * regs)
per_cpu(prof_counter, cpu); 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) if( ((1<<cpu) & voyager_extended_vic_processors) == 0)
......
...@@ -91,7 +91,7 @@ x86_backtrace(struct pt_regs * const regs, unsigned int depth) ...@@ -91,7 +91,7 @@ x86_backtrace(struct pt_regs * const regs, unsigned int depth)
head = (struct frame_head *)regs->ebp; head = (struct frame_head *)regs->ebp;
#endif #endif
if (!user_mode(regs)) { if (!user_mode_vm(regs)) {
while (depth-- && valid_kernel_stack(head, regs)) while (depth-- && valid_kernel_stack(head, regs))
head = dump_backtrace(head); head = dump_backtrace(head);
return; return;
......
...@@ -57,7 +57,8 @@ struct pt_regs { ...@@ -57,7 +57,8 @@ struct pt_regs {
#ifdef __KERNEL__ #ifdef __KERNEL__
struct task_struct; struct task_struct;
extern void send_sigtrap(struct task_struct *tsk, struct pt_regs *regs, int error_code); 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) #define instruction_pointer(regs) ((regs)->eip)
#if defined(CONFIG_SMP) && defined(CONFIG_FRAME_POINTER) #if defined(CONFIG_SMP) && defined(CONFIG_FRAME_POINTER)
extern unsigned long profile_pc(struct pt_regs *regs); extern unsigned long profile_pc(struct pt_regs *regs);
......
...@@ -82,6 +82,7 @@ struct pt_regs { ...@@ -82,6 +82,7 @@ struct pt_regs {
#if defined(__KERNEL__) && !defined(__ASSEMBLY__) #if defined(__KERNEL__) && !defined(__ASSEMBLY__)
#define user_mode(regs) (!!((regs)->cs & 3)) #define user_mode(regs) (!!((regs)->cs & 3))
#define user_mode_vm(regs) user_mode(regs)
#define instruction_pointer(regs) ((regs)->rip) #define instruction_pointer(regs) ((regs)->rip)
extern unsigned long profile_pc(struct pt_regs *regs); extern unsigned long profile_pc(struct pt_regs *regs);
void signal_fault(struct pt_regs *regs, void __user *frame, char *where); void signal_fault(struct pt_regs *regs, void __user *frame, char *where);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment