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