#include "limine.h" #include "boot.h" #include "string.h" char s_kernel_stack_initial[8192]; char *jove_bootargs; int jove_bootargs_len; struct limine_kernel_file_request s_kernel_file_req = { .id = LIMINE_KERNEL_FILE_REQUEST }; void _start(void) { __asm__ volatile("movq %0, %%rsp":: "r"((uintptr_t)&s_kernel_stack_initial + 8191)); struct limine_kernel_file_response *kernel_file_response = s_kernel_file_req.response; jove_bootargs = kernel_file_response->kernel_file->cmdline; jove_bootargs_len = strlen(jove_bootargs); //Zero all spaces in bootargs not enclosed with quotes. for(char *c = jove_bootargs; *c; c++) { if(*c == '"') { *c = 0; for(++c; *c && *c != '"'; c++); *(c++) = 0; continue; } if(*c == ' ') *c = 0; } extern void _jove_main(void); __asm__ volatile("movq $0, %%rbp"::); _jove_main(); }