lib.rs 672 B

12345678910111213141516171819202122232425262728293031323334353637
  1. //! crt0
  2. #![no_std]
  3. #![feature(asm)]
  4. #![feature(lang_items)]
  5. #![feature(naked_functions)]
  6. extern crate platform;
  7. use platform::types::*;
  8. #[no_mangle]
  9. #[naked]
  10. pub unsafe extern "C" fn _start() {
  11. asm!("mov rdi, rsp
  12. call _start_rust"
  13. :
  14. :
  15. :
  16. : "intel"
  17. );
  18. }
  19. #[inline(never)]
  20. #[no_mangle]
  21. pub unsafe extern "C" fn _start_rust(sp: usize) -> ! {
  22. extern "C" {
  23. fn main(argc: c_int, argv: *const *const c_char) -> c_int;
  24. }
  25. platform::exit(main(0, 0 as *const *const c_char));
  26. }
  27. #[lang = "panic_fmt"]
  28. pub extern "C" fn rust_begin_unwind(fmt: ::core::fmt::Arguments, file: &str, line: u32) -> ! {
  29. loop {}
  30. }