diff --git a/Kernel/Arch/aarch64/init.cpp b/Kernel/Arch/aarch64/init.cpp index e9b63ef17d..f41ad34a63 100644 --- a/Kernel/Arch/aarch64/init.cpp +++ b/Kernel/Arch/aarch64/init.cpp @@ -129,11 +129,6 @@ extern "C" [[noreturn]] void init() CommandLine::initialize(); - auto& framebuffer = RPi::Framebuffer::the(); - if (framebuffer.initialized()) { - g_boot_console = &try_make_lock_ref_counted(framebuffer.gpu_buffer(), framebuffer.width(), framebuffer.width(), framebuffer.pitch()).value().leak_ref(); - draw_logo(); - } dmesgln("Starting SerenityOS..."); dmesgln("Initialize MMU"); @@ -145,6 +140,12 @@ extern "C" [[noreturn]] void init() for (ctor_func_t* ctor = start_ctors; ctor < end_ctors; ctor++) (*ctor)(); + auto& framebuffer = RPi::Framebuffer::the(); + if (framebuffer.initialized()) { + g_boot_console = &try_make_lock_ref_counted(PhysicalAddress((PhysicalPtr)framebuffer.gpu_buffer()), framebuffer.width(), framebuffer.height(), framebuffer.pitch()).value().leak_ref(); + draw_logo(); + } + initialize_interrupts(); InterruptManagement::initialize(); Processor::enable_interrupts(); diff --git a/Kernel/Graphics/Console/BootFramebufferConsole.cpp b/Kernel/Graphics/Console/BootFramebufferConsole.cpp index 36ab11c2d6..c950072a7c 100644 --- a/Kernel/Graphics/Console/BootFramebufferConsole.cpp +++ b/Kernel/Graphics/Console/BootFramebufferConsole.cpp @@ -6,34 +6,19 @@ #include #include -// FIXME: Port MemoryManager to aarch64 -#if !ARCH(AARCH64) -# include -#endif +#include namespace Kernel::Graphics { -// FIXME: Port MemoryManager to aarch64 -#if ARCH(AARCH64) -BootFramebufferConsole::BootFramebufferConsole(u8* framebuffer_addr, size_t width, size_t height, size_t pitch) - : GenericFramebufferConsoleImpl(width, height, pitch) - , m_framebuffer(framebuffer_addr) -#else BootFramebufferConsole::BootFramebufferConsole(PhysicalAddress framebuffer_addr, size_t width, size_t height, size_t pitch) : GenericFramebufferConsoleImpl(width, height, pitch) -#endif { -// FIXME: Port MemoryManager to aarch64 -#if ARCH(AARCH64) - m_framebuffer_data = framebuffer_addr; -#else // NOTE: We're very early in the boot process, memory allocations shouldn't really fail auto framebuffer_end = Memory::page_round_up(framebuffer_addr.offset(height * pitch * sizeof(u32)).get()).release_value(); m_framebuffer = MM.allocate_kernel_region(framebuffer_addr.page_base(), framebuffer_end - framebuffer_addr.page_base().get(), "Boot Framebuffer"sv, Memory::Region::Access::ReadWrite).release_value(); [[maybe_unused]] auto result = m_framebuffer->set_write_combine(true); m_framebuffer_data = m_framebuffer->vaddr().offset(framebuffer_addr.offset_in_page()).as_ptr(); -#endif memset(m_framebuffer_data, 0, height * pitch * sizeof(u32)); } diff --git a/Kernel/Graphics/Console/BootFramebufferConsole.h b/Kernel/Graphics/Console/BootFramebufferConsole.h index a04a8282e0..f37ea6ccd5 100644 --- a/Kernel/Graphics/Console/BootFramebufferConsole.h +++ b/Kernel/Graphics/Console/BootFramebufferConsole.h @@ -23,12 +23,7 @@ public: virtual void flush(size_t, size_t, size_t, size_t) override { } virtual void set_resolution(size_t, size_t, size_t) override { } -// FIXME: Port MemoryManager to aarch64 -#if ARCH(AARCH64) - BootFramebufferConsole(u8* framebuffer_addr, size_t width, size_t height, size_t pitch); -#else BootFramebufferConsole(PhysicalAddress framebuffer_addr, size_t width, size_t height, size_t pitch); -#endif private: virtual void set_cursor(size_t x, size_t y) override; @@ -40,12 +35,7 @@ protected: virtual u8* framebuffer_data() override; -// FIXME: Port MemoryManager to aarch64 -#if ARCH(AARCH64) - u8* m_framebuffer; -#else OwnPtr m_framebuffer; -#endif u8* m_framebuffer_data {}; mutable Spinlock m_lock { LockRank::None }; };