diff options
author | Rich Felker <dalias@aerifal.cx> | 2012-11-11 13:56:37 -0500 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2012-11-11 13:56:37 -0500 |
commit | e9b885ee550e8a3eabc9d11c469baf1cfaf64f55 (patch) | |
tree | b2b61c6270cf5572df5dabc2581d4ba287d33a91 /src/internal | |
parent | dc059f03e8277abe3f515f350bd9615416aaa5ef (diff) | |
download | musl-e9b885ee550e8a3eabc9d11c469baf1cfaf64f55.tar.gz musl-e9b885ee550e8a3eabc9d11c469baf1cfaf64f55.tar.bz2 musl-e9b885ee550e8a3eabc9d11c469baf1cfaf64f55.tar.xz musl-e9b885ee550e8a3eabc9d11c469baf1cfaf64f55.zip |
fix clobber of edx in i386 vsyscall asm
this function does not obey the normal calling convention; like a
syscall instruction, it's expected not to clobber any registers except
the return value. clobbering edx could break callers that were reusing
the value cached in edx after the syscall returns.
Diffstat (limited to 'src/internal')
-rw-r--r-- | src/internal/i386/syscall.s | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/internal/i386/syscall.s b/src/internal/i386/syscall.s index 291168c3..2914acee 100644 --- a/src/internal/i386/syscall.s +++ b/src/internal/i386/syscall.s @@ -16,7 +16,8 @@ __vsyscall: mov 12(%esp),%edi push %eax call 1f -2: pop %ebx +2: mov %ebx,%edx + pop %ebx pop %ebx pop %edi ret |