1# xstormy16 system calls for the simulator 2 3#include <syscall.h> 4 5 .text 6 7 .globl _exit 8_exit: 9 mov r1,#SYS_exit 10 .hword 0x0001 11 bnz r1,#0,syscall_error 12 ret 130: .size exit,0b-_exit 14 15 .globl _open 16_open: 17 mov r1,#SYS_open 18 .hword 0x0001 19 bnz r1,#0,syscall_error 20 ret 210: .size open,0b-_open 22 23 .globl _close 24_close: 25 mov r1,#SYS_close 26 .hword 0x0001 27 bnz r1,#0,syscall_error 28 ret 290: .size close,0b-_close 30 31 .globl _read 32_read: 33 mov r1,#SYS_read 34 .hword 0x0001 35 bnz r1,#0,syscall_error 36 ret 370: .size read,0b-_read 38 39 .globl _write 40_write: 41 mov r1,#SYS_write 42 .hword 0x0001 43 bnz r1,#0,syscall_error 44 ret 450: .size write,0b-_write 46 47 .globl _lseek 48_lseek: 49 mov r1,#SYS_lseek 50 .hword 0x0001 51 bnz r1,#0,syscall_error 52 ret 530: .size lseek,0b-_lseek 54 55 .globl _unlink 56_unlink: 57 mov r1,#SYS_unlink 58 .hword 0x0001 59 bnz r1,#0,syscall_error 60 ret 610: .size unlink,0b-_unlink 62 63 .globl _getpid 64_getpid: 65 mov r1,#SYS_getpid 66 .hword 0x0001 67 bnz r1,#0,syscall_error 68 ret 690: .size getpid,0b-_getpid 70 71 .globl _kill 72_kill: 73 mov r1,#SYS_kill 74 .hword 0x0001 75 bnz r1,#0,syscall_error 76 ret 770: .size kill,0b-_kill 78 79 .globl _fstat 80_fstat: 81 mov r1,#SYS_fstat 82 .hword 0x0001 83 bnz r1,#0,syscall_error 84 ret 850: .size fstat,0b-_fstat 86 87 .globl _chdir 88_chdir: 89 mov r1,#SYS_chdir 90 .hword 0x0001 91 bnz r1,#0,syscall_error 92 ret 930: .size chdir,0b-_chdir 94 95 .globl _stat 96_stat: 97 mov r1,#SYS_stat 98 .hword 0x0001 99 bnz r1,#0,syscall_error 100 ret 1010: .size stat,0b-_stat 102 103 .globl _chmod 104_chmod: 105 mov r1,#SYS_chmod 106 .hword 0x0001 107 bnz r1,#0,syscall_error 108 ret 1090: .size chmod,0b-_chmod 110 111 .globl _utime 112_utime: 113 mov r1,#SYS_utime 114 .hword 0x0001 115 bnz r1,#0,syscall_error 116 ret 1170: .size utime,0b-_utime 118 119 .globl _time 120_time: 121 mov r1,#SYS_time 122 .hword 0x0001 123 bnz r1,#0,syscall_error 124 ret 1250: .size time,0b-_time 126 127 .globl _gettimeofday 128_gettimeofday: 129 mov r1,#SYS_gettimeofday 130 .hword 0x0001 131 bnz r1,#0,syscall_error 132 ret 1330: .size gettimeofday,0b-_gettimeofday 134 135 .globl _times 136_times: 137 mov r1,#SYS_times 138 .hword 0x0001 139 bnz r1,#0,syscall_error 140 ret 1410: .size times,0b-_times 142 143 .globl _link 144_link: 145 mov r1,#SYS_link 146 .hword 0x0001 147 bnz r1,#0,syscall_error 148 ret 1490: .size link,0b-_link 150 151syscall_error: 152# Return value for the syscall is in r2. Save it here, as 153# _errno will overwrite it with the address of the errno 154# variable. r0 is the errno. 155 push r2 156 push r0 157 callf __errno 158 pop r0 159 mov.w (r2),r0 160 pop r2 161 ret 1620: .size syscall_error,0b-syscall_error 163