Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'libgloss/xstormy16/syscalls.S')
-rw-r--r--libgloss/xstormy16/syscalls.S162
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