aboutsummaryrefslogtreecommitdiff
path: root/src/main.zig
diff options
context:
space:
mode:
authorMarin Ivanov <[email protected]>2024-05-01 02:20:50 +0300
committerMarin Ivanov <[email protected]>2024-05-01 02:20:50 +0300
commitddd68a03738fcf643944eccfd461d5fd6af7ecdd (patch)
tree0d44156b493b69894fa865a6f716584b3ac26b12 /src/main.zig
parent8c48fd1dfe6a2d973a4ab3505bbe4437984ed456 (diff)
fix: setting up stack
Diffstat (limited to 'src/main.zig')
-rw-r--r--src/main.zig12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/main.zig b/src/main.zig
index 1f7facd..dedcb65 100644
--- a/src/main.zig
+++ b/src/main.zig
@@ -17,12 +17,18 @@ export const multiboot align(4) linksection(".multiboot") = MultibootHeader{
.checksum = -(MAGIC + FLAGS),
};
-export var stack_bytes: [16 * 1024]u8 align(16) linksection(".bss") = undefined;
-const stack_bytes_slice = stack_bytes[0..];
+export var stack: [16 * 1024]u8 align(16) linksection(".bss") = undefined;
+const stack_bytes_slice = stack[0..];
export fn _start() callconv(.Naked) noreturn {
// @call(.{ .stack = stack_bytes_slice }, kmain, .{});
- asm volatile ("jmp kmain");
+ asm volatile (
+ \\ mov %[stk], %rsp
+ \\ mov %rsp, %rbp
+ :
+ : [stk] "{rcx}" (@intFromPtr(&stack) + @sizeOf(@TypeOf(stack))),
+ );
+ asm volatile ("call kmain");
while (true) {}
}