diff --git a/tools/arch/i386/start.S b/tools/arch/i386/start.S index a6b8845..0f1043f 100644 --- a/tools/arch/i386/start.S +++ b/tools/arch/i386/start.S @@ -67,6 +67,9 @@ _start: call __stack_chk_setup #endif + /* call the global constructors */ + call _init + /* run the userland kernel */ push $0x0 push $0x0 diff --git a/tools/init.c b/tools/init.c new file mode 100644 index 0000000..6e7e8a6 --- /dev/null +++ b/tools/init.c @@ -0,0 +1,21 @@ +/* $Id$ */ +/* Copyright (c) 2018 Pierre Pronchery */ +/* This file is part of DeforaOS uKernel */ + + + +#include "drivers/bus.h" +#include "drivers/console.h" + +#define TOOLS_BUS "tty" +#define TOOLS_CONSOLE "stdio" + + +int _init(void) +{ + ukBus * bus; + + bus = bus_init(TOOLS_BUS); + console_init(bus, TOOLS_CONSOLE); + return 0; +} diff --git a/tools/main.c b/tools/main.c index 17d0ab4..403b2f6 100644 --- a/tools/main.c +++ b/tools/main.c @@ -2,10 +2,4 @@ /* Copyright (c) 2018 Pierre Pronchery */ /* This file is part of DeforaOS uKernel */ - - -#define KERNEL_BUS "tty" -#define KERNEL_CONSOLE "stdio" - - #include "../src/kernel/main.c" diff --git a/tools/project.conf b/tools/project.conf index 0731fe5..882304e 100644 --- a/tools/project.conf +++ b/tools/project.conf @@ -14,7 +14,7 @@ sources=start.S [uKernel] type=binary -sources=bus.c,console.c,main.c +sources=bus.c,console.c,init.c,main.c ldflags=$(OBJDIR)start.o $(OBJDIR)../src/lib/libuKernel.a `$(CC) -print-libgcc-file-name` depends=$(OBJDIR)start.o,$(OBJDIR)../src/lib/libuKernel.a