aboutsummaryrefslogtreecommitdiff
path: root/system.old/libraries/sys/start.zig
diff options
context:
space:
mode:
Diffstat (limited to 'system.old/libraries/sys/start.zig')
-rw-r--r--system.old/libraries/sys/start.zig16
1 files changed, 16 insertions, 0 deletions
diff --git a/system.old/libraries/sys/start.zig b/system.old/libraries/sys/start.zig
new file mode 100644
index 0000000..a65eec8
--- /dev/null
+++ b/system.old/libraries/sys/start.zig
@@ -0,0 +1,16 @@
+//! Entry point
+
+extern fn main(pc: u32, pv: [*]const [*:0]const u8) u8;
+
+export fn _start() callconv(.naked) noreturn {
+ asm volatile (
+ \\mov (%%rsp), %%edi
+ \\mov 8(%%rsp), %%rsi
+ \\and $-16, %%rsp
+ \\call main
+ \\movzbl %%al, %%edi
+ \\mov $0x01, %%eax
+ \\syscall
+ \\ud2
+ );
+}