diff options
| author | Marin Ivanov <[email protected]> | 2024-05-01 02:20:50 +0300 |
|---|---|---|
| committer | Marin Ivanov <[email protected]> | 2024-05-01 02:20:50 +0300 |
| commit | ddd68a03738fcf643944eccfd461d5fd6af7ecdd (patch) | |
| tree | 0d44156b493b69894fa865a6f716584b3ac26b12 | |
| parent | 8c48fd1dfe6a2d973a4ab3505bbe4437984ed456 (diff) | |
fix: setting up stack
| -rw-r--r-- | src/main.zig | 12 |
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) {} } |
