[kernel] Fix initial kernel_main triple-fault
At some point, `init_console()` ended up not being before the first usage of some `log::` functions, which were jumping off into garbage. Tags: initialization boot
This commit is contained in:
@@ -33,6 +33,7 @@ extern "C" {
|
|||||||
extern void __kernel_assert(const char *, unsigned, const char *);
|
extern void __kernel_assert(const char *, unsigned, const char *);
|
||||||
|
|
||||||
extern kutil::heap_allocator g_kernel_heap;
|
extern kutil::heap_allocator g_kernel_heap;
|
||||||
|
using namespace kernel;
|
||||||
|
|
||||||
class test_observer :
|
class test_observer :
|
||||||
public kobject::observer
|
public kobject::observer
|
||||||
@@ -69,16 +70,20 @@ init_console()
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
kernel_main(kernel::args::header *header)
|
kernel_main(args::header *header)
|
||||||
{
|
{
|
||||||
bool waiting = header && (header->mode == kernel::args::mode::debug);
|
bool waiting = header && (header->mode == args::mode::debug);
|
||||||
while (waiting);
|
while (waiting);
|
||||||
|
|
||||||
kutil::assert_set_callback(__kernel_assert);
|
kutil::assert_set_callback(__kernel_assert);
|
||||||
|
init_console();
|
||||||
|
|
||||||
gdt_init();
|
gdt_init();
|
||||||
interrupts_init();
|
interrupts_init();
|
||||||
|
|
||||||
|
cpu_id cpu;
|
||||||
|
cpu.validate();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
memory_initialize(
|
memory_initialize(
|
||||||
header->scratch_pages,
|
header->scratch_pages,
|
||||||
@@ -94,7 +99,6 @@ kernel_main(kernel::args::header *header)
|
|||||||
header->frame_buffer_length);
|
header->frame_buffer_length);
|
||||||
}
|
}
|
||||||
|
|
||||||
init_console();
|
|
||||||
|
|
||||||
log::debug(logs::boot, " jsix header is at: %016lx", header);
|
log::debug(logs::boot, " jsix header is at: %016lx", header);
|
||||||
log::debug(logs::boot, " Framebuffer is at: %016lx", header->frame_buffer);
|
log::debug(logs::boot, " Framebuffer is at: %016lx", header->frame_buffer);
|
||||||
@@ -103,9 +107,6 @@ kernel_main(kernel::args::header *header)
|
|||||||
log::debug(logs::boot, "ACPI root table is at: %016lx", header->acpi_table);
|
log::debug(logs::boot, "ACPI root table is at: %016lx", header->acpi_table);
|
||||||
log::debug(logs::boot, "Runtime service is at: %016lx", header->runtime);
|
log::debug(logs::boot, "Runtime service is at: %016lx", header->runtime);
|
||||||
|
|
||||||
cpu_id cpu;
|
|
||||||
cpu.validate();
|
|
||||||
|
|
||||||
initrd::disk ird(header->initrd, heap);
|
initrd::disk ird(header->initrd, heap);
|
||||||
log::info(logs::boot, "initrd loaded with %d files.", ird.files().count());
|
log::info(logs::boot, "initrd loaded with %d files.", ird.files().count());
|
||||||
for (auto &f : ird.files())
|
for (auto &f : ird.files())
|
||||||
|
|||||||
Reference in New Issue
Block a user