OpenCores
URL https://opencores.org/ocsvn/or1k_old/or1k_old/trunk

Subversion Repositories or1k_old

[/] [or1k_old/] [trunk/] [newlib/] [newlib/] [libc/] [sys/] [d10v/] [trap.S] - Rev 1782

Compare with Previous | Blame | View Log

#include "sys/syscall.h"

#define SYSCALL(name) \
        .global name    ; \
name:                   ; \
        ldi     r4, SYS ## name ; \
        bra     __trap0

        .text
        .stabs  "trap.S",100,0,0,__trap0
        .stabs  "int:t(0,1)=r(0,1);-65536;65535;",128,0,0,0
        .stabs  "long int:t(0,2)=r(0,1);0020000000000;0017777777777;",128,0,0,0
        .stabs  "_trap0:F(0,1)",36,0,1,__trap0
        .stabs  "arg1:P(0,1)",64,0,1,0
        .stabs  "arg2:P(0,1)",64,0,1,1
        .stabs  "arg3:P(0,1)",64,0,1,2
        .stabs  "arg4:P(0,1)",64,0,1,3
        .stabs  "number:P(0,1)",64,0,1,4
        .global __trap0
        .type   __trap0,@function
__trap0:
        trap    15                      /* trap 15 returns result in r0, error code in r4 */
        cmpeqi  r4,0                    /* is error code zero? */
        brf0t   ret                     /* yes, skip setting errno */
#if __INT__==32
        st      r4,@(errno+2,r14)       /* no, set errno */
        srai    r4,15                   /* sign extend high word */
        st      r4,@(errno,r14)
#else
        st      r4,@(errno,r14) /* no, set errno */
#endif

ret:
        jmp     r13             /* return to caller */
.Ltrap0:
        .size   __trap0,.Ltrap0-__trap0
        .stabs  "",36,0,0,.Ltrap0-__trap0

#define CONCAT(a,b) a ## b
#define STRING(a) #a
#define XSTRING(a) STRING(a)
#define XSTRING2(a,b) XSTRING(CONCAT(a,b))

#if __INT__==32
#define _read _read16
#define _lseek _lseek16
#define _write _write16
#define _close _close16
#define _open _open16
#define _creat _creat16
#define _exit _exit16
#define _stat _stat16
#define _chmod _chmod16
#define _chown _chown16
#define _fork _fork16
#define _wait _wait16
#define _execve _execve16
#define _execv _execv16
#define _pipe _pipe16
#define _kill _kill16
#define _getpid _getpid16
#endif

/* Until the assembler allows semicolon as a statement separator, */
/* we cannot use the SYSCALL macro.  So expand it manually for now. */

/* #SYSCALL(_read) */
/* #SYSCALL(_lseek) */
/* #SYSCALL(_write) */
/* #SYSCALL(_close) */
/* #SYSCALL(_open) */
/* #SYSCALL(_creat) */
/* #SYSCALL(_exit) */
/* #SYSCALL(_stat) */
/* #SYSCALL(_chmod) */
/* #SYSCALL(_chown) */
/* #SYSCALL(_fork) */
/* #SYSCALL(_wait) */
/* #SYSCALL(_execve) */
/* #SYSCALL(_execv) */
/* #SYSCALL(_pipe) */
/* #SYSCALL(_getpid) */
/* #SYSCALL(_kill) */

        .global _read
        .type   _read,@function
        .stabs  XSTRING2(_read,:F(0,1)),36,0,2,_read
        .stabs  "fd:P(0,1)",64,0,1,0
        .stabs  "ptr:P(0,1)",64,0,1,1
        .stabs  "len:P(0,1)",64,0,1,2
_read:
        ldi     r4, SYS_read
        bra     __trap0
.Lread:
        .size   _read,.-_read
        .stabs  "",36,0,0,.Lread-_read

        .global _lseek
        .type   _lseek,@function
        .stabs  XSTRING2(_lseek,:F(0,1)),36,0,3,_lseek
        .stabs  "fd:P(0,1)",64,0,1,0
        .stabs  "offset:P(0,1)",64,0,1,2
        .stabs  "whence:p(0,1)",160,0,1,0
_lseek:
        ldi     r4, SYS_lseek
        bra     __trap0
.Llseek:
        .size   _lseek,.Llseek-_lseek
        .stabs  "",36,0,0,.Llseek-_lseek

        .global _write
        .type   _write,@function
        .stabs  XSTRING2(_write,:F(0,1)),36,0,4,_write
        .stabs  "fd:P(0,1)",64,0,1,0
        .stabs  "ptr:P(0,1)",64,0,1,1
        .stabs  "len:P(0,1)",64,0,1,2
_write:
        ldi     r4, SYS_write
        bra     __trap0
.Lwrite:
        .size   _write,.Lwrite-_write
        .stabs  "",36,0,0,.Lwrite-_write

        .global _close
        .type   _close,@function
        .stabs  XSTRING2(_close,:F(0,1)),36,0,5,_close
        .stabs  "fd:P(0,1)",64,0,1,0
_close:
        ldi     r4, SYS_close
        bra     __trap0
.Lclose:
        .size   _close,.Lclose-_close
        .stabs  "",36,0,0,.Lclose-_close

        .global _open
        .type   _open,@function
        .stabs  XSTRING2(_open,:F(0,1)),36,0,6,_open
        .stabs  "name:P(0,1)",64,0,1,0
        .stabs  "flags:P(0,1)",64,0,1,1
        .stabs  "mode:P(0,1)",64,0,1,2
_open:
        ldi     r4, SYS_open
        bra     __trap0
