diff options
Diffstat (limited to 'src/main.zig')
| -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) {} } |
