OSDN Git Service

first commit
[winexe-harib/winexe-harib.git] / haribote / startup.cpp
1 //\8eQ\8dlURL\r//http://wiki.monaos.org/pukiwiki.php?%B5%C4%CF%C0%2Fstatic%CA%D1%BF%F4%A4%CE%BD%E9%B4%FC%B2%BD\r#include <stdio.h>\r#include "typedefs.h"\r\rtypedef void (*PFV)(void);\r\r#ifdef __cplusplus\rextern "C" {\r#endif\rextern PFV       __CTOR_LIST__[];\rextern PFV     __DTOR_LIST__[];\r#ifdef __cplusplus\r}\r#endif\r\rextern "C" int _main(int,char*[],char*[]);\r\rstatic void __finit(const PFV *list) {\r       DWORD   cnt;\r\r  cnt = (DWORD)list[0];\r  list++;\r        list = (PFV *)((((DWORD)list) + 3) & (~3));             // align bug?\r  if (cnt == -1) {\r               while(*list != NULL) {\r                 (**list++)();\r          }\r      }\r      else {\r         while(cnt) {\r                   cnt--;\r                 (**list++)();\r          }\r      }\r}\r\rextern "C" int user_start(void) {\r int             r;\r\r    //memmng_initialize(0xC0000000, 8 * 1024 * 1024);\r      //__fsio_initialize();\r //makearg();\r   __finit(__CTOR_LIST__);\r        r = _main(0, 0, 0);\r    __finit(__DTOR_LIST__);\r        //free(__argv);\r        //memmng_deinitialize();\r       //syscall_kill();\r      return(r);\r}