| #![no_std] | |
| #![no_main] | |
| #![feature(lang_items)] | |
| use core::arch::asm; | |
| use core::arch::global_asm; | |
| use core::panic::PanicInfo; | |
| #[panic_handler] | |
| fn panic(_info: &PanicInfo) -> ! { | |
| exit(1); | |
| } | |
| global_asm! { | |
| ".global _start", | |
| "_start:", | |
| "mov rdi, rsp", | |
| "call start_main" | |
| } | |
| fn exit(status: i32) -> ! { | |
| unsafe { | |
| asm!( | |
| "syscall", | |
| in("rax") 60, | |
| in("rdi") status, | |
| options(noreturn) | |
| ); | |
| } | |
| } | |
| #[no_mangle] | |
| unsafe fn start_main(_stack_top: *const u8) -> ! { | |
| exit(0); | |
| } | |
| #[lang = "eh_personality"] | |
| extern "C" fn eh_personality() {} |