1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 23:27:43 +00:00

Kernel: Add basic aarch64 support to MemoryManager

FIXME: There's still a lot to do like for example, port `quickmap_page`.
This does however get us further into the boot process than before.
This commit is contained in:
Filiph Sandström 2022-08-17 12:38:58 +02:00 committed by Linus Groh
parent 14fe03569a
commit 7e1e208d08
6 changed files with 41 additions and 18 deletions

View file

@ -13,8 +13,7 @@
#include <Kernel/Arch/ProcessorSpecificDataID.h>
#include <Kernel/Arch/aarch64/Registers.h>
class VirtualAddress;
#include <Kernel/VirtualAddress.h>
namespace Kernel {
@ -36,18 +35,19 @@ struct [[gnu::aligned(16)]] FPUState
extern Processor* g_current_processor;
class Processor {
void* m_processor_specific_data[static_cast<size_t>(ProcessorSpecificDataID::__Count)];
public:
void initialize(u32 cpu);
void set_specific(ProcessorSpecificDataID /*specific_id*/, void* /*ptr*/)
{
VERIFY_NOT_REACHED();
}
template<typename T>
T* get_specific()
{
VERIFY_NOT_REACHED();
return 0;
return static_cast<T*>(m_processor_specific_data[static_cast<size_t>(T::processor_specific_data_id())]);
}
void set_specific(ProcessorSpecificDataID specific_id, void* ptr)
{
m_processor_specific_data[static_cast<size_t>(specific_id)] = ptr;
}
ALWAYS_INLINE static void pause()
@ -76,11 +76,7 @@ public:
return false;
}
ALWAYS_INLINE static void flush_tlb_local(VirtualAddress&, size_t&)
{
VERIFY_NOT_REACHED();
}
static void flush_tlb_local(VirtualAddress vaddr, size_t page_count);
ALWAYS_INLINE static void flush_tlb(Memory::PageDirectory const*, VirtualAddress const&, size_t)
{
VERIFY_NOT_REACHED();