[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: Vincent Hanquez <vincent.hanquez@cl.cam.ac.uk> Cc: Ian Pratt <m+Ian.Pratt@cl.cam.ac.uk> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
1cc6f12e03
commit
fa1e1bdf78
6 changed files with 7 additions and 5 deletions
|
@ -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)
|
||||||
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)
|
||||||
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)
|
||||||
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 {
|
||||||
#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 {
|
||||||
|
|
||||||
#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);
|
||||||
|
|
Loading…
Reference in a new issue