Merge branch 'siginfo-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebieder...
[linux-2.6-block.git] / arch / x86 / include / asm / ptrace.h
index 28779bf7951f110ce36d6bb0b59cc38cc568eefa..78cf265c5b58ae132d927b1b0605abf939c0736b 100644 (file)
@@ -165,14 +165,10 @@ static inline bool user_64bit_mode(struct pt_regs *regs)
 #define compat_user_stack_pointer()    current_pt_regs()->sp
 #endif
 
-#ifdef CONFIG_X86_32
-extern unsigned long kernel_stack_pointer(struct pt_regs *regs);
-#else
 static inline unsigned long kernel_stack_pointer(struct pt_regs *regs)
 {
        return regs->sp;
 }
-#endif
 
 #define GET_IP(regs) ((regs)->ip)
 #define GET_FP(regs) ((regs)->bp)
@@ -200,14 +196,6 @@ static inline unsigned long regs_get_register(struct pt_regs *regs,
        if (unlikely(offset > MAX_REG_OFFSET))
                return 0;
 #ifdef CONFIG_X86_32
-       /*
-        * Traps from the kernel do not save sp and ss.
-        * Use the helper function to retrieve sp.
-        */
-       if (offset == offsetof(struct pt_regs, sp) &&
-           regs->cs == __KERNEL_CS)
-               return kernel_stack_pointer(regs);
-
        /* The selector fields are 16-bit. */
        if (offset == offsetof(struct pt_regs, cs) ||
            offset == offsetof(struct pt_regs, ss) ||
@@ -233,8 +221,7 @@ static inline unsigned long regs_get_register(struct pt_regs *regs,
 static inline int regs_within_kernel_stack(struct pt_regs *regs,
                                           unsigned long addr)
 {
-       return ((addr & ~(THREAD_SIZE - 1))  ==
-               (kernel_stack_pointer(regs) & ~(THREAD_SIZE - 1)));
+       return ((addr & ~(THREAD_SIZE - 1)) == (regs->sp & ~(THREAD_SIZE - 1)));
 }
 
 /**
@@ -248,7 +235,7 @@ static inline int regs_within_kernel_stack(struct pt_regs *regs,
  */
 static inline unsigned long *regs_get_kernel_stack_nth_addr(struct pt_regs *regs, unsigned int n)
 {
-       unsigned long *addr = (unsigned long *)kernel_stack_pointer(regs);
+       unsigned long *addr = (unsigned long *)regs->sp;
 
        addr += n;
        if (regs_within_kernel_stack(regs, (unsigned long)addr))