diff options
author | Mystery Man <unknown@mandriva.org> | 2003-10-29 16:07:11 +0000 |
---|---|---|
committer | Mystery Man <unknown@mandriva.org> | 2003-10-29 16:07:11 +0000 |
commit | fa40f30b4253b1e05c46cc5e0c111176825b7623 (patch) | |
tree | 76cf2d26c0ce0ee7c6a2c1a1a2b65bc4d8e33029 /mdk-stage1/dietlibc/i386/unified.S | |
parent | 327bd24f8e4291bd1882de1990dd7339f781a9cb (diff) | |
download | drakx-backup-do-not-use-fa40f30b4253b1e05c46cc5e0c111176825b7623.tar drakx-backup-do-not-use-fa40f30b4253b1e05c46cc5e0c111176825b7623.tar.gz drakx-backup-do-not-use-fa40f30b4253b1e05c46cc5e0c111176825b7623.tar.bz2 drakx-backup-do-not-use-fa40f30b4253b1e05c46cc5e0c111176825b7623.tar.xz drakx-backup-do-not-use-fa40f30b4253b1e05c46cc5e0c111176825b7623.zip |
This commit was manufactured by cvs2svn to create tag 'Corpo_2_1_1'.Corpo_2_1_1
Diffstat (limited to 'mdk-stage1/dietlibc/i386/unified.S')
-rw-r--r-- | mdk-stage1/dietlibc/i386/unified.S | 35 |
1 files changed, 30 insertions, 5 deletions
diff --git a/mdk-stage1/dietlibc/i386/unified.S b/mdk-stage1/dietlibc/i386/unified.S index f182bdb4b..989bf37b5 100644 --- a/mdk-stage1/dietlibc/i386/unified.S +++ b/mdk-stage1/dietlibc/i386/unified.S @@ -1,13 +1,33 @@ + #include <dietfeatures.h> .text +.global __unified_syscall_256 +.type __unified_syscall_256,@function +__unified_syscall_256: + movzwl %ax,%eax + jmp .L1 +.L2: +.size __unified_syscall_256,.L2-__unified_syscall_256 +.weak exit +exit: +.global _exit +.type _exit,@function +_exit: + movb $1,%al .global __unified_syscall +.type __unified_syscall,@function __unified_syscall: +.size _exit,__unified_syscall-_exit movzbl %al, %eax +.L1: push %edi push %esi push %ebx movl %esp,%edi + /* we use movl instead of pop because otherwise a signal would + destroy the stack frame and crash the program, although it + would save a few bytes. */ movl 0x10(%edi),%ebx movl 0x14(%edi),%ecx movl 0x18(%edi),%edx @@ -16,19 +36,24 @@ __unified_syscall: int $0x80 cmp $-124,%eax jbe .Lnoerror -#ifdef WANT_THREAD_SAVE + neg %eax +#ifdef WANT_THREAD_SAFE movl %eax,%ebx call __errno_location - neg %ebx movl %ebx,(%eax) + orl $-1,%eax #else - neg %eax mov %eax,errno + sbb %eax,%eax # eax = eax - eax - CY = -1 #endif - xor %eax,%eax - dec %eax .Lnoerror: pop %ebx pop %esi pop %edi + +/* here we go and "reuse" the return for weak-void functions */ +#include "dietuglyweaks.h" + ret +.L3: +.size __unified_syscall,.L3-__unified_syscall |