1 #![no_std] 2 #![no_main] 3 #![feature(lang_items)] 4 5 use core::arch::asm; 6 use core::arch::global_asm; 7 use core::panic::PanicInfo; 8 9 #[panic_handler] panic(_info: &PanicInfo) -> !10fn panic(_info: &PanicInfo) -> ! { 11 exit(1); 12 } 13 14 global_asm! { 15 ".global _start", 16 "_start:", 17 "mov rdi, rsp", 18 "call start_main" 19 } 20 exit(status: i32) -> !21fn exit(status: i32) -> ! { 22 unsafe { 23 asm!( 24 "syscall", 25 in("rax") 60, 26 in("rdi") status, 27 options(noreturn) 28 ); 29 } 30 } 31 32 #[no_mangle] start_main(_stack_top: *const u8) -> !33unsafe fn start_main(_stack_top: *const u8) -> ! { 34 exit(0); 35 } 36 37 #[lang = "eh_personality"] eh_personality()38extern "C" fn eh_personality() {} 39