2002-11-28  Ulrich Drepper  <drepper@redhat.com>

	* sysdeps/unix/sysv/linux/x86_64/vfork.S: Don't trash the CPU's
	branch prediction buffers by using unpaired call/ret.
This commit is contained in:
Ulrich Drepper 2002-11-28 08:32:24 +00:00
parent d08bef807b
commit acd42b7893
2 changed files with 10 additions and 8 deletions

View File

@ -1,3 +1,8 @@
2002-11-28 Ulrich Drepper <drepper@redhat.com>
* sysdeps/unix/sysv/linux/x86_64/vfork.S: Don't trash the CPU's
branch prediction buffers by using unpaired call/ret.
2002-11-27 Ulrich Drepper <drepper@redhat.com>
* sysdeps/unix/sysv/linux/i386/sysdep.h (ASMFMT_2): Fix typo in

View File

@ -29,22 +29,19 @@ ENTRY (__vfork)
/* Pop the return PC value into RDI. We need a register that
is preserved by the syscall and that we're allowed to destroy. */
popq %rdi
popq %rdi
/* Stuff the syscall number in RAX and enter into the kernel. */
movl $SYS_ify (vfork), %eax
syscall
cmpl $-4095, %eax
jae .Lerror /* Branch forward if it failed. */
/* Jump to the return PC. */
jmp *%rdi
.Lerror:
/* Push back the return PC. */
pushq %rdi
jmp SYSCALL_ERROR_LABEL
cmpl $-4095, %eax
jae SYSCALL_ERROR_LABEL /* Branch forward if it failed. */
/* Normal return. */
.Lpseudo_end:
ret