mirror of
https://github.com/SerenityOS/serenity.git
synced 2025-01-22 17:31:58 -05:00
Kernel/aarch64: Implement tlb flushing
This initial implementation flushes the complete tlb cache. A FIXME is added to implement the partial tlb flushing.
This commit is contained in:
parent
424a974e01
commit
57901a6f62
2 changed files with 11 additions and 5 deletions
|
@ -41,7 +41,16 @@ void Processor::initialize(u32 cpu)
|
|||
|
||||
void Processor::flush_tlb_local(VirtualAddress, size_t)
|
||||
{
|
||||
// FIXME: Implement this
|
||||
// FIXME: Figure out how to flush a single page
|
||||
asm volatile("dsb ishst");
|
||||
asm volatile("tlbi vmalle1is");
|
||||
asm volatile("dsb ish");
|
||||
asm volatile("isb");
|
||||
}
|
||||
|
||||
void Processor::flush_tlb(Memory::PageDirectory const*, VirtualAddress vaddr, size_t page_count)
|
||||
{
|
||||
flush_tlb_local(vaddr, page_count);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -77,10 +77,7 @@ public:
|
|||
}
|
||||
|
||||
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();
|
||||
}
|
||||
static void flush_tlb(Memory::PageDirectory const*, VirtualAddress, size_t);
|
||||
|
||||
// FIXME: When aarch64 supports multiple cores, return the correct core id here.
|
||||
ALWAYS_INLINE static u32 current_id()
|
||||
|
|
Loading…
Reference in a new issue