org.xwt.mips -> org.ibex.nestedvm
[nestedvm.git] / src / org / ibex / nestedvm / crt0.c
1 #include <stddef.h>
2
3 extern int _gp[];
4
5 extern int main(int argc, char **argv, char **envp);
6 extern void exit(int status);
7 extern int atexit(void (*f)());
8
9 /* For constuctors/destructors */
10 extern void _init();
11 extern void _fini();
12
13 char **environ;
14     
15 void _start(char **argv, char **environ_) {
16     int argc;
17     
18     environ = environ_;
19     
20     /* Call global constructors */
21     _init();
22     
23     /* Register _fini() to be called on exit */
24     atexit(_fini);
25     
26     /* Count the arguments */
27     for(argc=0;argv[argc];argc++);
28         
29     /* Call main and exit */
30     exit(main(argc,argv,environ));
31 }