diff options
Diffstat (limited to 'mdk-stage1/dietlibc/i386/unified.S')
-rw-r--r-- | mdk-stage1/dietlibc/i386/unified.S | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/mdk-stage1/dietlibc/i386/unified.S b/mdk-stage1/dietlibc/i386/unified.S new file mode 100644 index 000000000..c3cd11001 --- /dev/null +++ b/mdk-stage1/dietlibc/i386/unified.S @@ -0,0 +1,33 @@ +#include <dietfeatures.h> + +.text +.global __unified_syscall +__unified_syscall: + and $0xff,%eax + push %edi + push %esi + push %ebx + movl 0x10(%esp),%ebx + movl 0x14(%esp),%ecx + movl 0x18(%esp),%edx + movl 0x1c(%esp),%edi + movl 0x20(%esp),%esi + int $0x80 + cmp $-124,%eax + jbe .Lnoerror +#ifdef WANT_THREAD_SAVE + movl %eax,%ebx + call __errno_location + neg %ebx + movl %ebx,(%eax) +#else + neg %eax + mov %eax,errno +#endif + xor %eax,%eax + dec %eax +.Lnoerror: + pop %ebx + pop %esi + pop %edi + ret |