#include "../vendor/limine/limine.h" #include "../version.h" #include #include #if defined (__x86_64__) #include #endif using namespace hos::io; __attribute__ ((used, section(".requests"))) static volatile LIMINE_BASE_REVISION(3); __attribute__ ((used, section(".requests"))) static volatile limine_framebuffer_request framebuffer_request = { .id = LIMINE_FRAMEBUFFER_REQUEST, .revision = 0, .response = nullptr }; __attribute__ ((used, section(".requests_start"))) static volatile LIMINE_REQUESTS_START_MARKER; __attribute__ ((used, section(".requests_end"))) static volatile LIMINE_REQUESTS_END_MARKER; static void hcf (void) { for (;;) { asm ("hlt"); } } void init (void); extern "C" void _launch (void); void _launch (void) { // Global C++ Constructors init(); logger logger(log_level::DEBUG); logger.write(log_level::INFO, "Welcome to HinterOS %s!", HOS_CORE_VERSION); if (LIMINE_BASE_REVISION_SUPPORTED == false) { logger.write(log_level::FATAL, "Limine revision mismatch."); hcf(); } logger.write(log_level::DEBUG, "Limine... ok"); struct limine_framebuffer *fb = framebuffer_request.response->framebuffers[0]; for (std::size_t i = 0; i < (fb->width - 1) * (fb->height - 1); i += 2) { volatile std::uint32_t *fbptr = static_cast(fb->address); fbptr[i] = 0xffffff00; } hcf(); }