diff options
Diffstat (limited to 'libgloss/xstormy16/syscalls.S')
-rw-r--r-- | libgloss/xstormy16/syscalls.S | 162 |
1 files changed, 162 insertions, 0 deletions
diff --git a/libgloss/xstormy16/syscalls.S b/libgloss/xstormy16/syscalls.S new file mode 100644 index 000000000..8f4175f31 --- /dev/null +++ b/libgloss/xstormy16/syscalls.S @@ -0,0 +1,162 @@ +# xstormy16 system calls for the simulator + +#include <syscall.h> + + .text + + .globl _exit +_exit: + mov r1,#SYS_exit + .hword 0x0001 + bnz r1,#0,syscall_error + ret +0: .size exit,0b-_exit + + .globl _open +_open: + mov r1,#SYS_open + .hword 0x0001 + bnz r1,#0,syscall_error + ret +0: .size open,0b-_open + + .globl _close +_close: + mov r1,#SYS_close + .hword 0x0001 + bnz r1,#0,syscall_error + ret +0: .size close,0b-_close + + .globl _read +_read: + mov r1,#SYS_read + .hword 0x0001 + bnz r1,#0,syscall_error + ret +0: .size read,0b-_read + + .globl _write +_write: + mov r1,#SYS_write + .hword 0x0001 + bnz r1,#0,syscall_error + ret +0: .size write,0b-_write + + .globl _lseek +_lseek: + mov r1,#SYS_lseek + .hword 0x0001 + bnz r1,#0,syscall_error + ret +0: .size lseek,0b-_lseek + + .globl _unlink +_unlink: + mov r1,#SYS_unlink + .hword 0x0001 + bnz r1,#0,syscall_error + ret +0: .size unlink,0b-_unlink + + .globl _getpid +_getpid: + mov r1,#SYS_getpid + .hword 0x0001 + bnz r1,#0,syscall_error + ret +0: .size getpid,0b-_getpid + + .globl _kill +_kill: + mov r1,#SYS_kill + .hword 0x0001 + bnz r1,#0,syscall_error + ret +0: .size kill,0b-_kill + + .globl _fstat +_fstat: + mov r1,#SYS_fstat + .hword 0x0001 + bnz r1,#0,syscall_error + ret +0: .size fstat,0b-_fstat + + .globl _chdir +_chdir: + mov r1,#SYS_chdir + .hword 0x0001 + bnz r1,#0,syscall_error + ret +0: .size chdir,0b-_chdir + + .globl _stat +_stat: + mov r1,#SYS_stat + .hword 0x0001 + bnz r1,#0,syscall_error + ret +0: .size stat,0b-_stat + + .globl _chmod +_chmod: + mov r1,#SYS_chmod + .hword 0x0001 + bnz r1,#0,syscall_error + ret +0: .size chmod,0b-_chmod + + .globl _utime +_utime: + mov r1,#SYS_utime + .hword 0x0001 + bnz r1,#0,syscall_error + ret +0: .size utime,0b-_utime + + .globl _time +_time: + mov r1,#SYS_time + .hword 0x0001 + bnz r1,#0,syscall_error + ret +0: .size time,0b-_time + + .globl _gettimeofday +_gettimeofday: + mov r1,#SYS_gettimeofday + .hword 0x0001 + bnz r1,#0,syscall_error + ret +0: .size gettimeofday,0b-_gettimeofday + + .globl _times +_times: + mov r1,#SYS_times + .hword 0x0001 + bnz r1,#0,syscall_error + ret +0: .size times,0b-_times + + .globl _link +_link: + mov r1,#SYS_link + .hword 0x0001 + bnz r1,#0,syscall_error + ret +0: .size link,0b-_link + +syscall_error: +# Return value for the syscall is in r2. Save it here, as +# _errno will overwrite it with the address of the errno +# variable. r0 is the errno. + push r2 + push r0 + callf __errno + pop r0 + mov.w (r2),r0 + pop r2 + ret +0: .size syscall_error,0b-syscall_error |