aboutsummaryrefslogtreecommitdiff
path: root/src/kernel.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/kernel.cc')
-rw-r--r--src/kernel.cc18
1 files changed, 14 insertions, 4 deletions
diff --git a/src/kernel.cc b/src/kernel.cc
index 7aaaa37..37773e1 100644
--- a/src/kernel.cc
+++ b/src/kernel.cc
@@ -15,16 +15,26 @@
#include "idt.h"
#include "serial.h"
+SerialPort serial0;
+CGA video0;
+
+typedef void (*constructor)();
+
extern "C" {
+
+constructor start_ctors;
+constructor end_ctors;
+void kernel_constructors() {
+ for (constructor* i = &start_ctors; i != &end_ctors; ++i) (*i)();
+}
+
void dump_multiboot(uint32_t mb_magic, uint32_t mb_addr);
void dump_gdt();
void kernel_main([[maybe_unused]] uint32_t mb_magic, [[maybe_unused]] uint32_t mb_addr) {
- SerialPort s0;
- if (s0.self_check()) Console::set(&s0);
+ if (serial0.self_check()) Console::set(&serial0);
- CGA terminal;
- Console::set(&terminal);
+ Console::set(&video0);
printk("Hello, kernel World!\n");