From de47eb59bb829423b1d0f47ba13099073999b3cb Mon Sep 17 00:00:00 2001 From: Nicolas Planel Date: Wed, 29 Oct 2003 16:07:11 +0000 Subject: Corporate Server 2.1.1 release --- mdk-stage1/dietlibc/i386/unified.S | 35 ++++++++++++++++++++++++++++++----- 1 file changed, 30 insertions(+), 5 deletions(-) (limited to 'mdk-stage1/dietlibc/i386/unified.S') 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 .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 -- cgit v1.2.1