aboutsummaryrefslogtreecommitdiff
path: root/src/main.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.zig')
-rw-r--r--src/main.zig31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/main.zig b/src/main.zig
new file mode 100644
index 0000000..298e2c2
--- /dev/null
+++ b/src/main.zig
@@ -0,0 +1,31 @@
+const console = @import("console.zig");
+
+const ALIGN = 1 << 0;
+const MEMINFO = 1 << 1;
+const MAGIC = 0x1BADB002;
+const FLAGS = ALIGN | MEMINFO;
+
+const MultibootHeader = packed struct {
+ magic: i32 = MAGIC,
+ flags: i32,
+ checksum: i32,
+};
+
+export var multiboot align(4) linksection(".multiboot") = MultibootHeader{
+ .flags = FLAGS,
+ .checksum = -(MAGIC + FLAGS),
+};
+
+export var stack_bytes: [16 * 1024]u8 align(16) linksection(".bss") = undefined;
+const stack_bytes_slice = stack_bytes[0..];
+
+export fn _start() callconv(.Naked) noreturn {
+ @call(.{ .stack = stack_bytes_slice }, kmain, .{});
+
+ while (true) {}
+}
+
+fn kmain() void {
+ console.initialize();
+ console.puts("Hello world!");
+}