bootable.zig (565B)
1 // Boot stub for bootable programs (ran by bootloader) 2 3 pub const bootable_asm = 4 \\ ldr sp, =__stack_end__ 5 \\ mov fp, 0x0 6 \\ bl %[kmain_fn:P] 7 \\ bl %[abort_fn:P] 8 ; 9 10 pub fn make(comptime kmain: *const fn () callconv(.c) void, comptime abort: *const fn () callconv(.c) void) type { 11 return struct { 12 pub fn _start() linksection(".kmain") callconv(.naked) noreturn { 13 asm volatile (bootable_asm 14 : 15 : [kmain_fn] "X" (kmain), 16 [abort_fn] "X" (abort), 17 ); 18 } 19 }; 20 }