5 #include "sys/syscall.h"
8 /* This is used by _sbrk. */
9 register char *stack_ptr
asm ("r15");
16 return __trap34 (SYS_read
, file
, ptr
, len
);
24 return __trap34 (SYS_lseek
, file
, ptr
, dir
);
32 return __trap34 (SYS_write
, file
, ptr
, len
);
38 return __trap34 (SYS_close
, file
, 0, 0);
42 _link (char *old
, char *new)
50 extern char end
; /* Defined by the linker */
51 static char *heap_end
;
58 prev_heap_end
= heap_end
;
59 if (heap_end
+ incr
> stack_ptr
)
61 _write (1, "Heap and stack collision\n", 25);
65 return (caddr_t
) prev_heap_end
;
72 st
->st_mode
= S_IFCHR
;
77 _open (const char *path
,
80 return __trap34 (SYS_open
, path
, flags
, 0);
84 _creat (const char *path
,
87 return __trap34 (SYS_creat
, path
, mode
, 0);
104 return __trap34 (SYS_exit
, n
, 0, 0);
109 return __trap34 (SYS_exit
, 0xdead, 0, 0);
122 _stat (const char *path
, struct stat
*st
)
125 return __trap34 (SYS_stat
, path
, st
, 0);
129 _chmod (const char *path
, short mode
)
131 return __trap34 (SYS_chmod
, path
, mode
);
135 _chown (const char *path
, short owner
, short group
)
137 return __trap34 (SYS_chown
, path
, owner
, group
);
145 return __trap34 (SYS_utime
, path
, times
);
151 return __trap34 (SYS_fork
);
158 return __trap34 (SYS_wait
);
162 _execve (const char *path
, char *const argv
[], char *const envp
[])
164 return __trap34 (SYS_execve
, path
, argv
, envp
);
168 _execv (const char *path
, char *const argv
[])
170 return __trap34 (SYS_execv
, path
, argv
);
176 return __trap34 (SYS_pipe
, fd
);
179 /* This is only provided because _gettimeofday_r and _times_r are
180 defined in the same module, so we avoid a link error. */
182 _times (struct tms
*tp
)
188 _gettimeofday (struct timeval
*tv
, struct timezone
*tz
)
191 tv
->tv_sec
= __trap34 (SYS_time
);
196 __setup_argv_for_main (int argc
)
201 argv
= __builtin_alloca ((1 + argc
) * sizeof (*argv
));
205 argv
[i
] = __builtin_alloca (1 + __trap34 (SYS_argnlen
, i
));
206 __trap34 (SYS_argn
, i
, argv
[i
]);
209 return main (argc
, argv
);
213 __setup_argv_and_call_main ()
215 int argc
= __trap34 (SYS_argc
);
218 return main (argc
, NULL
);
220 return __setup_argv_for_main (argc
);