History log of /bionic/libc/arch-x86/bionic/syscall.S
Revision Date Author Comments
7efad83d430f4d824f2aaa75edea5106f6ff8aae 09-Sep-2014 Elliott Hughes <enh@google.com> Ensure __set_errno is still visible on LP32.

The use of the .hidden directive to avoid going via the PLT for
__set_errno had the side-effect of actually making __set_errno
hidden (which is odd because assembler directives don't usually
affect symbols defined in a different file --- you can't even
create a weak reference to a symbol that's defined in a different
file).

This change switches the system call stubs over to a new always-hidden
__set_errno_internal and has a visible __set_errno on LP32 just for
binary compatibility with old NDK apps.

Bug: 17423135
Change-Id: I6b6d7a05dda85f923d22e5ffd169a91e23499b7b
15a0456d0b7618554ed3d49287e77b6d43a2812a 06-Jun-2014 Elliott Hughes <enh@google.com> Remove unnecessary instructions from x86/x86_64 syscalls.

__set_errno returns -1 exactly so that callers don't need to bother.
The other architectures were already taking advantage of this, but
no one had ever fixed x86 and x86_64.

Change-Id: Ie131494be664f6c4a1bbf8c61bbbed58eac56122
a85aaf11fafd52b1304cc288d0699411ae510cc8 03-Jan-2014 Elliott Hughes <enh@google.com> Use the MAX_ERRNO constant.

If you're going to hardcode a constant, you could at least try to
get the constant right...

Change-Id: I886a2593357d1c4dfd6c42649c63e8a35c15a441
4cdde5f12364079a2b55fa4fc4ed53364cb8465d 22-Mar-2013 Elliott Hughes <enh@google.com> Replace unnecessary x86 uses of <sys/linux-syscalls.h> with <asm/unistd.h>.

Change-Id: I9d016ee8e8329cccf244d27c336d9524348af996
bdff26df2749d8d66e5d4eb5a2ecf4a9ff50fad2 12-Feb-2013 Elliott Hughes <enh@google.com> Use ENTRY/END in custom x86 assembler too.

Change-Id: Ic2e482e5daff29c65d3b2ab0b2111c996bbc6226
c164f2a9694fa8c373ec72d237ee16b412aa5c53 12-Apr-2012 Jin Wei <wei.a.jin@intel.com> bionic: modify syscall to use 6 registers to pass parameter.

Kernel allows to use 6 registers(exclude eax) to pass parameter.
But in syscall's implementation, it only uses five registers.
It will lead to error when 6 parameters passed.

Change-Id: I92d663194e6334c3847f0c0c257ca3b9dee0edef
Author: Jin Wei <wei.a.jin@intel.com>
Signed-off-by: Xiaokang Qin <xiaokang.qin@intel.com>
Signed-off-by: Beare, Bruce J <bruce.j.beare@intel.com>
Signed-off-by: Jack Ren <jack.ren@intel.com>
Author-tracking-BZ: 30838
5288fee835a6e52d7870b3ee3320a5a3ddb96f34 17-Jun-2011 Jun Nakajima <jun.nakajima@intel.com> x86 libc: Fix the range to check the error

The spec says "A value in the range between -4095 to -1 indicates an error" (not -129).
This was pointed out in the comment in 22039.

Change-Id: I11b7c45015a9e4ccf09aed5364a889437eab6ab8
Signed-off-by: Jun Nakajima <jun.nakajima@intel.com>
8488efaa0913f8484cbfdb61180e47bc19fff5d8 28-Mar-2011 Kan-Ru Chen <kanru@0xlab.org> x86 libc: fix the wrong return value of syscall

According to Intel ABI spec, there is no need to save %eax, %ecx, %edx
on the stack. Worse, popping %eax will wipe out the return value.

Change-Id: Ida536c3b98174b8deef88f8f3b9352eaaeb7c0c0
3c543e1da9a2780a70b25299f39734bf0a18c4a0 04-Mar-2010 Bruce Beare <brucex.j.beare@intel.com> x86 syscall system call implementation