entry.cpp 767 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. #include <stdio.h>
  2. #include <Kernel/Syscall.h>
  3. #include <AK/StringImpl.h>
  4. extern "C" int main(int, char**);
  5. FILE __default_streams[3];
  6. int errno;
  7. FILE* stdin;
  8. FILE* stdout;
  9. FILE* stderr;
  10. extern "C" int _start()
  11. {
  12. errno = 0;
  13. __default_streams[0].fd = 0;
  14. stdin = &__default_streams[0];
  15. __default_streams[1].fd = 1;
  16. stdout = &__default_streams[1];
  17. __default_streams[2].fd = 2;
  18. stderr = &__default_streams[2];
  19. StringImpl::initializeGlobals();
  20. int argc;
  21. char** argv;
  22. int rc = Syscall::invoke(Syscall::GetArguments, (dword)&argc, (dword)&argv);
  23. int status = 254;
  24. if (rc == 0)
  25. status = main(argc, argv);
  26. Syscall::invoke(Syscall::PosixExit, status);
  27. // Birger's birthday <3
  28. return 20150614;
  29. }