diff options
Diffstat (limited to 'src/kernel/kernel.C')
-rw-r--r-- | src/kernel/kernel.C | 33 |
1 files changed, 28 insertions, 5 deletions
diff --git a/src/kernel/kernel.C b/src/kernel/kernel.C index 2d97204e1..d44095719 100644 --- a/src/kernel/kernel.C +++ b/src/kernel/kernel.C @@ -1,14 +1,37 @@ #include <stdint.h> #include <kernel/console.H> +#include <util/singleton.H> + +class Kernel +{ + public: + void cppBootstrap(); + + protected: + Kernel() {}; +}; int main() { printk("Booting Chenoo kernel...\n"); - printk("Testing a character %c %c %c\n", 'a', 'b', 'c'); - printk("Testing numbers %hhd %hu %x %lx %lld\n", - (char)-1, (short)1234, 0xabcdef12, 0xdeadbeef, - 0x0123456789abcdef); - while(1); + + Kernel& kernel = Singleton<Kernel>::instance(); + kernel.cppBootstrap(); + while(1); return 0; } + +void Kernel::cppBootstrap() +{ + // Call default constructors for any static objects. + extern void (*ctor_start)(); + extern void (*ctor_end)(); + void(**ctors)() = &ctor_start; + while(ctors != &ctor_end) + { + (*ctors)(); + ctors++; + } +} + |