]> err.no Git - linux-2.6/blobdiff - arch/x86/kernel/entry_32.S
Merge branch 'linus' into x86/urgent
[linux-2.6] / arch / x86 / kernel / entry_32.S
index 04ea83ccb979c6fcc6088bbda7113eba2d5b29d1..6bc07f0f1202eeb1eaac0b55064acad7f355371a 100644 (file)
 #include <asm/percpu.h>
 #include <asm/dwarf2.h>
 #include <asm/processor-flags.h>
-#include "irq_vectors.h"
+#include <asm/ftrace.h>
+#include <asm/irq_vectors.h>
 
 /*
  * We use macros for low-level operations which need to be overridden
  * for paravirtualization.  The following will never clobber any registers:
  *   INTERRUPT_RETURN (aka. "iret")
  *   GET_CR0_INTO_EAX (aka. "movl %cr0, %eax")
- *   ENABLE_INTERRUPTS_SYSCALL_RET (aka "sti; sysexit").
+ *   ENABLE_INTERRUPTS_SYSEXIT (aka "sti; sysexit").
  *
  * For DISABLE_INTERRUPTS/ENABLE_INTERRUPTS (aka "cli"/"sti"), you must
  * specify what registers can be overwritten (CLBR_NONE, CLBR_EAX/EDX/ECX/ANY).
@@ -349,7 +350,7 @@ sysenter_past_esp:
        xorl %ebp,%ebp
        TRACE_IRQS_ON
 1:     mov  PT_FS(%esp), %fs
-       ENABLE_INTERRUPTS_SYSCALL_RET
+       ENABLE_INTERRUPTS_SYSEXIT
        CFI_ENDPROC
 .pushsection .fixup,"ax"
 2:     movl $0,PT_FS(%esp)
@@ -874,10 +875,10 @@ ENTRY(native_iret)
 .previous
 END(native_iret)
 
-ENTRY(native_irq_enable_syscall_ret)
+ENTRY(native_irq_enable_sysexit)
        sti
        sysexit
-END(native_irq_enable_syscall_ret)
+END(native_irq_enable_sysexit)
 #endif
 
 KPROBE_ENTRY(int3)
@@ -1024,6 +1025,7 @@ ENTRY(xen_sysenter_target)
        RING0_INT_FRAME
        addl $5*4, %esp         /* remove xen-provided frame */
        jmp sysenter_past_esp
+       CFI_ENDPROC
 
 ENTRY(xen_hypervisor_callback)
        CFI_STARTPROC
@@ -1118,6 +1120,7 @@ ENTRY(mcount)
        pushl %ecx
        pushl %edx
        movl 0xc(%esp), %eax
+       subl $MCOUNT_INSN_SIZE, %eax
 
 .globl mcount_call
 mcount_call:
@@ -1136,6 +1139,7 @@ ENTRY(ftrace_caller)
        pushl %edx
        movl 0xc(%esp), %eax
        movl 0x4(%ebp), %edx
+       subl $MCOUNT_INSN_SIZE, %eax
 
 .globl ftrace_call
 ftrace_call:
@@ -1166,6 +1170,7 @@ trace:
        pushl %edx
        movl 0xc(%esp), %eax
        movl 0x4(%ebp), %edx
+       subl $MCOUNT_INSN_SIZE, %eax
 
        call *ftrace_trace_function