mirror of
https://github.com/RGBCube/serenity
synced 2025-07-10 04:17:34 +00:00
Kernel: Move TrapFrame into its own header on aarch64
This commit is contained in:
parent
4aaf38e4f7
commit
99ae4fa161
7 changed files with 88 additions and 20 deletions
|
@ -6,18 +6,34 @@
|
|||
|
||||
#include <Kernel/Graphics/Console/BootFramebufferConsole.h>
|
||||
#include <Kernel/Locking/Spinlock.h>
|
||||
#include <Kernel/Memory/MemoryManager.h>
|
||||
// FIXME: Port MemoryManager to aarch64
|
||||
#if !ARCH(AARCH64)
|
||||
# include <Kernel/Memory/MemoryManager.h>
|
||||
#endif
|
||||
|
||||
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));
|
||||
}
|
||||
|
||||
|
@ -30,6 +46,7 @@ void BootFramebufferConsole::clear(size_t x, size_t y, size_t length)
|
|||
|
||||
void BootFramebufferConsole::clear_glyph(size_t x, size_t y)
|
||||
{
|
||||
|
||||
VERIFY(m_lock.is_locked());
|
||||
GenericFramebufferConsoleImpl::clear_glyph(x, y);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue