#include "Framebuffer.h" #include "Init.h" #include "MemoryManager.h" #include "arch/MMU.h" #include "arch/Serial.h" extern u8 fb[1]; extern "C" void _start() { Init::check_magic(); Init::early_init(); Serial::println("Hello, world!"); Framebuffer::rect(0, 0, 200, 200, 0xFF00FF00); Serial::println(MMU::get_physical((u64)fb).has_error() ? "fb is not mapped" : "fb is mapped!!"); const u64 address = 0xfffffffff8000000; u64 physical = MemoryManager::alloc_physical_page().release_value(); bool success = !MMU::map(address, physical, MMU::ReadWrite | MMU::NoExecute).has_error(); if (success) Serial::println("Mapped page :)"); else Serial::println("Failed to map page"); if (MMU::get_physical(address).release_value() == physical) Serial::println("Mapping is active ;)"); else Serial::println("Mapping is not active"); int flags = MMU::get_flags(address).release_value(); if (flags & MMU::ReadWrite) Serial::println("Mapping is writable"); if (flags & MMU::NoExecute) Serial::println("Mapping is not executable"); u32* ptr = (u32*)address; (void)*ptr; Serial::println("Can read from pointer"); *ptr = 8; Serial::println("Can write to pointer"); for (;;) ; }