.Lopen:
        .size   _open,.Lopen-_open
        .stabs  "",36,0,0,.Lopen-_open

        .global _creat
        .type   _creat,@function
        .stabs  XSTRING2(_creat,:F(0,1)),36,0,7,_creat
        .stabs  "name:P(0,1)",64,0,1,0
        .stabs  "mode:P(0,1)",64,0,1,1
_creat:
        ldi     r4, SYS_creat
        bra     __trap0
.Lcreat:
        .size   _creat,.Lcreat-_creat
        .stabs  "",36,0,0,.Lcreat-_creat

        .global _exit
        .type   _exit,@function
        .stabs  XSTRING2(_exit,:F(0,1)),36,0,8,_exit
        .stabs  "status:P(0,1)",64,0,1,0
_exit:
        ldi     r4, SYS_exit
        bra     __trap0
.Lexit:
        .size   _exit,.Lexit-_exit
        .stabs  "",36,0,0,.Lexit-_exit

        .global _stat
        .type   _stat,@function
        .stabs  XSTRING2(_stat,:F(0,1)),36,0,9,_stat
        .stabs  "name:P(0,1)",64,0,1,0
        .stabs  "packet:P(0,1)",64,0,1,1
_stat:
        ldi     r4, SYS_stat
        bra     __trap0
.Lstat:
        .size   _stat,.Lstat-_stat
        .stabs  "",36,0,0,.Lstat-_stat

        .global _chmod
        .type   _chmod,@function
        .stabs  XSTRING2(_chmod,:F(0,1)),36,0,10,_chmod
        .stabs  "name:P(0,1)",64,0,1,0
        .stabs  "mode:P(0,1)",64,0,1,1
_chmod:
        ldi     r4, SYS_chmod
        bra     __trap0
.Lchmod:
        .size   _chmod,.Lchmod-_chmod
        .stabs  "",36,0,0,.Lchmod-_chmod

        .global _chown
        .type   _chown,@function
        .stabs  XSTRING2(_chown,:F(0,1)),36,0,11,_chown
        .stabs  "name:P(0,1)",64,0,1,0
        .stabs  "uid:P(0,1)",64,0,1,1
        .stabs  "gid:P(0,1)",64,0,1,2
_chown:
        ldi     r4, SYS_chown
        bra     __trap0
.Lchown:
        .size   _chown,.Lchown-_chown
        .stabs  "",36,0,0,.Lchown-_chown

        .global _fork
        .type   _fork,@function
        .stabs  XSTRING2(_fork,:F(0,1)),36,0,12,_fork
_fork:
        ldi     r4, SYS_fork
        bra     __trap0
.Lfork:
        .size   _fork,.Lfork-_fork
        .stabs  "",36,0,0,.Lfork-_fork

        .global _wait
        .type   _wait,@function
        .stabs  "status:P(0,1)",64,0,1,0
        .stabs  XSTRING2(_wait,:F(0,1)),36,0,13,_wait
_wait:
        ldi     r4, SYS_wait
        bra     __trap0
.Lwait:
        .size   _wait,.Lwait-_wait
        .stabs  "",36,0,0,.Lwait-_wait

        .global _execve
        .type   _execve,@function
        .stabs  "name:P(0,1)",64,0,1,0
        .stabs  "argv:P(0,1)",64,0,1,1
        .stabs  "envp:P(0,1)",64,0,1,2
        .stabs  XSTRING2(_execve,:F(0,1)),36,0,14,_execve
_execve:
        ldi     r4, SYS_execve
        bra     __trap0
.Lexecve:
        .size   _execve,.Lexecve-_execve
        .stabs  "",36,0,0,.Lexecve-_execve

        .global _execv
        .type   _execv,@function
        .stabs  XSTRING2(_execv,:F(0,1)),36,0,15,_execv
        .stabs  "name:P(0,1)",64,0,1,0
        .stabs  "argv:P(0,1)",64,0,1,1
_execv:
        ldi     r4, SYS_execv
        bra     __trap0
.Lexecv:
        .size   _execv,.Lexecv-_execv
        .stabs  "",36,0,0,.Lexecv-_execv

        .global _pipe
        .type   _pipe,@function
        .stabs  XSTRING2(_pipe,:F(0,1)),36,0,16,_pipe
        .stabs  "fds:P(0,1)",64,0,1,0
_pipe:
        ldi     r4, SYS_pipe
        bra     __trap0
.Lpipe:
        .size   _pipe,.Lpipe-_pipe
        .stabs  "",36,0,0,.Lpipe-_pipe

        .global time
        .type   time,@function
        .stabs  XSTRING2(time,:F(0,1)),36,0,17,time
        .stabs  "ptr:P(0,1)",64,0,1,0
time:
        ldi     r4, SYS_time
        bra     __trap0
.Ltime:
        .size   time,.Ltime-time
        .stabs  "",36,0,0,.Ltime-time

        .global _kill
        .type   _kill,@function
        .stabs  XSTRING2(_kill,:F(0,1)),36,0,18,_kill
        .stabs  "pid:P(0,1)",64,0,1,0
        .stabs  "sig:P(0,1)",64,0,1,1
_kill:
        ldi     r4, SYS_kill
        bra     __trap0
.Lkill:
        .size   _kill,.Lkill-_kill
        .stabs  "",36,0,0,.Lkill-_kill

        .global _getpid
        .type   _getpid,@function
        .stabs  XSTRING2(_getpid,:F(0,1)),36,0,19,_getpid
_getpid:
        ldi     r4, SYS_getpid
        bra     __trap0
.Lgetpid:
        .size   _getpid,.Lgetpid-_getpid
        .stabs  "",36,0,0,.Lgetpid-_getpid

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.