x86 vDSO: ia32_sysenter_target
This harmonizes the name for the entry point from the 32-bit sysenter instruction across 32-bit and 64-bit kernels. Signed-off-by: Roland McGrath <roland@redhat.com> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:
committed by
Ingo Molnar
parent
f288f32dc5
commit
0aa97fb226
@@ -283,7 +283,7 @@ END(resume_kernel)
|
|||||||
the vsyscall page. See vsyscall-sysentry.S, which defines the symbol. */
|
the vsyscall page. See vsyscall-sysentry.S, which defines the symbol. */
|
||||||
|
|
||||||
# sysenter call handler stub
|
# sysenter call handler stub
|
||||||
ENTRY(sysenter_entry)
|
ENTRY(ia32_sysenter_target)
|
||||||
CFI_STARTPROC simple
|
CFI_STARTPROC simple
|
||||||
CFI_SIGNAL_FRAME
|
CFI_SIGNAL_FRAME
|
||||||
CFI_DEF_CFA esp, 0
|
CFI_DEF_CFA esp, 0
|
||||||
@@ -360,7 +360,7 @@ sysenter_past_esp:
|
|||||||
.align 4
|
.align 4
|
||||||
.long 1b,2b
|
.long 1b,2b
|
||||||
.popsection
|
.popsection
|
||||||
ENDPROC(sysenter_entry)
|
ENDPROC(ia32_sysenter_target)
|
||||||
|
|
||||||
# system call handler stub
|
# system call handler stub
|
||||||
ENTRY(system_call)
|
ENTRY(system_call)
|
||||||
@@ -768,7 +768,7 @@ label: \
|
|||||||
|
|
||||||
KPROBE_ENTRY(debug)
|
KPROBE_ENTRY(debug)
|
||||||
RING0_INT_FRAME
|
RING0_INT_FRAME
|
||||||
cmpl $sysenter_entry,(%esp)
|
cmpl $ia32_sysenter_target,(%esp)
|
||||||
jne debug_stack_correct
|
jne debug_stack_correct
|
||||||
FIX_STACK(12, debug_stack_correct, debug_esp_fix_insn)
|
FIX_STACK(12, debug_stack_correct, debug_esp_fix_insn)
|
||||||
debug_stack_correct:
|
debug_stack_correct:
|
||||||
@@ -799,7 +799,7 @@ KPROBE_ENTRY(nmi)
|
|||||||
popl %eax
|
popl %eax
|
||||||
CFI_ADJUST_CFA_OFFSET -4
|
CFI_ADJUST_CFA_OFFSET -4
|
||||||
je nmi_espfix_stack
|
je nmi_espfix_stack
|
||||||
cmpl $sysenter_entry,(%esp)
|
cmpl $ia32_sysenter_target,(%esp)
|
||||||
je nmi_stack_fixup
|
je nmi_stack_fixup
|
||||||
pushl %eax
|
pushl %eax
|
||||||
CFI_ADJUST_CFA_OFFSET 4
|
CFI_ADJUST_CFA_OFFSET 4
|
||||||
@@ -812,7 +812,7 @@ KPROBE_ENTRY(nmi)
|
|||||||
popl %eax
|
popl %eax
|
||||||
CFI_ADJUST_CFA_OFFSET -4
|
CFI_ADJUST_CFA_OFFSET -4
|
||||||
jae nmi_stack_correct
|
jae nmi_stack_correct
|
||||||
cmpl $sysenter_entry,12(%esp)
|
cmpl $ia32_sysenter_target,12(%esp)
|
||||||
je nmi_debug_stack_check
|
je nmi_debug_stack_check
|
||||||
nmi_stack_correct:
|
nmi_stack_correct:
|
||||||
/* We have a RING0_INT_FRAME here */
|
/* We have a RING0_INT_FRAME here */
|
||||||
|
@@ -54,7 +54,7 @@ static int __init vdso_setup(char *s)
|
|||||||
|
|
||||||
__setup("vdso=", vdso_setup);
|
__setup("vdso=", vdso_setup);
|
||||||
|
|
||||||
extern asmlinkage void sysenter_entry(void);
|
extern asmlinkage void ia32_sysenter_target(void);
|
||||||
|
|
||||||
static __init void reloc_symtab(Elf32_Ehdr *ehdr,
|
static __init void reloc_symtab(Elf32_Ehdr *ehdr,
|
||||||
unsigned offset, unsigned size)
|
unsigned offset, unsigned size)
|
||||||
@@ -187,7 +187,7 @@ void enable_sep_cpu(void)
|
|||||||
tss->x86_tss.esp1 = sizeof(struct tss_struct) + (unsigned long) tss;
|
tss->x86_tss.esp1 = sizeof(struct tss_struct) + (unsigned long) tss;
|
||||||
wrmsr(MSR_IA32_SYSENTER_CS, __KERNEL_CS, 0);
|
wrmsr(MSR_IA32_SYSENTER_CS, __KERNEL_CS, 0);
|
||||||
wrmsr(MSR_IA32_SYSENTER_ESP, tss->x86_tss.esp1, 0);
|
wrmsr(MSR_IA32_SYSENTER_ESP, tss->x86_tss.esp1, 0);
|
||||||
wrmsr(MSR_IA32_SYSENTER_EIP, (unsigned long) sysenter_entry, 0);
|
wrmsr(MSR_IA32_SYSENTER_EIP, (unsigned long) ia32_sysenter_target, 0);
|
||||||
put_cpu();
|
put_cpu();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user