Changeset 413


Ignore:
Timestamp:
May 1, 2009, 10:38:51 PM (12 years ago)
Author:
khorben
Message:

Merge from upstream

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/System/Sources/libc/src/kernel/netbsd/i386/syscalls.S

    r361 r413  
    1 /* $Id: syscalls.S,v 1.14 2009/02/22 00:08:56 khorben Exp $ */
     1/* $Id: syscalls.S,v 1.15 2009/05/01 20:16:40 khorben Exp $ */
    22/* Copyright (c) 2009 Pierre Pronchery <khorben@defora.org> */
    33/* This file is part of DeforaOS System libc */
     
    1515 * http://creativecommons.org/licenses/by-nc-sa/3.0/ */
    1616/* FIXME:
    17  * - some syscalls may return an additional value into %edx (eg lseek) */
     17 * - some syscalls may return an additional value into %edx (eg lseek)
     18 * - ftruncate() and truncate() probably need a wrapper (for padding) */
    1819
    1920
     
    7071
    7172
     73/* longjmp */
     74/* XXX from NetBSD's libc without PIC prologue/epilogue */
     75.global longjmp
     76.type longjmp,@function
     77longjmp:
     78        mov     4(%esp), %ecx
     79        lea     24(%ecx), %edx
     80
     81        push    $0
     82        push    %edx
     83        push    $3                      /* SIG_SETMASK */
     84        call    sigprocmask
     85        add     $12, %esp
     86
     87        mov     4(%esp), %edx
     88        mov     8(%esp), %eax
     89        mov     0(%edx), %ecx
     90        mov     4(%edx), %ebx
     91        mov     8(%edx), %esp
     92        mov     12(%edx), %ebp
     93        mov     16(%edx), %esi
     94        mov     20(%edx), %edi
     95        test    %eax, %eax
     96        jnz     1f
     97        incl    %eax
     981:      mov     %ecx, 0(%esp)
     99        ret
     100
     101
    72102/* pipe */
    73103.global pipe
     
    83113        ret
    84114#undef SYS_pipe
     115
     116
     117/* setjmp */
     118/* XXX from NetBSD's libc without PIC prologue/epilogue */
     119.global setjmp
     120.type setjmp,@function
     121setjmp:
     122        mov     4(%esp), %ecx
     123        mov     0(%esp), %edx
     124        mov     %edx, 0(%ecx)
     125        mov     %ebx, 4(%ecx)
     126        mov     %esp, 8(%ecx)
     127        mov     %ebp, 12(%ecx)
     128        mov     %esi, 16(%ecx)
     129        mov     %edi, 20(%ecx)
     130
     131        lea     24(%ecx), %edx
     132
     133        push    %edx
     134        push    $0
     135        push    $0
     136        call    sigprocmask
     137        add     $12, %esp
     138
     139        mov     $0, %eax
     140        ret
Note: See TracChangeset for help on using the changeset viewer.