Microkernel thing OS experiment (Zig ⚡)
1const std = @import("std");
2const os = @import("os.zig");
3
4export fn _start() callconv(.c) noreturn {
5 // _ = os.syscall1(SYS_poke, 0xB16B00B5BADBABE);
6 // _ = os.syscall1(SYS_exit, 0x69696969);
7 asm volatile ("int3");
8 asm volatile (
9 \\ mov $0x69696969, %%rdi
10 \\ xor %%rsi, %%rsi
11 \\ xor %%rbx, %%rbx
12 \\ mainloop:
13 \\ xor %%rax, %%rax
14 \\ delayloop:
15 \\ inc %%rax
16 \\ cmp $0x4000000, %%rax
17 \\ jnz delayloop
18 \\ inc %%rbx
19 \\ syscall
20 \\ jmp mainloop
21 );
22
23 die();
24}
25
26pub inline fn die() noreturn {
27 while (true) {}
28}
29
30pub const SYS_exit = 0x420;
31pub const SYS_poke = 0x69;