[kernel] properly initialize the default thread context very early to avoid crash on pixies
diff --git a/include/kernel/thread.h b/include/kernel/thread.h
index 0bd286a..8f76291 100644
--- a/include/kernel/thread.h
+++ b/include/kernel/thread.h
@@ -96,6 +96,7 @@
#define DEFAULT_STACK_SIZE 8192
/* functions */
+void thread_init_early(void);
void thread_init(void);
void thread_become_idle(void) __NO_RETURN;
void thread_set_name(const char *name);
diff --git a/kernel/main.c b/kernel/main.c
index b7ab4ff..16a4099 100644
--- a/kernel/main.c
+++ b/kernel/main.c
@@ -58,6 +58,9 @@
void kmain(void) __NO_RETURN __EXTERNALLY_VISIBLE;
void kmain(void)
{
+ // get us into some sort of thread context
+ thread_init_early();
+
// early arch stuff
arch_early_init();
diff --git a/kernel/thread.c b/kernel/thread.c
index 1a23478..eeccdd6 100644
--- a/kernel/thread.c
+++ b/kernel/thread.c
@@ -409,7 +409,7 @@
exit_critical_section();
}
-void thread_init(void)
+void thread_init_early(void)
{
int i;
@@ -432,6 +432,10 @@
current_thread = t;
}
+void thread_init(void)
+{
+}
+
void thread_set_name(const char *name)
{
strlcpy(current_thread->name, name, sizeof(current_thread->name));